diff options
author | Thomas Bertschinger <tahbertschinger@gmail.com> | 2024-01-15 23:41:02 -0700 |
---|---|---|
committer | Kent Overstreet <kent.overstreet@linux.dev> | 2024-01-16 01:47:05 -0500 |
commit | f5baaf48e3e82b1caf9f5cd1207d4d6feba3a2e5 (patch) | |
tree | 59f7b0e4667df7a9d3d5a45725f2aaab3e79b4c5 /c_src/cmd_counters.c | |
parent | fb35dbfdc5a9446fbb856dae5542b23963e28b89 (diff) |
move Rust sources to top level, C sources into c_src
This moves the Rust sources out of rust_src/ and into the top level.
Running the bcachefs executable out of the development tree is now:
$ ./target/release/bcachefs command
or
$ cargo run --profile release -- command
instead of "./bcachefs command".
Building and installing is still:
$ make && make install
Signed-off-by: Thomas Bertschinger <tahbertschinger@gmail.com>
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
Diffstat (limited to 'c_src/cmd_counters.c')
-rw-r--r-- | c_src/cmd_counters.c | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/c_src/cmd_counters.c b/c_src/cmd_counters.c new file mode 100644 index 00000000..9adde242 --- /dev/null +++ b/c_src/cmd_counters.c @@ -0,0 +1,51 @@ +#include <getopt.h> + +#include "cmds.h" +#include "libbcachefs.h" +#include "libbcachefs/super-io.h" + +static void reset_counters_usage(void) +{ + puts("bcachefs reset-counters \n" + "Usage: bcachefs reset-counters device\n" + "\n" + "Options:\n" + " -h, --help display this help and exit\n" + "Report bugs to <linux-bcachefs@vger.kernel.org>"); + exit(EXIT_SUCCESS); +} + +int cmd_reset_counters(int argc, char *argv[]) +{ + static const struct option longopts[] = { + { "help", 0, NULL, 'h' }, + { NULL } + }; + int opt; + + while ((opt = getopt_long(argc, argv, "h", longopts, NULL)) != -1) + switch (opt) { + case 'h': + reset_counters_usage(); + break; + } + args_shift(optind); + + char *dev = arg_pop(); + if (!dev) + die("please supply a device"); + if (argc) + die("too many arguments"); + + struct bch_opts opts = bch2_opts_empty(); + struct bch_sb_handle sb; + int ret = bch2_read_super(dev, &opts, &sb); + if (ret) + die("Error opening %s: %s", dev, bch2_err_str(ret)); + + bch2_sb_field_resize(&sb, counters, 0); + + bch2_super_write(sb.bdev->bd_fd, sb.sb); + bch2_free_super(&sb); + return 0; +} |