[linux-next:master 10419/14048] fs/ext4/mballoc.c:2614:1: warning: stack frame size of 2416 bytes in function 'ext4_mb_regular_allocator'

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



tree:   https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master
head:   593ef1658ecf61d3619885bdbbcfffa3d1417891
commit: 196e402adf2e4cd66f101923409f1970ec5f1af3 [10419/14048] ext4: improve cr 0 / cr 1 group scanning
config: powerpc-randconfig-r036-20210420 (attached as .config)
compiler: clang version 13.0.0 (https://github.com/llvm/llvm-project ca8eef7e3da8f750d7c7aa004fe426d1d34787ea)
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 powerpc cross compiling tool for clang build
        # apt-get install binutils-powerpc-linux-gnu
        # https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/commit/?id=196e402adf2e4cd66f101923409f1970ec5f1af3
        git remote add linux-next https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
        git fetch --no-tags linux-next master
        git checkout 196e402adf2e4cd66f101923409f1970ec5f1af3
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 ARCH=powerpc 

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

All warnings (new ones prefixed by >>):

                   __do_##name al;                                 \
                   ^~~~~~~~~~~~~~
   <scratch space>:63:1: note: expanded from here
   __do_insw
   ^
   arch/powerpc/include/asm/io.h:557:56: note: expanded from macro '__do_insw'
   #define __do_insw(p, b, n)      readsw((PCI_IO_ADDR)_IO_BASE+(p), (b), (n))
                                          ~~~~~~~~~~~~~~~~~~~~~^
   In file included from fs/ext4/mballoc.c:12:
   In file included from fs/ext4/ext4_jbd2.h:16:
   In file included from include/linux/jbd2.h:23:
   In file included from include/linux/buffer_head.h:14:
   In file included from include/linux/pagemap.h:11:
   In file included from include/linux/highmem.h:10:
   In file included from include/linux/hardirq.h:10:
   In file included from arch/powerpc/include/asm/hardirq.h:6:
   In file included from include/linux/irq.h:20:
   In file included from include/linux/io.h:13:
   In file included from arch/powerpc/include/asm/io.h:619:
   arch/powerpc/include/asm/io-defs.h:47:1: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
   DEF_PCI_AC_NORET(insl, (unsigned long p, void *b, unsigned long c),
   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   arch/powerpc/include/asm/io.h:616:3: note: expanded from macro 'DEF_PCI_AC_NORET'
                   __do_##name al;                                 \
                   ^~~~~~~~~~~~~~
   <scratch space>:65:1: note: expanded from here
   __do_insl
   ^
   arch/powerpc/include/asm/io.h:558:56: note: expanded from macro '__do_insl'
   #define __do_insl(p, b, n)      readsl((PCI_IO_ADDR)_IO_BASE+(p), (b), (n))
                                          ~~~~~~~~~~~~~~~~~~~~~^
   In file included from fs/ext4/mballoc.c:12:
   In file included from fs/ext4/ext4_jbd2.h:16:
   In file included from include/linux/jbd2.h:23:
   In file included from include/linux/buffer_head.h:14:
   In file included from include/linux/pagemap.h:11:
   In file included from include/linux/highmem.h:10:
   In file included from include/linux/hardirq.h:10:
   In file included from arch/powerpc/include/asm/hardirq.h:6:
   In file included from include/linux/irq.h:20:
   In file included from include/linux/io.h:13:
   In file included from arch/powerpc/include/asm/io.h:619:
   arch/powerpc/include/asm/io-defs.h:49:1: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
   DEF_PCI_AC_NORET(outsb, (unsigned long p, const void *b, unsigned long c),
   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   arch/powerpc/include/asm/io.h:616:3: note: expanded from macro 'DEF_PCI_AC_NORET'
                   __do_##name al;                                 \
                   ^~~~~~~~~~~~~~
   <scratch space>:67:1: note: expanded from here
   __do_outsb
   ^
   arch/powerpc/include/asm/io.h:559:58: note: expanded from macro '__do_outsb'
   #define __do_outsb(p, b, n)     writesb((PCI_IO_ADDR)_IO_BASE+(p),(b),(n))
                                           ~~~~~~~~~~~~~~~~~~~~~^
   In file included from fs/ext4/mballoc.c:12:
   In file included from fs/ext4/ext4_jbd2.h:16:
   In file included from include/linux/jbd2.h:23:
   In file included from include/linux/buffer_head.h:14:
   In file included from include/linux/pagemap.h:11:
   In file included from include/linux/highmem.h:10:
   In file included from include/linux/hardirq.h:10:
   In file included from arch/powerpc/include/asm/hardirq.h:6:
   In file included from include/linux/irq.h:20:
   In file included from include/linux/io.h:13:
   In file included from arch/powerpc/include/asm/io.h:619:
   arch/powerpc/include/asm/io-defs.h:51:1: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
   DEF_PCI_AC_NORET(outsw, (unsigned long p, const void *b, unsigned long c),
   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   arch/powerpc/include/asm/io.h:616:3: note: expanded from macro 'DEF_PCI_AC_NORET'
                   __do_##name al;                                 \
                   ^~~~~~~~~~~~~~
   <scratch space>:69:1: note: expanded from here
   __do_outsw
   ^
   arch/powerpc/include/asm/io.h:560:58: note: expanded from macro '__do_outsw'
   #define __do_outsw(p, b, n)     writesw((PCI_IO_ADDR)_IO_BASE+(p),(b),(n))
                                           ~~~~~~~~~~~~~~~~~~~~~^
   In file included from fs/ext4/mballoc.c:12:
   In file included from fs/ext4/ext4_jbd2.h:16:
   In file included from include/linux/jbd2.h:23:
   In file included from include/linux/buffer_head.h:14:
   In file included from include/linux/pagemap.h:11:
   In file included from include/linux/highmem.h:10:
   In file included from include/linux/hardirq.h:10:
   In file included from arch/powerpc/include/asm/hardirq.h:6:
   In file included from include/linux/irq.h:20:
   In file included from include/linux/io.h:13:
   In file included from arch/powerpc/include/asm/io.h:619:
   arch/powerpc/include/asm/io-defs.h:53:1: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
   DEF_PCI_AC_NORET(outsl, (unsigned long p, const void *b, unsigned long c),
   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   arch/powerpc/include/asm/io.h:616:3: note: expanded from macro 'DEF_PCI_AC_NORET'
                   __do_##name al;                                 \
                   ^~~~~~~~~~~~~~
   <scratch space>:71:1: note: expanded from here
   __do_outsl
   ^
   arch/powerpc/include/asm/io.h:561:58: note: expanded from macro '__do_outsl'
   #define __do_outsl(p, b, n)     writesl((PCI_IO_ADDR)_IO_BASE+(p),(b),(n))
                                           ~~~~~~~~~~~~~~~~~~~~~^
>> fs/ext4/mballoc.c:2614:1: warning: stack frame size of 2416 bytes in function 'ext4_mb_regular_allocator' [-Wframe-larger-than=]
   ext4_mb_regular_allocator(struct ext4_allocation_context *ac)
   ^
   13 warnings generated.


vim +/ext4_mb_regular_allocator +2614 fs/ext4/mballoc.c

cfd73237722135 Alex Zhuravlev     2020-04-21  2612  
4ddfef7b41aebb Eric Sandeen       2008-04-29  2613  static noinline_for_stack int
4ddfef7b41aebb Eric Sandeen       2008-04-29 @2614  ext4_mb_regular_allocator(struct ext4_allocation_context *ac)
c9de560ded61fa Alex Tomas         2008-01-29  2615  {
cfd73237722135 Alex Zhuravlev     2020-04-21  2616  	ext4_group_t prefetch_grp = 0, ngroups, group, i;
bbc4ec77e9f9c7 Ritesh Harjani     2020-05-10  2617  	int cr = -1;
42ac1848eac588 Lukas Czerner      2015-06-08  2618  	int err = 0, first_err = 0;
cfd73237722135 Alex Zhuravlev     2020-04-21  2619  	unsigned int nr = 0, prefetch_ios = 0;
c9de560ded61fa Alex Tomas         2008-01-29  2620  	struct ext4_sb_info *sbi;
c9de560ded61fa Alex Tomas         2008-01-29  2621  	struct super_block *sb;
c9de560ded61fa Alex Tomas         2008-01-29  2622  	struct ext4_buddy e4b;
66d5e0277e225c brookxu            2020-08-17  2623  	int lost;
c9de560ded61fa Alex Tomas         2008-01-29  2624  
c9de560ded61fa Alex Tomas         2008-01-29  2625  	sb = ac->ac_sb;
c9de560ded61fa Alex Tomas         2008-01-29  2626  	sbi = EXT4_SB(sb);
8df9675f8b498d Theodore Ts'o      2009-05-01  2627  	ngroups = ext4_get_groups_count(sb);
fb0a387dcdcd21 Eric Sandeen       2009-09-16  2628  	/* non-extent files are limited to low blocks/groups */
12e9b892002d9a Dmitry Monakhov    2010-05-16  2629  	if (!(ext4_test_inode_flag(ac->ac_inode, EXT4_INODE_EXTENTS)))
fb0a387dcdcd21 Eric Sandeen       2009-09-16  2630  		ngroups = sbi->s_blockfile_groups;
fb0a387dcdcd21 Eric Sandeen       2009-09-16  2631  
c9de560ded61fa Alex Tomas         2008-01-29  2632  	BUG_ON(ac->ac_status == AC_STATUS_FOUND);
c9de560ded61fa Alex Tomas         2008-01-29  2633  
c9de560ded61fa Alex Tomas         2008-01-29  2634  	/* first, try the goal */
c9de560ded61fa Alex Tomas         2008-01-29  2635  	err = ext4_mb_find_by_goal(ac, &e4b);
c9de560ded61fa Alex Tomas         2008-01-29  2636  	if (err || ac->ac_status == AC_STATUS_FOUND)
c9de560ded61fa Alex Tomas         2008-01-29  2637  		goto out;
c9de560ded61fa Alex Tomas         2008-01-29  2638  
c9de560ded61fa Alex Tomas         2008-01-29  2639  	if (unlikely(ac->ac_flags & EXT4_MB_HINT_GOAL_ONLY))
c9de560ded61fa Alex Tomas         2008-01-29  2640  		goto out;
c9de560ded61fa Alex Tomas         2008-01-29  2641  
c9de560ded61fa Alex Tomas         2008-01-29  2642  	/*
e9a3cd48d65307 brookxu            2020-08-07  2643  	 * ac->ac_2order is set only if the fe_len is a power of 2
e9a3cd48d65307 brookxu            2020-08-07  2644  	 * if ac->ac_2order is set we also set criteria to 0 so that we
c9de560ded61fa Alex Tomas         2008-01-29  2645  	 * try exact allocation using buddy.
c9de560ded61fa Alex Tomas         2008-01-29  2646  	 */
c9de560ded61fa Alex Tomas         2008-01-29  2647  	i = fls(ac->ac_g_ex.fe_len);
c9de560ded61fa Alex Tomas         2008-01-29  2648  	ac->ac_2order = 0;
c9de560ded61fa Alex Tomas         2008-01-29  2649  	/*
c9de560ded61fa Alex Tomas         2008-01-29  2650  	 * We search using buddy data only if the order of the request
c9de560ded61fa Alex Tomas         2008-01-29  2651  	 * is greater than equal to the sbi_s_mb_order2_reqs
b713a5ec55bf73 Theodore Ts'o      2009-03-31  2652  	 * You can tune it via /sys/fs/ext4/<partition>/mb_order2_req
d9b22cf9f5466a Jan Kara           2017-02-10  2653  	 * We also support searching for power-of-two requests only for
d9b22cf9f5466a Jan Kara           2017-02-10  2654  	 * requests upto maximum buddy size we have constructed.
c9de560ded61fa Alex Tomas         2008-01-29  2655  	 */
4b68f6df105966 Harshad Shirwadkar 2021-04-01  2656  	if (i >= sbi->s_mb_order2_reqs && i <= MB_NUM_ORDERS(sb)) {
c9de560ded61fa Alex Tomas         2008-01-29  2657  		/*
c9de560ded61fa Alex Tomas         2008-01-29  2658  		 * This should tell if fe_len is exactly power of 2
c9de560ded61fa Alex Tomas         2008-01-29  2659  		 */
c9de560ded61fa Alex Tomas         2008-01-29  2660  		if ((ac->ac_g_ex.fe_len & (~(1 << (i - 1)))) == 0)
1a5d5e5d51e75a Jeremy Cline       2018-08-02  2661  			ac->ac_2order = array_index_nospec(i - 1,
4b68f6df105966 Harshad Shirwadkar 2021-04-01  2662  							   MB_NUM_ORDERS(sb));
c9de560ded61fa Alex Tomas         2008-01-29  2663  	}
c9de560ded61fa Alex Tomas         2008-01-29  2664  
4ba74d00a20256 Theodore Ts'o      2009-08-09  2665  	/* if stream allocation is enabled, use global goal */
4ba74d00a20256 Theodore Ts'o      2009-08-09  2666  	if (ac->ac_flags & EXT4_MB_STREAM_ALLOC) {
c9de560ded61fa Alex Tomas         2008-01-29  2667  		/* TBD: may be hot point */
c9de560ded61fa Alex Tomas         2008-01-29  2668  		spin_lock(&sbi->s_md_lock);
c9de560ded61fa Alex Tomas         2008-01-29  2669  		ac->ac_g_ex.fe_group = sbi->s_mb_last_group;
c9de560ded61fa Alex Tomas         2008-01-29  2670  		ac->ac_g_ex.fe_start = sbi->s_mb_last_start;
c9de560ded61fa Alex Tomas         2008-01-29  2671  		spin_unlock(&sbi->s_md_lock);
c9de560ded61fa Alex Tomas         2008-01-29  2672  	}
4ba74d00a20256 Theodore Ts'o      2009-08-09  2673  
c9de560ded61fa Alex Tomas         2008-01-29  2674  	/* Let's just scan groups to find more-less suitable blocks */
c9de560ded61fa Alex Tomas         2008-01-29  2675  	cr = ac->ac_2order ? 0 : 1;
c9de560ded61fa Alex Tomas         2008-01-29  2676  	/*
c9de560ded61fa Alex Tomas         2008-01-29  2677  	 * cr == 0 try to get exact allocation,
c9de560ded61fa Alex Tomas         2008-01-29  2678  	 * cr == 3  try to get anything
c9de560ded61fa Alex Tomas         2008-01-29  2679  	 */
c9de560ded61fa Alex Tomas         2008-01-29  2680  repeat:
c9de560ded61fa Alex Tomas         2008-01-29  2681  	for (; cr < 4 && ac->ac_status == AC_STATUS_CONTINUE; cr++) {
c9de560ded61fa Alex Tomas         2008-01-29  2682  		ac->ac_criteria = cr;
ed8f9c751feb3a Aneesh Kumar K.V   2008-07-11  2683  		/*
ed8f9c751feb3a Aneesh Kumar K.V   2008-07-11  2684  		 * searching for the right group start
ed8f9c751feb3a Aneesh Kumar K.V   2008-07-11  2685  		 * from the goal value specified
ed8f9c751feb3a Aneesh Kumar K.V   2008-07-11  2686  		 */
ed8f9c751feb3a Aneesh Kumar K.V   2008-07-11  2687  		group = ac->ac_g_ex.fe_group;
196e402adf2e4c Harshad Shirwadkar 2021-04-01  2688  		ac->ac_last_optimal_group = group;
196e402adf2e4c Harshad Shirwadkar 2021-04-01  2689  		ac->ac_groups_linear_remaining = sbi->s_mb_max_linear_groups;
cfd73237722135 Alex Zhuravlev     2020-04-21  2690  		prefetch_grp = group;
ed8f9c751feb3a Aneesh Kumar K.V   2008-07-11  2691  
196e402adf2e4c Harshad Shirwadkar 2021-04-01  2692  		for (i = 0; i < ngroups; group = next_linear_group(ac, group, ngroups),
196e402adf2e4c Harshad Shirwadkar 2021-04-01  2693  			     i++) {
196e402adf2e4c Harshad Shirwadkar 2021-04-01  2694  			int ret = 0, new_cr;
196e402adf2e4c Harshad Shirwadkar 2021-04-01  2695  
2ed5724d5a78a2 Theodore Ts'o      2013-06-12  2696  			cond_resched();
196e402adf2e4c Harshad Shirwadkar 2021-04-01  2697  
196e402adf2e4c Harshad Shirwadkar 2021-04-01  2698  			ext4_mb_choose_next_group(ac, &new_cr, &group, ngroups);
196e402adf2e4c Harshad Shirwadkar 2021-04-01  2699  			if (new_cr != cr) {
196e402adf2e4c Harshad Shirwadkar 2021-04-01  2700  				cr = new_cr;
196e402adf2e4c Harshad Shirwadkar 2021-04-01  2701  				goto repeat;
196e402adf2e4c Harshad Shirwadkar 2021-04-01  2702  			}
c9de560ded61fa Alex Tomas         2008-01-29  2703  
cfd73237722135 Alex Zhuravlev     2020-04-21  2704  			/*
cfd73237722135 Alex Zhuravlev     2020-04-21  2705  			 * Batch reads of the block allocation bitmaps
cfd73237722135 Alex Zhuravlev     2020-04-21  2706  			 * to get multiple READs in flight; limit
cfd73237722135 Alex Zhuravlev     2020-04-21  2707  			 * prefetching at cr=0/1, otherwise mballoc can
cfd73237722135 Alex Zhuravlev     2020-04-21  2708  			 * spend a lot of time loading imperfect groups
cfd73237722135 Alex Zhuravlev     2020-04-21  2709  			 */
cfd73237722135 Alex Zhuravlev     2020-04-21  2710  			if ((prefetch_grp == group) &&
cfd73237722135 Alex Zhuravlev     2020-04-21  2711  			    (cr > 1 ||
cfd73237722135 Alex Zhuravlev     2020-04-21  2712  			     prefetch_ios < sbi->s_mb_prefetch_limit)) {
cfd73237722135 Alex Zhuravlev     2020-04-21  2713  				unsigned int curr_ios = prefetch_ios;
cfd73237722135 Alex Zhuravlev     2020-04-21  2714  
cfd73237722135 Alex Zhuravlev     2020-04-21  2715  				nr = sbi->s_mb_prefetch;
cfd73237722135 Alex Zhuravlev     2020-04-21  2716  				if (ext4_has_feature_flex_bg(sb)) {
82ef1370b0c175 Chunguang Xu       2020-12-04  2717  					nr = 1 << sbi->s_log_groups_per_flex;
82ef1370b0c175 Chunguang Xu       2020-12-04  2718  					nr -= group & (nr - 1);
82ef1370b0c175 Chunguang Xu       2020-12-04  2719  					nr = min(nr, sbi->s_mb_prefetch);
cfd73237722135 Alex Zhuravlev     2020-04-21  2720  				}
cfd73237722135 Alex Zhuravlev     2020-04-21  2721  				prefetch_grp = ext4_mb_prefetch(sb, group,
cfd73237722135 Alex Zhuravlev     2020-04-21  2722  							nr, &prefetch_ios);
cfd73237722135 Alex Zhuravlev     2020-04-21  2723  				if (prefetch_ios == curr_ios)
cfd73237722135 Alex Zhuravlev     2020-04-21  2724  					nr = 0;
cfd73237722135 Alex Zhuravlev     2020-04-21  2725  			}
cfd73237722135 Alex Zhuravlev     2020-04-21  2726  
8a57d9d61a6e36 Curt Wohlgemuth    2010-05-16  2727  			/* This now checks without needing the buddy page */
8ef123fe02ca09 Ritesh Harjani     2020-05-20  2728  			ret = ext4_mb_good_group_nolock(ac, group, cr);
42ac1848eac588 Lukas Czerner      2015-06-08  2729  			if (ret <= 0) {
42ac1848eac588 Lukas Czerner      2015-06-08  2730  				if (!first_err)
42ac1848eac588 Lukas Czerner      2015-06-08  2731  					first_err = ret;
c9de560ded61fa Alex Tomas         2008-01-29  2732  				continue;
42ac1848eac588 Lukas Czerner      2015-06-08  2733  			}
c9de560ded61fa Alex Tomas         2008-01-29  2734  
c9de560ded61fa Alex Tomas         2008-01-29  2735  			err = ext4_mb_load_buddy(sb, group, &e4b);
c9de560ded61fa Alex Tomas         2008-01-29  2736  			if (err)
c9de560ded61fa Alex Tomas         2008-01-29  2737  				goto out;
c9de560ded61fa Alex Tomas         2008-01-29  2738  
c9de560ded61fa Alex Tomas         2008-01-29  2739  			ext4_lock_group(sb, group);
8a57d9d61a6e36 Curt Wohlgemuth    2010-05-16  2740  
8a57d9d61a6e36 Curt Wohlgemuth    2010-05-16  2741  			/*
8a57d9d61a6e36 Curt Wohlgemuth    2010-05-16  2742  			 * We need to check again after locking the
8a57d9d61a6e36 Curt Wohlgemuth    2010-05-16  2743  			 * block group
8a57d9d61a6e36 Curt Wohlgemuth    2010-05-16  2744  			 */
42ac1848eac588 Lukas Czerner      2015-06-08  2745  			ret = ext4_mb_good_group(ac, group, cr);
8ef123fe02ca09 Ritesh Harjani     2020-05-20  2746  			if (ret == 0) {
c9de560ded61fa Alex Tomas         2008-01-29  2747  				ext4_unlock_group(sb, group);
e39e07fdfd98be Jing Zhang         2010-05-14  2748  				ext4_mb_unload_buddy(&e4b);
c9de560ded61fa Alex Tomas         2008-01-29  2749  				continue;
c9de560ded61fa Alex Tomas         2008-01-29  2750  			}
c9de560ded61fa Alex Tomas         2008-01-29  2751  
c9de560ded61fa Alex Tomas         2008-01-29  2752  			ac->ac_groups_scanned++;
d9b22cf9f5466a Jan Kara           2017-02-10  2753  			if (cr == 0)
c9de560ded61fa Alex Tomas         2008-01-29  2754  				ext4_mb_simple_scan_group(ac, &e4b);
506bf2d82165c0 Eric Sandeen       2010-07-27  2755  			else if (cr == 1 && sbi->s_stripe &&
506bf2d82165c0 Eric Sandeen       2010-07-27  2756  					!(ac->ac_g_ex.fe_len % sbi->s_stripe))
c9de560ded61fa Alex Tomas         2008-01-29  2757  				ext4_mb_scan_aligned(ac, &e4b);
c9de560ded61fa Alex Tomas         2008-01-29  2758  			else
c9de560ded61fa Alex Tomas         2008-01-29  2759  				ext4_mb_complex_scan_group(ac, &e4b);
c9de560ded61fa Alex Tomas         2008-01-29  2760  
c9de560ded61fa Alex Tomas         2008-01-29  2761  			ext4_unlock_group(sb, group);
e39e07fdfd98be Jing Zhang         2010-05-14  2762  			ext4_mb_unload_buddy(&e4b);
c9de560ded61fa Alex Tomas         2008-01-29  2763  
c9de560ded61fa Alex Tomas         2008-01-29  2764  			if (ac->ac_status != AC_STATUS_CONTINUE)
c9de560ded61fa Alex Tomas         2008-01-29  2765  				break;
c9de560ded61fa Alex Tomas         2008-01-29  2766  		}
a6c75eaf11032f Harshad Shirwadkar 2021-04-01  2767  		/* Processed all groups and haven't found blocks */
a6c75eaf11032f Harshad Shirwadkar 2021-04-01  2768  		if (sbi->s_mb_stats && i == ngroups)
a6c75eaf11032f Harshad Shirwadkar 2021-04-01  2769  			atomic64_inc(&sbi->s_bal_cX_failed[cr]);
c9de560ded61fa Alex Tomas         2008-01-29  2770  	}
c9de560ded61fa Alex Tomas         2008-01-29  2771  
c9de560ded61fa Alex Tomas         2008-01-29  2772  	if (ac->ac_b_ex.fe_len > 0 && ac->ac_status != AC_STATUS_FOUND &&
c9de560ded61fa Alex Tomas         2008-01-29  2773  	    !(ac->ac_flags & EXT4_MB_HINT_FIRST)) {
c9de560ded61fa Alex Tomas         2008-01-29  2774  		/*
c9de560ded61fa Alex Tomas         2008-01-29  2775  		 * We've been searching too long. Let's try to allocate
c9de560ded61fa Alex Tomas         2008-01-29  2776  		 * the best chunk we've found so far
c9de560ded61fa Alex Tomas         2008-01-29  2777  		 */
c9de560ded61fa Alex Tomas         2008-01-29  2778  		ext4_mb_try_best_found(ac, &e4b);
c9de560ded61fa Alex Tomas         2008-01-29  2779  		if (ac->ac_status != AC_STATUS_FOUND) {
c9de560ded61fa Alex Tomas         2008-01-29  2780  			/*
c9de560ded61fa Alex Tomas         2008-01-29  2781  			 * Someone more lucky has already allocated it.
c9de560ded61fa Alex Tomas         2008-01-29  2782  			 * The only thing we can do is just take first
c9de560ded61fa Alex Tomas         2008-01-29  2783  			 * found block(s)
c9de560ded61fa Alex Tomas         2008-01-29  2784  			 */
66d5e0277e225c brookxu            2020-08-17  2785  			lost = atomic_inc_return(&sbi->s_mb_lost_chunks);
66d5e0277e225c brookxu            2020-08-17  2786  			mb_debug(sb, "lost chunk, group: %u, start: %d, len: %d, lost: %d\n",
c55ee7d202857b brookxu            2020-08-15  2787  				 ac->ac_b_ex.fe_group, ac->ac_b_ex.fe_start,
c55ee7d202857b brookxu            2020-08-15  2788  				 ac->ac_b_ex.fe_len, lost);
c55ee7d202857b brookxu            2020-08-15  2789  
c9de560ded61fa Alex Tomas         2008-01-29  2790  			ac->ac_b_ex.fe_group = 0;
c9de560ded61fa Alex Tomas         2008-01-29  2791  			ac->ac_b_ex.fe_start = 0;
c9de560ded61fa Alex Tomas         2008-01-29  2792  			ac->ac_b_ex.fe_len = 0;
c9de560ded61fa Alex Tomas         2008-01-29  2793  			ac->ac_status = AC_STATUS_CONTINUE;
c9de560ded61fa Alex Tomas         2008-01-29  2794  			ac->ac_flags |= EXT4_MB_HINT_FIRST;
c9de560ded61fa Alex Tomas         2008-01-29  2795  			cr = 3;
c9de560ded61fa Alex Tomas         2008-01-29  2796  			goto repeat;
c9de560ded61fa Alex Tomas         2008-01-29  2797  		}
c9de560ded61fa Alex Tomas         2008-01-29  2798  	}
a6c75eaf11032f Harshad Shirwadkar 2021-04-01  2799  
a6c75eaf11032f Harshad Shirwadkar 2021-04-01  2800  	if (sbi->s_mb_stats && ac->ac_status == AC_STATUS_FOUND)
a6c75eaf11032f Harshad Shirwadkar 2021-04-01  2801  		atomic64_inc(&sbi->s_bal_cX_hits[ac->ac_criteria]);
c9de560ded61fa Alex Tomas         2008-01-29  2802  out:
42ac1848eac588 Lukas Czerner      2015-06-08  2803  	if (!err && ac->ac_status != AC_STATUS_FOUND && first_err)
42ac1848eac588 Lukas Czerner      2015-06-08  2804  		err = first_err;
bbc4ec77e9f9c7 Ritesh Harjani     2020-05-10  2805  
d3df14535f4a5b Ritesh Harjani     2020-05-10  2806  	mb_debug(sb, "Best len %d, origin len %d, ac_status %u, ac_flags 0x%x, cr %d ret %d\n",
bbc4ec77e9f9c7 Ritesh Harjani     2020-05-10  2807  		 ac->ac_b_ex.fe_len, ac->ac_o_ex.fe_len, ac->ac_status,
bbc4ec77e9f9c7 Ritesh Harjani     2020-05-10  2808  		 ac->ac_flags, cr, err);
cfd73237722135 Alex Zhuravlev     2020-04-21  2809  
cfd73237722135 Alex Zhuravlev     2020-04-21  2810  	if (nr)
cfd73237722135 Alex Zhuravlev     2020-04-21  2811  		ext4_mb_prefetch_fini(sb, prefetch_grp, nr);
cfd73237722135 Alex Zhuravlev     2020-04-21  2812  
c9de560ded61fa Alex Tomas         2008-01-29  2813  	return err;
c9de560ded61fa Alex Tomas         2008-01-29  2814  }
c9de560ded61fa Alex Tomas         2008-01-29  2815  

:::::: The code at line 2614 was first introduced by commit
:::::: 4ddfef7b41aebbbede73f361cb938800ba3072dc ext4: reduce mballoc stack usage with noinline_for_stack

:::::: TO: Eric Sandeen <sandeen@xxxxxxxxxx>
:::::: CC: Theodore Ts'o <tytso@xxxxxxx>

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

Attachment: .config.gz
Description: application/gzip


[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Bugtraq]     [Linux OMAP]     [Linux MIPS]     [eCos]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux