Trivial spelling fix
[zfs.git] / cmd / ztest / ztest.c
index c9fdf46..bb495b6 100644 (file)
@@ -1792,19 +1792,19 @@ ztest_replay_setattr(ztest_ds_t *zd, lr_setattr_t *lr, boolean_t byteswap)
        return (0);
 }
 
-zil_replay_func_t *ztest_replay_vector[TX_MAX_TYPE] = {
+zil_replay_func_t ztest_replay_vector[TX_MAX_TYPE] = {
        NULL,                           /* 0 no such transaction type */
-       (zil_replay_func_t *)ztest_replay_create,       /* TX_CREATE */
+       (zil_replay_func_t)ztest_replay_create,         /* TX_CREATE */
        NULL,                                           /* TX_MKDIR */
        NULL,                                           /* TX_MKXATTR */
        NULL,                                           /* TX_SYMLINK */
-       (zil_replay_func_t *)ztest_replay_remove,       /* TX_REMOVE */
+       (zil_replay_func_t)ztest_replay_remove,         /* TX_REMOVE */
        NULL,                                           /* TX_RMDIR */
        NULL,                                           /* TX_LINK */
        NULL,                                           /* TX_RENAME */
-       (zil_replay_func_t *)ztest_replay_write,        /* TX_WRITE */
-       (zil_replay_func_t *)ztest_replay_truncate,     /* TX_TRUNCATE */
-       (zil_replay_func_t *)ztest_replay_setattr,      /* TX_SETATTR */
+       (zil_replay_func_t)ztest_replay_write,          /* TX_WRITE */
+       (zil_replay_func_t)ztest_replay_truncate,       /* TX_TRUNCATE */
+       (zil_replay_func_t)ztest_replay_setattr,        /* TX_SETATTR */
        NULL,                                           /* TX_ACL */
        NULL,                                           /* TX_CREATE_ACL */
        NULL,                                           /* TX_CREATE_ATTR */
@@ -4965,7 +4965,18 @@ ztest_fault_inject(ztest_ds_t *zd, uint64_t id)
                        if (islog)
                                (void) rw_exit(&ztest_name_lock);
                } else {
+                       /*
+                        * Ideally we would like to be able to randomly
+                        * call vdev_[on|off]line without holding locks
+                        * to force unpredictable failures but the side
+                        * effects of vdev_[on|off]line prevent us from
+                        * doing so. We grab the ztest_vdev_lock here to
+                        * prevent a race between injection testing and
+                        * aux_vdev removal.
+                        */
+                       mutex_enter(&ztest_vdev_lock);
                        (void) vdev_online(spa, guid0, 0, NULL);
+                       mutex_exit(&ztest_vdev_lock);
                }
        }