diff --git a/fs/btrfs/volumes.c b/fs/btrfs/volumes.c index bcc0acda86910de915fe6a01a318f7b5a8a42d75..be2d4e0e6cfbc2946796c12e8c120c8f72286b96 100644 --- a/fs/btrfs/volumes.c +++ b/fs/btrfs/volumes.c @@ -2987,7 +2987,7 @@ int btrfs_shrink_device(struct btrfs_device *device, u64 new_size) key.offset = (u64)-1; key.type = BTRFS_DEV_EXTENT_KEY; - while (1) { + do { ret = btrfs_search_slot(NULL, root, &key, path, 0, 0); if (ret < 0) goto done; @@ -3029,8 +3029,7 @@ int btrfs_shrink_device(struct btrfs_device *device, u64 new_size) goto done; if (ret == -ENOSPC) failed++; - key.offset -= 1; - } + } while (key.offset-- > 0); if (failed && !retried) { failed = 0;