From a65ed7afd392222b5f1c3d0977d7c6f6a8edc34f Mon Sep 17 00:00:00 2001 From: Christos Longros <98426896+chrislongros@users.noreply.github.com> Date: Thu, 4 Jun 2026 22:39:00 +0200 Subject: [PATCH] zpool/zfs: accept --help and -? after a subcommand Print the short usage instead of "invalid option". Reviewed-by: Brian Behlendorf Signed-off-by: Christos Longros Closes #18541 --- cmd/zfs/zfs_main.c | 12 ++++++++++++ cmd/zpool/zpool_main.c | 12 ++++++++++++ 2 files changed, 24 insertions(+) diff --git a/cmd/zfs/zfs_main.c b/cmd/zfs/zfs_main.c index 4c21c92bcd2..d448a3df60e 100644 --- a/cmd/zfs/zfs_main.c +++ b/cmd/zfs/zfs_main.c @@ -9399,6 +9399,18 @@ main(int argc, char **argv) return (1); } + /* + * Special case ' --help|-?' + */ + if (argc >= 3 && (strcmp(argv[2], "--help") == 0 || + strcmp(argv[2], "-?") == 0)) { + int idx; + if (find_command_idx(cmdname, &idx) == 0) { + current_command = &command_table[idx]; + usage(B_FALSE); + } + } + zfs_save_arguments(argc, argv, history_str, sizeof (history_str)); libzfs_print_on_error(g_zfs, B_TRUE); diff --git a/cmd/zpool/zpool_main.c b/cmd/zpool/zpool_main.c index 3ed7babc1ca..05ea5e35446 100644 --- a/cmd/zpool/zpool_main.c +++ b/cmd/zpool/zpool_main.c @@ -13878,6 +13878,18 @@ main(int argc, char **argv) if (strcmp(cmdname, "help") == 0) return (zpool_do_help(argc, argv)); + /* + * Special case ' --help|-?' + */ + if (argc >= 3 && (strcmp(argv[2], "--help") == 0 || + strcmp(argv[2], "-?") == 0)) { + int idx; + if (find_command_idx(cmdname, &idx) == 0) { + current_command = &command_table[idx]; + usage(B_FALSE); + } + } + if ((g_zfs = libzfs_init()) == NULL) { (void) fprintf(stderr, "%s\n", libzfs_error_init(errno)); return (1);