From 937210a54b9c2d3dddc7221e31d5695e9720a055 Mon Sep 17 00:00:00 2001 From: Brian Behlendorf Date: Wed, 1 May 2013 09:38:49 -0700 Subject: [PATCH] Fix zinject list handlers 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 --- cmd/zinject/zinject.c | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/cmd/zinject/zinject.c b/cmd/zinject/zinject.c index 9ae3f9ddc3..13d067dc5f 100644 --- a/cmd/zinject/zinject.c +++ b/cmd/zinject/zinject.c @@ -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;