Fix zinject list handlers
authorBrian Behlendorf <behlendorf1@llnl.gov>
Wed, 1 May 2013 16:38:49 +0000 (09:38 -0700)
committerBrian Behlendorf <behlendorf1@llnl.gov>
Thu, 2 May 2013 00:05:58 +0000 (17:05 -0700)
The zfs_fd must be opened before calling print_all_handlers() or
the ioctl() cannot be used to the zfs control device.  This brings
the zinject code back in sync with the Illumos implementation.

Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
cmd/zinject/zinject.c

index 9ae3f9d..13d067d 100644 (file)
@@ -574,6 +574,16 @@ main(int argc, char **argv)
        int ret;
        int flags = 0;
 
+       if ((g_zfs = libzfs_init()) == NULL)
+               return (1);
+
+       libzfs_print_on_error(g_zfs, B_TRUE);
+
+       if ((zfs_fd = open(ZFS_DEV, O_RDWR)) < 0) {
+               (void) fprintf(stderr, "failed to open ZFS device\n");
+               return (1);
+       }
+
        if (argc == 1) {
                /*
                 * No arguments.  Print the available handlers.  If there are no
@@ -764,16 +774,6 @@ main(int argc, char **argv)
        argc -= optind;
        argv += optind;
 
-       if ((g_zfs = libzfs_init()) == NULL)
-               return (1);
-
-       libzfs_print_on_error(g_zfs, B_TRUE);
-
-       if ((zfs_fd = open(ZFS_DEV, O_RDWR)) < 0) {
-               (void) fprintf(stderr, "failed to open ZFS device\n");
-               return (1);
-       }
-
        if (record.zi_duration != 0)
                record.zi_cmd = ZINJECT_IGNORED_WRITES;