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

Lines Matching refs:zp

94 	znode_t *zp = arg;
101 new->lr_offset = zp->z_size;
108 uint64_t end_size = MAX(zp->z_size, new->lr_offset + new->lr_length);
109 if (end_size > zp->z_blksz && (!ISP2(zp->z_blksz) ||
110 zp->z_blksz < ZTOZSB(zp)->z_max_blksz)) {
120 znode_t *zp = buf;
122 inode_init_once(ZTOI(zp));
123 list_link_init(&zp->z_link_node);
125 mutex_init(&zp->z_lock, NULL, MUTEX_DEFAULT, NULL);
126 rw_init(&zp->z_parent_lock, NULL, RW_DEFAULT, NULL);
127 rw_init(&zp->z_name_lock, NULL, RW_NOLOCKDEP, NULL);
128 mutex_init(&zp->z_acl_lock, NULL, MUTEX_DEFAULT, NULL);
129 rw_init(&zp->z_xattr_lock, NULL, RW_DEFAULT, NULL);
131 zfs_rangelock_init(&zp->z_rangelock, zfs_rangelock_cb, zp);
133 zp->z_dirlocks = NULL;
134 zp->z_acl_cached = NULL;
135 zp->z_xattr_cached = NULL;
136 zp->z_xattr_parent = 0;
144 znode_t *zp = buf;
146 ASSERT(!list_link_active(&zp->z_link_node));
147 mutex_destroy(&zp->z_lock);
148 rw_destroy(&zp->z_parent_lock);
149 rw_destroy(&zp->z_name_lock);
150 mutex_destroy(&zp->z_acl_lock);
151 rw_destroy(&zp->z_xattr_lock);
152 zfs_rangelock_fini(&zp->z_rangelock);
154 ASSERT(zp->z_dirlocks == NULL);
155 ASSERT(zp->z_acl_cached == NULL);
156 ASSERT(zp->z_xattr_cached == NULL);
329 zfs_znode_sa_init(zfsvfs_t *zfsvfs, znode_t *zp,
332 ASSERT(zfs_znode_held(zfsvfs, zp->z_id));
334 mutex_enter(&zp->z_lock);
336 ASSERT(zp->z_sa_hdl == NULL);
337 ASSERT(zp->z_acl_cached == NULL);
339 VERIFY(0 == sa_handle_get_from_db(zfsvfs->z_os, db, zp,
340 SA_HDL_SHARED, &zp->z_sa_hdl));
342 zp->z_sa_hdl = sa_hdl;
343 sa_set_userp(sa_hdl, zp);
346 zp->z_is_sa = (obj_type == DMU_OT_SA) ? B_TRUE : B_FALSE;
348 mutex_exit(&zp->z_lock);
352 zfs_znode_dmu_fini(znode_t *zp)
354 ASSERT(zfs_znode_held(ZTOZSB(zp), zp->z_id) || zp->z_unlinked ||
355 RW_WRITE_HELD(&ZTOZSB(zp)->z_teardown_inactive_lock));
357 sa_handle_destroy(zp->z_sa_hdl);
358 zp->z_sa_hdl = NULL;
367 znode_t *zp;
369 zp = kmem_cache_alloc(znode_cache, KM_SLEEP);
370 *ip = ZTOI(zp);
381 znode_t *zp = ITOZ(ip);
382 zfsvfs_t *zfsvfs = ZTOZSB(zp);
385 if (list_link_active(&zp->z_link_node)) {
386 list_remove(&zfsvfs->z_all_znodes, zp);
391 if (zp->z_acl_cached) {
392 zfs_acl_free(zp->z_acl_cached);
393 zp->z_acl_cached = NULL;
396 if (zp->z_xattr_cached) {
397 nvlist_free(zp->z_xattr_cached);
398 zp->z_xattr_cached = NULL;
401 kmem_cache_free(znode_cache, zp);
454 zfs_set_inode_flags(znode_t *zp, struct inode *ip)
462 if (zp->z_pflags & ZFS_IMMUTABLE)
464 if (zp->z_pflags & ZFS_APPENDONLY)
469 if (zp->z_pflags & ZFS_IMMUTABLE)
474 if (zp->z_pflags & ZFS_APPENDONLY)
485 zfs_znode_update_vfs(znode_t *zp)
492 ASSERT(zp != NULL);
493 zfsvfs = ZTOZSB(zp);
494 ip = ZTOI(zp);
500 dmu_object_size_from_db(sa_get_db(zp->z_sa_hdl), &blksize, &i_blocks);
503 ip->i_mode = zp->z_mode;
505 i_size_write(ip, zp->z_size);
521 znode_t *zp;
539 zp = ITOZ(ip);
540 ASSERT(zp->z_dirlocks == NULL);
541 ASSERT3P(zp->z_acl_cached, ==, NULL);
542 ASSERT3P(zp->z_xattr_cached, ==, NULL);
543 zp->z_unlinked = B_FALSE;
544 zp->z_atime_dirty = B_FALSE;
545 zp->z_is_mapped = B_FALSE;
546 zp->z_is_ctldir = B_FALSE;
547 zp->z_is_stale = B_FALSE;
548 zp->z_suspended = B_FALSE;
549 zp->z_sa_hdl = NULL;
550 zp->z_mapcnt = 0;
551 zp->z_id = db->db_object;
552 zp->z_blksz = blksz;
553 zp->z_seq = 0x7A4653;
554 zp->z_sync_cnt = 0;
556 zfs_znode_sa_init(zfsvfs, zp, db, obj_type, hdl);
561 &zp->z_size, 8);
564 &zp->z_pflags, 8);
573 if (sa_bulk_lookup(zp->z_sa_hdl, bulk, count) != 0 || tmp_gen == 0 ||
575 (zp->z_pflags & ZFS_PROJID) &&
576 sa_lookup(zp->z_sa_hdl, SA_ZPL_PROJID(zfsvfs), &projid, 8) != 0)) {
578 sa_handle_destroy(zp->z_sa_hdl);
579 zp->z_sa_hdl = NULL;
583 zp->z_projid = projid;
584 zp->z_mode = ip->i_mode = mode;
590 zfs_set_inode_flags(zp, ip);
593 if (zp->z_pflags & ZFS_XATTR)
594 zp->z_xattr_parent = parent;
600 ip->i_ino = zp->z_id;
601 zfs_znode_update_vfs(zp);
621 list_insert_tail(&zfsvfs->z_all_znodes, zp);
627 return (zp);
953 zfs_xvattr_set(znode_t *zp, xvattr_t *xvap, dmu_tx_t *tx)
964 (void) sa_update(zp->z_sa_hdl, SA_ZPL_CRTIME(ZTOZSB(zp)),
969 ZFS_ATTR_SET(zp, ZFS_READONLY, xoap->xoa_readonly,
970 zp->z_pflags, tx);
974 ZFS_ATTR_SET(zp, ZFS_HIDDEN, xoap->xoa_hidden,
975 zp->z_pflags, tx);
979 ZFS_ATTR_SET(zp, ZFS_SYSTEM, xoap->xoa_system,
980 zp->z_pflags, tx);
984 ZFS_ATTR_SET(zp, ZFS_ARCHIVE, xoap->xoa_archive,
985 zp->z_pflags, tx);
989 ZFS_ATTR_SET(zp, ZFS_IMMUTABLE, xoap->xoa_immutable,
990 zp->z_pflags, tx);
996 ZFS_ATTR_SET(zp, ZFS_NOUNLINK, xoap->xoa_nounlink,
997 zp->z_pflags, tx);
1001 ZFS_ATTR_SET(zp, ZFS_APPENDONLY, xoap->xoa_appendonly,
1002 zp->z_pflags, tx);
1008 ZFS_ATTR_SET(zp, ZFS_NODUMP, xoap->xoa_nodump,
1009 zp->z_pflags, tx);
1013 ZFS_ATTR_SET(zp, ZFS_OPAQUE, xoap->xoa_opaque,
1014 zp->z_pflags, tx);
1018 ZFS_ATTR_SET(zp, ZFS_AV_QUARANTINED,
1019 xoap->xoa_av_quarantined, zp->z_pflags, tx);
1023 ZFS_ATTR_SET(zp, ZFS_AV_MODIFIED, xoap->xoa_av_modified,
1024 zp->z_pflags, tx);
1028 zfs_sa_set_scanstamp(zp, xvap, tx);
1032 ZFS_ATTR_SET(zp, ZFS_REPARSE, xoap->xoa_reparse,
1033 zp->z_pflags, tx);
1037 ZFS_ATTR_SET(zp, ZFS_OFFLINE, xoap->xoa_offline,
1038 zp->z_pflags, tx);
1042 ZFS_ATTR_SET(zp, ZFS_SPARSE, xoap->xoa_sparse,
1043 zp->z_pflags, tx);
1047 ZFS_ATTR_SET(zp, ZFS_PROJINHERIT, xoap->xoa_projinherit,
1048 zp->z_pflags, tx);
1053 zfs_set_inode_flags(zp, ZTOI(zp));
1061 znode_t *zp;
1089 zp = sa_get_userdata(hdl);
1098 ASSERT3P(zp, !=, NULL);
1100 mutex_enter(&zp->z_lock);
1101 ASSERT3U(zp->z_id, ==, obj_num);
1103 * If zp->z_unlinked is set, the znode is already marked
1120 if (igrab(ZTOI(zp)) == NULL) {
1121 if (zp->z_unlinked)
1126 *zpp = zp;
1130 mutex_exit(&zp->z_lock);
1152 zp = zfs_znode_alloc(zfsvfs, db, doi.doi_data_block_size,
1154 if (zp == NULL) {
1157 *zpp = zp;
1164 zfs_rezget(znode_t *zp)
1166 zfsvfs_t *zfsvfs = ZTOZSB(zp);
1169 uint64_t obj_num = zp->z_id;
1188 if (zp->z_is_ctldir)
1193 mutex_enter(&zp->z_acl_lock);
1194 if (zp->z_acl_cached) {
1195 zfs_acl_free(zp->z_acl_cached);
1196 zp->z_acl_cached = NULL;
1198 mutex_exit(&zp->z_acl_lock);
1200 rw_enter(&zp->z_xattr_lock, RW_WRITER);
1201 if (zp->z_xattr_cached) {
1202 nvlist_free(zp->z_xattr_cached);
1203 zp->z_xattr_cached = NULL;
1205 rw_exit(&zp->z_xattr_lock);
1207 ASSERT(zp->z_sa_hdl == NULL);
1224 zfs_znode_sa_init(zfsvfs, zp, db, doi.doi_bonus_type, NULL);
1230 &zp->z_size, sizeof (zp->z_size));
1234 &zp->z_pflags, sizeof (zp->z_pflags));
1248 if (sa_bulk_lookup(zp->z_sa_hdl, bulk, count)) {
1249 zfs_znode_dmu_fini(zp);
1255 err = sa_lookup(zp->z_sa_hdl, SA_ZPL_PROJID(zfsvfs),
1258 zfs_znode_dmu_fini(zp);
1264 zp->z_projid = projid;
1265 zp->z_mode = ZTOI(zp)->i_mode = mode;
1266 zfs_uid_write(ZTOI(zp), z_uid);
1267 zfs_gid_write(ZTOI(zp), z_gid);
1269 ZFS_TIME_DECODE(&ZTOI(zp)->i_atime, atime);
1270 ZFS_TIME_DECODE(&ZTOI(zp)->i_mtime, mtime);
1271 ZFS_TIME_DECODE(&ZTOI(zp)->i_ctime, ctime);
1273 if ((uint32_t)gen != ZTOI(zp)->i_generation) {
1274 zfs_znode_dmu_fini(zp);
1279 set_nlink(ZTOI(zp), (uint32_t)links);
1280 zfs_set_inode_flags(zp, ZTOI(zp));
1282 zp->z_blksz = doi.doi_data_block_size;
1283 zp->z_atime_dirty = B_FALSE;
1284 zfs_znode_update_vfs(zp);
1295 zp->z_unlinked = (ZTOI(zp)->i_nlink == 0);
1296 if (zp->z_unlinked)
1297 zfs_znode_dmu_fini(zp);
1305 zfs_znode_delete(znode_t *zp, dmu_tx_t *tx)
1307 zfsvfs_t *zfsvfs = ZTOZSB(zp);
1309 uint64_t obj = zp->z_id;
1310 uint64_t acl_obj = zfs_external_acl(zp);
1315 VERIFY(!zp->z_is_sa);
1319 zfs_znode_dmu_fini(zp);
1324 zfs_zinactive(znode_t *zp)
1326 zfsvfs_t *zfsvfs = ZTOZSB(zp);
1327 uint64_t z_id = zp->z_id;
1330 ASSERT(zp->z_sa_hdl);
1337 mutex_enter(&zp->z_lock);
1347 if (zp->z_unlinked) {
1350 mutex_exit(&zp->z_lock);
1352 zfs_rmnode(zp);
1357 mutex_exit(&zp->z_lock);
1358 zfs_znode_dmu_fini(zp);
1401 * IN: zp - znode requiring timestamp update
1404 * OUT: zp - z_seq
1412 zfs_tstamp_update_setup(znode_t *zp, uint_t flag, uint64_t mtime[2],
1419 zp->z_seq++;
1423 ZFS_TIME_DECODE(&(ZTOI(zp)->i_mtime), mtime);
1424 if (ZTOZSB(zp)->z_use_fuids) {
1425 zp->z_pflags |= (ZFS_ARCHIVE |
1432 ZFS_TIME_DECODE(&(ZTOI(zp)->i_ctime), ctime);
1433 if (ZTOZSB(zp)->z_use_fuids)
1434 zp->z_pflags |= ZFS_ARCHIVE;
1441 * IN: zp - znode of file to free data in.
1448 zfs_grow_blocksize(znode_t *zp, uint64_t size, dmu_tx_t *tx)
1453 if (size <= zp->z_blksz)
1460 if (zp->z_blksz && zp->z_size > zp->z_blksz)
1463 error = dmu_object_set_blocksize(ZTOZSB(zp)->z_os, zp->z_id,
1471 dmu_object_size_from_db(sa_get_db(zp->z_sa_hdl), &zp->z_blksz, &dummy);
1477 * IN: zp - znode of file to free data in.
1483 zfs_extend(znode_t *zp, uint64_t end)
1485 zfsvfs_t *zfsvfs = ZTOZSB(zp);
1494 lr = zfs_rangelock_enter(&zp->z_rangelock, 0, UINT64_MAX, RL_WRITER);
1499 if (end <= zp->z_size) {
1504 dmu_tx_hold_sa(tx, zp->z_sa_hdl, B_FALSE);
1505 zfs_sa_upgrade_txholds(tx, zp);
1506 if (end > zp->z_blksz &&
1507 (!ISP2(zp->z_blksz) || zp->z_blksz < zfsvfs->z_max_blksz)) {
1511 if (zp->z_blksz > ZTOZSB(zp)->z_max_blksz) {
1517 ASSERT(!ISP2(zp->z_blksz));
1518 newblksz = MIN(end, 1 << highbit64(zp->z_blksz));
1520 newblksz = MIN(end, ZTOZSB(zp)->z_max_blksz);
1522 dmu_tx_hold_write(tx, zp->z_id, 0, newblksz);
1535 zfs_grow_blocksize(zp, newblksz, tx);
1537 zp->z_size = end;
1539 VERIFY(0 == sa_update(zp->z_sa_hdl, SA_ZPL_SIZE(ZTOZSB(zp)),
1540 &zp->z_size, sizeof (zp->z_size), tx));
1553 * Zeroes a piece of a single page cache entry for zp at offset
1560 zfs_zero_partial_page(znode_t *zp, uint64_t start, uint64_t len)
1562 struct address_space *mp = ZTOI(zp)->i_mapping;
1595 * IN: zp - znode of file to free data in.
1602 zfs_free_range(znode_t *zp, uint64_t off, uint64_t len)
1604 zfsvfs_t *zfsvfs = ZTOZSB(zp);
1611 lr = zfs_rangelock_enter(&zp->z_rangelock, off, len, RL_WRITER);
1616 if (off >= zp->z_size) {
1621 if (off + len > zp->z_size)
1622 len = zp->z_size - off;
1624 error = dmu_free_long_range(zfsvfs->z_os, zp->z_id, off, len);
1630 if (zp->z_is_mapped) {
1646 truncate_inode_pages_range(ZTOI(zp)->i_mapping,
1653 zfs_zero_partial_page(zp, off, len);
1658 zfs_zero_partial_page(zp, off, page_len);
1663 zfs_zero_partial_page(zp, last_page_offset,
1675 * IN: zp - znode of file to free data in.
1681 zfs_trunc(znode_t *zp, uint64_t end)
1683 zfsvfs_t *zfsvfs = ZTOZSB(zp);
1693 lr = zfs_rangelock_enter(&zp->z_rangelock, 0, UINT64_MAX, RL_WRITER);
1698 if (end >= zp->z_size) {
1703 error = dmu_free_long_range(zfsvfs->z_os, zp->z_id, end,
1710 dmu_tx_hold_sa(tx, zp->z_sa_hdl, B_FALSE);
1711 zfs_sa_upgrade_txholds(tx, zp);
1720 zp->z_size = end;
1722 NULL, &zp->z_size, sizeof (zp->z_size));
1725 zp->z_pflags &= ~ZFS_SPARSE;
1727 NULL, &zp->z_pflags, 8);
1729 VERIFY(sa_bulk_update(zp->z_sa_hdl, bulk, count, tx) == 0);
1740 * IN: zp - znode of file to free data in.
1749 zfs_freesp(znode_t *zp, uint64_t off, uint64_t len, int flag, boolean_t log)
1752 zfsvfs_t *zfsvfs = ZTOZSB(zp);
1760 if ((error = sa_lookup(zp->z_sa_hdl, SA_ZPL_MODE(zfsvfs), &mode,
1764 if (off > zp->z_size) {
1765 error = zfs_extend(zp, off+len);
1772 error = zfs_trunc(zp, off);
1774 if ((error = zfs_free_range(zp, off, len)) == 0 &&
1775 off + len > zp->z_size)
1776 error = zfs_extend(zp, off+len);
1782 dmu_tx_hold_sa(tx, zp->z_sa_hdl, B_FALSE);
1783 zfs_sa_upgrade_txholds(tx, zp);
1793 NULL, &zp->z_pflags, 8);
1794 zfs_tstamp_update_setup(zp, CONTENT_MODIFIED, mtime, ctime);
1795 error = sa_bulk_update(zp->z_sa_hdl, bulk, count, tx);
1798 zfs_log_truncate(zilog, tx, TX_TRUNCATE, zp, off, len);
1802 zfs_znode_update_vfs(zp);
1812 truncate_setsize(ZTOI(zp), off);
1830 znode_t *zp;
1950 zfs_mknode(rootzp, &vattr, tx, cr, IS_ROOT_NODE, &zp, &acl_ids);
1951 ASSERT3P(zp, ==, rootzp);