Lines Matching defs:dl

141 	zfs_dirlock_t	*dl;
231 for (dl = dzp->z_dirlocks; dl != NULL; dl = dl->dl_next) {
232 if ((u8_strcmp(name, dl->dl_name, 0, cmpflags,
242 if (dl == NULL) {
246 dl = kmem_alloc(sizeof (zfs_dirlock_t), KM_SLEEP);
247 cv_init(&dl->dl_cv, NULL, CV_DEFAULT, NULL);
248 dl->dl_name = name;
249 dl->dl_sharecnt = 0;
250 dl->dl_namelock = 0;
251 dl->dl_namesize = 0;
252 dl->dl_dzp = dzp;
253 dl->dl_next = dzp->z_dirlocks;
254 dzp->z_dirlocks = dl;
257 if ((flag & ZSHARED) && dl->dl_sharecnt != 0)
259 cv_wait(&dl->dl_cv, &dzp->z_lock);
266 dl->dl_namelock = 1;
268 if ((flag & ZSHARED) && ++dl->dl_sharecnt > 1 && dl->dl_namesize == 0) {
270 * We're the second shared reference to dl. Make a copy of
274 * dl->dl_name at any time. He'll either see the old value,
277 dl->dl_namesize = strlen(dl->dl_name) + 1;
278 name = kmem_alloc(dl->dl_namesize, KM_SLEEP);
279 bcopy(dl->dl_name, name, dl->dl_namesize);
280 dl->dl_name = name;
303 zfs_dirent_unlock(dl);
307 *dlpp = dl;
317 zfs_dirent_unlock(dl);
322 zfs_dirent_unlock(dl);
327 zfs_dirent_unlock(dl);
334 *dlpp = dl;
343 zfs_dirent_unlock(zfs_dirlock_t *dl)
345 znode_t *dzp = dl->dl_dzp;
350 if (!dl->dl_namelock)
353 if (dl->dl_sharecnt > 1) {
354 dl->dl_sharecnt--;
359 while ((cur_dl = *prev_dl) != dl)
361 *prev_dl = dl->dl_next;
362 cv_broadcast(&dl->dl_cv);
365 if (dl->dl_namesize != 0)
366 kmem_free(dl->dl_name, dl->dl_namesize);
367 cv_destroy(&dl->dl_cv);
368 kmem_free(dl, sizeof (*dl));
383 zfs_dirlock_t *dl;
421 error = zfs_dirent_lock(&dl, dzp, name, &zp, zf, deflg, rpnp);
424 zfs_dirent_unlock(dl);
533 zfs_dirlock_t dl;
565 bzero(&dl, sizeof (dl));
566 dl.dl_dzp = dzp;
567 dl.dl_name = zap.za_name;
569 error = zfs_link_destroy(&dl, xzp, tx, 0, NULL);
704 * Link zp into dl. Can only fail if zp has been unlinked.
707 zfs_link_create(zfs_dirlock_t *dl, znode_t *zp, dmu_tx_t *tx, int flag)
709 znode_t *dzp = dl->dl_dzp;
768 error = zap_add(zp->z_zfsvfs->z_os, dzp->z_id, dl->dl_name,
772 dnlc_update(ZTOV(dzp), dl->dl_name, vp);
778 zfs_dropname(zfs_dirlock_t *dl, znode_t *zp, znode_t *dzp, dmu_tx_t *tx,
789 dzp->z_id, dl->dl_name, MT_EXACT, tx);
792 dzp->z_id, dl->dl_name, MT_FIRST, tx);
795 dzp->z_id, dl->dl_name, tx);
802 * Unlink zp from dl, and mark zp for deletion if this was the last link.
809 zfs_link_destroy(zfs_dirlock_t *dl, znode_t *zp, dmu_tx_t *tx, int flag,
812 znode_t *dzp = dl->dl_dzp;
822 dnlc_remove(ZTOV(dzp), dl->dl_name);
846 error = zfs_dropname(dl, zp, dzp, tx, flag);
881 error = zfs_dropname(dl, zp, dzp, tx, flag);
1004 zfs_dirlock_t *dl;
1008 error = zfs_dirent_lock(&dl, zp, "", &xzp, ZXATTR, NULL, NULL);
1014 zfs_dirent_unlock(dl);
1020 zfs_dirent_unlock(dl);
1025 zfs_dirent_unlock(dl);
1045 zfs_dirent_unlock(dl);