All of lore.kernel.org
 help / color / mirror / Atom feed
* [linux-next:master 1591/1734] fs/btrfs/scrub.c:3678 scrub_stripe() error: uninitialized symbol 'offset'.
@ 2022-01-26 16:59 kernel test robot
  0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2022-01-26 16:59 UTC (permalink / raw)
  To: kbuild

[-- Attachment #1: Type: text/plain, Size: 15502 bytes --]

CC: kbuild-all(a)lists.01.org
CC: Linux Memory Management List <linux-mm@kvack.org>
TO: Qu Wenruo <wqu@suse.com>
CC: David Sterba <dsterba@suse.com>

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master
head:   d25ee88530253138d0b20d43511ca5acbda4e9f7
commit: fa676286533c1c414da23d5ef8ae452c7f66e9b7 [1591/1734] btrfs: use scrub_simple_mirror() to handle RAID56 data stripe scrub
:::::: branch date: 2 days ago
:::::: commit date: 2 days ago
config: openrisc-randconfig-m031-20220124 (https://download.01.org/0day-ci/archive/20220127/202201270045.iXLGJa5t-lkp(a)intel.com/config)
compiler: or1k-linux-gcc (GCC) 11.2.0

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
Reported-by: Dan Carpenter <dan.carpenter@oracle.com>

New smatch warnings:
fs/btrfs/scrub.c:3678 scrub_stripe() error: uninitialized symbol 'offset'.
fs/btrfs/scrub.c:3680 scrub_stripe() error: uninitialized symbol 'physical_end'.

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

vim +/offset +3678 fs/btrfs/scrub.c

38d2dda468be859 Qu Wenruo       2022-01-07  3512  
d9d181c1ba7aa09 Stefan Behrens  2012-11-02  3513  static noinline_for_stack int scrub_stripe(struct scrub_ctx *sctx,
2ae8ae3d3def4c3 Qu Wenruo       2021-12-15  3514  					   struct btrfs_block_group *bg,
a36cf8b8933e4a7 Stefan Behrens  2012-11-02  3515  					   struct map_lookup *map,
a36cf8b8933e4a7 Stefan Behrens  2012-11-02  3516  					   struct btrfs_device *scrub_dev,
2ae8ae3d3def4c3 Qu Wenruo       2021-12-15  3517  					   int stripe_index, u64 dev_extent_len)
a2de733c78fa7af Arne Jansen     2011-03-08  3518  {
2522dbe86b54ff0 Qu Wenruo       2021-12-14  3519  	struct btrfs_path *path;
fb456252d3d9c05 Jeff Mahoney    2016-06-22  3520  	struct btrfs_fs_info *fs_info = sctx->fs_info;
29cbcf401793f4e Josef Bacik     2021-11-05  3521  	struct btrfs_root *root;
fc28b25e1f42865 Josef Bacik     2021-11-05  3522  	struct btrfs_root *csum_root;
e7786c3ae517b2c Arne Jansen     2011-05-28  3523  	struct blk_plug plug;
b5b99b1e02969dd Qu Wenruo       2022-01-07  3524  	const u64 profile = map->type & BTRFS_BLOCK_GROUP_PROFILE_MASK;
2ae8ae3d3def4c3 Qu Wenruo       2021-12-15  3525  	const u64 chunk_logical = bg->start;
a2de733c78fa7af Arne Jansen     2011-03-08  3526  	int ret;
a2de733c78fa7af Arne Jansen     2011-03-08  3527  	u64 nstripes;
a2de733c78fa7af Arne Jansen     2011-03-08  3528  	u64 physical;
a2de733c78fa7af Arne Jansen     2011-03-08  3529  	u64 logical;
625f1c8dc66d778 Liu Bo          2013-04-27  3530  	u64 logic_end;
3b080b2564287be Wang Shilong    2014-04-01  3531  	u64 physical_end;
fa676286533c1c4 Qu Wenruo       2022-01-07  3532  	u64 increment;	/* The logical increment after finishing one stripe */
fa676286533c1c4 Qu Wenruo       2022-01-07  3533  	u64 offset;	/* Offset inside the chunk */
5a6ac9eacb49143 Miao Xie        2014-11-06  3534  	u64 stripe_logical;
5a6ac9eacb49143 Miao Xie        2014-11-06  3535  	u64 stripe_end;
3b080b2564287be Wang Shilong    2014-04-01  3536  	int stop_loop = 0;
53b381b3abeb86f David Woodhouse 2013-01-29  3537  
a2de733c78fa7af Arne Jansen     2011-03-08  3538  	path = btrfs_alloc_path();
a2de733c78fa7af Arne Jansen     2011-03-08  3539  	if (!path)
a2de733c78fa7af Arne Jansen     2011-03-08  3540  		return -ENOMEM;
a2de733c78fa7af Arne Jansen     2011-03-08  3541  
b5d67f64f9bc656 Stefan Behrens  2012-03-27  3542  	/*
fa676286533c1c4 Qu Wenruo       2022-01-07  3543  	 * Work on commit root. The related disk blocks are static as
b5d67f64f9bc656 Stefan Behrens  2012-03-27  3544  	 * long as COW is applied. This means, it is save to rewrite
b5d67f64f9bc656 Stefan Behrens  2012-03-27  3545  	 * them to repair disk errors without any race conditions
b5d67f64f9bc656 Stefan Behrens  2012-03-27  3546  	 */
a2de733c78fa7af Arne Jansen     2011-03-08  3547  	path->search_commit_root = 1;
a2de733c78fa7af Arne Jansen     2011-03-08  3548  	path->skip_locking = 1;
dcf62b204c06ac2 Qu Wenruo       2021-12-14  3549  	path->reada = READA_FORWARD;
a2de733c78fa7af Arne Jansen     2011-03-08  3550  
d9d181c1ba7aa09 Stefan Behrens  2012-11-02  3551  	wait_event(sctx->list_wait,
b6bfebc13218f1f Stefan Behrens  2012-11-02  3552  		   atomic_read(&sctx->bios_in_flight) == 0);
cb7ab02156e4ba9 Wang Shilong    2013-12-04  3553  	scrub_blocked_if_needed(fs_info);
a2de733c78fa7af Arne Jansen     2011-03-08  3554  
fa676286533c1c4 Qu Wenruo       2022-01-07  3555  	root = btrfs_extent_root(fs_info, bg->start);
fa676286533c1c4 Qu Wenruo       2022-01-07  3556  	csum_root = btrfs_csum_root(fs_info, bg->start);
fc28b25e1f42865 Josef Bacik     2021-11-05  3557  
a2de733c78fa7af Arne Jansen     2011-03-08  3558  	/*
fa676286533c1c4 Qu Wenruo       2022-01-07  3559  	 * Collect all data csums for the stripe to avoid seeking during
a2de733c78fa7af Arne Jansen     2011-03-08  3560  	 * the scrub. This might currently (crc32) end up to be about 1MB
a2de733c78fa7af Arne Jansen     2011-03-08  3561  	 */
e7786c3ae517b2c Arne Jansen     2011-05-28  3562  	blk_start_plug(&plug);
a2de733c78fa7af Arne Jansen     2011-03-08  3563  
de17addce7a20db Naohiro Aota    2021-02-04  3564  	if (sctx->is_dev_replace &&
fa676286533c1c4 Qu Wenruo       2022-01-07  3565  	    btrfs_dev_is_sequential(sctx->wr_tgtdev,
fa676286533c1c4 Qu Wenruo       2022-01-07  3566  				    map->stripes[stripe_index].physical)) {
de17addce7a20db Naohiro Aota    2021-02-04  3567  		mutex_lock(&sctx->wr_lock);
fa676286533c1c4 Qu Wenruo       2022-01-07  3568  		sctx->write_pointer = map->stripes[stripe_index].physical;
de17addce7a20db Naohiro Aota    2021-02-04  3569  		mutex_unlock(&sctx->wr_lock);
de17addce7a20db Naohiro Aota    2021-02-04  3570  		sctx->flush_all_writes = true;
de17addce7a20db Naohiro Aota    2021-02-04  3571  	}
de17addce7a20db Naohiro Aota    2021-02-04  3572  
b5b99b1e02969dd Qu Wenruo       2022-01-07  3573  	/*
b5b99b1e02969dd Qu Wenruo       2022-01-07  3574  	 * There used to be a big double loop to handle all profiles using the
b5b99b1e02969dd Qu Wenruo       2022-01-07  3575  	 * same routine, which grows larger and more gross over time.
b5b99b1e02969dd Qu Wenruo       2022-01-07  3576  	 *
b5b99b1e02969dd Qu Wenruo       2022-01-07  3577  	 * So here we handle each profile differently, so simpler profiles
b5b99b1e02969dd Qu Wenruo       2022-01-07  3578  	 * have simpler scrubing function.
b5b99b1e02969dd Qu Wenruo       2022-01-07  3579  	 */
b5b99b1e02969dd Qu Wenruo       2022-01-07  3580  	if (!(profile & (BTRFS_BLOCK_GROUP_RAID0 | BTRFS_BLOCK_GROUP_RAID10 |
b5b99b1e02969dd Qu Wenruo       2022-01-07  3581  			 BTRFS_BLOCK_GROUP_RAID56_MASK))) {
b5b99b1e02969dd Qu Wenruo       2022-01-07  3582  		/*
b5b99b1e02969dd Qu Wenruo       2022-01-07  3583  		 * Above check rules out all complex profile, the remaining
b5b99b1e02969dd Qu Wenruo       2022-01-07  3584  		 * profiles are SINGLE|DUP|RAID1|RAID1C*, which is simple
b5b99b1e02969dd Qu Wenruo       2022-01-07  3585  		 * mirrored duplication without stripe.
b5b99b1e02969dd Qu Wenruo       2022-01-07  3586  		 *
b5b99b1e02969dd Qu Wenruo       2022-01-07  3587  		 * Only @phsyical and @mirror_num needs to calculated using
b5b99b1e02969dd Qu Wenruo       2022-01-07  3588  		 * @stripe_index.
b5b99b1e02969dd Qu Wenruo       2022-01-07  3589  		 */
b5b99b1e02969dd Qu Wenruo       2022-01-07  3590  		ret = scrub_simple_mirror(sctx, root, csum_root, bg, map,
b5b99b1e02969dd Qu Wenruo       2022-01-07  3591  				bg->start, bg->length, scrub_dev,
b5b99b1e02969dd Qu Wenruo       2022-01-07  3592  				map->stripes[stripe_index].physical,
b5b99b1e02969dd Qu Wenruo       2022-01-07  3593  				stripe_index + 1);
b5b99b1e02969dd Qu Wenruo       2022-01-07  3594  		goto out;
b5b99b1e02969dd Qu Wenruo       2022-01-07  3595  	}
38d2dda468be859 Qu Wenruo       2022-01-07  3596  	if (profile & (BTRFS_BLOCK_GROUP_RAID0 | BTRFS_BLOCK_GROUP_RAID10)) {
38d2dda468be859 Qu Wenruo       2022-01-07  3597  		ret = scrub_simple_stripe(sctx, root, csum_root, bg, map,
38d2dda468be859 Qu Wenruo       2022-01-07  3598  					  scrub_dev, stripe_index);
38d2dda468be859 Qu Wenruo       2022-01-07  3599  		goto out;
38d2dda468be859 Qu Wenruo       2022-01-07  3600  	}
38d2dda468be859 Qu Wenruo       2022-01-07  3601  
38d2dda468be859 Qu Wenruo       2022-01-07  3602  	/* Only RAID56 goes through the old code */
38d2dda468be859 Qu Wenruo       2022-01-07  3603  	ASSERT(map->type & BTRFS_BLOCK_GROUP_RAID56_MASK);
fa676286533c1c4 Qu Wenruo       2022-01-07  3604  
fa676286533c1c4 Qu Wenruo       2022-01-07  3605  	physical = map->stripes[stripe_index].physical;
fa676286533c1c4 Qu Wenruo       2022-01-07  3606  	offset = 0;
fa676286533c1c4 Qu Wenruo       2022-01-07  3607  	nstripes = div64_u64(dev_extent_len, map->stripe_len);
fa676286533c1c4 Qu Wenruo       2022-01-07  3608  	get_raid56_logic_offset(physical, stripe_index, map, &offset, NULL);
fa676286533c1c4 Qu Wenruo       2022-01-07  3609  	increment = map->stripe_len * nr_data_stripes(map);
fa676286533c1c4 Qu Wenruo       2022-01-07  3610  
fa676286533c1c4 Qu Wenruo       2022-01-07  3611  	logical = chunk_logical + offset;
fa676286533c1c4 Qu Wenruo       2022-01-07  3612  	physical_end = physical + nstripes * map->stripe_len;
fa676286533c1c4 Qu Wenruo       2022-01-07  3613  	get_raid56_logic_offset(physical_end, stripe_index, map, &logic_end,
fa676286533c1c4 Qu Wenruo       2022-01-07  3614  				NULL);
fa676286533c1c4 Qu Wenruo       2022-01-07  3615  	logic_end += chunk_logical;
fa676286533c1c4 Qu Wenruo       2022-01-07  3616  
a2de733c78fa7af Arne Jansen     2011-03-08  3617  	ret = 0;
a2de733c78fa7af Arne Jansen     2011-03-08  3618  	/*
fa676286533c1c4 Qu Wenruo       2022-01-07  3619  	 * Due to the rotation, for RAID56 it's better to iterate each stripe
fa676286533c1c4 Qu Wenruo       2022-01-07  3620  	 * using their physical offset.
a2de733c78fa7af Arne Jansen     2011-03-08  3621  	 */
fa676286533c1c4 Qu Wenruo       2022-01-07  3622  	while (physical < physical_end) {
fa676286533c1c4 Qu Wenruo       2022-01-07  3623  		ret = get_raid56_logic_offset(physical, stripe_index, map,
fa676286533c1c4 Qu Wenruo       2022-01-07  3624  					      &logical, &stripe_logical);
2ae8ae3d3def4c3 Qu Wenruo       2021-12-15  3625  		logical += chunk_logical;
f2f66a2f886383f Zhao Lei        2015-07-21  3626  		if (ret) {
fa676286533c1c4 Qu Wenruo       2022-01-07  3627  			/* It is parity strip */
2ae8ae3d3def4c3 Qu Wenruo       2021-12-15  3628  			stripe_logical += chunk_logical;
a0dd59de3c73fbb Zhao Lei        2015-07-21  3629  			stripe_end = stripe_logical + increment;
f2f66a2f886383f Zhao Lei        2015-07-21  3630  			ret = scrub_raid56_parity(sctx, map, scrub_dev,
2522dbe86b54ff0 Qu Wenruo       2021-12-14  3631  						  stripe_logical,
f2f66a2f886383f Zhao Lei        2015-07-21  3632  						  stripe_end);
f2f66a2f886383f Zhao Lei        2015-07-21  3633  			if (ret)
f2f66a2f886383f Zhao Lei        2015-07-21  3634  				goto out;
a2de733c78fa7af Arne Jansen     2011-03-08  3635  			goto next;
a2de733c78fa7af Arne Jansen     2011-03-08  3636  		}
a2de733c78fa7af Arne Jansen     2011-03-08  3637  
a2de733c78fa7af Arne Jansen     2011-03-08  3638  		/*
fa676286533c1c4 Qu Wenruo       2022-01-07  3639  		 * Now we're@data stripes, scrub each extents in the range.
fa676286533c1c4 Qu Wenruo       2022-01-07  3640  		 *
fa676286533c1c4 Qu Wenruo       2022-01-07  3641  		 * At this stage, if we ignore the repair part, each data stripe
fa676286533c1c4 Qu Wenruo       2022-01-07  3642  		 * is no different than SINGLE profile.
fa676286533c1c4 Qu Wenruo       2022-01-07  3643  		 * We can reuse scrub_simple_mirror() here, as the repair part
fa676286533c1c4 Qu Wenruo       2022-01-07  3644  		 * is still based on @mirror_num.
3b080b2564287be Wang Shilong    2014-04-01  3645  		 */
fa676286533c1c4 Qu Wenruo       2022-01-07  3646  		ret = scrub_simple_mirror(sctx, root, csum_root, bg, map,
fa676286533c1c4 Qu Wenruo       2022-01-07  3647  					  logical, map->stripe_len,
fa676286533c1c4 Qu Wenruo       2022-01-07  3648  					  scrub_dev, physical, 1);
fa676286533c1c4 Qu Wenruo       2022-01-07  3649  		if (ret < 0)
5a6ac9eacb49143 Miao Xie        2014-11-06  3650  			goto out;
a2de733c78fa7af Arne Jansen     2011-03-08  3651  next:
a2de733c78fa7af Arne Jansen     2011-03-08  3652  		logical += increment;
a2de733c78fa7af Arne Jansen     2011-03-08  3653  		physical += map->stripe_len;
d9d181c1ba7aa09 Stefan Behrens  2012-11-02  3654  		spin_lock(&sctx->stat_lock);
625f1c8dc66d778 Liu Bo          2013-04-27  3655  		if (stop_loop)
2ae8ae3d3def4c3 Qu Wenruo       2021-12-15  3656  			sctx->stat.last_physical = map->stripes[stripe_index].physical +
2ae8ae3d3def4c3 Qu Wenruo       2021-12-15  3657  						   dev_extent_len;
625f1c8dc66d778 Liu Bo          2013-04-27  3658  		else
d9d181c1ba7aa09 Stefan Behrens  2012-11-02  3659  			sctx->stat.last_physical = physical;
d9d181c1ba7aa09 Stefan Behrens  2012-11-02  3660  		spin_unlock(&sctx->stat_lock);
625f1c8dc66d778 Liu Bo          2013-04-27  3661  		if (stop_loop)
625f1c8dc66d778 Liu Bo          2013-04-27  3662  			break;
a2de733c78fa7af Arne Jansen     2011-03-08  3663  	}
ff023aac31198e8 Stefan Behrens  2012-11-06  3664  out:
a2de733c78fa7af Arne Jansen     2011-03-08  3665  	/* push queued extents */
d9d181c1ba7aa09 Stefan Behrens  2012-11-02  3666  	scrub_submit(sctx);
3fb99303c64e31f David Sterba    2017-05-16  3667  	mutex_lock(&sctx->wr_lock);
ff023aac31198e8 Stefan Behrens  2012-11-06  3668  	scrub_wr_submit(sctx);
3fb99303c64e31f David Sterba    2017-05-16  3669  	mutex_unlock(&sctx->wr_lock);
a2de733c78fa7af Arne Jansen     2011-03-08  3670  
e7786c3ae517b2c Arne Jansen     2011-05-28  3671  	blk_finish_plug(&plug);
a2de733c78fa7af Arne Jansen     2011-03-08  3672  	btrfs_free_path(path);
7db1c5d14dcd521 Naohiro Aota    2021-02-04  3673  
7db1c5d14dcd521 Naohiro Aota    2021-02-04  3674  	if (sctx->is_dev_replace && ret >= 0) {
7db1c5d14dcd521 Naohiro Aota    2021-02-04  3675  		int ret2;
7db1c5d14dcd521 Naohiro Aota    2021-02-04  3676  
2ae8ae3d3def4c3 Qu Wenruo       2021-12-15  3677  		ret2 = sync_write_pointer_for_zoned(sctx,
2ae8ae3d3def4c3 Qu Wenruo       2021-12-15 @3678  				chunk_logical + offset,
2ae8ae3d3def4c3 Qu Wenruo       2021-12-15  3679  				map->stripes[stripe_index].physical,
7db1c5d14dcd521 Naohiro Aota    2021-02-04 @3680  				physical_end);
7db1c5d14dcd521 Naohiro Aota    2021-02-04  3681  		if (ret2)
7db1c5d14dcd521 Naohiro Aota    2021-02-04  3682  			ret = ret2;
7db1c5d14dcd521 Naohiro Aota    2021-02-04  3683  	}
7db1c5d14dcd521 Naohiro Aota    2021-02-04  3684  
a2de733c78fa7af Arne Jansen     2011-03-08  3685  	return ret < 0 ? ret : 0;
a2de733c78fa7af Arne Jansen     2011-03-08  3686  }
a2de733c78fa7af Arne Jansen     2011-03-08  3687  

:::::: The code@line 3678 was first introduced by commit
:::::: 2ae8ae3d3def4c3ba73a58cc2531c42f0916f14e btrfs: scrub: cleanup the argument list of scrub_stripe()

:::::: TO: Qu Wenruo <wqu@suse.com>
:::::: CC: David Sterba <dsterba@suse.com>

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2022-01-26 16:59 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-01-26 16:59 [linux-next:master 1591/1734] fs/btrfs/scrub.c:3678 scrub_stripe() error: uninitialized symbol 'offset' kernel test robot

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.