reshuffle device_cmds(), data_cmds()

Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
This commit is contained in:
Kent Overstreet 2025-04-13 09:13:51 -04:00
parent 4f5dba7a87
commit 7b35cb1e4a
6 changed files with 102 additions and 113 deletions

View File

@ -103,17 +103,6 @@ void bcachefs_usage(void)
" version Display the version of the invoked bcachefs tool\n");
}
static char *pop_cmd(int *argc, char *argv[])
{
char *cmd = argv[1];
if (!(*argc < 2))
memmove(&argv[1], &argv[2], (*argc - 2) * sizeof(argv[0]));
(*argc)--;
argv[*argc] = NULL;
return cmd;
}
int fs_cmds(int argc, char *argv[])
{
char *cmd = pop_cmd(&argc, argv);
@ -128,47 +117,3 @@ int fs_cmds(int argc, char *argv[])
fs_usage();
return -EINVAL;
}
int device_cmds(int argc, char *argv[])
{
char *cmd = pop_cmd(&argc, argv);
if (argc < 1)
return device_usage();
if (!strcmp(cmd, "add"))
return cmd_device_add(argc, argv);
if (!strcmp(cmd, "remove"))
return cmd_device_remove(argc, argv);
if (!strcmp(cmd, "online"))
return cmd_device_online(argc, argv);
if (!strcmp(cmd, "offline"))
return cmd_device_offline(argc, argv);
if (!strcmp(cmd, "evacuate"))
return cmd_device_evacuate(argc, argv);
if (!strcmp(cmd, "set-state"))
return cmd_device_set_state(argc, argv);
if (!strcmp(cmd, "resize"))
return cmd_device_resize(argc, argv);
if (!strcmp(cmd, "resize-journal"))
return cmd_device_resize_journal(argc, argv);
device_usage();
return -EINVAL;
}
int data_cmds(int argc, char *argv[])
{
char *cmd = pop_cmd(&argc, argv);
if (argc < 1)
return data_usage();
if (!strcmp(cmd, "rereplicate"))
return cmd_data_rereplicate(argc, argv);
if (!strcmp(cmd, "scrub"))
return cmd_data_scrub(argc, argv);
if (!strcmp(cmd, "job"))
return cmd_data_job(argc, argv);
data_usage();
return -EINVAL;
}

View File

@ -10,19 +10,6 @@
#include "cmds.h"
#include "libbcachefs.h"
int data_usage(void)
{
puts("bcachefs data - manage filesystem data\n"
"Usage: bcachefs data <CMD> [OPTIONS]\n"
"\n"
"Commands:\n"
" rereplicate Rereplicate degraded data\n"
" job Kick off low level data jobs\n"
"\n"
"Report bugs to <linux-bcachefs@vger.kernel.org>");
return 0;
}
static void data_rereplicate_usage(void)
{
puts("bcachefs data rereplicate\n"
@ -37,7 +24,7 @@ static void data_rereplicate_usage(void)
exit(EXIT_SUCCESS);
}
int cmd_data_rereplicate(int argc, char *argv[])
static int cmd_data_rereplicate(int argc, char *argv[])
{
int opt;
@ -78,7 +65,7 @@ static void data_scrub_usage(void)
exit(EXIT_SUCCESS);
}
int cmd_data_scrub(int argc, char *argv[])
static int cmd_data_scrub(int argc, char *argv[])
{
static const struct option longopts[] = {
{ "metadata", no_argument, NULL, 'm' },
@ -283,7 +270,7 @@ static void data_job_usage(void)
exit(EXIT_SUCCESS);
}
int cmd_data_job(int argc, char *argv[])
static int cmd_data_job(int argc, char *argv[])
{
struct bch_ioctl_data op = {
.start_btree = 0,
@ -326,3 +313,33 @@ int cmd_data_job(int argc, char *argv[])
return bchu_data(bcache_fs_open(fs_path), op);
}
static int data_usage(void)
{
puts("bcachefs data - manage filesystem data\n"
"Usage: bcachefs data <CMD> [OPTIONS]\n"
"\n"
"Commands:\n"
" rereplicate Rereplicate degraded data\n"
" job Kick off low level data jobs\n"
"\n"
"Report bugs to <linux-bcachefs@vger.kernel.org>");
return 0;
}
int data_cmds(int argc, char *argv[])
{
char *cmd = pop_cmd(&argc, argv);
if (argc < 1)
return data_usage();
if (!strcmp(cmd, "rereplicate"))
return cmd_data_rereplicate(argc, argv);
if (!strcmp(cmd, "scrub"))
return cmd_data_scrub(argc, argv);
if (!strcmp(cmd, "job"))
return cmd_data_job(argc, argv);
data_usage();
return -EINVAL;
}

View File

@ -23,25 +23,6 @@
#include "libbcachefs/opts.h"
#include "tools-util.h"
int device_usage(void)
{
puts("bcachefs device - manage devices within a running filesystem\n"
"Usage: bcachefs device <CMD> [OPTION]\n"
"\n"
"Commands:\n"
" add add a new device to an existing filesystem\n"
" remove remove a device from an existing filesystem\n"
" online re-add an existing member to a filesystem\n"
" offline take a device offline, without removing it\n"
" evacuate migrate data off a specific device\n"
" set-state mark a device as failed\n"
" resize resize filesystem on a device\n"
" resize-journal resize journal on a device\n"
"\n"
"Report bugs to <linux-bcachefs@vger.kernel.org>");
return 0;
}
static void device_add_usage(void)
{
puts("bcachefs device add - add a device to an existing filesystem\n"
@ -58,7 +39,7 @@ static void device_add_usage(void)
"Report bugs to <linux-bcachefs@vger.kernel.org>");
}
int cmd_device_add(int argc, char *argv[])
static int cmd_device_add(int argc, char *argv[])
{
static const struct option longopts[] = {
{ "label", required_argument, NULL, 'l' },
@ -163,7 +144,7 @@ static void device_remove_usage(void)
exit(EXIT_SUCCESS);
}
int cmd_device_remove(int argc, char *argv[])
static int cmd_device_remove(int argc, char *argv[])
{
static const struct option longopts[] = {
{ "by-id", 0, NULL, 'i' },
@ -229,7 +210,7 @@ static void device_online_usage(void)
"Report bugs to <linux-bcachefs@vger.kernel.org>");
}
int cmd_device_online(int argc, char *argv[])
static int cmd_device_online(int argc, char *argv[])
{
int opt;
@ -266,7 +247,7 @@ static void device_offline_usage(void)
"Report bugs to <linux-bcachefs@vger.kernel.org>");
}
int cmd_device_offline(int argc, char *argv[])
static int cmd_device_offline(int argc, char *argv[])
{
static const struct option longopts[] = {
{ "force", 0, NULL, 'f' },
@ -310,7 +291,7 @@ static void device_evacuate_usage(void)
"Report bugs to <linux-bcachefs@vger.kernel.org>");
}
int cmd_device_evacuate(int argc, char *argv[])
static int cmd_device_evacuate(int argc, char *argv[])
{
int opt;
@ -368,7 +349,7 @@ static void device_set_state_usage(void)
exit(EXIT_SUCCESS);
}
int cmd_device_set_state(int argc, char *argv[])
static int cmd_device_set_state(int argc, char *argv[])
{
static const struct option longopts[] = {
{ "force", 0, NULL, 'f' },
@ -472,7 +453,7 @@ static void device_resize_usage(void)
exit(EXIT_SUCCESS);
}
int cmd_device_resize(int argc, char *argv[])
static int cmd_device_resize(int argc, char *argv[])
{
static const struct option longopts[] = {
{ "help", 0, NULL, 'h' },
@ -574,7 +555,7 @@ static void device_resize_journal_usage(void)
exit(EXIT_SUCCESS);
}
int cmd_device_resize_journal(int argc, char *argv[])
static int cmd_device_resize_journal(int argc, char *argv[])
{
static const struct option longopts[] = {
{ "help", 0, NULL, 'h' },
@ -656,3 +637,49 @@ int cmd_device_resize_journal(int argc, char *argv[])
}
return 0;
}
static int device_usage(void)
{
puts("bcachefs device - manage devices within a running filesystem\n"
"Usage: bcachefs device <CMD> [OPTION]\n"
"\n"
"Commands:\n"
" add add a new device to an existing filesystem\n"
" remove remove a device from an existing filesystem\n"
" online re-add an existing member to a filesystem\n"
" offline take a device offline, without removing it\n"
" evacuate migrate data off a specific device\n"
" set-state mark a device as failed\n"
" resize resize filesystem on a device\n"
" resize-journal resize journal on a device\n"
"\n"
"Report bugs to <linux-bcachefs@vger.kernel.org>");
return 0;
}
int device_cmds(int argc, char *argv[])
{
char *cmd = pop_cmd(&argc, argv);
if (argc < 1)
return device_usage();
if (!strcmp(cmd, "add"))
return cmd_device_add(argc, argv);
if (!strcmp(cmd, "remove"))
return cmd_device_remove(argc, argv);
if (!strcmp(cmd, "online"))
return cmd_device_online(argc, argv);
if (!strcmp(cmd, "offline"))
return cmd_device_offline(argc, argv);
if (!strcmp(cmd, "evacuate"))
return cmd_device_evacuate(argc, argv);
if (!strcmp(cmd, "set-state"))
return cmd_device_set_state(argc, argv);
if (!strcmp(cmd, "resize"))
return cmd_device_resize(argc, argv);
if (!strcmp(cmd, "resize-journal"))
return cmd_device_resize_journal(argc, argv);
device_usage();
return -EINVAL;
}

View File

@ -19,20 +19,9 @@ int fs_usage(void);
int cmd_fs_usage(int argc, char *argv[]);
int cmd_fs_top(int argc, char *argv[]);
int device_usage(void);
int cmd_device_add(int argc, char *argv[]);
int cmd_device_remove(int argc, char *argv[]);
int cmd_device_online(int argc, char *argv[]);
int cmd_device_offline(int argc, char *argv[]);
int cmd_device_evacuate(int argc, char *argv[]);
int cmd_device_set_state(int argc, char *argv[]);
int cmd_device_resize(int argc, char *argv[]);
int cmd_device_resize_journal(int argc, char *argv[]);
int device_cmds(int argc, char *argv[]);
int data_usage(void);
int cmd_data_rereplicate(int argc, char *argv[]);
int cmd_data_scrub(int argc, char *argv[]);
int cmd_data_job(int argc, char *argv[]);
int data_cmds(int argc, char *argv[]);
int cmd_unlock(int argc, char *argv[]);
int cmd_set_passphrase(int argc, char *argv[]);
@ -59,9 +48,7 @@ int cmd_subvolume_snapshot(int argc, char *argv[]);
int cmd_fusemount(int argc, char *argv[]);
void bcachefs_usage(void);
int device_cmds(int argc, char *argv[]);
int fs_cmds(int argc, char *argv[]);
int data_cmds(int argc, char *argv[]);
int subvolume_cmds(int argc, char *argv[]);
#endif /* _CMDS_H */

View File

@ -761,3 +761,14 @@ darray_str get_or_split_cmdline_devs(int argc, char *argv[])
return ret;
}
char *pop_cmd(int *argc, char *argv[])
{
char *cmd = argv[1];
if (!(*argc < 2))
memmove(&argv[1], &argv[2], (*argc - 2) * sizeof(argv[0]));
(*argc)--;
argv[*argc] = NULL;
return cmd;
}

View File

@ -213,4 +213,6 @@ unsigned version_parse(char *);
darray_str get_or_split_cmdline_devs(int argc, char *argv[]);
char *pop_cmd(int *argc, char *argv[]);
#endif /* _TOOLS_UTIL_H */