|
@@ -440,6 +440,7 @@ int btrfs_dev_replace_start(struct btrfs_fs_info *fs_info,
|
|
|
break;
|
|
|
case BTRFS_IOCTL_DEV_REPLACE_STATE_STARTED:
|
|
|
case BTRFS_IOCTL_DEV_REPLACE_STATE_SUSPENDED:
|
|
|
+ ASSERT(0);
|
|
|
ret = BTRFS_IOCTL_DEV_REPLACE_RESULT_ALREADY_STARTED;
|
|
|
goto leave;
|
|
|
}
|
|
@@ -482,6 +483,10 @@ int btrfs_dev_replace_start(struct btrfs_fs_info *fs_info,
|
|
|
if (IS_ERR(trans)) {
|
|
|
ret = PTR_ERR(trans);
|
|
|
btrfs_dev_replace_write_lock(dev_replace);
|
|
|
+ dev_replace->replace_state =
|
|
|
+ BTRFS_IOCTL_DEV_REPLACE_STATE_NEVER_STARTED;
|
|
|
+ dev_replace->srcdev = NULL;
|
|
|
+ dev_replace->tgtdev = NULL;
|
|
|
goto leave;
|
|
|
}
|
|
|
|
|
@@ -503,8 +508,6 @@ int btrfs_dev_replace_start(struct btrfs_fs_info *fs_info,
|
|
|
return ret;
|
|
|
|
|
|
leave:
|
|
|
- dev_replace->srcdev = NULL;
|
|
|
- dev_replace->tgtdev = NULL;
|
|
|
btrfs_dev_replace_write_unlock(dev_replace);
|
|
|
btrfs_destroy_dev_replace_tgtdev(tgt_device);
|
|
|
return ret;
|