" format Format a new filesystem\n"
" show-super Dump superblock information to stdout\n"
" set-option Set a filesystem option\n"
+ " reset-counters Reset all counters on an unmounted device\n"
"\n"
+#ifndef BCACHEFS_NO_RUST
"Mount:\n"
" mount Mount a filesystem\n"
"\n"
+#endif
"Repair:\n"
" fsck Check an existing filesystem for errors\n"
"\n"
"\n"
"Commands for operating on files in a bcachefs filesystem:\n"
" setattr Set various per file attributes\n"
+ "\n"
"Debug:\n"
"These commands work on offline, unmounted filesystems\n"
" dump Dump filesystem metadata to a qcow2 image\n"
+#ifndef BCACHEFS_NO_RUST
" list List filesystem metadata in textual form\n"
+#endif
" list_journal List contents of journal\n"
"\n"
+ "FUSE:\n"
+ " fusemount Mount a filesystem via FUSE\n"
+ "\n"
"Miscellaneous:\n"
+#ifndef BCACHEFS_NO_RUST
+ " completions Generate shell completions\n"
+#endif
" version Display the version of the invoked bcachefs tool\n");
}
{
char *cmd = pop_cmd(&argc, argv);
- if (argc < 1)
- return fs_usage();
+ if (argc < 1) {
+ usage();
+ exit(EXIT_FAILURE);
+ }
if (!strcmp(cmd, "usage"))
return cmd_fs_usage(argc, argv);
full_cmd = argv[0];
+ /* Are we being called via a symlink? */
+
+ if (strstr(full_cmd, "mkfs"))
+ return cmd_format(argc, argv);
+
+ if (strstr(full_cmd, "fsck"))
+ return cmd_fsck(argc, argv);
+
+#ifdef BCACHEFS_FUSE
+ if (strstr(full_cmd, "mount.fuse"))
+ return cmd_fusemount(argc, argv);
+#endif
+
+#ifndef BCACHEFS_NO_RUST
+ if (strstr(full_cmd, "mount"))
+ return rust_main(argc, argv, "mount");
+#endif
+
setvbuf(stdout, NULL, _IOLBF, 0);
char *cmd = pop_cmd(&argc, argv);
return cmd_show_super(argc, argv);
if (!strcmp(cmd, "set-option"))
return cmd_set_option(argc, argv);
+ if (!strcmp(cmd, "reset-counters"))
+ return cmd_reset_counters(argc, argv);
#if 0
if (!strcmp(cmd, "assemble"))
if (!strcmp(cmd, "dump"))
return cmd_dump(argc, argv);
- if (!strcmp(cmd, "list"))
- return cmd_list(argc, argv);
if (!strcmp(cmd, "list_journal"))
return cmd_list_journal(argc, argv);
if (!strcmp(cmd, "kill_btree_node"))
if (!strcmp(cmd, "setattr"))
return cmd_setattr(argc, argv);
-
- if (!strcmp(cmd, "mount")) {
- cmd_mount(argc, argv);
- return 0;
- }
+#ifndef BCACHEFS_NO_RUST
+ if (!strcmp(cmd, "list") ||
+ !strcmp(cmd, "mount") ||
+ !strcmp(cmd, "completions"))
+ return rust_main(argc, argv, cmd);
+#endif
#ifdef BCACHEFS_FUSE
if (!strcmp(cmd, "fusemount"))