Message ID | 1405507081-8811-1-git-send-email-miaox@cn.fujitsu.com (mailing list archive) |
---|---|
State | Accepted |
Headers | show |
On Wed, Jul 16, 2014 at 06:38:01PM +0800, Miao Xie wrote: > The missing devices are accounted by its own fs device, for example > the missing devices in seed filesystem will be accounted by the fs device > of the seed filesystem, not by the new filesystem which is based on > the seed filesystem, so when we remove the missing device in the > seed filesystem, we should decrease the counter of its own fs device. > Fix it. > > Signed-off-by: Miao Xie <miaox@cn.fujitsu.com> > --- > This patch is against: > [PATCH 8/9] Btrfs: fix unzeroed members in fs_devices when creating a fs from seed fs > --- > fs/btrfs/volumes.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/fs/btrfs/volumes.c b/fs/btrfs/volumes.c > index daecfa5..4cfbe76 100644 > --- a/fs/btrfs/volumes.c > +++ b/fs/btrfs/volumes.c > @@ -1723,7 +1723,7 @@ int btrfs_rm_device(struct btrfs_root *root, char *device_path) > device->fs_devices->total_devices--; > > if (device->missing) > - root->fs_info->fs_devices->missing_devices--; > + device->fs_devices->missing_devices--; But it is 'root->fs_info->fs_devices->missing_devices' that is increased in the case of both read_one_dev() and add_missing_dev(). Well, in add_missing_dev(), they're consistent, but in read_one_dev(), device->fs_devices could be a seed one, while root->fs_info->fs_devices is not. Am I missing? -liubo > > next_device = list_entry(root->fs_info->fs_devices->devices.next, > struct btrfs_device, dev_list); > -- > 1.9.3 > > -- > To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html -- To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Thu, 17 Jul 2014 10:37:57 +0800, Liu Bo wrote: > On Wed, Jul 16, 2014 at 06:38:01PM +0800, Miao Xie wrote: >> The missing devices are accounted by its own fs device, for example >> the missing devices in seed filesystem will be accounted by the fs device >> of the seed filesystem, not by the new filesystem which is based on >> the seed filesystem, so when we remove the missing device in the >> seed filesystem, we should decrease the counter of its own fs device. >> Fix it. >> >> Signed-off-by: Miao Xie <miaox@cn.fujitsu.com> >> --- >> This patch is against: >> [PATCH 8/9] Btrfs: fix unzeroed members in fs_devices when creating a fs from seed fs >> --- >> fs/btrfs/volumes.c | 2 +- >> 1 file changed, 1 insertion(+), 1 deletion(-) >> >> diff --git a/fs/btrfs/volumes.c b/fs/btrfs/volumes.c >> index daecfa5..4cfbe76 100644 >> --- a/fs/btrfs/volumes.c >> +++ b/fs/btrfs/volumes.c >> @@ -1723,7 +1723,7 @@ int btrfs_rm_device(struct btrfs_root *root, char *device_path) >> device->fs_devices->total_devices--; >> >> if (device->missing) >> - root->fs_info->fs_devices->missing_devices--; >> + device->fs_devices->missing_devices--; > > But it is 'root->fs_info->fs_devices->missing_devices' that is increased in the > case of both read_one_dev() and add_missing_dev(). > > Well, in add_missing_dev(), they're consistent, but in read_one_dev(), > device->fs_devices could be a seed one, while root->fs_info->fs_devices is not. This is another bug, I will fix it later. Thanks Miao > > Am I missing? > > -liubo > >> >> next_device = list_entry(root->fs_info->fs_devices->devices.next, >> struct btrfs_device, dev_list); >> -- >> 1.9.3 >> >> -- >> To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in >> the body of a message to majordomo@vger.kernel.org >> More majordomo info at http://vger.kernel.org/majordomo-info.html > . > -- To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/fs/btrfs/volumes.c b/fs/btrfs/volumes.c index daecfa5..4cfbe76 100644 --- a/fs/btrfs/volumes.c +++ b/fs/btrfs/volumes.c @@ -1723,7 +1723,7 @@ int btrfs_rm_device(struct btrfs_root *root, char *device_path) device->fs_devices->total_devices--; if (device->missing) - root->fs_info->fs_devices->missing_devices--; + device->fs_devices->missing_devices--; next_device = list_entry(root->fs_info->fs_devices->devices.next, struct btrfs_device, dev_list);
The missing devices are accounted by its own fs device, for example the missing devices in seed filesystem will be accounted by the fs device of the seed filesystem, not by the new filesystem which is based on the seed filesystem, so when we remove the missing device in the seed filesystem, we should decrease the counter of its own fs device. Fix it. Signed-off-by: Miao Xie <miaox@cn.fujitsu.com> --- This patch is against: [PATCH 8/9] Btrfs: fix unzeroed members in fs_devices when creating a fs from seed fs --- fs/btrfs/volumes.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)