Lines Matching defs:zp
114 znode_t *zp;
190 error = zfs_zget(zfsvfs, zoid, &zp);
193 ASSERT(!zp->z_unlinked);
194 *zpp = zp;
204 znode_t *zp;
219 error = zfs_zget(zfsvfs, parent, &zp);
221 *zpp = zp;
229 znode_t *zp = NULL;
242 error = zfs_dd_lookup(dzp, &zp);
244 *zpp = zp;
246 error = zfs_dirent_lookup(dzp, name, &zp, ZEXISTS);
249 *zpp = zp;
270 zfs_unlinked_add(znode_t *zp, dmu_tx_t *tx)
272 zfsvfs_t *zfsvfs = zp->z_zfsvfs;
274 ASSERT(zp->z_unlinked);
275 ASSERT3U(zp->z_links, ==, 0);
277 VERIFY0(zap_add_int(zfsvfs->z_os, zfsvfs->z_unlinkedobj, zp->z_id, tx));
292 znode_t *zp;
317 * so we pull them back into core and set zp->z_unlinked.
319 error = zfs_zget(zfsvfs, zap->za_first_integer, &zp);
330 vn_lock(ZTOV(zp), LK_EXCLUSIVE | LK_RETRY);
336 if (zp->z_links != 0) {
338 dmu_tx_hold_sa(tx, zp->z_sa_hdl, B_FALSE);
342 vput(ZTOV(zp));
345 zp->z_links = 0;
346 VERIFY0(sa_update(zp->z_sa_hdl, SA_ZPL_LINKS(zfsvfs),
347 &zp->z_links, sizeof (zp->z_links), tx));
351 zp->z_unlinked = B_TRUE;
352 vput(ZTOV(zp));
428 zfs_rmnode(znode_t *zp)
430 zfsvfs_t *zfsvfs = zp->z_zfsvfs;
433 uint64_t z_id = zp->z_id;
439 ASSERT3U(zp->z_links, ==, 0);
441 ASSERT_VOP_ELOCKED(ZTOV(zp), __func__);
446 if (ZTOV(zp) != NULL && ZTOV(zp)->v_type == VDIR &&
447 (zp->z_pflags & ZFS_XATTR)) {
448 if (zfs_purgedir(zp) != 0) {
454 zfs_znode_dmu_fini(zp);
455 zfs_znode_free(zp);
468 error = dmu_free_long_range(os, zp->z_id, 0, DMU_OBJECT_END);
475 zfs_znode_dmu_fini(zp);
476 zfs_znode_free(zp);
486 error = sa_lookup(zp->z_sa_hdl, SA_ZPL_XATTR(zfsvfs),
491 acl_obj = zfs_external_acl(zp);
497 dmu_tx_hold_free(tx, zp->z_id, 0, DMU_OBJECT_END);
504 zfs_sa_upgrade_txholds(tx, zp);
514 zfs_znode_dmu_fini(zp);
515 zfs_znode_free(zp);
539 zap_remove_int(os, zfsvfs->z_unlinkedobj, zp->z_id, tx));
549 zfs_znode_delete(zp, tx);
550 zfs_znode_free(zp);
566 zfs_dirent(znode_t *zp, uint64_t mode)
568 uint64_t de = zp->z_id;
570 if (zp->z_zfsvfs->z_version >= ZPL_VERSION_DIRENT_TYPE)
576 * Link zp into dzp. Can only fail if zp has been unlinked.
579 zfs_link_create(znode_t *dzp, const char *name, znode_t *zp, dmu_tx_t *tx,
582 zfsvfs_t *zfsvfs = zp->z_zfsvfs;
583 vnode_t *vp = ZTOV(zp);
593 ASSERT_VOP_ELOCKED(ZTOV(zp), __func__);
600 if (zp->z_unlinked) { /* no new links to unlinked zp */
604 if (zp->z_links >= ZFS_LINK_MAX - zp_is_dir) {
607 zp->z_links++;
609 &zp->z_links, sizeof (zp->z_links));
612 ASSERT(!zp->z_unlinked);
614 value = zfs_dirent(zp, zp->z_mode);
615 error = zap_add(zp->z_zfsvfs->z_os, dzp->z_id, name,
626 zp->z_links--;
642 &zp->z_pflags, sizeof (zp->z_pflags));
647 zfs_tstamp_update_setup(zp, STATE_CHANGED, mtime,
650 error = sa_bulk_update(zp->z_sa_hdl, bulk, count, tx);
695 zfs_dropname(znode_t *dzp, const char *name, znode_t *zp, dmu_tx_t *tx,
700 if (zp->z_zfsvfs->z_norm) {
703 if (zp->z_zfsvfs->z_case == ZFS_CASE_MIXED) {
707 error = zap_remove_norm(zp->z_zfsvfs->z_os, dzp->z_id,
710 error = zap_remove(zp->z_zfsvfs->z_os, dzp->z_id, name, tx);
717 * Unlink zp from dzp, and mark zp for deletion if this was the last link.
718 * Can fail if zp is a mount point (EBUSY) or a non-empty directory (EEXIST).
724 zfs_link_destroy(znode_t *dzp, const char *name, znode_t *zp, dmu_tx_t *tx,
728 vnode_t *vp = ZTOV(zp);
738 ASSERT_VOP_ELOCKED(ZTOV(zp), __func__);
742 if (zp_is_dir && !zfs_dirempty(zp))
750 error = zfs_dropname(dzp, name, zp, tx, flag);
755 if (zp->z_links <= zp_is_dir) {
757 "should be at least %u", zp->z_vnode,
758 (int)zp->z_links,
760 zp->z_links = zp_is_dir + 1;
762 if (--zp->z_links == zp_is_dir) {
763 zp->z_unlinked = B_TRUE;
764 zp->z_links = 0;
770 NULL, &zp->z_pflags, sizeof (zp->z_pflags));
771 zfs_tstamp_update_setup(zp, STATE_CHANGED, mtime,
775 NULL, &zp->z_links, sizeof (zp->z_links));
776 error = sa_bulk_update(zp->z_sa_hdl, bulk, count, tx);
780 ASSERT(!zp->z_unlinked);
781 error = zfs_dropname(dzp, name, zp, tx, flag);
787 dzp->z_links -= zp_is_dir; /* ".." link from zp */
805 zfs_unlinked_add(zp, tx);
820 zfs_make_xattrdir(znode_t *zp, vattr_t *vap, znode_t **xvpp, cred_t *cr)
822 zfsvfs_t *zfsvfs = zp->z_zfsvfs;
832 if ((error = zfs_acl_ids_create(zp, IS_XATTR, vap, cr, NULL,
845 dmu_tx_hold_sa(tx, zp->z_sa_hdl, B_TRUE);
857 zfs_mknode(zp, vap, tx, cr, IS_XATTR, &xzp, &acl_ids);
864 ASSERT3U(parent, ==, zp->z_id);
866 VERIFY0(sa_update(zp->z_sa_hdl, SA_ZPL_XATTR(zfsvfs), &xzp->z_id,
869 zfs_log_create(zfsvfs->z_log, tx, TX_MKXATTR, zp, xzp, "", NULL,
883 * Return a znode for the extended attribute directory for zp.
886 * IN: zp - znode to obtain attribute directory from
896 zfs_get_xattrdir(znode_t *zp, znode_t **xzpp, cred_t *cr, int flags)
898 zfsvfs_t *zfsvfs = zp->z_zfsvfs;
903 error = zfs_dirent_lookup(zp, "", &xzp, ZXATTR);
933 zfs_fuid_map_ids(zp, cr, &va.va_uid, &va.va_gid);
935 error = zfs_make_xattrdir(zp, &va, xzpp, cr);
961 zfs_sticky_remove_access(znode_t *zdp, znode_t *zp, cred_t *cr)
975 fowner = zfs_fuid_map_id(zfsvfs, zp->z_uid, cr, ZFS_OWNER);
978 (ZTOV(zp)->v_type == VREG &&
979 zfs_zaccess(zp, ACE_WRITE_DATA, 0, B_FALSE, cr, NULL) == 0))
982 return (secpolicy_vnode_remove(ZTOV(zp), cr));