Lines Matching refs:dzp
68 zfs_match_find(zfsvfs_t *zfsvfs, znode_t *dzp, char *name, matchtype_t mt, in zfs_match_find() argument
87 error = zap_lookup_norm(zfsvfs->z_os, dzp->z_id, name, 8, 1, in zfs_match_find()
92 error = zap_lookup(zfsvfs->z_os, dzp->z_id, name, 8, 1, zoid); in zfs_match_find()
97 dnlc_update(ZTOV(dzp), name, DNLC_NO_VNODE); in zfs_match_find()
138 zfs_dirent_lock(zfs_dirlock_t **dlpp, znode_t *dzp, char *name, znode_t **zpp, in zfs_dirent_lock() argument
141 zfsvfs_t *zfsvfs = dzp->z_zfsvfs; in zfs_dirent_lock()
158 zfs_has_ctldir(dzp) && strcmp(name, ZFS_CTLDIR_NAME) == 0) in zfs_dirent_lock()
238 rw_enter(&dzp->z_name_lock, RW_READER); in zfs_dirent_lock()
240 mutex_enter(&dzp->z_lock); in zfs_dirent_lock()
242 if (dzp->z_unlinked) { in zfs_dirent_lock()
243 mutex_exit(&dzp->z_lock); in zfs_dirent_lock()
245 rw_exit(&dzp->z_name_lock); in zfs_dirent_lock()
248 for (dl = dzp->z_dirlocks; dl != NULL; dl = dl->dl_next) { in zfs_dirent_lock()
254 mutex_exit(&dzp->z_lock); in zfs_dirent_lock()
256 rw_exit(&dzp->z_name_lock); 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()
276 cv_wait(&dl->dl_cv, &dzp->z_lock); in zfs_dirent_lock()
300 mutex_exit(&dzp->z_lock); in zfs_dirent_lock()
308 error = sa_lookup(dzp->z_sa_hdl, SA_ZPL_XATTR(zfsvfs), &zoid, in zfs_dirent_lock()
314 vp = dnlc_lookup(ZTOV(dzp), name); in zfs_dirent_lock()
328 error = zfs_match_find(zfsvfs, dzp, name, mt, in zfs_dirent_lock()
348 dnlc_update(ZTOV(dzp), name, ZTOV(*zpp)); in zfs_dirent_lock()
362 znode_t *dzp = dl->dl_dzp; in zfs_dirent_unlock() local
365 mutex_enter(&dzp->z_lock); in zfs_dirent_unlock()
368 rw_exit(&dzp->z_name_lock); in zfs_dirent_unlock()
372 mutex_exit(&dzp->z_lock); in zfs_dirent_unlock()
375 prev_dl = &dzp->z_dirlocks; in zfs_dirent_unlock()
380 mutex_exit(&dzp->z_lock); in zfs_dirent_unlock()
397 zfs_dirlook(znode_t *dzp, char *name, vnode_t **vpp, int flags, in zfs_dirlook() argument
406 *vpp = ZTOV(dzp); in zfs_dirlook()
409 zfsvfs_t *zfsvfs = dzp->z_zfsvfs; in zfs_dirlook()
415 if ((error = sa_lookup(dzp->z_sa_hdl, in zfs_dirlook()
418 if (parent == dzp->z_id && zfsvfs->z_parent != zfsvfs) { in zfs_dirlook()
424 rw_enter(&dzp->z_parent_lock, RW_READER); in zfs_dirlook()
428 rw_exit(&dzp->z_parent_lock); in zfs_dirlook()
429 } else if (zfs_has_ctldir(dzp) && strcmp(name, ZFS_CTLDIR_NAME) == 0) { in zfs_dirlook()
430 *vpp = zfsctl_root(dzp); in zfs_dirlook()
438 error = zfs_dirent_lock(&dl, dzp, name, &zp, zf, deflg, rpnp); in zfs_dirlook()
442 dzp->z_zn_prefetch = B_TRUE; /* enable prefetching */ in zfs_dirlook()
589 zfs_purgedir(znode_t *dzp) in zfs_purgedir() argument
595 zfsvfs_t *zfsvfs = dzp->z_zfsvfs; in zfs_purgedir()
600 for (zap_cursor_init(&zc, zfsvfs->z_os, dzp->z_id); in zfs_purgedir()
614 dmu_tx_hold_sa(tx, dzp->z_sa_hdl, B_FALSE); in zfs_purgedir()
615 dmu_tx_hold_zap(tx, dzp->z_id, FALSE, zap.za_name); in zfs_purgedir()
629 dl.dl_dzp = dzp; in zfs_purgedir()
773 znode_t *dzp = dl->dl_dzp; in zfs_link_create() local
797 &dzp->z_id, sizeof (dzp->z_id)); in zfs_link_create()
812 mutex_enter(&dzp->z_lock); in zfs_link_create()
813 dzp->z_size++; in zfs_link_create()
814 dzp->z_links += zp_is_dir; in zfs_link_create()
817 &dzp->z_size, sizeof (dzp->z_size)); in zfs_link_create()
819 &dzp->z_links, sizeof (dzp->z_links)); in zfs_link_create()
825 &dzp->z_pflags, sizeof (dzp->z_pflags)); in zfs_link_create()
826 zfs_tstamp_update_setup(dzp, CONTENT_MODIFIED, mtime, ctime, B_TRUE); in zfs_link_create()
827 error = sa_bulk_update(dzp->z_sa_hdl, bulk, count, tx); in zfs_link_create()
829 mutex_exit(&dzp->z_lock); 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
879 error = zap_remove_norm(zp->z_zfsvfs->z_os, dzp->z_id, in zfs_dropname()
882 error = zap_remove(zp->z_zfsvfs->z_os, dzp->z_id, dl->dl_name, in zfs_dropname()
900 znode_t *dzp = dl->dl_dzp; in zfs_link_destroy() local
901 zfsvfs_t *zfsvfs = dzp->z_zfsvfs; 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()
974 mutex_enter(&dzp->z_lock); in zfs_link_destroy()
975 dzp->z_size--; /* one dirent removed */ in zfs_link_destroy()
976 dzp->z_links -= zp_is_dir; /* ".." link from zp */ in zfs_link_destroy()
978 NULL, &dzp->z_links, sizeof (dzp->z_links)); in zfs_link_destroy()
980 NULL, &dzp->z_size, sizeof (dzp->z_size)); in zfs_link_destroy()
986 NULL, &dzp->z_pflags, sizeof (dzp->z_pflags)); in zfs_link_destroy()
987 zfs_tstamp_update_setup(dzp, CONTENT_MODIFIED, mtime, ctime, B_TRUE); in zfs_link_destroy()
988 error = sa_bulk_update(dzp->z_sa_hdl, bulk, count, tx); in zfs_link_destroy()
990 mutex_exit(&dzp->z_lock); in zfs_link_destroy()
1006 zfs_dirempty(znode_t *dzp) in zfs_dirempty() argument
1008 return (dzp->z_size == 2 && dzp->z_dirlocks == 0); in zfs_dirempty()