diff options
Diffstat (limited to 'c_src')
-rw-r--r-- | c_src/cmd_format.c | 3 | ||||
-rw-r--r-- | c_src/cmd_fsck.c | 8 | ||||
-rw-r--r-- | c_src/cmd_fusemount.c | 2 | ||||
-rw-r--r-- | c_src/tools-util.c | 15 | ||||
-rw-r--r-- | c_src/tools-util.h | 2 |
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 */ |