Lines Matching defs:se

129 static void zfsctl_snapshot_unmount_delay_impl(zfs_snapentry_t *se, int delay);
139 zfs_snapentry_t *se;
141 se = kmem_zalloc(sizeof (zfs_snapentry_t), KM_SLEEP);
143 se->se_name = kmem_strdup(full_name);
144 se->se_path = kmem_strdup(full_path);
145 se->se_spa = spa;
146 se->se_objsetid = objsetid;
147 se->se_root_dentry = root_dentry;
148 se->se_taskqid = TASKQID_INVALID;
149 rw_init(&se->se_taskqid_lock, NULL, RW_DEFAULT, NULL);
151 zfs_refcount_create(&se->se_refcount);
153 return (se);
161 zfsctl_snapshot_free(zfs_snapentry_t *se)
163 zfs_refcount_destroy(&se->se_refcount);
164 kmem_strfree(se->se_name);
165 kmem_strfree(se->se_path);
166 rw_destroy(&se->se_taskqid_lock);
168 kmem_free(se, sizeof (zfs_snapentry_t));
175 zfsctl_snapshot_hold(zfs_snapentry_t *se)
177 zfs_refcount_add(&se->se_refcount, NULL);
185 zfsctl_snapshot_rele(zfs_snapentry_t *se)
187 if (zfs_refcount_remove(&se->se_refcount, NULL) == 0)
188 zfsctl_snapshot_free(se);
197 zfsctl_snapshot_add(zfs_snapentry_t *se)
200 zfsctl_snapshot_hold(se);
201 avl_add(&zfs_snapshots_by_name, se);
202 avl_add(&zfs_snapshots_by_objsetid, se);
212 zfsctl_snapshot_remove(zfs_snapentry_t *se)
215 avl_remove(&zfs_snapshots_by_name, se);
216 avl_remove(&zfs_snapshots_by_objsetid, se);
217 zfsctl_snapshot_rele(se);
270 zfs_snapentry_t *se, search;
275 se = avl_find(&zfs_snapshots_by_name, &search, NULL);
276 if (se)
277 zfsctl_snapshot_hold(se);
279 return (se);
290 zfs_snapentry_t *se, search;
296 se = avl_find(&zfs_snapshots_by_objsetid, &search, NULL);
297 if (se)
298 zfsctl_snapshot_hold(se);
300 return (se);
310 zfs_snapentry_t *se;
314 se = zfsctl_snapshot_find_by_name(old_snapname);
315 if (se == NULL)
318 zfsctl_snapshot_remove(se);
319 kmem_strfree(se->se_name);
320 se->se_name = kmem_strdup(new_snapname);
321 zfsctl_snapshot_add(se);
322 zfsctl_snapshot_rele(se);
333 zfs_snapentry_t *se = (zfs_snapentry_t *)data;
334 spa_t *spa = se->se_spa;
335 uint64_t objsetid = se->se_objsetid;
338 zfsctl_snapshot_rele(se);
342 rw_enter(&se->se_taskqid_lock, RW_WRITER);
343 se->se_taskqid = TASKQID_INVALID;
344 rw_exit(&se->se_taskqid_lock);
345 (void) zfsctl_snapshot_unmount(se->se_name, MNT_EXPIRE);
346 zfsctl_snapshot_rele(se);
353 if ((se = zfsctl_snapshot_find_by_objsetid(spa, objsetid)) != NULL) {
354 zfsctl_snapshot_unmount_delay_impl(se, zfs_expire_snapshot);
355 zfsctl_snapshot_rele(se);
366 zfsctl_snapshot_unmount_cancel(zfs_snapentry_t *se)
369 rw_enter(&se->se_taskqid_lock, RW_WRITER);
370 err = taskq_cancel_id(system_delay_taskq, se->se_taskqid);
377 se->se_taskqid = TASKQID_INVALID;
378 rw_exit(&se->se_taskqid_lock);
380 zfsctl_snapshot_rele(se);
388 zfsctl_snapshot_unmount_delay_impl(zfs_snapentry_t *se, int delay)
394 zfsctl_snapshot_hold(se);
395 rw_enter(&se->se_taskqid_lock, RW_WRITER);
405 if (se->se_taskqid != TASKQID_INVALID) {
406 rw_exit(&se->se_taskqid_lock);
407 zfsctl_snapshot_rele(se);
410 se->se_taskqid = taskq_dispatch_delay(system_delay_taskq,
411 snapentry_expire, se, TQ_SLEEP, ddi_get_lbolt() + delay * HZ);
412 rw_exit(&se->se_taskqid_lock);
424 zfs_snapentry_t *se;
428 if ((se = zfsctl_snapshot_find_by_objsetid(spa, objsetid)) != NULL) {
429 zfsctl_snapshot_unmount_cancel(se);
430 zfsctl_snapshot_unmount_delay_impl(se, delay);
431 zfsctl_snapshot_rele(se);
446 zfs_snapentry_t *se;
450 if ((se = zfsctl_snapshot_find_by_name(snapname)) != NULL) {
451 zfsctl_snapshot_rele(se);
612 zfs_snapentry_t *se;
617 se = zfsctl_snapshot_find_by_objsetid(spa, objsetid);
618 if (se != NULL)
619 zfsctl_snapshot_remove(se);
621 if (se != NULL) {
622 zfsctl_snapshot_unmount_cancel(se);
623 zfsctl_snapshot_rele(se);
1127 zfs_snapentry_t *se;
1131 if ((se = zfsctl_snapshot_find_by_name(snapname)) == NULL) {
1141 argv[5] = se->se_path;
1142 dprintf("unmount; path=%s\n", se->se_path);
1144 zfsctl_snapshot_rele(se);
1165 zfs_snapentry_t *se;
1295 se = zfsctl_snapshot_alloc(full_name, full_path,
1298 zfsctl_snapshot_add(se);
1299 zfsctl_snapshot_unmount_delay_impl(se, zfs_expire_snapshot);