Lines Matching defs:zp

120 	znode_t *zp = buf;
122 POINTER_INVALIDATE(&zp->z_zfsvfs);
124 list_link_init(&zp->z_link_node);
126 mutex_init(&zp->z_lock, NULL, MUTEX_DEFAULT, NULL);
127 rw_init(&zp->z_parent_lock, NULL, RW_DEFAULT, NULL);
128 rw_init(&zp->z_name_lock, NULL, RW_DEFAULT, NULL);
129 mutex_init(&zp->z_acl_lock, NULL, MUTEX_DEFAULT, NULL);
131 mutex_init(&zp->z_range_lock, NULL, MUTEX_DEFAULT, NULL);
132 avl_create(&zp->z_range_avl, zfs_range_compare,
135 zp->z_dirlocks = NULL;
136 zp->z_acl_cached = NULL;
137 zp->z_vnode = NULL;
138 zp->z_moved = 0;
146 znode_t *zp = buf;
148 ASSERT(!POINTER_IS_VALID(zp->z_zfsvfs));
149 ASSERT(ZTOV(zp) == NULL);
150 vn_free(ZTOV(zp));
151 ASSERT(!list_link_active(&zp->z_link_node));
152 mutex_destroy(&zp->z_lock);
153 rw_destroy(&zp->z_parent_lock);
154 rw_destroy(&zp->z_name_lock);
155 mutex_destroy(&zp->z_acl_lock);
156 avl_destroy(&zp->z_range_avl);
157 mutex_destroy(&zp->z_range_lock);
159 ASSERT(zp->z_dirlocks == NULL);
160 ASSERT(zp->z_acl_cached == NULL);
481 znode_t *zp;
500 zfs_mknode(sharezp, &vattr, tx, kcred, IS_ROOT_NODE, &zp, &acl_ids);
501 ASSERT3P(zp, ==, sharezp);
555 zfs_znode_sa_init(zfsvfs_t *zfsvfs, znode_t *zp,
558 ASSERT(!POINTER_IS_VALID(zp->z_zfsvfs) || (zfsvfs == zp->z_zfsvfs));
559 ASSERT(MUTEX_HELD(ZFS_OBJ_MUTEX(zfsvfs, zp->z_id)));
561 mutex_enter(&zp->z_lock);
563 ASSERT(zp->z_sa_hdl == NULL);
564 ASSERT(zp->z_acl_cached == NULL);
566 VERIFY(0 == sa_handle_get_from_db(zfsvfs->z_os, db, zp,
567 SA_HDL_SHARED, &zp->z_sa_hdl));
569 zp->z_sa_hdl = sa_hdl;
570 sa_set_userp(sa_hdl, zp);
573 zp->z_is_sa = (obj_type == DMU_OT_SA) ? B_TRUE : B_FALSE;
578 if (zp->z_id == zfsvfs->z_root)
579 ZTOV(zp)->v_flag |= VROOT;
581 mutex_exit(&zp->z_lock);
582 vn_exists(ZTOV(zp));
586 zfs_znode_dmu_fini(znode_t *zp)
588 ASSERT(MUTEX_HELD(ZFS_OBJ_MUTEX(zp->z_zfsvfs, zp->z_id)) ||
589 zp->z_unlinked ||
590 RW_WRITE_HELD(&zp->z_zfsvfs->z_teardown_inactive_lock));
592 sa_handle_destroy(zp->z_sa_hdl);
593 zp->z_sa_hdl = NULL;
618 znode_t *zp;
626 zp = kmem_cache_alloc(znode_cache, KM_SLEEP);
632 kmem_cache_free(znode_cache, zp);
635 zp->z_vnode = vp;
636 vp->v_data = zp;
638 ASSERT(zp->z_dirlocks == NULL);
639 ASSERT(!POINTER_IS_VALID(zp->z_zfsvfs));
640 zp->z_moved = 0;
646 zp->z_sa_hdl = NULL;
647 zp->z_unlinked = 0;
648 zp->z_atime_dirty = 0;
649 zp->z_mapcnt = 0;
650 zp->z_id = db->db_object;
651 zp->z_blksz = blksz;
652 zp->z_seq = 0x7A4653;
653 zp->z_sync_cnt = 0;
655 vp = ZTOV(zp);
657 zfs_znode_sa_init(zfsvfs, zp, db, obj_type, hdl);
660 SA_ADD_BULK_ATTR(bulk, count, SA_ZPL_GEN(zfsvfs), NULL, &zp->z_gen, 8);
662 &zp->z_size, 8);
664 &zp->z_links, 8);
666 &zp->z_pflags, 8);
669 &zp->z_atime, 16);
671 &zp->z_uid, 8);
673 &zp->z_gid, 8);
675 if (sa_bulk_lookup(zp->z_sa_hdl, bulk, count) != 0 || zp->z_gen == 0) {
677 sa_handle_destroy(zp->z_sa_hdl);
679 zp->z_vnode = NULL;
680 kmem_cache_free(znode_cache, zp);
684 zp->z_mode = mode;
690 zp->z_zn_prefetch = B_TRUE; /* z_prefetch default is enabled */
697 VERIFY(sa_lookup(zp->z_sa_hdl, SA_ZPL_RDEV(zfsvfs),
713 ASSERT(zp->z_uid == 0 && zp->z_gid == 0);
728 list_insert_tail(&zfsvfs->z_all_znodes, zp);
734 zp->z_zfsvfs = zfsvfs;
746 return (zp);
1028 zfs_xvattr_set(znode_t *zp, xvattr_t *xvap, dmu_tx_t *tx)
1038 (void) sa_update(zp->z_sa_hdl, SA_ZPL_CRTIME(zp->z_zfsvfs),
1043 ZFS_ATTR_SET(zp, ZFS_READONLY, xoap->xoa_readonly,
1044 zp->z_pflags, tx);
1048 ZFS_ATTR_SET(zp, ZFS_HIDDEN, xoap->xoa_hidden,
1049 zp->z_pflags, tx);
1053 ZFS_ATTR_SET(zp, ZFS_SYSTEM, xoap->xoa_system,
1054 zp->z_pflags, tx);
1058 ZFS_ATTR_SET(zp, ZFS_ARCHIVE, xoap->xoa_archive,
1059 zp->z_pflags, tx);
1063 ZFS_ATTR_SET(zp, ZFS_IMMUTABLE, xoap->xoa_immutable,
1064 zp->z_pflags, tx);
1068 ZFS_ATTR_SET(zp, ZFS_NOUNLINK, xoap->xoa_nounlink,
1069 zp->z_pflags, tx);
1073 ZFS_ATTR_SET(zp, ZFS_APPENDONLY, xoap->xoa_appendonly,
1074 zp->z_pflags, tx);
1078 ZFS_ATTR_SET(zp, ZFS_NODUMP, xoap->xoa_nodump,
1079 zp->z_pflags, tx);
1083 ZFS_ATTR_SET(zp, ZFS_OPAQUE, xoap->xoa_opaque,
1084 zp->z_pflags, tx);
1088 ZFS_ATTR_SET(zp, ZFS_AV_QUARANTINED,
1089 xoap->xoa_av_quarantined, zp->z_pflags, tx);
1093 ZFS_ATTR_SET(zp, ZFS_AV_MODIFIED, xoap->xoa_av_modified,
1094 zp->z_pflags, tx);
1098 zfs_sa_set_scanstamp(zp, xvap, tx);
1102 ZFS_ATTR_SET(zp, ZFS_REPARSE, xoap->xoa_reparse,
1103 zp->z_pflags, tx);
1107 ZFS_ATTR_SET(zp, ZFS_OFFLINE, xoap->xoa_offline,
1108 zp->z_pflags, tx);
1112 ZFS_ATTR_SET(zp, ZFS_SPARSE, xoap->xoa_sparse,
1113 zp->z_pflags, tx);
1123 znode_t *zp;
1158 zp = sa_get_userdata(hdl);
1167 ASSERT3P(zp, !=, NULL);
1169 mutex_enter(&zp->z_lock);
1170 ASSERT3U(zp->z_id, ==, obj_num);
1171 if (zp->z_unlinked) {
1174 vp = ZTOV(zp);
1175 *zpp = zp;
1184 mutex_exit(&zp->z_lock);
1221 zp = zfs_znode_alloc(zfsvfs, db, doi.doi_data_block_size,
1223 if (zp == NULL) {
1226 *zpp = zp;
1229 vnode_t *vp = ZTOV(zp);
1236 zp->z_vnode = NULL;
1237 zfs_znode_dmu_fini(zp);
1238 zfs_znode_free(zp);
1248 zfs_rezget(znode_t *zp)
1250 zfsvfs_t *zfsvfs = zp->z_zfsvfs;
1254 uint64_t obj_num = zp->z_id;
1263 mutex_enter(&zp->z_acl_lock);
1264 if (zp->z_acl_cached) {
1265 zfs_acl_free(zp->z_acl_cached);
1266 zp->z_acl_cached = NULL;
1269 mutex_exit(&zp->z_acl_lock);
1270 ASSERT(zp->z_sa_hdl == NULL);
1287 zfs_znode_sa_init(zfsvfs, zp, db, doi.doi_bonus_type, NULL);
1288 size = zp->z_size;
1294 &zp->z_size, sizeof (zp->z_size));
1296 &zp->z_links, sizeof (zp->z_links));
1298 &zp->z_pflags, sizeof (zp->z_pflags));
1300 &zp->z_atime, sizeof (zp->z_atime));
1302 &zp->z_uid, sizeof (zp->z_uid));
1304 &zp->z_gid, sizeof (zp->z_gid));
1308 if (sa_bulk_lookup(zp->z_sa_hdl, bulk, count)) {
1309 zfs_znode_dmu_fini(zp);
1314 zp->z_mode = mode;
1316 if (gen != zp->z_gen) {
1317 zfs_znode_dmu_fini(zp);
1340 vp = ZTOV(zp);
1341 if (vp != NULL && vp->v_type != IFTOVT((mode_t)zp->z_mode)) {
1342 zfs_znode_dmu_fini(zp);
1347 zp->z_unlinked = (zp->z_links == 0);
1348 zp->z_blksz = doi.doi_data_block_size;
1351 if (zp->z_size != size)
1352 vnode_pager_setsize(vp, zp->z_size);
1361 zfs_znode_delete(znode_t *zp, dmu_tx_t *tx)
1363 zfsvfs_t *zfsvfs = zp->z_zfsvfs;
1365 uint64_t obj = zp->z_id;
1366 uint64_t acl_obj = zfs_external_acl(zp);
1370 VERIFY(!zp->z_is_sa);
1374 zfs_znode_dmu_fini(zp);
1376 zfs_znode_free(zp);
1380 zfs_zinactive(znode_t *zp)
1382 zfsvfs_t *zfsvfs = zp->z_zfsvfs;
1383 uint64_t z_id = zp->z_id;
1385 ASSERT(zp->z_sa_hdl);
1392 mutex_enter(&zp->z_lock);
1398 if (zp->z_unlinked) {
1399 mutex_exit(&zp->z_lock);
1401 zfs_rmnode(zp);
1405 mutex_exit(&zp->z_lock);
1406 zfs_znode_dmu_fini(zp);
1408 zfs_znode_free(zp);
1412 zfs_znode_free(znode_t *zp)
1414 zfsvfs_t *zfsvfs = zp->z_zfsvfs;
1416 ASSERT(zp->z_sa_hdl == NULL);
1417 zp->z_vnode = NULL;
1419 POINTER_INVALIDATE(&zp->z_zfsvfs);
1420 list_remove(&zfsvfs->z_all_znodes, zp);
1423 if (zp->z_acl_cached) {
1424 zfs_acl_free(zp->z_acl_cached);
1425 zp->z_acl_cached = NULL;
1428 kmem_cache_free(znode_cache, zp);
1434 zfs_tstamp_update_setup(znode_t *zp, uint_t flag, uint64_t mtime[2],
1442 zp->z_atime_dirty = 0;
1443 zp->z_seq++;
1445 zp->z_atime_dirty = 1;
1449 ZFS_TIME_ENCODE(&now, zp->z_atime);
1454 if (zp->z_zfsvfs->z_use_fuids) {
1455 zp->z_pflags |= (ZFS_ARCHIVE |
1462 if (zp->z_zfsvfs->z_use_fuids)
1463 zp->z_pflags |= ZFS_ARCHIVE;
1470 * IN: zp - znode of file to free data in.
1477 zfs_grow_blocksize(znode_t *zp, uint64_t size, dmu_tx_t *tx)
1482 if (size <= zp->z_blksz)
1489 if (zp->z_blksz && zp->z_size > zp->z_blksz)
1492 error = dmu_object_set_blocksize(zp->z_zfsvfs->z_os, zp->z_id,
1500 dmu_object_size_from_db(sa_get_db(zp->z_sa_hdl), &zp->z_blksz, &dummy);
1522 * IN: zp - znode of file to free data in.
1528 zfs_extend(znode_t *zp, uint64_t end)
1530 zfsvfs_t *zfsvfs = zp->z_zfsvfs;
1539 rl = zfs_range_lock(zp, 0, UINT64_MAX, RL_WRITER);
1544 if (end <= zp->z_size) {
1549 dmu_tx_hold_sa(tx, zp->z_sa_hdl, B_FALSE);
1550 zfs_sa_upgrade_txholds(tx, zp);
1551 if (end > zp->z_blksz &&
1552 (!ISP2(zp->z_blksz) || zp->z_blksz < zfsvfs->z_max_blksz)) {
1556 if (zp->z_blksz > zp->z_zfsvfs->z_max_blksz) {
1562 ASSERT(!ISP2(zp->z_blksz));
1563 newblksz = MIN(end, 1 << highbit64(zp->z_blksz));
1565 newblksz = MIN(end, zp->z_zfsvfs->z_max_blksz);
1567 dmu_tx_hold_write(tx, zp->z_id, 0, newblksz);
1580 zfs_grow_blocksize(zp, newblksz, tx);
1582 zp->z_size = end;
1584 VERIFY(0 == sa_update(zp->z_sa_hdl, SA_ZPL_SIZE(zp->z_zfsvfs),
1585 &zp->z_size, sizeof (zp->z_size), tx));
1587 vnode_pager_setsize(ZTOV(zp), end);
1599 * IN: zp - znode of file to free data in.
1606 zfs_free_range(znode_t *zp, uint64_t off, uint64_t len)
1608 zfsvfs_t *zfsvfs = zp->z_zfsvfs;
1615 rl = zfs_range_lock(zp, off, len, RL_WRITER);
1620 if (off >= zp->z_size) {
1625 if (off + len > zp->z_size)
1626 len = zp->z_size - off;
1628 error = dmu_free_long_range(zfsvfs->z_os, zp->z_id, off, len);
1636 vnode_pager_setsize(ZTOV(zp), off);
1647 * IN: zp - znode of file to free data in.
1653 zfs_trunc(znode_t *zp, uint64_t end)
1655 zfsvfs_t *zfsvfs = zp->z_zfsvfs;
1656 vnode_t *vp = ZTOV(zp);
1666 rl = zfs_range_lock(zp, 0, UINT64_MAX, RL_WRITER);
1671 if (end >= zp->z_size) {
1676 error = dmu_free_long_range(zfsvfs->z_os, zp->z_id, end, -1);
1682 dmu_tx_hold_sa(tx, zp->z_sa_hdl, B_FALSE);
1683 zfs_sa_upgrade_txholds(tx, zp);
1692 zp->z_size = end;
1694 NULL, &zp->z_size, sizeof (zp->z_size));
1697 zp->z_pflags &= ~ZFS_SPARSE;
1699 NULL, &zp->z_pflags, 8);
1701 VERIFY(sa_bulk_update(zp->z_sa_hdl, bulk, count, tx) == 0);
1721 * IN: zp - znode of file to free data in.
1730 zfs_freesp(znode_t *zp, uint64_t off, uint64_t len, int flag, boolean_t log)
1732 vnode_t *vp = ZTOV(zp);
1734 zfsvfs_t *zfsvfs = zp->z_zfsvfs;
1742 if ((error = sa_lookup(zp->z_sa_hdl, SA_ZPL_MODE(zfsvfs), &mode,
1746 if (off > zp->z_size) {
1747 error = zfs_extend(zp, off+len);
1759 uint64_t length = (len ? len : zp->z_size - off);
1765 error = zfs_trunc(zp, off);
1767 if ((error = zfs_free_range(zp, off, len)) == 0 &&
1768 off + len > zp->z_size)
1769 error = zfs_extend(zp, off+len);
1775 dmu_tx_hold_sa(tx, zp->z_sa_hdl, B_FALSE);
1776 zfs_sa_upgrade_txholds(tx, zp);
1786 NULL, &zp->z_pflags, 8);
1787 zfs_tstamp_update_setup(zp, CONTENT_MODIFIED, mtime, ctime, B_TRUE);
1788 error = sa_bulk_update(zp->z_sa_hdl, bulk, count, tx);
1791 zfs_log_truncate(zilog, tx, TX_TRUNCATE, zp, off, len);
1809 znode_t *zp;
1921 zfs_mknode(rootzp, &vattr, tx, cr, IS_ROOT_NODE, &zp, &acl_ids);
1922 ASSERT3P(zp, ==, rootzp);