CC: [email protected]
In-Reply-To: <[email protected]>
References: <[email protected]>
TO: Qu Wenruo <[email protected]>

Hi Qu,

Thank you for the patch! Perhaps something to improve:

[auto build test WARNING on kdave/for-next]
[also build test WARNING on next-20220107]
[cannot apply to v5.16-rc8]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]

url:    
https://github.com/0day-ci/linux/commits/Qu-Wenruo/btrfs-refactor-scrub-entrances-for-each-profile/20220107-103545
base:   https://git.kernel.org/pub/scm/linux/kernel/git/kdave/linux.git for-next
:::::: branch date: 19 hours ago
:::::: commit date: 19 hours ago
config: x86_64-randconfig-m001-20220107 
(https://download.01.org/0day-ci/archive/20220108/[email protected]/config)
compiler: gcc-9 (Debian 9.3.0-22) 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]>

smatch warnings:
fs/btrfs/scrub.c:3439 scrub_simple_mirror() error: uninitialized symbol 'ret'.

vim +/ret +3439 fs/btrfs/scrub.c

f8636fcdd5f4ab Qu Wenruo 2022-01-07  3304  
f8636fcdd5f4ab Qu Wenruo 2022-01-07  3305  /*
f8636fcdd5f4ab Qu Wenruo 2022-01-07  3306   * Scrub one range which can only 
has simple mirror based profile.
f8636fcdd5f4ab Qu Wenruo 2022-01-07  3307   * (Including all range in 
SINGLE/DUP/RAID1/RAID1C*, and each stripe in
f8636fcdd5f4ab Qu Wenruo 2022-01-07  3308   *  RAID0/RAID10).
f8636fcdd5f4ab Qu Wenruo 2022-01-07  3309   *
f8636fcdd5f4ab Qu Wenruo 2022-01-07  3310   * Since we may need to handle a 
subset of block group, we need @logical_start
f8636fcdd5f4ab Qu Wenruo 2022-01-07  3311   * and @logical_length parameter.
f8636fcdd5f4ab Qu Wenruo 2022-01-07  3312   */
f8636fcdd5f4ab Qu Wenruo 2022-01-07  3313  static int 
scrub_simple_mirror(struct scrub_ctx *sctx,
f8636fcdd5f4ab Qu Wenruo 2022-01-07  3314                               struct 
btrfs_root *extent_root,
f8636fcdd5f4ab Qu Wenruo 2022-01-07  3315                               struct 
btrfs_root *csum_root,
f8636fcdd5f4ab Qu Wenruo 2022-01-07  3316                               struct 
btrfs_block_group *bg,
f8636fcdd5f4ab Qu Wenruo 2022-01-07  3317                               struct 
map_lookup *map,
f8636fcdd5f4ab Qu Wenruo 2022-01-07  3318                               u64 
logical_start, u64 logical_length,
f8636fcdd5f4ab Qu Wenruo 2022-01-07  3319                               struct 
btrfs_device *device,
f8636fcdd5f4ab Qu Wenruo 2022-01-07  3320                               u64 
physical, int mirror_num)
f8636fcdd5f4ab Qu Wenruo 2022-01-07  3321  {
f8636fcdd5f4ab Qu Wenruo 2022-01-07  3322       struct btrfs_fs_info *fs_info = 
sctx->fs_info;
f8636fcdd5f4ab Qu Wenruo 2022-01-07  3323       const u64 logical_end = 
logical_start + logical_length;
f8636fcdd5f4ab Qu Wenruo 2022-01-07  3324       /* An artificial limit, inherit 
from old scrub behavior */
f8636fcdd5f4ab Qu Wenruo 2022-01-07  3325       const u32 max_length = SZ_64K;
f8636fcdd5f4ab Qu Wenruo 2022-01-07  3326       struct btrfs_path path = {};
f8636fcdd5f4ab Qu Wenruo 2022-01-07  3327       u64 cur_logical = logical_start;
f8636fcdd5f4ab Qu Wenruo 2022-01-07  3328       int ret;
f8636fcdd5f4ab Qu Wenruo 2022-01-07  3329  
f8636fcdd5f4ab Qu Wenruo 2022-01-07  3330       /* The range must be inside the 
bg */
f8636fcdd5f4ab Qu Wenruo 2022-01-07  3331       ASSERT(logical_start >= 
bg->start &&
f8636fcdd5f4ab Qu Wenruo 2022-01-07  3332              logical_end <= bg->start 
+ bg->length);
f8636fcdd5f4ab Qu Wenruo 2022-01-07  3333  
f8636fcdd5f4ab Qu Wenruo 2022-01-07  3334       path.search_commit_root = 1;
f8636fcdd5f4ab Qu Wenruo 2022-01-07  3335       path.skip_locking = 1;
f8636fcdd5f4ab Qu Wenruo 2022-01-07  3336       /* Go through each */
f8636fcdd5f4ab Qu Wenruo 2022-01-07  3337       while (cur_logical < 
logical_end) {
f8636fcdd5f4ab Qu Wenruo 2022-01-07  3338               int cur_mirror = 
mirror_num;
f8636fcdd5f4ab Qu Wenruo 2022-01-07  3339               struct btrfs_device 
*target_dev = device;
f8636fcdd5f4ab Qu Wenruo 2022-01-07  3340               u64 extent_start;
f8636fcdd5f4ab Qu Wenruo 2022-01-07  3341               u64 extent_len;
f8636fcdd5f4ab Qu Wenruo 2022-01-07  3342               u64 extent_flags;
f8636fcdd5f4ab Qu Wenruo 2022-01-07  3343               u64 extent_gen;
f8636fcdd5f4ab Qu Wenruo 2022-01-07  3344               u64 scrub_len;
f8636fcdd5f4ab Qu Wenruo 2022-01-07  3345               u64 cur_physical;
f8636fcdd5f4ab Qu Wenruo 2022-01-07  3346  
f8636fcdd5f4ab Qu Wenruo 2022-01-07  3347               /* Canceled ? */
f8636fcdd5f4ab Qu Wenruo 2022-01-07  3348               if 
(atomic_read(&fs_info->scrub_cancel_req) ||
f8636fcdd5f4ab Qu Wenruo 2022-01-07  3349                   
atomic_read(&sctx->cancel_req)) {
f8636fcdd5f4ab Qu Wenruo 2022-01-07  3350                       ret = 
-ECANCELED;
f8636fcdd5f4ab Qu Wenruo 2022-01-07  3351                       break;
f8636fcdd5f4ab Qu Wenruo 2022-01-07  3352               }
f8636fcdd5f4ab Qu Wenruo 2022-01-07  3353               /* Paused ? */
f8636fcdd5f4ab Qu Wenruo 2022-01-07  3354               if 
(atomic_read(&fs_info->scrub_pause_req)) {
f8636fcdd5f4ab Qu Wenruo 2022-01-07  3355                       /* Push queued 
extents */
f8636fcdd5f4ab Qu Wenruo 2022-01-07  3356                       
sctx->flush_all_writes = true;
f8636fcdd5f4ab Qu Wenruo 2022-01-07  3357                       
scrub_submit(sctx);
f8636fcdd5f4ab Qu Wenruo 2022-01-07  3358                       
mutex_lock(&sctx->wr_lock);
f8636fcdd5f4ab Qu Wenruo 2022-01-07  3359                       
scrub_wr_submit(sctx);
f8636fcdd5f4ab Qu Wenruo 2022-01-07  3360                       
mutex_unlock(&sctx->wr_lock);
f8636fcdd5f4ab Qu Wenruo 2022-01-07  3361                       
wait_event(sctx->list_wait,
f8636fcdd5f4ab Qu Wenruo 2022-01-07  3362                                  
atomic_read(&sctx->bios_in_flight) == 0);
f8636fcdd5f4ab Qu Wenruo 2022-01-07  3363                       
sctx->flush_all_writes = false;
f8636fcdd5f4ab Qu Wenruo 2022-01-07  3364                       
scrub_blocked_if_needed(fs_info);
f8636fcdd5f4ab Qu Wenruo 2022-01-07  3365               }
f8636fcdd5f4ab Qu Wenruo 2022-01-07  3366               /* Block group removed? 
*/
f8636fcdd5f4ab Qu Wenruo 2022-01-07  3367               spin_lock(&bg->lock);
f8636fcdd5f4ab Qu Wenruo 2022-01-07  3368               if (bg->removed) {
f8636fcdd5f4ab Qu Wenruo 2022-01-07  3369                       
spin_unlock(&bg->lock);
f8636fcdd5f4ab Qu Wenruo 2022-01-07  3370                       ret = 0;
f8636fcdd5f4ab Qu Wenruo 2022-01-07  3371                       break;
f8636fcdd5f4ab Qu Wenruo 2022-01-07  3372               }
f8636fcdd5f4ab Qu Wenruo 2022-01-07  3373               spin_unlock(&bg->lock);
f8636fcdd5f4ab Qu Wenruo 2022-01-07  3374  
f8636fcdd5f4ab Qu Wenruo 2022-01-07  3375               ret = 
find_first_extent_item(extent_root, &path, cur_logical,
f8636fcdd5f4ab Qu Wenruo 2022-01-07  3376                                       
     logical_end - cur_logical);
f8636fcdd5f4ab Qu Wenruo 2022-01-07  3377               if (ret > 0) {
f8636fcdd5f4ab Qu Wenruo 2022-01-07  3378                       /* No more 
extent, just update the accounting */
f8636fcdd5f4ab Qu Wenruo 2022-01-07  3379                       
sctx->stat.last_physical = physical + logical_length;
f8636fcdd5f4ab Qu Wenruo 2022-01-07  3380                       ret = 0;
f8636fcdd5f4ab Qu Wenruo 2022-01-07  3381                       break;
f8636fcdd5f4ab Qu Wenruo 2022-01-07  3382               }
f8636fcdd5f4ab Qu Wenruo 2022-01-07  3383               if (ret < 0)
f8636fcdd5f4ab Qu Wenruo 2022-01-07  3384                       break;
f8636fcdd5f4ab Qu Wenruo 2022-01-07  3385               get_extent_info(&path, 
&extent_start, &extent_len,
f8636fcdd5f4ab Qu Wenruo 2022-01-07  3386                               
&extent_flags, &extent_gen);
f8636fcdd5f4ab Qu Wenruo 2022-01-07  3387               /* Skip hole range 
which doesn't have any extent */
f8636fcdd5f4ab Qu Wenruo 2022-01-07  3388               cur_logical = 
max(extent_start, cur_logical);
f8636fcdd5f4ab Qu Wenruo 2022-01-07  3389  
f8636fcdd5f4ab Qu Wenruo 2022-01-07  3390               /*
f8636fcdd5f4ab Qu Wenruo 2022-01-07  3391                * Scrub len has three 
limits:
f8636fcdd5f4ab Qu Wenruo 2022-01-07  3392                * - Extent size limit
f8636fcdd5f4ab Qu Wenruo 2022-01-07  3393                * - Scrub range limit
f8636fcdd5f4ab Qu Wenruo 2022-01-07  3394                *   This is especially 
imporatant for RAID0/RAID10 to reuse
f8636fcdd5f4ab Qu Wenruo 2022-01-07  3395                *   this function
f8636fcdd5f4ab Qu Wenruo 2022-01-07  3396                * - Max scrub size 
limit
f8636fcdd5f4ab Qu Wenruo 2022-01-07  3397                */
f8636fcdd5f4ab Qu Wenruo 2022-01-07  3398               scrub_len = 
min(min(extent_start + extent_len,
f8636fcdd5f4ab Qu Wenruo 2022-01-07  3399                                   
logical_end), cur_logical + max_length) -
f8636fcdd5f4ab Qu Wenruo 2022-01-07  3400                           cur_logical;
f8636fcdd5f4ab Qu Wenruo 2022-01-07  3401               cur_physical = 
cur_logical - logical_start + physical;
f8636fcdd5f4ab Qu Wenruo 2022-01-07  3402  
f8636fcdd5f4ab Qu Wenruo 2022-01-07  3403               if 
(sctx->is_dev_replace)
f8636fcdd5f4ab Qu Wenruo 2022-01-07  3404                       
scrub_remap_extent(fs_info, cur_logical, scrub_len,
f8636fcdd5f4ab Qu Wenruo 2022-01-07  3405                                       
   &cur_physical, &target_dev, &cur_mirror);
f8636fcdd5f4ab Qu Wenruo 2022-01-07  3406               if (extent_flags & 
BTRFS_EXTENT_FLAG_DATA) {
f8636fcdd5f4ab Qu Wenruo 2022-01-07  3407                       ret = 
btrfs_lookup_csums_range(csum_root, cur_logical,
f8636fcdd5f4ab Qu Wenruo 2022-01-07  3408                                       
cur_logical + scrub_len - 1,
f8636fcdd5f4ab Qu Wenruo 2022-01-07  3409                                       
&sctx->csum_list, 1);
f8636fcdd5f4ab Qu Wenruo 2022-01-07  3410                       if (ret)
f8636fcdd5f4ab Qu Wenruo 2022-01-07  3411                               break;
f8636fcdd5f4ab Qu Wenruo 2022-01-07  3412               }
f8636fcdd5f4ab Qu Wenruo 2022-01-07  3413               if ((extent_flags & 
BTRFS_EXTENT_FLAG_TREE_BLOCK) &&
f8636fcdd5f4ab Qu Wenruo 2022-01-07  3414                   
does_range_cross_boundary(extent_start, extent_len,
f8636fcdd5f4ab Qu Wenruo 2022-01-07  3415                                       
      logical_start, logical_length)) {
f8636fcdd5f4ab Qu Wenruo 2022-01-07  3416                       
btrfs_err(fs_info,
f8636fcdd5f4ab Qu Wenruo 2022-01-07  3417  "scrub: tree block %llu spanning 
boundaries, ignored. boundary=[%llu, %llu)",
f8636fcdd5f4ab Qu Wenruo 2022-01-07  3418                                 
extent_start, logical_start, logical_end);
f8636fcdd5f4ab Qu Wenruo 2022-01-07  3419                       
spin_lock(&sctx->stat_lock);
f8636fcdd5f4ab Qu Wenruo 2022-01-07  3420                       
sctx->stat.uncorrectable_errors++;
f8636fcdd5f4ab Qu Wenruo 2022-01-07  3421                       
spin_unlock(&sctx->stat_lock);
f8636fcdd5f4ab Qu Wenruo 2022-01-07  3422                       cur_logical += 
scrub_len;
f8636fcdd5f4ab Qu Wenruo 2022-01-07  3423                       continue;
f8636fcdd5f4ab Qu Wenruo 2022-01-07  3424               }
f8636fcdd5f4ab Qu Wenruo 2022-01-07  3425               ret = 
scrub_extent(sctx, map, cur_logical, scrub_len, cur_physical,
f8636fcdd5f4ab Qu Wenruo 2022-01-07  3426                                  
target_dev, extent_flags, extent_gen,
f8636fcdd5f4ab Qu Wenruo 2022-01-07  3427                                  
cur_mirror, cur_logical - logical_start +
f8636fcdd5f4ab Qu Wenruo 2022-01-07  3428                                  
physical);
f8636fcdd5f4ab Qu Wenruo 2022-01-07  3429               scrub_free_csums(sctx);
f8636fcdd5f4ab Qu Wenruo 2022-01-07  3430               if (ret)
f8636fcdd5f4ab Qu Wenruo 2022-01-07  3431                       break;
f8636fcdd5f4ab Qu Wenruo 2022-01-07  3432               if 
(sctx->is_dev_replace)
f8636fcdd5f4ab Qu Wenruo 2022-01-07  3433                       
sync_replace_for_zoned(sctx);
f8636fcdd5f4ab Qu Wenruo 2022-01-07  3434               cur_logical += 
scrub_len;
f8636fcdd5f4ab Qu Wenruo 2022-01-07  3435               /* Don't hold CPU for 
too long time */
f8636fcdd5f4ab Qu Wenruo 2022-01-07  3436               cond_resched();
f8636fcdd5f4ab Qu Wenruo 2022-01-07  3437       }
f8636fcdd5f4ab Qu Wenruo 2022-01-07  3438       btrfs_release_path(&path);
f8636fcdd5f4ab Qu Wenruo 2022-01-07 @3439       return ret;
f8636fcdd5f4ab Qu Wenruo 2022-01-07  3440  }
f8636fcdd5f4ab Qu Wenruo 2022-01-07  3441  

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/[email protected]
_______________________________________________
kbuild mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to