Btrfs: properly update space information after shrinking device.
authorYan Zheng <zheng.yan@oracle.com>
Wed, 22 Jul 2009 13:59:00 +0000 (09:59 -0400)
committerChris Mason <chris.mason@oracle.com>
Wed, 22 Jul 2009 13:59:00 +0000 (09:59 -0400)
Change 'goto done' to 'break' for the case of all device extents have
been freed, so that the code updates space information will be execute.

Signed-off-by: Yan Zheng <zheng.yan@oracle.com>
Signed-off-by: Chris Mason <chris.mason@oracle.com>
fs/btrfs/volumes.c

index 3ab80e9cd76767a674e3005185ee99f3afa53433..f057730a72bbd8ce2470945fb5c0f5f3a3946bd9 100644 (file)
@@ -2007,7 +2007,7 @@ int btrfs_shrink_device(struct btrfs_device *device, u64 new_size)
                        goto done;
                if (ret) {
                        ret = 0;
-                       goto done;
+                       break;
                }
 
                l = path->nodes[0];
@@ -2015,7 +2015,7 @@ int btrfs_shrink_device(struct btrfs_device *device, u64 new_size)
                btrfs_item_key_to_cpu(l, &key, path->slots[0]);
 
                if (key.objectid != device->devid)
-                       goto done;
+                       break;
 
                dev_extent = btrfs_item_ptr(l, slot, struct btrfs_dev_extent);
                length = btrfs_dev_extent_length(l, dev_extent);