All of lore.kernel.org
 help / color / mirror / Atom feed
From: kernel test robot <lkp@intel.com>
To: Harshad Shirwadkar <harshadshirwadkar@gmail.com>,
	linux-ext4@vger.kernel.org
Cc: kbuild-all@lists.01.org, clang-built-linux@googlegroups.com,
	tytso@mit.edu, Harshad Shirwadkar <harshadshirwadkar@gmail.com>
Subject: Re: [PATCH v9 5/9] ext4: main fast-commit commit path
Date: Sat, 19 Sep 2020 16:19:03 +0800	[thread overview]
Message-ID: <202009191602.OLtP5Go5%lkp@intel.com> (raw)
In-Reply-To: <20200919005451.3899779-6-harshadshirwadkar@gmail.com>

[-- Attachment #1: Type: text/plain, Size: 7485 bytes --]

Hi Harshad,

Thank you for the patch! Perhaps something to improve:

[auto build test WARNING on ext4/dev]
[also build test WARNING on linus/master v5.9-rc5 next-20200918]
[cannot apply to tip/perf/core]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]

url:    https://github.com/0day-ci/linux/commits/Harshad-Shirwadkar/ext4-add-fast-commits-feature/20200919-085652
base:   https://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4.git dev
config: x86_64-randconfig-a006-20200917 (attached as .config)
compiler: clang version 12.0.0 (https://github.com/llvm/llvm-project ed79827aea444e6995fb3d36abc2bfd36331773c)
reproduce (this is a W=1 build):
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # install x86_64 cross compiling tool for clang build
        # apt-get install binutils-x86-64-linux-gnu
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=x86_64 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>

All warnings (new ones prefixed by >>):

>> fs/ext4/fast_commit.c:1079:6: warning: variable 'start_time' is used uninitialized whenever 'if' condition is true [-Wsometimes-uninitialized]
           if (!test_opt2(sb, JOURNAL_FAST_COMMIT) ||
               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   fs/ext4/fast_commit.c:1135:51: note: uninitialized use occurs here
           commit_time = ktime_to_ns(ktime_sub(ktime_get(), start_time));
                                                            ^~~~~~~~~~
   include/linux/ktime.h:46:39: note: expanded from macro 'ktime_sub'
   #define ktime_sub(lhs, rhs)     ((lhs) - (rhs))
                                             ^~~
   fs/ext4/fast_commit.c:1079:2: note: remove the 'if' if its condition is always false
           if (!test_opt2(sb, JOURNAL_FAST_COMMIT) ||
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> fs/ext4/fast_commit.c:1079:6: warning: variable 'start_time' is used uninitialized whenever '||' condition is true [-Wsometimes-uninitialized]
           if (!test_opt2(sb, JOURNAL_FAST_COMMIT) ||
               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   fs/ext4/fast_commit.c:1135:51: note: uninitialized use occurs here
           commit_time = ktime_to_ns(ktime_sub(ktime_get(), start_time));
                                                            ^~~~~~~~~~
   include/linux/ktime.h:46:39: note: expanded from macro 'ktime_sub'
   #define ktime_sub(lhs, rhs)     ((lhs) - (rhs))
                                             ^~~
   fs/ext4/fast_commit.c:1079:6: note: remove the '||' if its condition is always false
           if (!test_opt2(sb, JOURNAL_FAST_COMMIT) ||
               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   fs/ext4/fast_commit.c:1075:20: note: initialize the variable 'start_time' to silence this warning
           ktime_t start_time, commit_time;
                             ^
                              = 0
   2 warnings generated.

# https://github.com/0day-ci/linux/commit/2384cbfbcf98b789d426c39b458c52adbb36d4f9
git remote add linux-review https://github.com/0day-ci/linux
git fetch --no-tags linux-review Harshad-Shirwadkar/ext4-add-fast-commits-feature/20200919-085652
git checkout 2384cbfbcf98b789d426c39b458c52adbb36d4f9
vim +1079 fs/ext4/fast_commit.c

  1061	
  1062	/*
  1063	 * The main commit entry point. Performs a fast commit for transaction
  1064	 * commit_tid if needed. If it's not possible to perform a fast commit
  1065	 * due to various reasons, we fall back to full commit. Returns 0
  1066	 * on success, error otherwise.
  1067	 */
  1068	int ext4_fc_commit(journal_t *journal, tid_t commit_tid)
  1069	{
  1070		struct super_block *sb = (struct super_block *)(journal->j_private);
  1071		struct ext4_sb_info *sbi = EXT4_SB(sb);
  1072		int nblks = 0, ret, bsize = journal->j_blocksize;
  1073		int subtid = atomic_read(&sbi->s_fc_subtid);
  1074		int reason = EXT4_FC_REASON_OK, fc_bufs_before = 0;
  1075		ktime_t start_time, commit_time;
  1076	
  1077		trace_ext4_fc_commit_start(sb);
  1078	
> 1079		if (!test_opt2(sb, JOURNAL_FAST_COMMIT) ||
  1080			(ext4_fc_is_ineligible(sb))) {
  1081			reason = EXT4_FC_REASON_INELIGIBLE;
  1082			goto out;
  1083		}
  1084	
  1085		start_time = ktime_get();
  1086	restart_fc:
  1087		ret = jbd2_fc_start(journal, commit_tid);
  1088		if (ret == -EALREADY) {
  1089			/* There was an ongoing commit, check if we need to restart */
  1090			if (atomic_read(&sbi->s_fc_subtid) <= subtid &&
  1091				commit_tid > journal->j_commit_sequence)
  1092				goto restart_fc;
  1093			reason = EXT4_FC_REASON_ALREADY_COMMITTED;
  1094			goto out;
  1095		} else if (ret) {
  1096			sbi->s_fc_stats.fc_ineligible_reason_count[EXT4_FC_COMMIT_FAILED]++;
  1097			reason = EXT4_FC_REASON_FC_START_FAILED;
  1098			goto out;
  1099		}
  1100	
  1101		fc_bufs_before = (sbi->s_fc_bytes + bsize - 1) / bsize;
  1102		ret = ext4_fc_perform_commit(journal);
  1103		if (ret < 0) {
  1104			sbi->s_fc_stats.fc_ineligible_reason_count[EXT4_FC_COMMIT_FAILED]++;
  1105			reason = EXT4_FC_REASON_FC_FAILED;
  1106			goto out;
  1107		}
  1108		nblks = (sbi->s_fc_bytes + bsize - 1) / bsize - fc_bufs_before;
  1109		ret = jbd2_fc_wait_bufs(journal, nblks);
  1110		if (ret < 0) {
  1111			sbi->s_fc_stats.fc_ineligible_reason_count[EXT4_FC_COMMIT_FAILED]++;
  1112			reason = EXT4_FC_REASON_FC_FAILED;
  1113			goto out;
  1114		}
  1115		atomic_inc(&sbi->s_fc_subtid);
  1116		jbd2_fc_stop(journal);
  1117	out:
  1118		/* Has any ineligible update happened since we started? */
  1119		if (reason == EXT4_FC_REASON_OK && ext4_fc_is_ineligible(sb)) {
  1120			sbi->s_fc_stats.fc_ineligible_reason_count[EXT4_FC_COMMIT_FAILED]++;
  1121			reason = EXT4_FC_REASON_INELIGIBLE;
  1122		}
  1123	
  1124		spin_lock(&sbi->s_fc_lock);
  1125		if (reason != EXT4_FC_REASON_OK &&
  1126			reason != EXT4_FC_REASON_ALREADY_COMMITTED) {
  1127			sbi->s_fc_stats.fc_ineligible_commits++;
  1128		} else {
  1129			sbi->s_fc_stats.fc_num_commits++;
  1130			sbi->s_fc_stats.fc_numblks += nblks;
  1131		}
  1132		spin_unlock(&sbi->s_fc_lock);
  1133		nblks = (reason == EXT4_FC_REASON_OK) ? nblks : 0;
  1134		trace_ext4_fc_commit_stop(sb, nblks, reason);
  1135		commit_time = ktime_to_ns(ktime_sub(ktime_get(), start_time));
  1136		/*
  1137		 * weight the commit time higher than the average time so we don't
  1138		 * react too strongly to vast changes in the commit time
  1139		 */
  1140		if (likely(sbi->s_fc_avg_commit_time))
  1141			sbi->s_fc_avg_commit_time = (commit_time +
  1142					sbi->s_fc_avg_commit_time * 3) / 4;
  1143		else
  1144			sbi->s_fc_avg_commit_time = commit_time;
  1145		jbd_debug(1,
  1146			"Fast commit ended with blks = %d, reason = %d, subtid - %d",
  1147			nblks, reason, subtid);
  1148		if (reason == EXT4_FC_REASON_FC_FAILED)
  1149			return jbd2_fc_stop_do_commit(journal, commit_tid);
  1150		if (reason == EXT4_FC_REASON_FC_START_FAILED ||
  1151			reason == EXT4_FC_REASON_INELIGIBLE)
  1152			return jbd2_complete_transaction(journal, commit_tid);
  1153		return 0;
  1154	}
  1155	

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org

[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 43605 bytes --]

WARNING: multiple messages have this Message-ID (diff)
From: kernel test robot <lkp@intel.com>
To: kbuild-all@lists.01.org
Subject: Re: [PATCH v9 5/9] ext4: main fast-commit commit path
Date: Sat, 19 Sep 2020 16:19:03 +0800	[thread overview]
Message-ID: <202009191602.OLtP5Go5%lkp@intel.com> (raw)
In-Reply-To: <20200919005451.3899779-6-harshadshirwadkar@gmail.com>

[-- Attachment #1: Type: text/plain, Size: 7650 bytes --]

Hi Harshad,

Thank you for the patch! Perhaps something to improve:

[auto build test WARNING on ext4/dev]
[also build test WARNING on linus/master v5.9-rc5 next-20200918]
[cannot apply to tip/perf/core]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]

url:    https://github.com/0day-ci/linux/commits/Harshad-Shirwadkar/ext4-add-fast-commits-feature/20200919-085652
base:   https://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4.git dev
config: x86_64-randconfig-a006-20200917 (attached as .config)
compiler: clang version 12.0.0 (https://github.com/llvm/llvm-project ed79827aea444e6995fb3d36abc2bfd36331773c)
reproduce (this is a W=1 build):
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # install x86_64 cross compiling tool for clang build
        # apt-get install binutils-x86-64-linux-gnu
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=x86_64 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>

All warnings (new ones prefixed by >>):

>> fs/ext4/fast_commit.c:1079:6: warning: variable 'start_time' is used uninitialized whenever 'if' condition is true [-Wsometimes-uninitialized]
           if (!test_opt2(sb, JOURNAL_FAST_COMMIT) ||
               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   fs/ext4/fast_commit.c:1135:51: note: uninitialized use occurs here
           commit_time = ktime_to_ns(ktime_sub(ktime_get(), start_time));
                                                            ^~~~~~~~~~
   include/linux/ktime.h:46:39: note: expanded from macro 'ktime_sub'
   #define ktime_sub(lhs, rhs)     ((lhs) - (rhs))
                                             ^~~
   fs/ext4/fast_commit.c:1079:2: note: remove the 'if' if its condition is always false
           if (!test_opt2(sb, JOURNAL_FAST_COMMIT) ||
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> fs/ext4/fast_commit.c:1079:6: warning: variable 'start_time' is used uninitialized whenever '||' condition is true [-Wsometimes-uninitialized]
           if (!test_opt2(sb, JOURNAL_FAST_COMMIT) ||
               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   fs/ext4/fast_commit.c:1135:51: note: uninitialized use occurs here
           commit_time = ktime_to_ns(ktime_sub(ktime_get(), start_time));
                                                            ^~~~~~~~~~
   include/linux/ktime.h:46:39: note: expanded from macro 'ktime_sub'
   #define ktime_sub(lhs, rhs)     ((lhs) - (rhs))
                                             ^~~
   fs/ext4/fast_commit.c:1079:6: note: remove the '||' if its condition is always false
           if (!test_opt2(sb, JOURNAL_FAST_COMMIT) ||
               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   fs/ext4/fast_commit.c:1075:20: note: initialize the variable 'start_time' to silence this warning
           ktime_t start_time, commit_time;
                             ^
                              = 0
   2 warnings generated.

# https://github.com/0day-ci/linux/commit/2384cbfbcf98b789d426c39b458c52adbb36d4f9
git remote add linux-review https://github.com/0day-ci/linux
git fetch --no-tags linux-review Harshad-Shirwadkar/ext4-add-fast-commits-feature/20200919-085652
git checkout 2384cbfbcf98b789d426c39b458c52adbb36d4f9
vim +1079 fs/ext4/fast_commit.c

  1061	
  1062	/*
  1063	 * The main commit entry point. Performs a fast commit for transaction
  1064	 * commit_tid if needed. If it's not possible to perform a fast commit
  1065	 * due to various reasons, we fall back to full commit. Returns 0
  1066	 * on success, error otherwise.
  1067	 */
  1068	int ext4_fc_commit(journal_t *journal, tid_t commit_tid)
  1069	{
  1070		struct super_block *sb = (struct super_block *)(journal->j_private);
  1071		struct ext4_sb_info *sbi = EXT4_SB(sb);
  1072		int nblks = 0, ret, bsize = journal->j_blocksize;
  1073		int subtid = atomic_read(&sbi->s_fc_subtid);
  1074		int reason = EXT4_FC_REASON_OK, fc_bufs_before = 0;
  1075		ktime_t start_time, commit_time;
  1076	
  1077		trace_ext4_fc_commit_start(sb);
  1078	
> 1079		if (!test_opt2(sb, JOURNAL_FAST_COMMIT) ||
  1080			(ext4_fc_is_ineligible(sb))) {
  1081			reason = EXT4_FC_REASON_INELIGIBLE;
  1082			goto out;
  1083		}
  1084	
  1085		start_time = ktime_get();
  1086	restart_fc:
  1087		ret = jbd2_fc_start(journal, commit_tid);
  1088		if (ret == -EALREADY) {
  1089			/* There was an ongoing commit, check if we need to restart */
  1090			if (atomic_read(&sbi->s_fc_subtid) <= subtid &&
  1091				commit_tid > journal->j_commit_sequence)
  1092				goto restart_fc;
  1093			reason = EXT4_FC_REASON_ALREADY_COMMITTED;
  1094			goto out;
  1095		} else if (ret) {
  1096			sbi->s_fc_stats.fc_ineligible_reason_count[EXT4_FC_COMMIT_FAILED]++;
  1097			reason = EXT4_FC_REASON_FC_START_FAILED;
  1098			goto out;
  1099		}
  1100	
  1101		fc_bufs_before = (sbi->s_fc_bytes + bsize - 1) / bsize;
  1102		ret = ext4_fc_perform_commit(journal);
  1103		if (ret < 0) {
  1104			sbi->s_fc_stats.fc_ineligible_reason_count[EXT4_FC_COMMIT_FAILED]++;
  1105			reason = EXT4_FC_REASON_FC_FAILED;
  1106			goto out;
  1107		}
  1108		nblks = (sbi->s_fc_bytes + bsize - 1) / bsize - fc_bufs_before;
  1109		ret = jbd2_fc_wait_bufs(journal, nblks);
  1110		if (ret < 0) {
  1111			sbi->s_fc_stats.fc_ineligible_reason_count[EXT4_FC_COMMIT_FAILED]++;
  1112			reason = EXT4_FC_REASON_FC_FAILED;
  1113			goto out;
  1114		}
  1115		atomic_inc(&sbi->s_fc_subtid);
  1116		jbd2_fc_stop(journal);
  1117	out:
  1118		/* Has any ineligible update happened since we started? */
  1119		if (reason == EXT4_FC_REASON_OK && ext4_fc_is_ineligible(sb)) {
  1120			sbi->s_fc_stats.fc_ineligible_reason_count[EXT4_FC_COMMIT_FAILED]++;
  1121			reason = EXT4_FC_REASON_INELIGIBLE;
  1122		}
  1123	
  1124		spin_lock(&sbi->s_fc_lock);
  1125		if (reason != EXT4_FC_REASON_OK &&
  1126			reason != EXT4_FC_REASON_ALREADY_COMMITTED) {
  1127			sbi->s_fc_stats.fc_ineligible_commits++;
  1128		} else {
  1129			sbi->s_fc_stats.fc_num_commits++;
  1130			sbi->s_fc_stats.fc_numblks += nblks;
  1131		}
  1132		spin_unlock(&sbi->s_fc_lock);
  1133		nblks = (reason == EXT4_FC_REASON_OK) ? nblks : 0;
  1134		trace_ext4_fc_commit_stop(sb, nblks, reason);
  1135		commit_time = ktime_to_ns(ktime_sub(ktime_get(), start_time));
  1136		/*
  1137		 * weight the commit time higher than the average time so we don't
  1138		 * react too strongly to vast changes in the commit time
  1139		 */
  1140		if (likely(sbi->s_fc_avg_commit_time))
  1141			sbi->s_fc_avg_commit_time = (commit_time +
  1142					sbi->s_fc_avg_commit_time * 3) / 4;
  1143		else
  1144			sbi->s_fc_avg_commit_time = commit_time;
  1145		jbd_debug(1,
  1146			"Fast commit ended with blks = %d, reason = %d, subtid - %d",
  1147			nblks, reason, subtid);
  1148		if (reason == EXT4_FC_REASON_FC_FAILED)
  1149			return jbd2_fc_stop_do_commit(journal, commit_tid);
  1150		if (reason == EXT4_FC_REASON_FC_START_FAILED ||
  1151			reason == EXT4_FC_REASON_INELIGIBLE)
  1152			return jbd2_complete_transaction(journal, commit_tid);
  1153		return 0;
  1154	}
  1155	

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org

[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 43605 bytes --]

  parent reply	other threads:[~2020-09-19  8:21 UTC|newest]

Thread overview: 35+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-09-19  0:54 [PATCH v9 0/9] ext4: add fast commits feature Harshad Shirwadkar
2020-09-19  0:54 ` [PATCH v9 1/9] doc: update ext4 and journalling docs to include fast commit feature Harshad Shirwadkar
2020-09-22 17:50   ` Darrick J. Wong
2020-09-24  6:56     ` harshad shirwadkar
2020-10-09 18:28   ` Theodore Y. Ts'o
2020-10-13  0:27     ` harshad shirwadkar
2020-09-19  0:54 ` [PATCH v9 2/9] ext4: add fast_commit feature and handling for extended mount options Harshad Shirwadkar
2020-10-09 17:58   ` Theodore Y. Ts'o
2020-10-13  0:27     ` harshad shirwadkar
2020-09-19  0:54 ` [PATCH v9 3/9] ext4 / jbd2: add fast commit initialization Harshad Shirwadkar
2020-09-19 15:22   ` kernel test robot
2020-09-19 15:22     ` kernel test robot
2020-10-09 16:10   ` Ritesh Harjani
2020-10-13  0:28     ` harshad shirwadkar
2020-09-19  0:54 ` [PATCH v9 4/9] jbd2: add fast commit machinery Harshad Shirwadkar
2020-10-09 16:16   ` Ritesh Harjani
2020-10-13  0:27     ` harshad shirwadkar
2020-09-19  0:54 ` [PATCH v9 5/9] ext4: main fast-commit commit path Harshad Shirwadkar
2020-09-19  4:03   ` kernel test robot
2020-09-19  8:19   ` kernel test robot [this message]
2020-09-19  8:19     ` kernel test robot
2020-09-20  1:34   ` kernel test robot
2020-10-09 17:04   ` Ritesh Harjani
2020-10-13  0:25     ` harshad shirwadkar
2020-10-09 19:14   ` Theodore Y. Ts'o
2020-10-13  0:27     ` harshad shirwadkar
2020-09-19  0:54 ` [PATCH v9 6/9] jbd2: fast commit recovery path Harshad Shirwadkar
2020-09-19 11:27   ` kernel test robot
2020-09-19  0:54 ` [PATCH v9 7/9] ext4: " Harshad Shirwadkar
2020-09-19 14:15   ` kernel test robot
2020-09-19 14:15     ` kernel test robot
2020-10-09 17:14   ` Ritesh Harjani
2020-10-13  0:27     ` harshad shirwadkar
2020-09-19  0:54 ` [PATCH v9 8/9] ext4: add a mount opt to forcefully turn fast commits on Harshad Shirwadkar
2020-09-19  0:54 ` [PATCH v9 9/9] ext4: add fast commit stats in procfs Harshad Shirwadkar

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=202009191602.OLtP5Go5%lkp@intel.com \
    --to=lkp@intel.com \
    --cc=clang-built-linux@googlegroups.com \
    --cc=harshadshirwadkar@gmail.com \
    --cc=kbuild-all@lists.01.org \
    --cc=linux-ext4@vger.kernel.org \
    --cc=tytso@mit.edu \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.