diff options
author | Nikolay Borisov <nborisov@suse.com> | 2019-05-14 06:54:42 -0400 |
---|---|---|
committer | David Sterba <dsterba@suse.com> | 2019-07-01 07:34:54 -0400 |
commit | fa19452a4039539a5846198b9aecb8be51ce61ca (patch) | |
tree | d29c33dc65b5d1507b8fe34e73b2963e33c45e2f /fs/btrfs/dev-replace.c | |
parent | e1e0eb43ce1fd7bbdd9590715623cb3799896434 (diff) |
btrfs: Streamline replace sem unlock in btrfs_dev_replace_start
There are only 2 branches which goto leave label with need_unlock set
to true. Essentially need_unlock is used as a substitute for directly
calling up_write. Since the branches needing this are only 2 and their
context is not that big it's more clear to just call up_write where
required. No functional changes.
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.c | 8 |
1 files changed, 2 insertions, 6 deletions
diff --git a/fs/btrfs/dev-replace.c b/fs/btrfs/dev-replace.c index 149e6139182b..94f000b0ca79 100644 --- a/fs/btrfs/dev-replace.c +++ b/fs/btrfs/dev-replace.c | |||
@@ -400,7 +400,6 @@ static int btrfs_dev_replace_start(struct btrfs_fs_info *fs_info, | |||
400 | int ret; | 400 | int ret; |
401 | struct btrfs_device *tgt_device = NULL; | 401 | struct btrfs_device *tgt_device = NULL; |
402 | struct btrfs_device *src_device = NULL; | 402 | struct btrfs_device *src_device = NULL; |
403 | bool need_unlock; | ||
404 | 403 | ||
405 | src_device = btrfs_find_device_by_devspec(fs_info, srcdevid, | 404 | src_device = btrfs_find_device_by_devspec(fs_info, srcdevid, |
406 | srcdev_name); | 405 | srcdev_name); |
@@ -432,7 +431,6 @@ static int btrfs_dev_replace_start(struct btrfs_fs_info *fs_info, | |||
432 | if (ret) | 431 | if (ret) |
433 | return ret; | 432 | return ret; |
434 | 433 | ||
435 | need_unlock = true; | ||
436 | down_write(&dev_replace->rwsem); | 434 | down_write(&dev_replace->rwsem); |
437 | switch (dev_replace->replace_state) { | 435 | switch (dev_replace->replace_state) { |
438 | case BTRFS_IOCTL_DEV_REPLACE_STATE_NEVER_STARTED: | 436 | case BTRFS_IOCTL_DEV_REPLACE_STATE_NEVER_STARTED: |
@@ -443,6 +441,7 @@ static int btrfs_dev_replace_start(struct btrfs_fs_info *fs_info, | |||
443 | case BTRFS_IOCTL_DEV_REPLACE_STATE_SUSPENDED: | 441 | case BTRFS_IOCTL_DEV_REPLACE_STATE_SUSPENDED: |
444 | ASSERT(0); | 442 | ASSERT(0); |
445 | ret = BTRFS_IOCTL_DEV_REPLACE_RESULT_ALREADY_STARTED; | 443 | ret = BTRFS_IOCTL_DEV_REPLACE_RESULT_ALREADY_STARTED; |
444 | up_write(&dev_replace->rwsem); | ||
446 | goto leave; | 445 | goto leave; |
447 | } | 446 | } |
448 | 447 | ||
@@ -471,7 +470,6 @@ static int btrfs_dev_replace_start(struct btrfs_fs_info *fs_info, | |||
471 | atomic64_set(&dev_replace->num_write_errors, 0); | 470 | atomic64_set(&dev_replace->num_write_errors, 0); |
472 | atomic64_set(&dev_replace->num_uncorrectable_read_errors, 0); | 471 | atomic64_set(&dev_replace->num_uncorrectable_read_errors, 0); |
473 | up_write(&dev_replace->rwsem); | 472 | up_write(&dev_replace->rwsem); |
474 | need_unlock = false; | ||
475 | 473 | ||
476 | ret = btrfs_sysfs_add_device_link(tgt_device->fs_devices, tgt_device); | 474 | ret = btrfs_sysfs_add_device_link(tgt_device->fs_devices, tgt_device); |
477 | if (ret) | 475 | if (ret) |
@@ -483,12 +481,12 @@ static int btrfs_dev_replace_start(struct btrfs_fs_info *fs_info, | |||
483 | trans = btrfs_start_transaction(root, 0); | 481 | trans = btrfs_start_transaction(root, 0); |
484 | if (IS_ERR(trans)) { | 482 | if (IS_ERR(trans)) { |
485 | ret = PTR_ERR(trans); | 483 | ret = PTR_ERR(trans); |
486 | need_unlock = true; | ||
487 | down_write(&dev_replace->rwsem); | 484 | down_write(&dev_replace->rwsem); |
488 | dev_replace->replace_state = | 485 | dev_replace->replace_state = |
489 | BTRFS_IOCTL_DEV_REPLACE_STATE_NEVER_STARTED; | 486 | BTRFS_IOCTL_DEV_REPLACE_STATE_NEVER_STARTED; |
490 | dev_replace->srcdev = NULL; | 487 | dev_replace->srcdev = NULL; |
491 | dev_replace->tgtdev = NULL; | 488 | dev_replace->tgtdev = NULL; |
489 | up_write(&dev_replace->rwsem); | ||
492 | goto leave; | 490 | goto leave; |
493 | } | 491 | } |
494 | 492 | ||
@@ -510,8 +508,6 @@ static int btrfs_dev_replace_start(struct btrfs_fs_info *fs_info, | |||
510 | return ret; | 508 | return ret; |
511 | 509 | ||
512 | leave: | 510 | leave: |
513 | if (need_unlock) | ||
514 | up_write(&dev_replace->rwsem); | ||
515 | btrfs_destroy_dev_replace_tgtdev(tgt_device); | 511 | btrfs_destroy_dev_replace_tgtdev(tgt_device); |
516 | return ret; | 512 | return ret; |
517 | } | 513 | } |