Lines Matching refs:dl

147 	zfs_dirlock_t	*dl;
252 for (dl = dzp->z_dirlocks; dl != NULL; dl = dl->dl_next) {
253 if ((u8_strcmp(name, dl->dl_name, 0, cmpflags,
263 if (dl == NULL) {
267 dl = kmem_alloc(sizeof (zfs_dirlock_t), KM_SLEEP);
268 cv_init(&dl->dl_cv, NULL, CV_DEFAULT, NULL);
269 dl->dl_name = name;
270 dl->dl_sharecnt = 0;
271 dl->dl_namelock = 0;
272 dl->dl_namesize = 0;
273 dl->dl_dzp = dzp;
274 dl->dl_next = dzp->z_dirlocks;
275 dzp->z_dirlocks = dl;
278 if ((flag & ZSHARED) && dl->dl_sharecnt != 0)
280 cv_wait(&dl->dl_cv, &dzp->z_lock);
287 dl->dl_namelock = 1;
289 if ((flag & ZSHARED) && ++dl->dl_sharecnt > 1 && dl->dl_namesize == 0) {
291 * We're the second shared reference to dl. Make a copy of
295 * dl->dl_name at any time. It'll either see the old value,
298 dl->dl_namesize = strlen(dl->dl_name) + 1;
299 name = kmem_alloc(dl->dl_namesize, KM_SLEEP);
300 memcpy(name, dl->dl_name, dl->dl_namesize);
301 dl->dl_name = name;
322 zfs_dirent_unlock(dl);
327 zfs_dirent_unlock(dl);
332 zfs_dirent_unlock(dl);
337 *dlpp = dl;
346 zfs_dirent_unlock(zfs_dirlock_t *dl)
348 znode_t *dzp = dl->dl_dzp;
353 if (!dl->dl_namelock)
356 if (dl->dl_sharecnt > 1) {
357 dl->dl_sharecnt--;
362 while ((cur_dl = *prev_dl) != dl)
364 *prev_dl = dl->dl_next;
365 cv_broadcast(&dl->dl_cv);
368 if (dl->dl_namesize != 0)
369 kmem_free(dl->dl_name, dl->dl_namesize);
370 cv_destroy(&dl->dl_cv);
371 kmem_free(dl, sizeof (*dl));
386 zfs_dirlock_t *dl;
427 error = zfs_dirent_lock(&dl, dzp, name, &zp, zf, deflg, rpnp);
430 zfs_dirent_unlock(dl);
596 zfs_dirlock_t dl;
628 memset(&dl, 0, sizeof (dl));
629 dl.dl_dzp = dzp;
630 dl.dl_name = zap.za_name;
632 error = zfs_link_destroy(&dl, xzp, tx, 0, NULL);
792 * Link zp into dl. Can fail in the following cases :
799 zfs_link_create(zfs_dirlock_t *dl, znode_t *zp, dmu_tx_t *tx, int flag)
801 znode_t *dzp = dl->dl_dzp;
832 error = zap_add(ZTOZSB(zp)->z_os, dzp->z_id, dl->dl_name, 8, 1,
911 zfs_dropname(zfs_dirlock_t *dl, znode_t *zp, znode_t *dzp, dmu_tx_t *tx,
927 dl->dl_name, mt, tx);
929 error = zap_remove(ZTOZSB(zp)->z_os, dzp->z_id, dl->dl_name,
1005 * Unlink zp from dl, and mark zp for deletion if this was the last link. Can
1012 zfs_link_destroy(zfs_dirlock_t *dl, znode_t *zp, dmu_tx_t *tx, int flag,
1015 znode_t *dzp = dl->dl_dzp;
1038 error = zfs_dropname(dl, zp, dzp, tx, flag);
1049 error = zfs_dropname(dl, zp, dzp, tx, flag);
1188 zfs_dirlock_t *dl;
1192 error = zfs_dirent_lock(&dl, zp, "", &xzp, ZXATTR, NULL, NULL);
1198 zfs_dirent_unlock(dl);
1203 zfs_dirent_unlock(dl);
1208 zfs_dirent_unlock(dl);
1228 zfs_dirent_unlock(dl);