summaryrefslogtreecommitdiffstats
path: root/fs/btrfs/dev-replace.c
diff options
context:
space:
mode:
authorNikolay Borisov <nborisov@suse.com>2019-05-14 06:54:43 -0400
committerDavid Sterba <dsterba@suse.com>2019-07-01 07:34:54 -0400
commitf232ab04f65bb757f2d992a074a46df85c8f1797 (patch)
treef015a2e619332c60cf834a718dd57ef54113b191 /fs/btrfs/dev-replace.c
parentfa19452a4039539a5846198b9aecb8be51ce61ca (diff)
btrfs: Explicitly reserve space for devreplace item
Part of device replace involves writing an item to the device root containing information about pending replace operations. Currently space for this item is not being explicitly reserved so this works thanks to presence of global reserve. While not fatal it's not a good practice. Let's be explicit about space requirement of device replace and reserve space when starting the transaction. Reviewed-by: Johannes Thumshirn <jthumshirn@suse.de> Signed-off-by: Nikolay Borisov <nborisov@suse.com> Reviewed-by: David Sterba <dsterba@suse.com> Signed-off-by: David Sterba <dsterba@suse.com>
Diffstat (limited to 'fs/btrfs/dev-replace.c')
-rw-r--r--fs/btrfs/dev-replace.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/fs/btrfs/dev-replace.c b/fs/btrfs/dev-replace.c
index 94f000b0ca79..45c5ba7d80ed 100644
--- a/fs/btrfs/dev-replace.c
+++ b/fs/btrfs/dev-replace.c
@@ -477,8 +477,8 @@ static int btrfs_dev_replace_start(struct btrfs_fs_info *fs_info,
477 477
478 btrfs_wait_ordered_roots(fs_info, U64_MAX, 0, (u64)-1); 478 btrfs_wait_ordered_roots(fs_info, U64_MAX, 0, (u64)-1);
479 479
480 /* force writing the updated state information to disk */ 480 /* Commit dev_replace state and reserve 1 item for it. */
481 trans = btrfs_start_transaction(root, 0); 481 trans = btrfs_start_transaction(root, 1);
482 if (IS_ERR(trans)) { 482 if (IS_ERR(trans)) {
483 ret = PTR_ERR(trans); 483 ret = PTR_ERR(trans);
484 down_write(&dev_replace->rwsem); 484 down_write(&dev_replace->rwsem);