• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /freebsd-13-stable/sys/contrib/openzfs/module/os/freebsd/zfs/

Lines Matching refs:zp

115 	znode_t		*zp;
191 error = zfs_zget(zfsvfs, zoid, &zp);
194 ASSERT(!zp->z_unlinked);
195 *zpp = zp;
205 znode_t *zp;
220 error = zfs_zget(zfsvfs, parent, &zp);
222 *zpp = zp;
230 znode_t *zp = NULL;
243 error = zfs_dd_lookup(dzp, &zp);
245 *zpp = zp;
247 error = zfs_dirent_lookup(dzp, name, &zp, ZEXISTS);
250 *zpp = zp;
271 zfs_unlinked_add(znode_t *zp, dmu_tx_t *tx)
273 zfsvfs_t *zfsvfs = zp->z_zfsvfs;
275 ASSERT(zp->z_unlinked);
276 ASSERT(zp->z_links == 0);
279 zap_add_int(zfsvfs->z_os, zfsvfs->z_unlinkedobj, zp->z_id, tx));
294 znode_t *zp;
318 * so we pull them back into core and set zp->z_unlinked.
320 error = zfs_zget(zfsvfs, zap.za_first_integer, &zp);
331 vn_lock(ZTOV(zp), LK_EXCLUSIVE | LK_RETRY);
337 if (zp->z_links != 0) {
339 dmu_tx_hold_sa(tx, zp->z_sa_hdl, B_FALSE);
343 vput(ZTOV(zp));
346 zp->z_links = 0;
347 VERIFY0(sa_update(zp->z_sa_hdl, SA_ZPL_LINKS(zfsvfs),
348 &zp->z_links, sizeof (zp->z_links), tx));
352 zp->z_unlinked = B_TRUE;
353 vput(ZTOV(zp));
426 zfs_rmnode(znode_t *zp)
428 zfsvfs_t *zfsvfs = zp->z_zfsvfs;
436 ASSERT(zp->z_links == 0);
438 ASSERT_VOP_ELOCKED(ZTOV(zp), __func__);
443 if (ZTOV(zp) != NULL && ZTOV(zp)->v_type == VDIR &&
444 (zp->z_pflags & ZFS_XATTR)) {
445 if (zfs_purgedir(zp) != 0) {
450 zfs_znode_dmu_fini(zp);
451 zfs_znode_free(zp);
463 error = dmu_free_long_range(os, zp->z_id, 0, DMU_OBJECT_END);
469 zfs_znode_dmu_fini(zp);
470 zfs_znode_free(zp);
479 error = sa_lookup(zp->z_sa_hdl, SA_ZPL_XATTR(zfsvfs),
484 acl_obj = zfs_external_acl(zp);
490 dmu_tx_hold_free(tx, zp->z_id, 0, DMU_OBJECT_END);
497 zfs_sa_upgrade_txholds(tx, zp);
506 zfs_znode_dmu_fini(zp);
507 zfs_znode_free(zp);
530 zap_remove_int(os, zfsvfs->z_unlinkedobj, zp->z_id, tx));
540 zfs_znode_delete(zp, tx);
556 zfs_dirent(znode_t *zp, uint64_t mode)
558 uint64_t de = zp->z_id;
560 if (zp->z_zfsvfs->z_version >= ZPL_VERSION_DIRENT_TYPE)
566 * Link zp into dzp. Can only fail if zp has been unlinked.
569 zfs_link_create(znode_t *dzp, const char *name, znode_t *zp, dmu_tx_t *tx,
572 zfsvfs_t *zfsvfs = zp->z_zfsvfs;
573 vnode_t *vp = ZTOV(zp);
583 ASSERT_VOP_ELOCKED(ZTOV(zp), __func__);
590 if (zp->z_unlinked) { /* no new links to unlinked zp */
594 if (zp->z_links >= ZFS_LINK_MAX - zp_is_dir) {
597 zp->z_links++;
599 &zp->z_links, sizeof (zp->z_links));
602 ASSERT(zp->z_unlinked == 0);
604 value = zfs_dirent(zp, zp->z_mode);
605 error = zap_add(zp->z_zfsvfs->z_os, dzp->z_id, name,
616 zp->z_links--;
623 &zp->z_pflags, sizeof (zp->z_pflags));
628 zfs_tstamp_update_setup(zp, STATE_CHANGED, mtime,
631 error = sa_bulk_update(zp->z_sa_hdl, bulk, count, tx);
676 zfs_dropname(znode_t *dzp, const char *name, znode_t *zp, dmu_tx_t *tx,
681 if (zp->z_zfsvfs->z_norm) {
684 if (zp->z_zfsvfs->z_case == ZFS_CASE_MIXED) {
688 error = zap_remove_norm(zp->z_zfsvfs->z_os, dzp->z_id,
691 error = zap_remove(zp->z_zfsvfs->z_os, dzp->z_id, name, tx);
698 * Unlink zp from dzp, and mark zp for deletion if this was the last link.
699 * Can fail if zp is a mount point (EBUSY) or a non-empty directory (EEXIST).
705 zfs_link_destroy(znode_t *dzp, const char *name, znode_t *zp, dmu_tx_t *tx,
709 vnode_t *vp = ZTOV(zp);
719 ASSERT_VOP_ELOCKED(ZTOV(zp), __func__);
723 if (zp_is_dir && !zfs_dirempty(zp))
731 error = zfs_dropname(dzp, name, zp, tx, flag);
736 if (zp->z_links <= zp_is_dir) {
738 "should be at least %u", zp->z_vnode,
739 (int)zp->z_links,
741 zp->z_links = zp_is_dir + 1;
743 if (--zp->z_links == zp_is_dir) {
744 zp->z_unlinked = B_TRUE;
745 zp->z_links = 0;
751 NULL, &zp->z_pflags, sizeof (zp->z_pflags));
752 zfs_tstamp_update_setup(zp, STATE_CHANGED, mtime,
756 NULL, &zp->z_links, sizeof (zp->z_links));
757 error = sa_bulk_update(zp->z_sa_hdl, bulk, count, tx);
761 ASSERT(zp->z_unlinked == 0);
762 error = zfs_dropname(dzp, name, zp, tx, flag);
768 dzp->z_links -= zp_is_dir; /* ".." link from zp */
786 zfs_unlinked_add(zp, tx);
801 zfs_make_xattrdir(znode_t *zp, vattr_t *vap, znode_t **xvpp, cred_t *cr)
803 zfsvfs_t *zfsvfs = zp->z_zfsvfs;
813 if ((error = zfs_acl_ids_create(zp, IS_XATTR, vap, cr, NULL,
826 dmu_tx_hold_sa(tx, zp->z_sa_hdl, B_TRUE);
838 zfs_mknode(zp, vap, tx, cr, IS_XATTR, &xzp, &acl_ids);
846 ASSERT(error == 0 && parent == zp->z_id);
849 VERIFY(0 == sa_update(zp->z_sa_hdl, SA_ZPL_XATTR(zfsvfs), &xzp->z_id,
852 zfs_log_create(zfsvfs->z_log, tx, TX_MKXATTR, zp, xzp, "", NULL,
866 * Return a znode for the extended attribute directory for zp.
869 * IN: zp - znode to obtain attribute directory from
879 zfs_get_xattrdir(znode_t *zp, znode_t **xzpp, cred_t *cr, int flags)
881 zfsvfs_t *zfsvfs = zp->z_zfsvfs;
886 error = zfs_dirent_lookup(zp, "", &xzp, ZXATTR);
916 zfs_fuid_map_ids(zp, cr, &va.va_uid, &va.va_gid);
918 error = zfs_make_xattrdir(zp, &va, xzpp, cr);
944 zfs_sticky_remove_access(znode_t *zdp, znode_t *zp, cred_t *cr)
958 fowner = zfs_fuid_map_id(zfsvfs, zp->z_uid, cr, ZFS_OWNER);
961 (ZTOV(zp)->v_type == VREG &&
962 zfs_zaccess(zp, ACE_WRITE_DATA, 0, B_FALSE, cr) == 0))
965 return (secpolicy_vnode_remove(ZTOV(zp), cr));