diff options
author | Ryan Lahfa <bcachefs@lahfa.xyz> | 2024-01-27 05:46:24 +0100 |
---|---|---|
committer | Ryan Lahfa <bcachefs@lahfa.xyz> | 2024-01-27 05:46:24 +0100 |
commit | 76538fa923fb9a454c8af8183c79f2a233191dbe (patch) | |
tree | edde96bfb2592a1bd7f2a995dced0698bbec48bf | |
parent | ec277463e9308ffd3e1e9376bf4b6a1a77fd9f83 (diff) |
feat(c_src): drop entirely subvolume subcommands
We get rid of it as we have now a pure Rust version.
Signed-off-by: Ryan Lahfa <bcachefs@lahfa.xyz>
-rw-r--r-- | c_src/bcachefs.c | 15 | ||||
-rw-r--r-- | c_src/cmd_subvolume.c | 188 |
2 files changed, 0 insertions, 203 deletions
diff --git a/c_src/bcachefs.c b/c_src/bcachefs.c index 70af2c39..c5b61097 100644 --- a/c_src/bcachefs.c +++ b/c_src/bcachefs.c @@ -162,18 +162,3 @@ int data_cmds(int argc, char *argv[]) return 0; } - -int subvolume_cmds(int argc, char *argv[]) -{ - char *cmd = pop_cmd(&argc, argv); - if (argc < 1) - return subvolume_usage(); - if (!strcmp(cmd, "create")) - return cmd_subvolume_create(argc, argv); - if (!strcmp(cmd, "delete")) - return cmd_subvolume_delete(argc, argv); - if (!strcmp(cmd, "snapshot")) - return cmd_subvolume_snapshot(argc, argv); - - return 0; -} diff --git a/c_src/cmd_subvolume.c b/c_src/cmd_subvolume.c deleted file mode 100644 index 99a302b8..00000000 --- a/c_src/cmd_subvolume.c +++ /dev/null @@ -1,188 +0,0 @@ -#include <errno.h> -#include <fcntl.h> -#include <getopt.h> -#include <libgen.h> -#include <stdbool.h> -#include <stdint.h> -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <sys/ioctl.h> -#include <sys/stat.h> -#include <sys/types.h> -#include <unistd.h> - -#include "libbcachefs/bcachefs.h" -#include "libbcachefs/bcachefs_ioctl.h" -#include "cmds.h" -#include "libbcachefs.h" -#include "libbcachefs/opts.h" -#include "tools-util.h" - -int subvolume_usage(void) -{ - puts("bcachefs subvolume - manage subvolumes and snapshots\n" - "Usage: bcachefs subvolume <CMD> [OPTION]\n" - "\n" - "Commands:\n" - " create create a subvolume\n" - " delete delete a subvolume\n" - " snapshot create a snapshot\n" - "\n" - "Report bugs to <linux-bcachefs@vger.kernel.org>"); - return 0; -} - -static void subvolume_create_usage(void) -{ - puts("bcachefs subvolume create - create a new subvolume\n" - "Usage: bcachefs subvolume create [OPTION]... path\n" - "\n" - "Options:\n" - " -h, --help Display this help and exit\n" - "\n" - "Report bugs to <linux-bcachefs@vger.kernel.org>"); -} - -int cmd_subvolume_create(int argc, char *argv[]) -{ - static const struct option longopts[] = { - { "help", no_argument, NULL, 'h' }, - { NULL } - }; - char *path; - int opt; - - while ((opt = getopt_long(argc, argv, "h", longopts, NULL)) != -1) - switch (opt) { - case 'h': - subvolume_create_usage(); - exit(EXIT_SUCCESS); - } - args_shift(optind); - - while ((path = arg_pop())) { - char *dir = dirname(strdup(path)); - - struct bchfs_handle fs = bcache_fs_open(dir); - - struct bch_ioctl_subvolume i = { - .dirfd = AT_FDCWD, - .mode = 0777, - .dst_ptr = (unsigned long)path, - }; - - xioctl(fs.ioctl_fd, BCH_IOCTL_SUBVOLUME_CREATE, &i); - bcache_fs_close(fs); - } - - return 0; -} - -static void subvolume_delete_usage(void) -{ - puts("bcachefs subvolume delete - delete an existing subvolume\n" - "Usage: bcachefs subvolume delete [OPTION]... path\n" - "\n" - "Options:\n" - " -h, --help Display this help and exit\n" - "\n" - "Report bugs to <linux-bcachefs@vger.kernel.org>"); -} - -int cmd_subvolume_delete(int argc, char *argv[]) -{ - static const struct option longopts[] = { - { "help", no_argument, NULL, 'h' }, - { NULL } - }; - char *path; - int opt; - - while ((opt = getopt_long(argc, argv, "h", longopts, NULL)) != -1) - switch (opt) { - case 'h': - subvolume_delete_usage(); - exit(EXIT_SUCCESS); - } - args_shift(optind); - - while ((path = arg_pop())) { - char *dir = dirname(strdup(path)); - - struct bchfs_handle fs = bcache_fs_open(dir); - - struct bch_ioctl_subvolume i = { - .dirfd = AT_FDCWD, - .mode = 0777, - .dst_ptr = (unsigned long)path, - }; - - xioctl(fs.ioctl_fd, BCH_IOCTL_SUBVOLUME_DESTROY, &i); - bcache_fs_close(fs); - } - - return 0; -} - -static void snapshot_create_usage(void) -{ - puts("bcachefs subvolume snapshot - create a snapshot \n" - "Usage: bcachefs subvolume snapshot [OPTION]... <source> <dest>\n" - "\n" - "Create a snapshot of <source> at <dest>. If specified, <source> must be a subvolume;\n" - "if not specified the snapshot will be of the subvolme containing <dest>.\n" - "Options:\n" - " -r Make snapshot read only\n" - " -h, --help Display this help and exit\n" - "\n" - "Report bugs to <linux-bcachefs@vger.kernel.org>"); -} - -int cmd_subvolume_snapshot(int argc, char *argv[]) -{ - static const struct option longopts[] = { - { "help", no_argument, NULL, 'h' }, - { NULL } - }; - unsigned flags = BCH_SUBVOL_SNAPSHOT_CREATE; - int opt; - - while ((opt = getopt_long(argc, argv, "rh", longopts, NULL)) != -1) - switch (opt) { - case 'r': - flags |= BCH_SUBVOL_SNAPSHOT_RO; - break; - case 'h': - snapshot_create_usage(); - exit(EXIT_SUCCESS); - } - args_shift(optind); - - char *src = arg_pop(); - char *dst = arg_pop(); - - if (argc) - die("Too many arguments"); - - if (!dst) - swap(src, dst); - if (!dst) - die("Please specify a path to create"); - - char *dir = dirname(strdup(dst)); - - struct bchfs_handle fs = bcache_fs_open(dir); - - struct bch_ioctl_subvolume i = { - .flags = flags, - .dirfd = AT_FDCWD, - .mode = 0777, - .src_ptr = (unsigned long)src, - .dst_ptr = (unsigned long)dst, - }; - - xioctl(fs.ioctl_fd, BCH_IOCTL_SUBVOLUME_CREATE, &i); - bcache_fs_close(fs); - return 0; -} |