mirror of https://gitee.com/openkylin/linux.git
Btrfs: fix wrong generation check of super block on a seed device
The super block generation of the seed devices is not the same as the filesystem which sprouted from them because we don't update the super block on the seed devices when we change that new filesystem. So we should not use the generation of that new filesystem to check the super block generation on the seed devices, Fix it. Signed-off-by: Miao Xie <miaox@cn.fujitsu.com> Reviewed-by: David Sterba <dsterba@suse.cz> Signed-off-by: Chris Mason <clm@fb.com>
This commit is contained in:
parent
17a9be2f28
commit
5f546063ce
|
@ -2832,7 +2832,11 @@ static noinline_for_stack int scrub_supers(struct scrub_ctx *sctx,
|
|||
if (test_bit(BTRFS_FS_STATE_ERROR, &root->fs_info->fs_state))
|
||||
return -EIO;
|
||||
|
||||
gen = root->fs_info->last_trans_committed;
|
||||
/* Seed devices of a new filesystem has their own generation. */
|
||||
if (scrub_dev->fs_devices != root->fs_info->fs_devices)
|
||||
gen = scrub_dev->generation;
|
||||
else
|
||||
gen = root->fs_info->last_trans_committed;
|
||||
|
||||
for (i = 0; i < BTRFS_SUPER_MIRROR_MAX; i++) {
|
||||
bytenr = btrfs_sb_offset(i);
|
||||
|
|
Loading…
Reference in New Issue