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;
316 * so we pull them back into core and set zp->z_unlinked.
318 error = zfs_zget(zfsvfs, zap.za_first_integer, &zp);
329 vn_lock(ZTOV(zp), LK_EXCLUSIVE | LK_RETRY);
335 if (zp->z_links != 0) {
337 dmu_tx_hold_sa(tx, zp->z_sa_hdl, B_FALSE);
341 vput(ZTOV(zp));
344 zp->z_links = 0;
345 VERIFY0(sa_update(zp->z_sa_hdl, SA_ZPL_LINKS(zfsvfs),
346 &zp->z_links, sizeof (zp->z_links), tx));
350 zp->z_unlinked = B_TRUE;
351 vput(ZTOV(zp));
424 zfs_rmnode(znode_t *zp)
426 zfsvfs_t *zfsvfs = zp->z_zfsvfs;
429 uint64_t z_id = zp->z_id;
435 ASSERT3U(zp->z_links, ==, 0);
437 ASSERT_VOP_ELOCKED(ZTOV(zp), __func__);
442 if (ZTOV(zp) != NULL && ZTOV(zp)->v_type == VDIR &&
443 (zp->z_pflags & ZFS_XATTR)) {
444 if (zfs_purgedir(zp) != 0) {
450 zfs_znode_dmu_fini(zp);
451 zfs_znode_free(zp);
464 error = dmu_free_long_range(os, zp->z_id, 0, DMU_OBJECT_END);
471 zfs_znode_dmu_fini(zp);
472 zfs_znode_free(zp);
482 error = sa_lookup(zp->z_sa_hdl, SA_ZPL_XATTR(zfsvfs),
487 acl_obj = zfs_external_acl(zp);
493 dmu_tx_hold_free(tx, zp->z_id, 0, DMU_OBJECT_END);
500 zfs_sa_upgrade_txholds(tx, zp);
510 zfs_znode_dmu_fini(zp);
511 zfs_znode_free(zp);
535 zap_remove_int(os, zfsvfs->z_unlinkedobj, zp->z_id, tx));
545 zfs_znode_delete(zp, tx);
546 zfs_znode_free(zp);
562 zfs_dirent(znode_t *zp, uint64_t mode)
564 uint64_t de = zp->z_id;
566 if (zp->z_zfsvfs->z_version >= ZPL_VERSION_DIRENT_TYPE)
572 * Link zp into dzp. Can only fail if zp has been unlinked.
575 zfs_link_create(znode_t *dzp, const char *name, znode_t *zp, dmu_tx_t *tx,
578 zfsvfs_t *zfsvfs = zp->z_zfsvfs;
579 vnode_t *vp = ZTOV(zp);
589 ASSERT_VOP_ELOCKED(ZTOV(zp), __func__);
596 if (zp->z_unlinked) { /* no new links to unlinked zp */
600 if (zp->z_links >= ZFS_LINK_MAX - zp_is_dir) {
603 zp->z_links++;
605 &zp->z_links, sizeof (zp->z_links));
608 ASSERT(!zp->z_unlinked);
610 value = zfs_dirent(zp, zp->z_mode);
611 error = zap_add(zp->z_zfsvfs->z_os, dzp->z_id, name,
622 zp->z_links--;
629 &zp->z_pflags, sizeof (zp->z_pflags));
634 zfs_tstamp_update_setup(zp, STATE_CHANGED, mtime,
637 error = sa_bulk_update(zp->z_sa_hdl, bulk, count, tx);
682 zfs_dropname(znode_t *dzp, const char *name, znode_t *zp, dmu_tx_t *tx,
687 if (zp->z_zfsvfs->z_norm) {
690 if (zp->z_zfsvfs->z_case == ZFS_CASE_MIXED) {
694 error = zap_remove_norm(zp->z_zfsvfs->z_os, dzp->z_id,
697 error = zap_remove(zp->z_zfsvfs->z_os, dzp->z_id, name, tx);
704 * Unlink zp from dzp, and mark zp for deletion if this was the last link.
705 * Can fail if zp is a mount point (EBUSY) or a non-empty directory (EEXIST).
711 zfs_link_destroy(znode_t *dzp, const char *name, znode_t *zp, dmu_tx_t *tx,
715 vnode_t *vp = ZTOV(zp);
725 ASSERT_VOP_ELOCKED(ZTOV(zp), __func__);
729 if (zp_is_dir && !zfs_dirempty(zp))
737 error = zfs_dropname(dzp, name, zp, tx, flag);
742 if (zp->z_links <= zp_is_dir) {
744 "should be at least %u", zp->z_vnode,
745 (int)zp->z_links,
747 zp->z_links = zp_is_dir + 1;
749 if (--zp->z_links == zp_is_dir) {
750 zp->z_unlinked = B_TRUE;
751 zp->z_links = 0;
757 NULL, &zp->z_pflags, sizeof (zp->z_pflags));
758 zfs_tstamp_update_setup(zp, STATE_CHANGED, mtime,
762 NULL, &zp->z_links, sizeof (zp->z_links));
763 error = sa_bulk_update(zp->z_sa_hdl, bulk, count, tx);
767 ASSERT(!zp->z_unlinked);
768 error = zfs_dropname(dzp, name, zp, tx, flag);
774 dzp->z_links -= zp_is_dir; /* ".." link from zp */
792 zfs_unlinked_add(zp, tx);
807 zfs_make_xattrdir(znode_t *zp, vattr_t *vap, znode_t **xvpp, cred_t *cr)
809 zfsvfs_t *zfsvfs = zp->z_zfsvfs;
819 if ((error = zfs_acl_ids_create(zp, IS_XATTR, vap, cr, NULL,
832 dmu_tx_hold_sa(tx, zp->z_sa_hdl, B_TRUE);
844 zfs_mknode(zp, vap, tx, cr, IS_XATTR, &xzp, &acl_ids);
851 ASSERT3U(parent, ==, zp->z_id);
853 VERIFY0(sa_update(zp->z_sa_hdl, SA_ZPL_XATTR(zfsvfs), &xzp->z_id,
856 zfs_log_create(zfsvfs->z_log, tx, TX_MKXATTR, zp, xzp, "", NULL,
870 * Return a znode for the extended attribute directory for zp.
873 * IN: zp - znode to obtain attribute directory from
883 zfs_get_xattrdir(znode_t *zp, znode_t **xzpp, cred_t *cr, int flags)
885 zfsvfs_t *zfsvfs = zp->z_zfsvfs;
890 error = zfs_dirent_lookup(zp, "", &xzp, ZXATTR);
920 zfs_fuid_map_ids(zp, cr, &va.va_uid, &va.va_gid);
922 error = zfs_make_xattrdir(zp, &va, xzpp, cr);
948 zfs_sticky_remove_access(znode_t *zdp, znode_t *zp, cred_t *cr)
962 fowner = zfs_fuid_map_id(zfsvfs, zp->z_uid, cr, ZFS_OWNER);
965 (ZTOV(zp)->v_type == VREG &&
966 zfs_zaccess(zp, ACE_WRITE_DATA, 0, B_FALSE, cr, NULL) == 0))
969 return (secpolicy_vnode_remove(ZTOV(zp), cr));