Re: [RFC][PATCH] Btrfs: Release uuid_mutex for shrink during device delete

2013-03-20 Thread David Sterba
On Mon, Mar 04, 2013 at 04:37:06PM -0600, Carey Underwood wrote:
 Device scanning waits on the uuid_mutex, which can result in a very long
 wait if dev delete is shrinking the device.
 
 + mutex_unlock(uuid_mutex);
   ret = btrfs_shrink_device(device, 0);
 + mutex_lock(uuid_mutex);
   if (ret)
   goto error_undo;

I didn't find any problem with this change, but it's not quite clear to
me what exactly does the uuid_mutex protect, so I've tried a best-guess
approach and looked at all uses and git history. If there are multiple
device rm operations called at the same time, they'll get serialized
with the uuid mutex and the device count will be properly protected.

Consider it
Reviewed-by: David Sterba dste...@suse.cz


david
--
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


[RFC][PATCH] Btrfs: Release uuid_mutex for shrink during device delete

2013-03-04 Thread Carey Underwood
Device scanning waits on the uuid_mutex, which can result in a very long
wait if dev delete is shrinking the device.

Signed-off-by: Carey Underwood cwi...@cwillu.com
---
 fs/btrfs/volumes.c |2 ++
 1 files changed, 2 insertions(+), 0 deletions(-)

diff --git a/fs/btrfs/volumes.c b/fs/btrfs/volumes.c
index 5cce6aa..996af00 100644
--- a/fs/btrfs/volumes.c
+++ b/fs/btrfs/volumes.c
@@ -1468,7 +1468,9 @@ int btrfs_rm_device(struct btrfs_root *root, char 
*device_path)
clear_super = true;
}
 
+   mutex_unlock(uuid_mutex);
ret = btrfs_shrink_device(device, 0);
+   mutex_lock(uuid_mutex);
if (ret)
goto error_undo;
 
-- 
1.7.0.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