summaryrefslogtreecommitdiff
path: root/libbcache/chardev.c
diff options
context:
space:
mode:
Diffstat (limited to 'libbcache/chardev.c')
-rw-r--r--libbcache/chardev.c37
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)