* [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.