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 --]
next 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.