diff options
author | Kent Overstreet <kent.overstreet@gmail.com> | 2017-03-09 08:27:30 -0900 |
---|---|---|
committer | Kent Overstreet <kent.overstreet@gmail.com> | 2017-03-09 09:14:11 -0900 |
commit | ac1b32acb4ca8c59c0e4911a8d3b27fd72dc54af (patch) | |
tree | e73a6ea5ddb6f3ece6a3e6c069ffa9ecc5e1ee44 /libbcache/chardev.c | |
parent | a17f7bcec7ed810a247c24e56229af8f43a9a6ae (diff) |
cmd_device_fail
Add a comamnd for setting a device as failed, update bcache sources
Diffstat (limited to 'libbcache/chardev.c')
-rw-r--r-- | libbcache/chardev.c | 16 |
1 files changed, 7 insertions, 9 deletions
diff --git a/libbcache/chardev.c b/libbcache/chardev.c index 049aa910..450859d5 100644 --- a/libbcache/chardev.c +++ b/libbcache/chardev.c @@ -173,17 +173,16 @@ static long bch_ioctl_disk_remove(struct cache_set *c, if (IS_ERR(ca)) return PTR_ERR(ca); - ret = bch_dev_remove(ca, arg.flags & BCH_FORCE_IF_DATA_MISSING) - ? 0 : -EBUSY; + ret = bch_dev_remove(c, ca, arg.flags); percpu_ref_put(&ca->ref); return ret; } -static long bch_ioctl_disk_fail(struct cache_set *c, - struct bch_ioctl_disk_fail __user *user_arg) +static long bch_ioctl_disk_set_state(struct cache_set *c, + struct bch_ioctl_disk_set_state __user *user_arg) { - struct bch_ioctl_disk_fail arg; + struct bch_ioctl_disk_set_state arg; struct cache *ca; int ret; @@ -194,8 +193,7 @@ static long bch_ioctl_disk_fail(struct cache_set *c, if (IS_ERR(ca)) return PTR_ERR(ca); - /* XXX: failed not actually implemented yet */ - ret = bch_dev_remove(ca, true); + ret = bch_dev_set_state(c, ca, arg.new_state, arg.flags); percpu_ref_put(&ca->ref); return ret; @@ -288,8 +286,8 @@ long bch_fs_ioctl(struct cache_set *c, unsigned cmd, void __user *arg) return bch_ioctl_disk_add(c, arg); case BCH_IOCTL_DISK_REMOVE: return bch_ioctl_disk_remove(c, arg); - case BCH_IOCTL_DISK_FAIL: - return bch_ioctl_disk_fail(c, arg); + case BCH_IOCTL_DISK_SET_STATE: + return bch_ioctl_disk_set_state(c, arg); case BCH_IOCTL_DISK_REMOVE_BY_UUID: return bch_ioctl_disk_remove_by_uuid(c, arg); |