Hi Nanzhe, kernel test robot noticed the following build warnings:
[auto build test WARNING on 48b5439e04ddf4508ecaf588219012dc81d947c0] url: https://github.com/intel-lab-lkp/linux/commits/Nanzhe-Zhao/f2fs-Zero-f2fs_folio_state-on-allocation/20260106-005006 base: 48b5439e04ddf4508ecaf588219012dc81d947c0 patch link: https://lore.kernel.org/r/20260105153101.152892-4-nzzhao%40126.com patch subject: [PATCH v1 3/5] f2fs: add f2fs_block_needs_zeroing() to handle hole blocks config: x86_64-kexec (https://download.01.org/0day-ci/archive/20260106/[email protected]/config) compiler: clang version 20.1.8 (https://github.com/llvm/llvm-project 87f0227cb60147a26a1eeb4fb06e3b505e9c7261) reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260106/[email protected]/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 <[email protected]> | Closes: https://lore.kernel.org/oe-kbuild-all/[email protected]/ All warnings (new ones prefixed by >>): >> fs/f2fs/data.c:2485:13: warning: variable 'block_nr' is used uninitialized >> whenever 'if' condition is false [-Wsometimes-uninitialized] 2485 | } else if((map.m_flags & F2FS_MAP_MAPPED)) { | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ fs/f2fs/data.c:2527:39: note: uninitialized use occurs here 2527 | f2fs_wait_on_block_writeback(inode, block_nr); | ^~~~~~~~ fs/f2fs/data.c:2485:10: note: remove the 'if' if its condition is always true 2485 | } else if((map.m_flags & F2FS_MAP_MAPPED)) { | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ fs/f2fs/data.c:2454:20: note: initialize the variable 'block_nr' to silence this warning 2454 | sector_t block_nr; | ^ | = 0 1 warning generated. vim +2485 fs/f2fs/data.c 2420 2421 static int f2fs_read_data_large_folio(struct inode *inode, 2422 struct readahead_control *rac, struct folio *folio) 2423 { 2424 struct bio *bio = NULL; 2425 sector_t last_block_in_bio = 0; 2426 struct f2fs_map_blocks map = {0, }; 2427 pgoff_t index, offset; 2428 unsigned max_nr_pages = rac ? readahead_count(rac) : 2429 folio_nr_pages(folio); 2430 unsigned nrpages; 2431 struct f2fs_folio_state *ffs; 2432 int ret = 0; 2433 2434 if (!IS_IMMUTABLE(inode)) 2435 return -EOPNOTSUPP; 2436 2437 if (f2fs_compressed_file(inode)) 2438 return -EOPNOTSUPP; 2439 2440 map.m_seg_type = NO_CHECK_TYPE; 2441 2442 if (rac) 2443 folio = readahead_folio(rac); 2444 next_folio: 2445 if (!folio) 2446 goto out; 2447 2448 index = folio->index; 2449 offset = 0; 2450 ffs = NULL; 2451 nrpages = folio_nr_pages(folio); 2452 2453 for (; nrpages; nrpages--) { 2454 sector_t block_nr; 2455 /* 2456 * Map blocks using the previous result first. 2457 */ 2458 if ((map.m_flags & F2FS_MAP_MAPPED) && 2459 index > map.m_lblk && 2460 index < (map.m_lblk + map.m_len)) 2461 goto got_it; 2462 2463 /* 2464 * Then do more f2fs_map_blocks() calls until we are 2465 * done with this page. 2466 */ 2467 memset(&map, 0, sizeof(map)); 2468 map.m_seg_type = NO_CHECK_TYPE; 2469 map.m_lblk = index; 2470 map.m_len = max_nr_pages; 2471 2472 ret = f2fs_map_blocks(inode, &map, F2FS_GET_BLOCK_DEFAULT); 2473 if (ret) 2474 goto err_out; 2475 got_it: 2476 if ((f2fs_block_needs_zeroing(&map))) { 2477 folio_zero_range(folio, offset << PAGE_SHIFT, PAGE_SIZE); 2478 if (f2fs_need_verity(inode, index) && 2479 !fsverity_verify_page(folio_file_page(folio, 2480 index))) { 2481 ret = -EIO; 2482 goto err_out; 2483 } 2484 continue; > 2485 } else if((map.m_flags & F2FS_MAP_MAPPED)) { 2486 block_nr = map.m_pblk + index - map.m_lblk; 2487 if (!f2fs_is_valid_blkaddr(F2FS_I_SB(inode), block_nr, 2488 DATA_GENERIC_ENHANCE_READ)) { 2489 ret = -EFSCORRUPTED; 2490 goto err_out; 2491 } 2492 } 2493 2494 /* We must increment read_pages_pending before possible BIOs submitting 2495 * to prevent from premature folio_end_read() call on folio 2496 */ 2497 if (folio_test_large(folio)) { 2498 ffs = ffs_find_or_alloc(folio); 2499 2500 /* set the bitmap to wait */ 2501 spin_lock_irq(&ffs->state_lock); 2502 ffs->read_pages_pending++; 2503 spin_unlock_irq(&ffs->state_lock); 2504 } 2505 2506 /* 2507 * This page will go to BIO. Do we need to send this 2508 * BIO off first? 2509 */ 2510 if (bio && (!page_is_mergeable(F2FS_I_SB(inode), bio, 2511 last_block_in_bio, block_nr) || 2512 !f2fs_crypt_mergeable_bio(bio, inode, index, NULL))) { 2513 submit_and_realloc: 2514 f2fs_submit_read_bio(F2FS_I_SB(inode), bio, DATA); 2515 bio = NULL; 2516 } 2517 if (bio == NULL) 2518 bio = f2fs_grab_read_bio(inode, block_nr, 2519 max_nr_pages, 2520 f2fs_ra_op_flags(rac), 2521 index, false); 2522 2523 /* 2524 * If the page is under writeback, we need to wait for 2525 * its completion to see the correct decrypted data. 2526 */ 2527 f2fs_wait_on_block_writeback(inode, block_nr); 2528 2529 if (!bio_add_folio(bio, folio, F2FS_BLKSIZE, 2530 offset << PAGE_SHIFT)) 2531 goto submit_and_realloc; 2532 2533 inc_page_count(F2FS_I_SB(inode), F2FS_RD_DATA); 2534 f2fs_update_iostat(F2FS_I_SB(inode), NULL, FS_DATA_READ_IO, 2535 F2FS_BLKSIZE); 2536 last_block_in_bio = block_nr; 2537 index++; 2538 offset++; 2539 } 2540 trace_f2fs_read_folio(folio, DATA); 2541 if (rac) { 2542 folio = readahead_folio(rac); 2543 goto next_folio; 2544 } 2545 err_out: 2546 /* Nothing was submitted. */ 2547 if (!bio) { 2548 if (!ret) 2549 folio_mark_uptodate(folio); 2550 folio_unlock(folio); 2551 return ret; 2552 } 2553 2554 if (ret) { 2555 f2fs_submit_read_bio(F2FS_I_SB(inode), bio, DATA); 2556 2557 /* Wait bios and clear uptodate. */ 2558 folio_lock(folio); 2559 folio_clear_uptodate(folio); 2560 folio_unlock(folio); 2561 } 2562 out: 2563 f2fs_submit_read_bio(F2FS_I_SB(inode), bio, DATA); 2564 return ret; 2565 } 2566 -- 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
