aboutsummaryrefslogtreecommitdiffstats
path: root/fs/btrfs/dev-replace.c
diff options
context:
space:
mode:
authorAnand Jain <anand.jain@oracle.com>2018-02-12 22:53:43 -0500
committerDavid Sterba <dsterba@suse.com>2018-03-26 09:09:34 -0400
commit8f2ceaa7b42a6df21eed621b88037af2c4cd8257 (patch)
tree2103d02e2b6b44bac8fe45d5f8428026aed3b90c /fs/btrfs/dev-replace.c
parentacf18c56fdcb952a06650282192e3b4ca1855c5e (diff)
btrfs: log, when replace, is canceled by the user
For debugging or administration purposes, we would want to know if and when the user cancels the replace, to complement the existing messages when dev-replace starts or finishes. Signed-off-by: Anand Jain <anand.jain@oracle.com> Reviewed-by: David Sterba <dsterba@suse.com> [ update changelog, fold fix for RCU warning from Nikolay ] Signed-off-by: David Sterba <dsterba@suse.com>
Diffstat (limited to 'fs/btrfs/dev-replace.c')
-rw-r--r--fs/btrfs/dev-replace.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/fs/btrfs/dev-replace.c b/fs/btrfs/dev-replace.c
index c523478b3de2..e279f04b3388 100644
--- a/fs/btrfs/dev-replace.c
+++ b/fs/btrfs/dev-replace.c
@@ -703,6 +703,7 @@ int btrfs_dev_replace_cancel(struct btrfs_fs_info *fs_info)
703{ 703{
704 struct btrfs_dev_replace *dev_replace = &fs_info->dev_replace; 704 struct btrfs_dev_replace *dev_replace = &fs_info->dev_replace;
705 struct btrfs_device *tgt_device = NULL; 705 struct btrfs_device *tgt_device = NULL;
706 struct btrfs_device *src_device = NULL;
706 struct btrfs_trans_handle *trans; 707 struct btrfs_trans_handle *trans;
707 struct btrfs_root *root = fs_info->tree_root; 708 struct btrfs_root *root = fs_info->tree_root;
708 int result; 709 int result;
@@ -724,6 +725,7 @@ int btrfs_dev_replace_cancel(struct btrfs_fs_info *fs_info)
724 case BTRFS_IOCTL_DEV_REPLACE_STATE_SUSPENDED: 725 case BTRFS_IOCTL_DEV_REPLACE_STATE_SUSPENDED:
725 result = BTRFS_IOCTL_DEV_REPLACE_RESULT_NO_ERROR; 726 result = BTRFS_IOCTL_DEV_REPLACE_RESULT_NO_ERROR;
726 tgt_device = dev_replace->tgtdev; 727 tgt_device = dev_replace->tgtdev;
728 src_device = dev_replace->srcdev;
727 dev_replace->tgtdev = NULL; 729 dev_replace->tgtdev = NULL;
728 dev_replace->srcdev = NULL; 730 dev_replace->srcdev = NULL;
729 break; 731 break;
@@ -741,6 +743,12 @@ int btrfs_dev_replace_cancel(struct btrfs_fs_info *fs_info)
741 } 743 }
742 ret = btrfs_commit_transaction(trans); 744 ret = btrfs_commit_transaction(trans);
743 WARN_ON(ret); 745 WARN_ON(ret);
746
747 btrfs_info_in_rcu(fs_info,
748 "dev_replace from %s (devid %llu) to %s canceled",
749 btrfs_dev_name(src_device), src_device->devid,
750 btrfs_dev_name(tgt_device));
751
744 if (tgt_device) 752 if (tgt_device)
745 btrfs_destroy_dev_replace_tgtdev(fs_info, tgt_device); 753 btrfs_destroy_dev_replace_tgtdev(fs_info, tgt_device);
746 754