tree:   https://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4.git dev
head:   0a76945fd1ba2ab44da7b578b311efdfedf92e6c
commit: 3258386aba670e3406a499d2d0b7395e14c8d097 [6/8] ext4: reset retry 
counter when ext4_alloc_file_blocks() makes progress
config: i386-randconfig-m021-20210215 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-15) 9.3.0

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <[email protected]>
Reported-by: Dan Carpenter <[email protected]>

New smatch warnings:
fs/ext4/extents.c:4456 ext4_alloc_file_blocks() error: uninitialized symbol 
'ret'.

Old smatch warnings:
fs/ext4/extents.c:2396 ext4_rereserve_cluster() warn: should '(1) << 
sbi->s_cluster_bits' be a 64 bit type?
include/linux/fs.h:861 i_size_write() warn: statement has no effect 31
fs/ext4/extents.c:5760 ext4_clu_mapped() warn: should 'lclu << 
sbi->s_cluster_bits' be a 64 bit type?
fs/ext4/extents.c:6009 ext4_ext_replay_set_iblocks() warn: should 'numblks << 
(inode->i_sb->s_blocksize_bits - 9)' be a 64 bit type?

vim +/ret +4456 fs/ext4/extents.c

0e8b6879f3c234 Lukas Czerner      2014-03-18  4379  static int 
ext4_alloc_file_blocks(struct file *file, ext4_lblk_t offset,
c174e6d6979a04 Dmitry Monakhov    2014-08-27  4380                              
  ext4_lblk_t len, loff_t new_size,
                                                                                
  ^^^^^^^^^^^^^^^
Can "len" be zero?  If so then we have a problem, if not then this is
a false positive.

77a2e84d51729d Tahsin Erdogan     2017-08-05  4381                              
  int flags)
0e8b6879f3c234 Lukas Czerner      2014-03-18  4382  {
0e8b6879f3c234 Lukas Czerner      2014-03-18  4383      struct inode *inode = 
file_inode(file);
0e8b6879f3c234 Lukas Czerner      2014-03-18  4384      handle_t *handle;
3258386aba670e Eric Whitney       2021-01-13  4385      int ret, ret2 = 0, ret3 
= 0;
0e8b6879f3c234 Lukas Czerner      2014-03-18  4386      int retries = 0;
4134f5c88dcd5b Lukas Czerner      2015-06-15  4387      int depth = 0;
0e8b6879f3c234 Lukas Czerner      2014-03-18  4388      struct ext4_map_blocks 
map;
0e8b6879f3c234 Lukas Czerner      2014-03-18  4389      unsigned int credits;
c174e6d6979a04 Dmitry Monakhov    2014-08-27  4390      loff_t epos;
0e8b6879f3c234 Lukas Czerner      2014-03-18  4391  
c3fe493ccdb1f4 Fabian Frederick   2016-09-15  4392      
BUG_ON(!ext4_test_inode_flag(inode, EXT4_INODE_EXTENTS));
0e8b6879f3c234 Lukas Czerner      2014-03-18  4393      map.m_lblk = offset;
c174e6d6979a04 Dmitry Monakhov    2014-08-27  4394      map.m_len = len;
0e8b6879f3c234 Lukas Czerner      2014-03-18  4395      /*
0e8b6879f3c234 Lukas Czerner      2014-03-18  4396       * Don't normalize the 
request if it can fit in one extent so
0e8b6879f3c234 Lukas Czerner      2014-03-18  4397       * that it doesn't get 
unnecessarily split into multiple
0e8b6879f3c234 Lukas Czerner      2014-03-18  4398       * extents.
0e8b6879f3c234 Lukas Czerner      2014-03-18  4399       */
556615dcbf38b0 Lukas Czerner      2014-04-20  4400      if (len <= 
EXT_UNWRITTEN_MAX_LEN)
0e8b6879f3c234 Lukas Czerner      2014-03-18  4401              flags |= 
EXT4_GET_BLOCKS_NO_NORMALIZE;
0e8b6879f3c234 Lukas Czerner      2014-03-18  4402  
0e8b6879f3c234 Lukas Czerner      2014-03-18  4403      /*
0e8b6879f3c234 Lukas Czerner      2014-03-18  4404       * credits to insert 1 
extent into extent tree
0e8b6879f3c234 Lukas Czerner      2014-03-18  4405       */
0e8b6879f3c234 Lukas Czerner      2014-03-18  4406      credits = 
ext4_chunk_trans_blocks(inode, len);
4134f5c88dcd5b Lukas Czerner      2015-06-15  4407      depth = 
ext_depth(inode);
0e8b6879f3c234 Lukas Czerner      2014-03-18  4408  
0e8b6879f3c234 Lukas Czerner      2014-03-18  4409  retry:
3258386aba670e Eric Whitney       2021-01-13  4410      while (len) {
                                                        ^^^^^^^^^^^^^

4134f5c88dcd5b Lukas Czerner      2015-06-15  4411              /*
4134f5c88dcd5b Lukas Czerner      2015-06-15  4412               * Recalculate 
credits when extent tree depth changes.
4134f5c88dcd5b Lukas Czerner      2015-06-15  4413               */
011c88e36c26a0 Dan Carpenter      2016-12-03  4414              if (depth != 
ext_depth(inode)) {
4134f5c88dcd5b Lukas Czerner      2015-06-15  4415                      credits 
= ext4_chunk_trans_blocks(inode, len);
4134f5c88dcd5b Lukas Czerner      2015-06-15  4416                      depth = 
ext_depth(inode);
4134f5c88dcd5b Lukas Czerner      2015-06-15  4417              }
4134f5c88dcd5b Lukas Czerner      2015-06-15  4418  
0e8b6879f3c234 Lukas Czerner      2014-03-18  4419              handle = 
ext4_journal_start(inode, EXT4_HT_MAP_BLOCKS,
0e8b6879f3c234 Lukas Czerner      2014-03-18  4420                              
            credits);
0e8b6879f3c234 Lukas Czerner      2014-03-18  4421              if 
(IS_ERR(handle)) {
0e8b6879f3c234 Lukas Czerner      2014-03-18  4422                      ret = 
PTR_ERR(handle);
0e8b6879f3c234 Lukas Czerner      2014-03-18  4423                      break;
0e8b6879f3c234 Lukas Czerner      2014-03-18  4424              }
0e8b6879f3c234 Lukas Czerner      2014-03-18  4425              ret = 
ext4_map_blocks(handle, inode, &map, flags);
0e8b6879f3c234 Lukas Czerner      2014-03-18  4426              if (ret <= 0) {
0e8b6879f3c234 Lukas Czerner      2014-03-18  4427                      
ext4_debug("inode #%lu: block %u: len %u: "
0e8b6879f3c234 Lukas Czerner      2014-03-18  4428                              
   "ext4_ext_map_blocks returned %d",
0e8b6879f3c234 Lukas Czerner      2014-03-18  4429                              
   inode->i_ino, map.m_lblk,
0e8b6879f3c234 Lukas Czerner      2014-03-18  4430                              
   map.m_len, ret);
0e8b6879f3c234 Lukas Czerner      2014-03-18  4431                      
ext4_mark_inode_dirty(handle, inode);
3258386aba670e Eric Whitney       2021-01-13  4432                      
ext4_journal_stop(handle);
0e8b6879f3c234 Lukas Czerner      2014-03-18  4433                      break;
0e8b6879f3c234 Lukas Czerner      2014-03-18  4434              }
3258386aba670e Eric Whitney       2021-01-13  4435              /*
3258386aba670e Eric Whitney       2021-01-13  4436               * allow a full 
retry cycle for any remaining allocations
3258386aba670e Eric Whitney       2021-01-13  4437               */
3258386aba670e Eric Whitney       2021-01-13  4438              retries = 0;
c174e6d6979a04 Dmitry Monakhov    2014-08-27  4439              map.m_lblk += 
ret;
c174e6d6979a04 Dmitry Monakhov    2014-08-27  4440              map.m_len = len 
= len - ret;
c174e6d6979a04 Dmitry Monakhov    2014-08-27  4441              epos = 
(loff_t)map.m_lblk << inode->i_blkbits;
eeca7ea1baa939 Deepa Dinamani     2016-11-14  4442              inode->i_ctime 
= current_time(inode);
c174e6d6979a04 Dmitry Monakhov    2014-08-27  4443              if (new_size) {
c174e6d6979a04 Dmitry Monakhov    2014-08-27  4444                      if 
(epos > new_size)
c174e6d6979a04 Dmitry Monakhov    2014-08-27  4445                              
epos = new_size;
c174e6d6979a04 Dmitry Monakhov    2014-08-27  4446                      if 
(ext4_update_inode_size(inode, epos) & 0x1)
c174e6d6979a04 Dmitry Monakhov    2014-08-27  4447                              
inode->i_mtime = inode->i_ctime;
c174e6d6979a04 Dmitry Monakhov    2014-08-27  4448              }
4209ae12b12265 Harshad Shirwadkar 2020-04-26  4449              ret2 = 
ext4_mark_inode_dirty(handle, inode);
c894aa97577e47 Eryu Guan          2017-12-03  4450              
ext4_update_inode_fsync_trans(handle, inode, 1);
4209ae12b12265 Harshad Shirwadkar 2020-04-26  4451              ret3 = 
ext4_journal_stop(handle);
4209ae12b12265 Harshad Shirwadkar 2020-04-26  4452              ret2 = ret3 ? 
ret3 : ret2;
4209ae12b12265 Harshad Shirwadkar 2020-04-26  4453              if 
(unlikely(ret2))
0e8b6879f3c234 Lukas Czerner      2014-03-18  4454                      break;
0e8b6879f3c234 Lukas Czerner      2014-03-18  4455      }
3258386aba670e Eric Whitney       2021-01-13 @4456      if (ret == -ENOSPC && 
ext4_should_retry_alloc(inode->i_sb, &retries))
                                                            ^^^^^^^^^^^^^^

0e8b6879f3c234 Lukas Czerner      2014-03-18  4457              goto retry;
0e8b6879f3c234 Lukas Czerner      2014-03-18  4458  
0e8b6879f3c234 Lukas Czerner      2014-03-18  4459      return ret > 0 ? ret2 : 
ret;
0e8b6879f3c234 Lukas Czerner      2014-03-18  4460  }

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/[email protected]

Attachment: .config.gz
Description: application/gzip

_______________________________________________
kbuild mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to