Re: [PATCH] Btrfs: do not add replace target to the alloc_list

2013-09-04 Thread Stefan Behrens
On Sun,  1 Sep 2013 18:56:44 +0300, Ilya Dryomov wrote:
 If replace was suspended by the umount, replace target device is added
 to the fs_devices-alloc_list during a later mount.  This is obviously
 wrong.  -is_tgtdev_for_dev_replace is supposed to guard against that,
 but -is_tgtdev_for_dev_replace is (and can only ever be) initialized
 *after* everything is opened and fs_devices lists are populated.  Fix
 this by checking the devid instead: for replace targets it's always
 equal to BTRFS_DEV_REPLACE_DEVID.
 
 Cc: Stefan Behrens sbehr...@giantdisaster.de
 Signed-off-by: Ilya Dryomov idryo...@gmail.com
 ---
 At first I thought this was caused by my btrfs_device rollback patch,
 but no, it just made it easier to spot -- previously one had to reboot
 or rmmod/insmod before mounting a suspended replace.
 
  fs/btrfs/volumes.c |3 ++-
  1 file changed, 2 insertions(+), 1 deletion(-)
 
 diff --git a/fs/btrfs/volumes.c b/fs/btrfs/volumes.c
 index c9a0977..5b99f19 100644
 --- a/fs/btrfs/volumes.c
 +++ b/fs/btrfs/volumes.c
 @@ -793,7 +793,8 @@ static int __btrfs_open_devices(struct btrfs_fs_devices 
 *fs_devices,
   fs_devices-rotating = 1;
  
   fs_devices-open_devices++;
 - if (device-writeable  !device-is_tgtdev_for_dev_replace) {
 + if (device-writeable 
 + device-devid != BTRFS_DEV_REPLACE_DEVID) {
   fs_devices-rw_devices++;
   list_add(device-dev_alloc_list,
fs_devices-alloc_list);
 

Reviewed-by: Stefan Behrens sbehr...@giantdisaster.de

--
To unsubscribe from this list: send the line unsubscribe linux-btrfs in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH] Btrfs: do not add replace target to the alloc_list

2013-09-01 Thread Ilya Dryomov
If replace was suspended by the umount, replace target device is added
to the fs_devices-alloc_list during a later mount.  This is obviously
wrong.  -is_tgtdev_for_dev_replace is supposed to guard against that,
but -is_tgtdev_for_dev_replace is (and can only ever be) initialized
*after* everything is opened and fs_devices lists are populated.  Fix
this by checking the devid instead: for replace targets it's always
equal to BTRFS_DEV_REPLACE_DEVID.

Cc: Stefan Behrens sbehr...@giantdisaster.de
Signed-off-by: Ilya Dryomov idryo...@gmail.com
---
At first I thought this was caused by my btrfs_device rollback patch,
but no, it just made it easier to spot -- previously one had to reboot
or rmmod/insmod before mounting a suspended replace.

 fs/btrfs/volumes.c |3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/fs/btrfs/volumes.c b/fs/btrfs/volumes.c
index c9a0977..5b99f19 100644
--- a/fs/btrfs/volumes.c
+++ b/fs/btrfs/volumes.c
@@ -793,7 +793,8 @@ static int __btrfs_open_devices(struct btrfs_fs_devices 
*fs_devices,
fs_devices-rotating = 1;
 
fs_devices-open_devices++;
-   if (device-writeable  !device-is_tgtdev_for_dev_replace) {
+   if (device-writeable 
+   device-devid != BTRFS_DEV_REPLACE_DEVID) {
fs_devices-rw_devices++;
list_add(device-dev_alloc_list,
 fs_devices-alloc_list);
-- 
1.7.10.4

--
To unsubscribe from this list: send the line unsubscribe linux-btrfs in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html