summaryrefslogtreecommitdiff
path: root/cmd_device.c
diff options
context:
space:
mode:
authorKent Overstreet <kent.overstreet@gmail.com>2017-04-05 17:31:05 -0800
committerKent Overstreet <kent.overstreet@gmail.com>2017-04-05 18:20:50 -0800
commit2615d73a7428a08abdd058c875067847bf93d55c (patch)
treee65a58885a8c6c535b6576c8c44cbac6a38829d1 /cmd_device.c
parentbc85a9411404d979feff56680509ef28e93ab2a9 (diff)
Allow disk commands to specify member by index
Diffstat (limited to 'cmd_device.c')
-rw-r--r--cmd_device.c14
1 files changed, 12 insertions, 2 deletions
diff --git a/cmd_device.c b/cmd_device.c
index ac586ffe..2f7a7bc1 100644
--- a/cmd_device.c
+++ b/cmd_device.c
@@ -167,7 +167,12 @@ int cmd_device_show(int argc, char *argv[])
static void disk_ioctl(const char *fs, const char *dev, int cmd, int flags)
{
- struct bch_ioctl_disk i = { .flags = flags, .dev = (__u64) dev, };
+ struct bch_ioctl_disk i = { .flags = flags, };
+
+ if (!kstrtoull(dev, 10, &i.dev))
+ i.flags |= BCH_BY_INDEX;
+ else
+ i.dev = (u64) dev;
xioctl(bcache_fs_open(fs).ioctl_fd, cmd, &i);
}
@@ -435,11 +440,16 @@ int cmd_device_set_state(int argc, char *argv[])
struct bch_ioctl_disk_set_state i = {
.flags = flags,
- .dev = (__u64) argv[optind + 1],
.new_state = read_string_list_or_die(argv[optind + 2],
bch2_dev_state, "device state"),
};
+ const char *dev = argv[optind + 1];
+ if (!kstrtoull(dev, 10, &i.dev))
+ i.flags |= BCH_BY_INDEX;
+ else
+ i.dev = (u64) dev;
+
xioctl(fs.ioctl_fd, BCH_IOCTL_DISK_SET_STATE, &i);
return 0;
}