summaryrefslogtreecommitdiff
path: root/c_src
diff options
context:
space:
mode:
Diffstat (limited to 'c_src')
-rw-r--r--c_src/cmd_format.c3
-rw-r--r--c_src/cmd_fsck.c8
-rw-r--r--c_src/cmd_fusemount.c2
-rw-r--r--c_src/tools-util.c15
-rw-r--r--c_src/tools-util.h2
5 files changed, 24 insertions, 6 deletions
diff --git a/c_src/cmd_format.c b/c_src/cmd_format.c
index d0c8e197..152f7f37 100644
--- a/c_src/cmd_format.c
+++ b/c_src/cmd_format.c
@@ -220,8 +220,7 @@ int cmd_format(int argc, char *argv[])
unconsumed_dev_option = true;
break;
case O_version:
- if (kstrtouint(optarg, 10, &opts.version))
- die("invalid version");
+ opts.version = version_parse(optarg);
break;
case O_no_initialize:
initialize = false;
diff --git a/c_src/cmd_fsck.c b/c_src/cmd_fsck.c
index 8beb108d..2ea51ff2 100644
--- a/c_src/cmd_fsck.c
+++ b/c_src/cmd_fsck.c
@@ -90,12 +90,14 @@ static int splice_fd_to_stdinout(int fd)
return close(fd);
}
-static int fsck_online(const char *dev_path)
+static int fsck_online(const char *dev_path, const char *opt_str)
{
int dev_idx;
struct bchfs_handle fs = bchu_fs_open_by_dev(dev_path, &dev_idx);
- struct bch_ioctl_fsck_online fsck = { 0 };
+ struct bch_ioctl_fsck_online fsck = {
+ .opts = (unsigned long) opt_str
+ };
int fsck_fd = ioctl(fs.ioctl_fd, BCH_IOCTL_FSCK_ONLINE, &fsck);
if (fsck_fd < 0)
@@ -271,7 +273,7 @@ int cmd_fsck(int argc, char *argv[])
darray_for_each(devs, i)
if (dev_mounted(*i)) {
printf("Running fsck online\n");
- return fsck_online(*i);
+ return fsck_online(*i, opts_str.buf);
}
int kernel_probed = kernel;
diff --git a/c_src/cmd_fusemount.c b/c_src/cmd_fusemount.c
index babdb6fb..e5674b42 100644
--- a/c_src/cmd_fusemount.c
+++ b/c_src/cmd_fusemount.c
@@ -1222,9 +1222,9 @@ int cmd_fusemount(int argc, char *argv[])
goto out;
}
if (fuse_opts.show_version) {
- /* TODO: Show bcachefs version. */
printf("FUSE library version %s\n", fuse_pkgversion());
fuse_lowlevel_version();
+ printf("bcachefs version: %s\n", VERSION_STRING);
ret = 0;
goto out;
}
diff --git a/c_src/tools-util.c b/c_src/tools-util.c
index 3a76a02e..3df2b004 100644
--- a/c_src/tools-util.c
+++ b/c_src/tools-util.c
@@ -726,6 +726,21 @@ struct bbpos_range bbpos_range_parse(char *buf)
return (struct bbpos_range) { .start = start, .end = end };
}
+unsigned version_parse(char *buf)
+{
+ char *s = buf;
+ char *major_str = strsep(&s, ".");
+ char *minor_str = strsep(&s, ".");
+
+ unsigned major, minor;
+
+ if (kstrtouint(major_str, 10, &major) ||
+ kstrtouint(minor_str, 10, &minor))
+ die("invalid version");
+
+ return BCH_VERSION(major, minor);
+}
+
darray_str get_or_split_cmdline_devs(int argc, char *argv[])
{
darray_str ret = {};
diff --git a/c_src/tools-util.h b/c_src/tools-util.h
index 572aca05..1694ad86 100644
--- a/c_src/tools-util.h
+++ b/c_src/tools-util.h
@@ -209,6 +209,8 @@ struct bbpos_range {
struct bbpos_range bbpos_range_parse(char *);
+unsigned version_parse(char *);
+
darray_str get_or_split_cmdline_devs(int argc, char *argv[]);
#endif /* _TOOLS_UTIL_H */