Lines Matching refs:dl

142 	zfs_dirlock_t	*dl;  in zfs_dirent_lock()  local
248 for (dl = dzp->z_dirlocks; dl != NULL; dl = dl->dl_next) { in zfs_dirent_lock()
249 if ((u8_strcmp(name, dl->dl_name, 0, cmpflags, in zfs_dirent_lock()
259 if (dl == NULL) { in zfs_dirent_lock()
263 dl = kmem_alloc(sizeof (zfs_dirlock_t), KM_SLEEP); in zfs_dirent_lock()
264 cv_init(&dl->dl_cv, NULL, CV_DEFAULT, NULL); in zfs_dirent_lock()
265 dl->dl_name = name; in zfs_dirent_lock()
266 dl->dl_sharecnt = 0; in zfs_dirent_lock()
267 dl->dl_namelock = 0; in zfs_dirent_lock()
268 dl->dl_namesize = 0; in zfs_dirent_lock()
269 dl->dl_dzp = dzp; in zfs_dirent_lock()
270 dl->dl_next = dzp->z_dirlocks; in zfs_dirent_lock()
271 dzp->z_dirlocks = dl; in zfs_dirent_lock()
274 if ((flag & ZSHARED) && dl->dl_sharecnt != 0) in zfs_dirent_lock()
276 cv_wait(&dl->dl_cv, &dzp->z_lock); in zfs_dirent_lock()
283 dl->dl_namelock = 1; in zfs_dirent_lock()
285 if ((flag & ZSHARED) && ++dl->dl_sharecnt > 1 && dl->dl_namesize == 0) { in zfs_dirent_lock()
294 dl->dl_namesize = strlen(dl->dl_name) + 1; in zfs_dirent_lock()
295 name = kmem_alloc(dl->dl_namesize, KM_SLEEP); in zfs_dirent_lock()
296 bcopy(dl->dl_name, name, dl->dl_namesize); in zfs_dirent_lock()
297 dl->dl_name = name; in zfs_dirent_lock()
320 zfs_dirent_unlock(dl); in zfs_dirent_lock()
324 *dlpp = dl; in zfs_dirent_lock()
334 zfs_dirent_unlock(dl); in zfs_dirent_lock()
339 zfs_dirent_unlock(dl); in zfs_dirent_lock()
344 zfs_dirent_unlock(dl); in zfs_dirent_lock()
351 *dlpp = dl; in zfs_dirent_lock()
360 zfs_dirent_unlock(zfs_dirlock_t *dl) in zfs_dirent_unlock() argument
362 znode_t *dzp = dl->dl_dzp; in zfs_dirent_unlock()
367 if (!dl->dl_namelock) in zfs_dirent_unlock()
370 if (dl->dl_sharecnt > 1) { in zfs_dirent_unlock()
371 dl->dl_sharecnt--; in zfs_dirent_unlock()
376 while ((cur_dl = *prev_dl) != dl) in zfs_dirent_unlock()
378 *prev_dl = dl->dl_next; in zfs_dirent_unlock()
379 cv_broadcast(&dl->dl_cv); in zfs_dirent_unlock()
382 if (dl->dl_namesize != 0) in zfs_dirent_unlock()
383 kmem_free(dl->dl_name, dl->dl_namesize); in zfs_dirent_unlock()
384 cv_destroy(&dl->dl_cv); in zfs_dirent_unlock()
385 kmem_free(dl, sizeof (*dl)); in zfs_dirent_unlock()
400 zfs_dirlock_t *dl; in zfs_dirlook() local
438 error = zfs_dirent_lock(&dl, dzp, name, &zp, zf, deflg, rpnp); in zfs_dirlook()
441 zfs_dirent_unlock(dl); in zfs_dirlook()
596 zfs_dirlock_t dl; in zfs_purgedir() local
628 bzero(&dl, sizeof (dl)); in zfs_purgedir()
629 dl.dl_dzp = dzp; in zfs_purgedir()
630 dl.dl_name = zap.za_name; in zfs_purgedir()
632 error = zfs_link_destroy(&dl, xzp, tx, 0, NULL); in zfs_purgedir()
771 zfs_link_create(zfs_dirlock_t *dl, znode_t *zp, dmu_tx_t *tx, int flag) in zfs_link_create() argument
773 znode_t *dzp = dl->dl_dzp; in zfs_link_create()
832 error = zap_add(zp->z_zfsvfs->z_os, dzp->z_id, dl->dl_name, in zfs_link_create()
836 dnlc_update(ZTOV(dzp), dl->dl_name, vp); in zfs_link_create()
864 zfs_dropname(zfs_dirlock_t *dl, znode_t *zp, znode_t *dzp, dmu_tx_t *tx, in zfs_dropname() argument
880 dl->dl_name, mt, tx); in zfs_dropname()
882 error = zap_remove(zp->z_zfsvfs->z_os, dzp->z_id, dl->dl_name, in zfs_dropname()
897 zfs_link_destroy(zfs_dirlock_t *dl, znode_t *zp, dmu_tx_t *tx, int flag, in zfs_link_destroy() argument
900 znode_t *dzp = dl->dl_dzp; in zfs_link_destroy()
910 dnlc_remove(ZTOV(dzp), dl->dl_name); in zfs_link_destroy()
934 error = zfs_dropname(dl, zp, dzp, tx, flag); in zfs_link_destroy()
969 error = zfs_dropname(dl, zp, dzp, tx, flag); in zfs_link_destroy()
1092 zfs_dirlock_t *dl; in zfs_get_xattrdir() local
1096 error = zfs_dirent_lock(&dl, zp, "", &xzp, ZXATTR, NULL, NULL); in zfs_get_xattrdir()
1102 zfs_dirent_unlock(dl); in zfs_get_xattrdir()
1108 zfs_dirent_unlock(dl); in zfs_get_xattrdir()
1113 zfs_dirent_unlock(dl); in zfs_get_xattrdir()
1133 zfs_dirent_unlock(dl); in zfs_get_xattrdir()