tree:   https://git.kernel.org/pub/scm/linux/kernel/git/gfs2/linux-gfs2.git 
bobquota
head:   670b010e49bb40adcf05c9158f0268f36cd03a97
commit: 47c1e6b4deaebd090dd8143710d159e948b52122 [24/29] gfs2: Only allocate 
blocks necessary in do_sync
config: arm64-randconfig-r003-20230629 
(https://download.01.org/0day-ci/archive/20230630/202306300443.bew9esq3-...@intel.com/config)
compiler: aarch64-linux-gcc (GCC) 12.3.0
reproduce: 
(https://download.01.org/0day-ci/archive/20230630/202306300443.bew9esq3-...@intel.com/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <l...@intel.com>
| Closes: 
https://lore.kernel.org/oe-kbuild-all/202306300443.bew9esq3-...@intel.com/

All warnings (new ones prefixed by >>):

   fs/gfs2/quota.c: In function 'do_sync':
>> fs/gfs2/quota.c:1013:1: warning: the frame size of 18880 bytes is larger 
>> than 2048 bytes [-Wframe-larger-than=]
    1013 | }
         | ^


vim +1013 fs/gfs2/quota.c

18ec7d5c3f434a Steven Whitehouse 2006-02-08   878  
b3b94faa5fe596 David Teigland    2006-01-16   879  static int do_sync(unsigned 
int num_qd, struct gfs2_quota_data **qda)
b3b94faa5fe596 David Teigland    2006-01-16   880  {
22e0429e4d1715 Bob Peterson      2023-06-16   881       struct gfs2_sbd *sdp = 
(*qda)->qd_sbd;
feaa7bba026c18 Steven Whitehouse 2006-06-14   882       struct gfs2_inode *ip = 
GFS2_I(sdp->sd_quota_inode);
7b9cff467144c8 Steven Whitehouse 2013-10-02   883       struct gfs2_alloc_parms 
ap = { .aflags = 0, };
b3b94faa5fe596 David Teigland    2006-01-16   884       unsigned int 
data_blocks, ind_blocks;
b3b94faa5fe596 David Teigland    2006-01-16   885       struct gfs2_holder 
*ghs, i_gh;
b3b94faa5fe596 David Teigland    2006-01-16   886       unsigned int qx, x;
b3b94faa5fe596 David Teigland    2006-01-16   887       struct gfs2_quota_data 
*qd;
71f890f7f758f3 Steven Whitehouse 2012-07-30   888       unsigned reserved;
f42faf4fa4eaf7 Steven Whitehouse 2006-01-30   889       loff_t offset;
47c1e6b4deaebd Bob Peterson      2023-06-23   890       unsigned int nalloc = 
0, blocks, b4 = 0;
47c1e6b4deaebd Bob Peterson      2023-06-23   891       u64 qblk[MAX_QD] = {0, 
}, qlen[MAX_QD] = {0, };
b3b94faa5fe596 David Teigland    2006-01-16   892       int error;
b3b94faa5fe596 David Teigland    2006-01-16   893  
b3b94faa5fe596 David Teigland    2006-01-16   894       
gfs2_write_calc_reserv(ip, sizeof(struct gfs2_quota),
b3b94faa5fe596 David Teigland    2006-01-16   895                             
&data_blocks, &ind_blocks);
b3b94faa5fe596 David Teigland    2006-01-16   896  
6da2ec56059c3c Kees Cook         2018-06-12   897       ghs = 
kmalloc_array(num_qd, sizeof(struct gfs2_holder), GFP_NOFS);
2fba46a04c383f Bob Peterson      2020-02-27   898       if (!ghs) {
2fba46a04c383f Bob Peterson      2020-02-27   899               error = -ENOMEM;
c972972e772a77 Bob Peterson      2023-06-22   900               goto out_qa_put;
2fba46a04c383f Bob Peterson      2020-02-27   901       }
b3b94faa5fe596 David Teigland    2006-01-16   902  
b3b94faa5fe596 David Teigland    2006-01-16   903       sort(qda, num_qd, 
sizeof(struct gfs2_quota_data *), sort_qd, NULL);
5955102c9984fa Al Viro           2016-01-22   904       
inode_lock(&ip->i_inode);
b3b94faa5fe596 David Teigland    2006-01-16   905       for (qx = 0; qx < 
num_qd; qx++) {
1e72c0f7c40e66 Steven Whitehouse 2009-09-15   906               error = 
gfs2_glock_nq_init(qda[qx]->qd_gl, LM_ST_EXCLUSIVE,
b3b94faa5fe596 David Teigland    2006-01-16   907                               
           GL_NOCACHE, &ghs[qx]);
b3b94faa5fe596 David Teigland    2006-01-16   908               if (error)
2fba46a04c383f Bob Peterson      2020-02-27   909                       goto 
out_dq;
b3b94faa5fe596 David Teigland    2006-01-16   910       }
b3b94faa5fe596 David Teigland    2006-01-16   911  
b3b94faa5fe596 David Teigland    2006-01-16   912       error = 
gfs2_glock_nq_init(ip->i_gl, LM_ST_EXCLUSIVE, 0, &i_gh);
b3b94faa5fe596 David Teigland    2006-01-16   913       if (error)
2fba46a04c383f Bob Peterson      2020-02-27   914               goto out_dq;
b3b94faa5fe596 David Teigland    2006-01-16   915  
b3b94faa5fe596 David Teigland    2006-01-16   916       for (x = 0; x < num_qd; 
x++) {
47c1e6b4deaebd Bob Peterson      2023-06-23   917               u64 l_blk1, 
l_blk2, l_len;
47c1e6b4deaebd Bob Peterson      2023-06-23   918               int i;
47c1e6b4deaebd Bob Peterson      2023-06-23   919  
b3b94faa5fe596 David Teigland    2006-01-16   920               offset = 
qd2offset(qda[x]);
47c1e6b4deaebd Bob Peterson      2023-06-23   921               /*
47c1e6b4deaebd Bob Peterson      2023-06-23   922                * Check to see 
if we already need to allocate this block
47c1e6b4deaebd Bob Peterson      2023-06-23   923                */
47c1e6b4deaebd Bob Peterson      2023-06-23   924               l_blk1 = offset 
>> ip->i_inode.i_blkbits;
47c1e6b4deaebd Bob Peterson      2023-06-23   925               l_blk2 = 
(offset + sizeof(struct gfs2_quota)) >>
47c1e6b4deaebd Bob Peterson      2023-06-23   926                        
ip->i_inode.i_blkbits;
47c1e6b4deaebd Bob Peterson      2023-06-23   927               l_len = (l_blk2 
- l_blk1) + 1;
47c1e6b4deaebd Bob Peterson      2023-06-23   928               /* Check all 
previous block/len combinations */
47c1e6b4deaebd Bob Peterson      2023-06-23   929               for (i = 0; i < 
nalloc; i++)
47c1e6b4deaebd Bob Peterson      2023-06-23   930                       if 
(l_blk1 == qblk[i] && l_len <= qlen[i])
47c1e6b4deaebd Bob Peterson      2023-06-23   931                               
break;
47c1e6b4deaebd Bob Peterson      2023-06-23   932               /* If we 
stopped short we found a match: we're already planning
47c1e6b4deaebd Bob Peterson      2023-06-23   933                * to allocate 
the required block. */
47c1e6b4deaebd Bob Peterson      2023-06-23   934               if (i < nalloc) 
{
47c1e6b4deaebd Bob Peterson      2023-06-23   935                       /* 
debug, remove this: */
461cb419f074aa Bob Peterson      2010-06-24   936                       if 
(gfs2_write_alloc_required(ip, offset,
461cb419f074aa Bob Peterson      2010-06-24   937                               
        sizeof(struct gfs2_quota)))
47c1e6b4deaebd Bob Peterson      2023-06-23   938                               
b4++;
47c1e6b4deaebd Bob Peterson      2023-06-23   939                       
continue;
47c1e6b4deaebd Bob Peterson      2023-06-23   940               }
47c1e6b4deaebd Bob Peterson      2023-06-23   941               if 
(gfs2_write_alloc_required(ip, offset,
47c1e6b4deaebd Bob Peterson      2023-06-23   942                               
              sizeof(struct gfs2_quota))) {
47c1e6b4deaebd Bob Peterson      2023-06-23   943                       
qblk[nalloc] = l_blk1;
47c1e6b4deaebd Bob Peterson      2023-06-23   944                       
qlen[nalloc] = l_len;
b3b94faa5fe596 David Teigland    2006-01-16   945                       
nalloc++;
b3b94faa5fe596 David Teigland    2006-01-16   946               }
47c1e6b4deaebd Bob Peterson      2023-06-23   947       }
47c1e6b4deaebd Bob Peterson      2023-06-23   948       if (nalloc || b4)
47c1e6b4deaebd Bob Peterson      2023-06-23   949               fs_err(sdp, 
"nalloc: %u, before: %u\n", nalloc, b4);
b3b94faa5fe596 David Teigland    2006-01-16   950  
20b95bf2c4c5c2 Abhijith Das      2008-03-06   951       /* 
20b95bf2c4c5c2 Abhijith Das      2008-03-06   952        * 1 blk for unstuffing 
inode if stuffed. We add this extra
20b95bf2c4c5c2 Abhijith Das      2008-03-06   953        * block to the 
reservation unconditionally. If the inode
20b95bf2c4c5c2 Abhijith Das      2008-03-06   954        * doesn't need 
unstuffing, the block will be released to the 
20b95bf2c4c5c2 Abhijith Das      2008-03-06   955        * rgrp since it won't 
be allocated during the transaction
20b95bf2c4c5c2 Abhijith Das      2008-03-06   956        */
7e619bc3e6252d Abhijith Das      2010-05-07   957       /* +3 in the end for 
unstuffing block, inode size update block
7e619bc3e6252d Abhijith Das      2010-05-07   958        * and another block in 
case quota straddles page boundary and 
7e619bc3e6252d Abhijith Das      2010-05-07   959        * two blocks need to 
be updated instead of 1 */
7e619bc3e6252d Abhijith Das      2010-05-07   960       blocks = num_qd * 
data_blocks + RES_DINODE + num_qd + 3;
b3b94faa5fe596 David Teigland    2006-01-16   961  
71f890f7f758f3 Steven Whitehouse 2012-07-30   962       reserved = 1 + (nalloc 
* (data_blocks + ind_blocks));
7b9cff467144c8 Steven Whitehouse 2013-10-02   963       ap.target = reserved;
7b9cff467144c8 Steven Whitehouse 2013-10-02   964       error = 
gfs2_inplace_reserve(ip, &ap);
b3b94faa5fe596 David Teigland    2006-01-16   965       if (error)
b3b94faa5fe596 David Teigland    2006-01-16   966               goto out_alloc;
b3b94faa5fe596 David Teigland    2006-01-16   967  
20b95bf2c4c5c2 Abhijith Das      2008-03-06   968       if (nalloc)
71f890f7f758f3 Steven Whitehouse 2012-07-30   969               blocks += 
gfs2_rg_blocks(ip, reserved) + nalloc * ind_blocks + RES_STATFS;
20b95bf2c4c5c2 Abhijith Das      2008-03-06   970  
20b95bf2c4c5c2 Abhijith Das      2008-03-06   971       error = 
gfs2_trans_begin(sdp, blocks, 0);
b3b94faa5fe596 David Teigland    2006-01-16   972       if (error)
b3b94faa5fe596 David Teigland    2006-01-16   973               goto out_ipres;
b3b94faa5fe596 David Teigland    2006-01-16   974  
b3b94faa5fe596 David Teigland    2006-01-16   975       for (x = 0; x < num_qd; 
x++) {
b3b94faa5fe596 David Teigland    2006-01-16   976               qd = qda[x];
b3b94faa5fe596 David Teigland    2006-01-16   977               offset = 
qd2offset(qd);
7be3bcce6e2e7c Bob Peterson      2023-05-31   978               error = 
gfs2_adjust_quota(sdp, offset, qd->qd_change_sync, qd,
7be3bcce6e2e7c Bob Peterson      2023-05-31   979                               
                        NULL);
18ec7d5c3f434a Steven Whitehouse 2006-02-08   980               if (error)
b3b94faa5fe596 David Teigland    2006-01-16   981                       goto 
out_end_trans;
b3b94faa5fe596 David Teigland    2006-01-16   982  
e1654954525e23 Bob Peterson      2023-06-28   983               do_qc(qd, 
-qd->qd_change_sync, QC_SYNC);
662e3a551b468c Abhijith Das      2011-03-08   984               
set_bit(QDF_REFRESH, &qd->qd_flags);
b3b94faa5fe596 David Teigland    2006-01-16   985       }
b3b94faa5fe596 David Teigland    2006-01-16   986  
b3b94faa5fe596 David Teigland    2006-01-16   987       error = 0;
b3b94faa5fe596 David Teigland    2006-01-16   988  
b3b94faa5fe596 David Teigland    2006-01-16   989  out_end_trans:
b3b94faa5fe596 David Teigland    2006-01-16   990       gfs2_trans_end(sdp);
b3b94faa5fe596 David Teigland    2006-01-16   991  out_ipres:
b3b94faa5fe596 David Teigland    2006-01-16   992       
gfs2_inplace_release(ip);
b3b94faa5fe596 David Teigland    2006-01-16   993  out_alloc:
b3b94faa5fe596 David Teigland    2006-01-16   994       
gfs2_glock_dq_uninit(&i_gh);
2fba46a04c383f Bob Peterson      2020-02-27   995  out_dq:
b3b94faa5fe596 David Teigland    2006-01-16   996       while (qx--)
b3b94faa5fe596 David Teigland    2006-01-16   997               
gfs2_glock_dq_uninit(&ghs[qx]);
5955102c9984fa Al Viro           2016-01-22   998       
inode_unlock(&ip->i_inode);
b3b94faa5fe596 David Teigland    2006-01-16   999       kfree(ghs);
c1696fb85d3319 Bob Peterson      2018-01-17  1000       
gfs2_log_flush(ip->i_gl->gl_name.ln_sbd, ip->i_gl,
805c090750a315 Bob Peterson      2018-01-08  1001                      
GFS2_LOG_HEAD_FLUSH_NORMAL | GFS2_LFC_DO_SYNC);
c972972e772a77 Bob Peterson      2023-06-22  1002  out_qa_put:
c972972e772a77 Bob Peterson      2023-06-22  1003       for (x = 0; x < num_qd; 
x++) {
6fd568bc1f3432 Bob Peterson      2023-06-23  1004               qd = qda[x];
c972972e772a77 Bob Peterson      2023-06-22  1005               if (!error)
6fd568bc1f3432 Bob Peterson      2023-06-23  1006                       
qd->qd_sync_gen = sdp->sd_quota_sync_gen;
6fd568bc1f3432 Bob Peterson      2023-06-23  1007               
gfs2_assert_warn(qd->qd_sbd,
6fd568bc1f3432 Bob Peterson      2023-06-23  1008                               
 test_bit(QDF_LOCKED, &qd->qd_flags));
6fd568bc1f3432 Bob Peterson      2023-06-23  1009               
clear_bit(QDF_LOCKED, &qd->qd_flags);
6fd568bc1f3432 Bob Peterson      2023-06-23  1010               qdsb_put(qd);
c972972e772a77 Bob Peterson      2023-06-22  1011       }
b3b94faa5fe596 David Teigland    2006-01-16  1012       return error;
b3b94faa5fe596 David Teigland    2006-01-16 @1013  }
b3b94faa5fe596 David Teigland    2006-01-16  1014  

:::::: The code at line 1013 was first introduced by commit
:::::: b3b94faa5fe5968827ba0640ee9fba4b3e7f736e [GFS2] The core of GFS2

:::::: TO: David Teigland <teigl...@redhat.com>
:::::: CC: Steven Whitehouse <swhit...@redhat.com>

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

Reply via email to