aboutsummaryrefslogtreecommitdiffstats
path: root/fs/btrfs/ioctl.c
diff options
context:
space:
mode:
authorIlya Dryomov <idryomov@gmail.com>2012-01-16 15:04:49 -0500
committerIlya Dryomov <idryomov@gmail.com>2012-01-16 15:04:49 -0500
commita7e99c691af553fc15ac46a51f130b7c59a65f76 (patch)
tree55491f285683951d509819a66e614ac6f12659dd /fs/btrfs/ioctl.c
parent837d5b6e46d1a4af5b6cc8f2fe83cb5de79a2961 (diff)
Btrfs: allow for canceling restriper
Implement an ioctl for canceling restriper. Currently we wait until relocation of the current block group is finished, in future this can be done by triggering a commit. Balance item is deleted and no memory about the interrupted balance is kept. Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
Diffstat (limited to 'fs/btrfs/ioctl.c')
-rw-r--r--fs/btrfs/ioctl.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/fs/btrfs/ioctl.c b/fs/btrfs/ioctl.c
index f572c53dda4..60852217ce9 100644
--- a/fs/btrfs/ioctl.c
+++ b/fs/btrfs/ioctl.c
@@ -3076,6 +3076,8 @@ void update_ioctl_balance_args(struct btrfs_fs_info *fs_info,
3076 bargs->state |= BTRFS_BALANCE_STATE_RUNNING; 3076 bargs->state |= BTRFS_BALANCE_STATE_RUNNING;
3077 if (atomic_read(&fs_info->balance_pause_req)) 3077 if (atomic_read(&fs_info->balance_pause_req))
3078 bargs->state |= BTRFS_BALANCE_STATE_PAUSE_REQ; 3078 bargs->state |= BTRFS_BALANCE_STATE_PAUSE_REQ;
3079 if (atomic_read(&fs_info->balance_cancel_req))
3080 bargs->state |= BTRFS_BALANCE_STATE_CANCEL_REQ;
3079 3081
3080 memcpy(&bargs->data, &bctl->data, sizeof(bargs->data)); 3082 memcpy(&bargs->data, &bctl->data, sizeof(bargs->data));
3081 memcpy(&bargs->meta, &bctl->meta, sizeof(bargs->meta)); 3083 memcpy(&bargs->meta, &bctl->meta, sizeof(bargs->meta));
@@ -3157,6 +3159,8 @@ static long btrfs_ioctl_balance_ctl(struct btrfs_root *root, int cmd)
3157 switch (cmd) { 3159 switch (cmd) {
3158 case BTRFS_BALANCE_CTL_PAUSE: 3160 case BTRFS_BALANCE_CTL_PAUSE:
3159 return btrfs_pause_balance(root->fs_info); 3161 return btrfs_pause_balance(root->fs_info);
3162 case BTRFS_BALANCE_CTL_CANCEL:
3163 return btrfs_cancel_balance(root->fs_info);
3160 } 3164 }
3161 3165
3162 return -EINVAL; 3166 return -EINVAL;