diff options
Diffstat (limited to 'libbcache/chardev.c')
-rw-r--r-- | libbcache/chardev.c | 37 |
1 files changed, 19 insertions, 18 deletions
diff --git a/libbcache/chardev.c b/libbcache/chardev.c index 0b020c84..b361b092 100644 --- a/libbcache/chardev.c +++ b/libbcache/chardev.c @@ -9,6 +9,7 @@ #include "bcache.h" #include "super.h" +#include "super-io.h" #include <linux/module.h> #include <linux/fs.h> @@ -202,16 +203,16 @@ static long bch_ioctl_disk_fail(struct cache_set *c, return ret; } -static struct cache_member *bch_uuid_lookup(struct cache_set *c, uuid_le uuid) +static struct bch_member *bch_uuid_lookup(struct cache_set *c, uuid_le uuid) { - struct cache_member *mi = c->disk_mi; + struct bch_sb_field_members *mi = bch_sb_get_members(c->disk_sb); unsigned i; - lockdep_assert_held(&bch_register_lock); + lockdep_assert_held(&c->sb_lock); - for (i = 0; i < c->disk_sb.nr_in_set; i++) - if (!memcmp(&mi[i].uuid, &uuid, sizeof(uuid))) - return &mi[i]; + for (i = 0; i < c->disk_sb->nr_devices; i++) + if (!memcmp(&mi->members[i].uuid, &uuid, sizeof(uuid))) + return &mi->members[i]; return NULL; } @@ -220,20 +221,20 @@ static long bch_ioctl_disk_remove_by_uuid(struct cache_set *c, struct bch_ioctl_disk_remove_by_uuid __user *user_arg) { struct bch_ioctl_disk_fail_by_uuid arg; - struct cache_member *m; + struct bch_member *m; int ret = -ENOENT; if (copy_from_user(&arg, user_arg, sizeof(arg))) return -EFAULT; - mutex_lock(&bch_register_lock); + mutex_lock(&c->sb_lock); if ((m = bch_uuid_lookup(c, arg.dev))) { /* XXX: */ - SET_CACHE_STATE(m, CACHE_FAILED); - bcache_write_super(c); + SET_BCH_MEMBER_STATE(m, BCH_MEMBER_STATE_FAILED); + bch_write_super(c); ret = 0; } - mutex_unlock(&bch_register_lock); + mutex_unlock(&c->sb_lock); return ret; } @@ -242,19 +243,19 @@ static long bch_ioctl_disk_fail_by_uuid(struct cache_set *c, struct bch_ioctl_disk_fail_by_uuid __user *user_arg) { struct bch_ioctl_disk_fail_by_uuid arg; - struct cache_member *m; + struct bch_member *m; int ret = -ENOENT; if (copy_from_user(&arg, user_arg, sizeof(arg))) return -EFAULT; - mutex_lock(&bch_register_lock); + mutex_lock(&c->sb_lock); if ((m = bch_uuid_lookup(c, arg.dev))) { - SET_CACHE_STATE(m, CACHE_FAILED); - bcache_write_super(c); + SET_BCH_MEMBER_STATE(m, BCH_MEMBER_STATE_FAILED); + bch_write_super(c); ret = 0; } - mutex_unlock(&bch_register_lock); + mutex_unlock(&c->sb_lock); return ret; } @@ -263,8 +264,8 @@ static long bch_ioctl_query_uuid(struct cache_set *c, struct bch_ioctl_query_uuid __user *user_arg) { return copy_to_user(&user_arg->uuid, - &c->disk_sb.user_uuid, - sizeof(c->disk_sb.user_uuid)); + &c->sb.user_uuid, + sizeof(c->sb.user_uuid)); } long bch_cache_set_ioctl(struct cache_set *c, unsigned cmd, void __user *arg) |