All of lore.kernel.org
 help / color / mirror / Atom feed
From: kernel test robot <lkp@intel.com>
To: kbuild@lists.01.org
Subject: Re: [PATCH v2 4/5] ext4: improve cr 0 / cr 1 group scanning
Date: Wed, 10 Feb 2021 15:04:09 +0800	[thread overview]
Message-ID: <202102101445.LuhuUagM-lkp@intel.com> (raw)

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

CC: kbuild-all(a)lists.01.org
In-Reply-To: <20210209202857.4185846-5-harshadshirwadkar@gmail.com>
References: <20210209202857.4185846-5-harshadshirwadkar@gmail.com>
TO: Harshad Shirwadkar <harshadshirwadkar@gmail.com>
TO: linux-ext4(a)vger.kernel.org
CC: tytso(a)mit.edu
CC: bzzz(a)whamcloud.com
CC: artem.blagodarenko(a)gmail.com
CC: sihara(a)ddn.com
CC: adilger(a)dilger.ca
CC: Harshad Shirwadkar <harshadshirwadkar@gmail.com>

Hi Harshad,

Thank you for the patch! Perhaps something to improve:

[auto build test WARNING on ext4/dev]
[also build test WARNING on v5.11-rc7 next-20210125]
[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-drop-s_mb_bal_lock-and-convert-protected-fields-to-atomic/20210210-054647
base:   https://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4.git dev
:::::: branch date: 9 hours ago
:::::: commit date: 9 hours ago
config: h8300-randconfig-s031-20210209 (attached as .config)
compiler: h8300-linux-gcc (GCC) 9.3.0
reproduce:
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # apt-get install sparse
        # sparse version: v0.6.3-215-g0fb77bb6-dirty
        # https://github.com/0day-ci/linux/commit/ef4eebad9c018a972a470b7b41e68bc981b31d00
        git remote add linux-review https://github.com/0day-ci/linux
        git fetch --no-tags linux-review Harshad-Shirwadkar/ext4-drop-s_mb_bal_lock-and-convert-protected-fields-to-atomic/20210210-054647
        git checkout ef4eebad9c018a972a470b7b41e68bc981b31d00
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' ARCH=h8300 

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


"sparse warnings: (new ones prefixed by >>)"
>> fs/ext4/mballoc.c:946:9: sparse: sparse: context imbalance in 'ext4_mb_choose_next_group_cr1' - wrong count at exit
   fs/ext4/mballoc.c:1188:9: sparse: sparse: context imbalance in 'ext4_mb_init_cache' - different lock contexts for basic block
   fs/ext4/mballoc.c:2091:5: sparse: sparse: context imbalance in 'ext4_mb_try_best_found' - different lock contexts for basic block
   fs/ext4/mballoc.c:2119:5: sparse: sparse: context imbalance in 'ext4_mb_find_by_goal' - different lock contexts for basic block
   fs/ext4/mballoc.c:2407:12: sparse: sparse: context imbalance in 'ext4_mb_good_group_nolock' - wrong count at exit
   fs/ext4/mballoc.c:2619:43: sparse: sparse: context imbalance in 'ext4_mb_regular_allocator' - different lock contexts for basic block
   fs/ext4/mballoc.c:3277:17: sparse: sparse: context imbalance in 'ext4_mb_release' - different lock contexts for basic block
   fs/ext4/mballoc.c:3396:26: sparse: sparse: context imbalance in 'ext4_free_data_in_buddy' - wrong count at exit
   fs/ext4/mballoc.c:3612:15: sparse: sparse: context imbalance in 'ext4_mb_mark_diskspace_used' - different lock contexts for basic block
   fs/ext4/mballoc.c:3620:6: sparse: sparse: context imbalance in 'ext4_mb_mark_bb' - different lock contexts for basic block
   fs/ext4/mballoc.c:3943:13: sparse: sparse: context imbalance in 'ext4_discard_allocated_blocks' - different lock contexts for basic block
   fs/ext4/mballoc.c:4245:13: sparse: sparse: context imbalance in 'ext4_mb_put_pa' - different lock contexts for basic block
   fs/ext4/mballoc.c:4582:9: sparse: sparse: context imbalance in 'ext4_mb_discard_group_preallocations' - different lock contexts for basic block
   fs/ext4/mballoc.c:4735:9: sparse: sparse: context imbalance in 'ext4_discard_preallocations' - different lock contexts for basic block
   fs/ext4/mballoc.c:5030:9: sparse: sparse: context imbalance in 'ext4_mb_discard_lg_preallocations' - different lock contexts for basic block
   fs/ext4/mballoc.c:5675:9: sparse: sparse: context imbalance in 'ext4_free_blocks' - different lock contexts for basic block
   fs/ext4/mballoc.c:5975:15: sparse: sparse: context imbalance in 'ext4_group_add_blocks' - different lock contexts for basic block
   fs/ext4/mballoc.c: note: in included file (through include/linux/atomic.h, include/asm-generic/bitops/lock.h, arch/h8300/include/asm/bitops.h, ...):
   arch/h8300/include/asm/atomic.h:92:31: sparse: sparse: context imbalance in 'ext4_trim_extent' - wrong count at exit
   fs/ext4/mballoc.c:6039:1: sparse: sparse: context imbalance in 'ext4_trim_all_free' - different lock contexts for basic block
   fs/ext4/mballoc.c:6205:1: sparse: sparse: context imbalance in 'ext4_mballoc_query_range' - different lock contexts for basic block

vim +/ext4_mb_choose_next_group_cr1 +946 fs/ext4/mballoc.c

ef4eebad9c018a Harshad Shirwadkar 2021-02-09  871  
ef4eebad9c018a Harshad Shirwadkar 2021-02-09  872  /*
ef4eebad9c018a Harshad Shirwadkar 2021-02-09  873   * Choose next group by traversing average fragment size tree. Return 0 if next
ef4eebad9c018a Harshad Shirwadkar 2021-02-09  874   * group was selected optimally. Return 1 if next group could not selected
ef4eebad9c018a Harshad Shirwadkar 2021-02-09  875   * optimally (due to lock contention). Updates *new_cr if cr lvel needs an
ef4eebad9c018a Harshad Shirwadkar 2021-02-09  876   * update.
ef4eebad9c018a Harshad Shirwadkar 2021-02-09  877   */
ef4eebad9c018a Harshad Shirwadkar 2021-02-09  878  static int ext4_mb_choose_next_group_cr1(struct ext4_allocation_context *ac,
ef4eebad9c018a Harshad Shirwadkar 2021-02-09  879  		int *new_cr, ext4_group_t *group, ext4_group_t ngroups)
ef4eebad9c018a Harshad Shirwadkar 2021-02-09  880  {
ef4eebad9c018a Harshad Shirwadkar 2021-02-09  881  	struct ext4_sb_info *sbi = EXT4_SB(ac->ac_sb);
ef4eebad9c018a Harshad Shirwadkar 2021-02-09  882  	int avg_fragment_size, best_so_far;
ef4eebad9c018a Harshad Shirwadkar 2021-02-09  883  	struct rb_node *node, *found;
ef4eebad9c018a Harshad Shirwadkar 2021-02-09  884  	struct ext4_group_info *grp;
ef4eebad9c018a Harshad Shirwadkar 2021-02-09  885  
ef4eebad9c018a Harshad Shirwadkar 2021-02-09  886  	/*
ef4eebad9c018a Harshad Shirwadkar 2021-02-09  887  	 * If there is contention on the lock, instead of waiting for the lock
ef4eebad9c018a Harshad Shirwadkar 2021-02-09  888  	 * to become available, just continue searching lineraly. We'll resume
ef4eebad9c018a Harshad Shirwadkar 2021-02-09  889  	 * our rb tree search later starting at ac->ac_last_optimal_group.
ef4eebad9c018a Harshad Shirwadkar 2021-02-09  890  	 */
ef4eebad9c018a Harshad Shirwadkar 2021-02-09  891  	if (!read_trylock(&sbi->s_mb_rb_lock))
ef4eebad9c018a Harshad Shirwadkar 2021-02-09  892  		return 1;
ef4eebad9c018a Harshad Shirwadkar 2021-02-09  893  
ef4eebad9c018a Harshad Shirwadkar 2021-02-09  894  	if (ac->ac_flags & EXT4_MB_CR1_OPTIMIZED) {
ef4eebad9c018a Harshad Shirwadkar 2021-02-09  895  		/* We have found something at CR 1 in the past */
ef4eebad9c018a Harshad Shirwadkar 2021-02-09  896  		grp = ext4_get_group_info(ac->ac_sb, ac->ac_last_optimal_group);
ef4eebad9c018a Harshad Shirwadkar 2021-02-09  897  		for (found = rb_next(&grp->bb_avg_fragment_size_rb); found != NULL;
ef4eebad9c018a Harshad Shirwadkar 2021-02-09  898  		     found = rb_next(found)) {
ef4eebad9c018a Harshad Shirwadkar 2021-02-09  899  			grp = rb_entry(found, struct ext4_group_info,
ef4eebad9c018a Harshad Shirwadkar 2021-02-09  900  				       bb_avg_fragment_size_rb);
ef4eebad9c018a Harshad Shirwadkar 2021-02-09  901  			/*
ef4eebad9c018a Harshad Shirwadkar 2021-02-09  902  			 * Perform this check without locking, we'll lock later
ef4eebad9c018a Harshad Shirwadkar 2021-02-09  903  			 * to confirm.
ef4eebad9c018a Harshad Shirwadkar 2021-02-09  904  			 */
ef4eebad9c018a Harshad Shirwadkar 2021-02-09  905  			if (likely(ext4_mb_good_group(ac, grp->bb_group, 1)))
ef4eebad9c018a Harshad Shirwadkar 2021-02-09  906  				break;
ef4eebad9c018a Harshad Shirwadkar 2021-02-09  907  		}
ef4eebad9c018a Harshad Shirwadkar 2021-02-09  908  
ef4eebad9c018a Harshad Shirwadkar 2021-02-09  909  		goto done;
ef4eebad9c018a Harshad Shirwadkar 2021-02-09  910  	}
ef4eebad9c018a Harshad Shirwadkar 2021-02-09  911  
ef4eebad9c018a Harshad Shirwadkar 2021-02-09  912  	node = sbi->s_mb_avg_fragment_size_root.rb_node;
ef4eebad9c018a Harshad Shirwadkar 2021-02-09  913  	best_so_far = 0;
ef4eebad9c018a Harshad Shirwadkar 2021-02-09  914  	found = NULL;
ef4eebad9c018a Harshad Shirwadkar 2021-02-09  915  
ef4eebad9c018a Harshad Shirwadkar 2021-02-09  916  	while (node) {
ef4eebad9c018a Harshad Shirwadkar 2021-02-09  917  		grp = rb_entry(node, struct ext4_group_info,
ef4eebad9c018a Harshad Shirwadkar 2021-02-09  918  			       bb_avg_fragment_size_rb);
ef4eebad9c018a Harshad Shirwadkar 2021-02-09  919  		/*
ef4eebad9c018a Harshad Shirwadkar 2021-02-09  920  		 * Perform this check without locking, we'll lock later to confirm.
ef4eebad9c018a Harshad Shirwadkar 2021-02-09  921  		 */
ef4eebad9c018a Harshad Shirwadkar 2021-02-09  922  		if (ext4_mb_good_group(ac, grp->bb_group, 1)) {
ef4eebad9c018a Harshad Shirwadkar 2021-02-09  923  			avg_fragment_size = grp->bb_fragments ?
ef4eebad9c018a Harshad Shirwadkar 2021-02-09  924  				grp->bb_free / grp->bb_fragments : 0;
ef4eebad9c018a Harshad Shirwadkar 2021-02-09  925  			if (!best_so_far || avg_fragment_size < best_so_far) {
ef4eebad9c018a Harshad Shirwadkar 2021-02-09  926  				best_so_far = avg_fragment_size;
ef4eebad9c018a Harshad Shirwadkar 2021-02-09  927  				found = node;
ef4eebad9c018a Harshad Shirwadkar 2021-02-09  928  			}
ef4eebad9c018a Harshad Shirwadkar 2021-02-09  929  		}
ef4eebad9c018a Harshad Shirwadkar 2021-02-09  930  		if (avg_fragment_size > ac->ac_g_ex.fe_len)
ef4eebad9c018a Harshad Shirwadkar 2021-02-09  931  			node = node->rb_right;
ef4eebad9c018a Harshad Shirwadkar 2021-02-09  932  		else
ef4eebad9c018a Harshad Shirwadkar 2021-02-09  933  			node = node->rb_left;
ef4eebad9c018a Harshad Shirwadkar 2021-02-09  934  	}
ef4eebad9c018a Harshad Shirwadkar 2021-02-09  935  
ef4eebad9c018a Harshad Shirwadkar 2021-02-09  936  done:
ef4eebad9c018a Harshad Shirwadkar 2021-02-09  937  	if (found) {
ef4eebad9c018a Harshad Shirwadkar 2021-02-09  938  		grp = rb_entry(found, struct ext4_group_info,
ef4eebad9c018a Harshad Shirwadkar 2021-02-09  939  			       bb_avg_fragment_size_rb);
ef4eebad9c018a Harshad Shirwadkar 2021-02-09  940  		*group = grp->bb_group;
ef4eebad9c018a Harshad Shirwadkar 2021-02-09  941  		ac->ac_flags |= EXT4_MB_CR1_OPTIMIZED;
ef4eebad9c018a Harshad Shirwadkar 2021-02-09  942  	} else {
ef4eebad9c018a Harshad Shirwadkar 2021-02-09  943  		*new_cr = 2;
ef4eebad9c018a Harshad Shirwadkar 2021-02-09  944  	}
ef4eebad9c018a Harshad Shirwadkar 2021-02-09  945  
ef4eebad9c018a Harshad Shirwadkar 2021-02-09 @946  	read_unlock(&sbi->s_mb_rb_lock);
ef4eebad9c018a Harshad Shirwadkar 2021-02-09  947  	ac->ac_last_optimal_group = *group;
ef4eebad9c018a Harshad Shirwadkar 2021-02-09  948  	return 0;
ef4eebad9c018a Harshad Shirwadkar 2021-02-09  949  }
ef4eebad9c018a Harshad Shirwadkar 2021-02-09  950  

---
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: 23128 bytes --]

             reply	other threads:[~2021-02-10  7:04 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-02-10  7:04 kernel test robot [this message]
  -- strict thread matches above, loose matches on Subject: below --
2021-02-10  8:55 [PATCH v2 4/5] ext4: improve cr 0 / cr 1 group scanning kernel test robot
2021-02-09 20:28 Improve group scanning in mballoc Harshad Shirwadkar
2021-02-09 20:28 ` [PATCH v2 4/5] ext4: improve cr 0 / cr 1 group scanning Harshad Shirwadkar
2021-02-10  9:00   ` Dan Carpenter
2021-02-11  7:43   ` Alexey Lyashkov
2021-02-11  7:53     ` Alex Zhuravlev
2021-02-11 10:13       ` Alexey Lyashkov
2021-02-11 10:30   ` Andreas Dilger
2021-02-12 22:46   ` Andreas Dilger
2021-02-16 19:39   ` Благодаренко Артём
2021-02-16 22:36     ` Andreas Dilger
2021-02-22  3:59       ` harshad shirwadkar
2021-02-23 18:39         ` harshad shirwadkar
2021-02-26  3:43         ` Andreas Dilger
2021-02-26  4:06           ` harshad shirwadkar
2021-02-26  4:42             ` Andreas Dilger
2021-02-17 19:41   ` Благодаренко Артём

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=202102101445.LuhuUagM-lkp@intel.com \
    --to=lkp@intel.com \
    --cc=kbuild@lists.01.org \
    /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.