On 02/24, Dan Carpenter wrote:
> tree:   https://git.kernel.org/pub/scm/linux/kernel/git/jaegeuk/f2fs.git 
> dev-test
> head:   0c3712423755e851debb4021af26802b75d1cb9d
> commit: 0c3712423755e851debb4021af26802b75d1cb9d [5/5] f2fs: avoid reading 
> already updated pages during GC
> config: csky-randconfig-r071-20260224 
> (https://download.01.org/0day-ci/archive/20260224/[email protected]/config)
> compiler: csky-linux-gcc (GCC) 15.2.0
> smatch version: v0.5.0-8994-gd50c5a4c
> 
> 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 <[email protected]>
> | Reported-by: Dan Carpenter <[email protected]>
> | Closes: https://lore.kernel.org/r/[email protected]/
> 
> smatch warnings:
> fs/f2fs/gc.c:1286 ra_data_block() warn: missing error code 'err'
> 
> vim +/err +1286 fs/f2fs/gc.c
> 
> 6aa58d8ad20a332 Chao Yu                 2018-08-14  1217  static int 
> ra_data_block(struct inode *inode, pgoff_t index)
> 6aa58d8ad20a332 Chao Yu                 2018-08-14  1218  {
> 6aa58d8ad20a332 Chao Yu                 2018-08-14  1219      struct 
> f2fs_sb_info *sbi = F2FS_I_SB(inode);
> f18d00769336897 Sunmin Jeong            2024-07-10  1220      struct 
> address_space *mapping = f2fs_is_cow_file(inode) ?
> f18d00769336897 Sunmin Jeong            2024-07-10  1221                      
>         F2FS_I(inode)->atomic_inode->i_mapping : inode->i_mapping;
> 6aa58d8ad20a332 Chao Yu                 2018-08-14  1222      struct 
> dnode_of_data dn;
> e0b89d00ea9f846 Chao Yu                 2025-10-14  1223      struct folio 
> *folio, *efolio;
> 6aa58d8ad20a332 Chao Yu                 2018-08-14  1224      struct 
> f2fs_io_info fio = {
> 6aa58d8ad20a332 Chao Yu                 2018-08-14  1225              .sbi = 
> sbi,
> 6aa58d8ad20a332 Chao Yu                 2018-08-14  1226              .ino = 
> inode->i_ino,
> 6aa58d8ad20a332 Chao Yu                 2018-08-14  1227              .type = 
> DATA,
> 6aa58d8ad20a332 Chao Yu                 2018-08-14  1228              .temp = 
> COLD,
> 6aa58d8ad20a332 Chao Yu                 2018-08-14  1229              .op = 
> REQ_OP_READ,
> 6aa58d8ad20a332 Chao Yu                 2018-08-14  1230              
> .op_flags = 0,
> 6aa58d8ad20a332 Chao Yu                 2018-08-14  1231              
> .encrypted_page = NULL,
> 2eae077e6e46f90 Chao Yu                 2023-02-02  1232              
> .in_list = 0,
> 6aa58d8ad20a332 Chao Yu                 2018-08-14  1233      };
> 0c3712423755e85 Jianan Huang            2026-02-09  1234      int err = 0;
> 6aa58d8ad20a332 Chao Yu                 2018-08-14  1235  
> 0d53be232343c16 Matthew Wilcox (Oracle  2025-03-31  1236)     folio = 
> f2fs_grab_cache_folio(mapping, index, true);
> 0d53be232343c16 Matthew Wilcox (Oracle  2025-03-31  1237)     if 
> (IS_ERR(folio))
> 0d53be232343c16 Matthew Wilcox (Oracle  2025-03-31  1238)             return 
> PTR_ERR(folio);
> 6aa58d8ad20a332 Chao Yu                 2018-08-14  1239  
> 04a91ab01684744 Christoph Hellwig       2022-11-28  1240      if 
> (f2fs_lookup_read_extent_cache_block(inode, index,
> 04a91ab01684744 Christoph Hellwig       2022-11-28  1241                      
>                         &dn.data_blkaddr)) {
> 93770ab7a6e9631 Chao Yu                 2019-04-15  1242              if 
> (unlikely(!f2fs_is_valid_blkaddr(sbi, dn.data_blkaddr,
> 93770ab7a6e9631 Chao Yu                 2019-04-15  1243                      
>                         DATA_GENERIC_ENHANCE_READ))) {
> 10f966bbf521bb9 Chao Yu                 2019-06-20  1244                      
> err = -EFSCORRUPTED;
> 0d53be232343c16 Matthew Wilcox (Oracle  2025-03-31  1245)                     
> goto put_folio;
> 93770ab7a6e9631 Chao Yu                 2019-04-15  1246              }
> 6aa58d8ad20a332 Chao Yu                 2018-08-14  1247              goto 
> got_it;
> 6aa58d8ad20a332 Chao Yu                 2018-08-14  1248      }
> 6aa58d8ad20a332 Chao Yu                 2018-08-14  1249  
> 6aa58d8ad20a332 Chao Yu                 2018-08-14  1250      
> set_new_dnode(&dn, inode, NULL, NULL, 0);
> 6aa58d8ad20a332 Chao Yu                 2018-08-14  1251      err = 
> f2fs_get_dnode_of_data(&dn, index, LOOKUP_NODE);
> 6aa58d8ad20a332 Chao Yu                 2018-08-14  1252      if (err)
> 0d53be232343c16 Matthew Wilcox (Oracle  2025-03-31  1253)             goto 
> put_folio;
> 6aa58d8ad20a332 Chao Yu                 2018-08-14  1254      
> f2fs_put_dnode(&dn);
> 6aa58d8ad20a332 Chao Yu                 2018-08-14  1255  
> 93770ab7a6e9631 Chao Yu                 2019-04-15  1256      if 
> (!__is_valid_data_blkaddr(dn.data_blkaddr)) {
> 93770ab7a6e9631 Chao Yu                 2019-04-15  1257              err = 
> -ENOENT;
> 0d53be232343c16 Matthew Wilcox (Oracle  2025-03-31  1258)             goto 
> put_folio;
> 93770ab7a6e9631 Chao Yu                 2019-04-15  1259      }
> 6aa58d8ad20a332 Chao Yu                 2018-08-14  1260      if 
> (unlikely(!f2fs_is_valid_blkaddr(sbi, dn.data_blkaddr,
> 93770ab7a6e9631 Chao Yu                 2019-04-15  1261                      
>                         DATA_GENERIC_ENHANCE))) {
> 10f966bbf521bb9 Chao Yu                 2019-06-20  1262              err = 
> -EFSCORRUPTED;
> 0d53be232343c16 Matthew Wilcox (Oracle  2025-03-31  1263)             goto 
> put_folio;
> 6aa58d8ad20a332 Chao Yu                 2018-08-14  1264      }
> 6aa58d8ad20a332 Chao Yu                 2018-08-14  1265  got_it:
> 0d53be232343c16 Matthew Wilcox (Oracle  2025-03-31  1266)     /* read folio */
> d342b7adad71e5a Matthew Wilcox (Oracle  2025-07-08  1267)     fio.folio = 
> folio;
> 6aa58d8ad20a332 Chao Yu                 2018-08-14  1268      fio.new_blkaddr 
> = fio.old_blkaddr = dn.data_blkaddr;
> 6aa58d8ad20a332 Chao Yu                 2018-08-14  1269  
> 9bf1a3f73927492 Yunlong Song            2018-09-18  1270      /*
> 9bf1a3f73927492 Yunlong Song            2018-09-18  1271       * don't cache 
> encrypted data into meta inode until previous dirty
> 9bf1a3f73927492 Yunlong Song            2018-09-18  1272       * data were 
> writebacked to avoid racing between GC and flush.
> 9bf1a3f73927492 Yunlong Song            2018-09-18  1273       */
> 0d53be232343c16 Matthew Wilcox (Oracle  2025-03-31  1274)     
> f2fs_folio_wait_writeback(folio, DATA, true, true);
> 9bf1a3f73927492 Yunlong Song            2018-09-18  1275  
> 9bf1a3f73927492 Yunlong Song            2018-09-18  1276      
> f2fs_wait_on_block_writeback(inode, dn.data_blkaddr);
> 9bf1a3f73927492 Yunlong Song            2018-09-18  1277  
> e0b89d00ea9f846 Chao Yu                 2025-10-14  1278      efolio = 
> f2fs_filemap_get_folio(META_MAPPING(sbi), dn.data_blkaddr,
> 6aa58d8ad20a332 Chao Yu                 2018-08-14  1279                      
>                 FGP_LOCK | FGP_CREAT, GFP_NOFS);
> e0b89d00ea9f846 Chao Yu                 2025-10-14  1280      if 
> (IS_ERR(efolio)) {
> e0b89d00ea9f846 Chao Yu                 2025-10-14  1281              err = 
> PTR_ERR(efolio);
> 0d53be232343c16 Matthew Wilcox (Oracle  2025-03-31  1282)             goto 
> put_folio;
> 6aa58d8ad20a332 Chao Yu                 2018-08-14  1283      }
> 6aa58d8ad20a332 Chao Yu                 2018-08-14  1284  
> 0c3712423755e85 Jianan Huang            2026-02-09  1285      if 
> (folio_test_uptodate(efolio))
> 0c3712423755e85 Jianan Huang            2026-02-09 @1286              goto 
> put_encrypted_page;
> 
> Is this an error path?  It looks like it is...

https://git.kernel.org/pub/scm/linux/kernel/git/jaegeuk/f2fs.git/commit/?h=dev-test

It's not an error case, but skips to submit bio.

> 
> 0c3712423755e85 Jianan Huang            2026-02-09  1287  
> e0b89d00ea9f846 Chao Yu                 2025-10-14  1288      
> fio.encrypted_page = &efolio->page;
> e0b89d00ea9f846 Chao Yu                 2025-10-14  1289  
> 6aa58d8ad20a332 Chao Yu                 2018-08-14  1290      err = 
> f2fs_submit_page_bio(&fio);
> 6aa58d8ad20a332 Chao Yu                 2018-08-14  1291      if (err)
> 6aa58d8ad20a332 Chao Yu                 2018-08-14  1292              goto 
> put_encrypted_page;
> 89c16629e3136f0 Yongpeng Yang           2025-10-27  1293      
> f2fs_put_page(fio.encrypted_page, false);
> 0d53be232343c16 Matthew Wilcox (Oracle  2025-03-31  1294)     
> f2fs_folio_put(folio, true);
> 8b83ac81f4283ae Chao Yu                 2020-04-16  1295  
> 34a23525601a16f Chao Yu                 2022-08-20  1296      
> f2fs_update_iostat(sbi, inode, FS_DATA_READ_IO, F2FS_BLKSIZE);
> 34a23525601a16f Chao Yu                 2022-08-20  1297      
> f2fs_update_iostat(sbi, NULL, FS_GDATA_READ_IO, F2FS_BLKSIZE);
> 8b83ac81f4283ae Chao Yu                 2020-04-16  1298  
> 6aa58d8ad20a332 Chao Yu                 2018-08-14  1299      return 0;
> 6aa58d8ad20a332 Chao Yu                 2018-08-14  1300  put_encrypted_page:
> 89c16629e3136f0 Yongpeng Yang           2025-10-27  1301      
> f2fs_put_page(fio.encrypted_page, true);
> 0d53be232343c16 Matthew Wilcox (Oracle  2025-03-31  1302) put_folio:
> 0d53be232343c16 Matthew Wilcox (Oracle  2025-03-31  1303)     
> f2fs_folio_put(folio, true);
> 6aa58d8ad20a332 Chao Yu                 2018-08-14  1304      return err;
> 6aa58d8ad20a332 Chao Yu                 2018-08-14  1305  }
> 
> -- 
> 0-DAY CI Kernel Test Service
> https://github.com/intel/lkp-tests/wiki


_______________________________________________
Linux-f2fs-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel

Reply via email to