Lines Matching defs:zo
79 zfs_onexit_t *zo;
81 zo = *zop = kmem_zalloc(sizeof (zfs_onexit_t), KM_SLEEP);
82 mutex_init(&zo->zo_lock, NULL, MUTEX_DEFAULT, NULL);
83 list_create(&zo->zo_actions, sizeof (zfs_onexit_action_node_t),
88 zfs_onexit_destroy(zfs_onexit_t *zo)
92 mutex_enter(&zo->zo_lock);
93 while ((ap = list_head(&zo->zo_actions)) != NULL) {
94 list_remove(&zo->zo_actions, ap);
95 mutex_exit(&zo->zo_lock);
98 mutex_enter(&zo->zo_lock);
100 mutex_exit(&zo->zo_lock);
102 list_destroy(&zo->zo_actions);
103 mutex_destroy(&zo->zo_lock);
104 kmem_free(zo, sizeof (zfs_onexit_t));
108 zfs_onexit_minor_to_state(minor_t minor, zfs_onexit_t **zo)
110 *zo = zfsdev_get_soft_state(minor, ZSST_CTLDEV);
111 if (*zo == NULL)
127 zfs_onexit_t *zo;
134 return (zfs_onexit_minor_to_state(*minorp, &zo));
150 zfs_onexit_t *zo;
154 error = zfs_onexit_minor_to_state(minor, &zo);
163 mutex_enter(&zo->zo_lock);
164 list_insert_tail(&zo->zo_actions, ap);
165 mutex_exit(&zo->zo_lock);
173 zfs_onexit_find_cb(zfs_onexit_t *zo, uint64_t action_handle)
179 ASSERT(MUTEX_HELD(&zo->zo_lock));
182 l = &zo->zo_actions;
196 zfs_onexit_t *zo;
200 error = zfs_onexit_minor_to_state(minor, &zo);
204 mutex_enter(&zo->zo_lock);
205 ap = zfs_onexit_find_cb(zo, action_handle);
207 list_remove(&zo->zo_actions, ap);
208 mutex_exit(&zo->zo_lock);
213 mutex_exit(&zo->zo_lock);
228 zfs_onexit_t *zo;
234 error = zfs_onexit_minor_to_state(minor, &zo);
238 mutex_enter(&zo->zo_lock);
239 ap = zfs_onexit_find_cb(zo, action_handle);
244 mutex_exit(&zo->zo_lock);