aboutsummaryrefslogtreecommitdiffstats
path: root/fs/btrfs/dev-replace.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/btrfs/dev-replace.c')
-rw-r--r--fs/btrfs/dev-replace.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/fs/btrfs/dev-replace.c b/fs/btrfs/dev-replace.c
index 4e2b67d06305..ff01740158aa 100644
--- a/fs/btrfs/dev-replace.c
+++ b/fs/btrfs/dev-replace.c
@@ -440,6 +440,7 @@ int btrfs_dev_replace_start(struct btrfs_fs_info *fs_info,
440 break; 440 break;
441 case BTRFS_IOCTL_DEV_REPLACE_STATE_STARTED: 441 case BTRFS_IOCTL_DEV_REPLACE_STATE_STARTED:
442 case BTRFS_IOCTL_DEV_REPLACE_STATE_SUSPENDED: 442 case BTRFS_IOCTL_DEV_REPLACE_STATE_SUSPENDED:
443 ASSERT(0);
443 ret = BTRFS_IOCTL_DEV_REPLACE_RESULT_ALREADY_STARTED; 444 ret = BTRFS_IOCTL_DEV_REPLACE_RESULT_ALREADY_STARTED;
444 goto leave; 445 goto leave;
445 } 446 }
@@ -482,6 +483,10 @@ int btrfs_dev_replace_start(struct btrfs_fs_info *fs_info,
482 if (IS_ERR(trans)) { 483 if (IS_ERR(trans)) {
483 ret = PTR_ERR(trans); 484 ret = PTR_ERR(trans);
484 btrfs_dev_replace_write_lock(dev_replace); 485 btrfs_dev_replace_write_lock(dev_replace);
486 dev_replace->replace_state =
487 BTRFS_IOCTL_DEV_REPLACE_STATE_NEVER_STARTED;
488 dev_replace->srcdev = NULL;
489 dev_replace->tgtdev = NULL;
485 goto leave; 490 goto leave;
486 } 491 }
487 492
@@ -503,8 +508,6 @@ int btrfs_dev_replace_start(struct btrfs_fs_info *fs_info,
503 return ret; 508 return ret;
504 509
505leave: 510leave:
506 dev_replace->srcdev = NULL;
507 dev_replace->tgtdev = NULL;
508 btrfs_dev_replace_write_unlock(dev_replace); 511 btrfs_dev_replace_write_unlock(dev_replace);
509 btrfs_destroy_dev_replace_tgtdev(tgt_device); 512 btrfs_destroy_dev_replace_tgtdev(tgt_device);
510 return ret; 513 return ret;