Lines Matching defs:zp

83 zfs_fsync(znode_t *zp, int syncflag, cred_t *cr)
86 zfsvfs_t *zfsvfs = ZTOZSB(zp);
89 if ((error = zfs_enter_verify_zp(zfsvfs, zp, FTAG)) != 0)
91 atomic_inc_32(&zp->z_sync_writes_cnt);
92 zil_commit(zfsvfs->z_log, zp->z_id);
93 atomic_dec_32(&zp->z_sync_writes_cnt);
106 zfs_holey_common(znode_t *zp, ulong_t cmd, loff_t *off)
114 file_sz = zp->z_size;
125 if (zn_has_cached_data(zp, 0, file_sz - 1))
126 zn_flush_cached_data(zp, B_TRUE);
128 lr = zfs_rangelock_enter(&zp->z_rangelock, 0, UINT64_MAX, RL_READER);
129 error = dmu_offset_next(ZTOZSB(zp)->z_os, zp->z_id, hole, &noff);
162 zfs_holey(znode_t *zp, ulong_t cmd, loff_t *off)
164 zfsvfs_t *zfsvfs = ZTOZSB(zp);
167 if ((error = zfs_enter_verify_zp(zfsvfs, zp, FTAG)) != 0)
170 error = zfs_holey_common(zp, cmd, off);
178 zfs_access(znode_t *zp, int mode, int flag, cred_t *cr)
180 zfsvfs_t *zfsvfs = ZTOZSB(zp);
183 if ((error = zfs_enter_verify_zp(zfsvfs, zp, FTAG)) != 0)
188 error = zfs_zaccess(zp, mode, flag, B_FALSE, cr,
191 error = zfs_zaccess(zp, mode, flag, B_FALSE, cr,
196 error = zfs_zaccess_rwx(zp, mode, flag, cr, zfs_init_idmap);
198 error = zfs_zaccess_rwx(zp, mode, flag, cr, NULL);
208 * IN: zp - inode of file to be read from.
223 zfs_read(struct znode *zp, zfs_uio_t *uio, int ioflag, cred_t *cr)
229 zfsvfs_t *zfsvfs = ZTOZSB(zp);
230 if ((error = zfs_enter_verify_zp(zfsvfs, zp, FTAG)) != 0)
233 if (zp->z_pflags & ZFS_AV_QUARANTINED) {
239 if (Z_ISDIR(ZTOTYPE(zp))) {
273 zil_commit(zfsvfs->z_log, zp->z_id);
278 zfs_locked_range_t *lr = zfs_rangelock_enter(&zp->z_rangelock,
285 if (zfs_uio_offset(uio) >= zp->z_size) {
290 ASSERT(zfs_uio_offset(uio) < zp->z_size);
294 ssize_t n = MIN(zfs_uio_resid(uio), zp->z_size - zfs_uio_offset(uio));
302 error = mappedread_sf(zp, nbytes, uio);
305 if (zn_has_cached_data(zp, zfs_uio_offset(uio),
307 error = mappedread(zp, nbytes, uio);
309 error = dmu_read_uio_dbuf(sa_get_db(zp->z_sa_hdl),
341 ZFS_ACCESSTIME_STAMP(zfsvfs, zp);
347 zfs_clear_setid_bits_if_necessary(zfsvfs_t *zfsvfs, znode_t *zp, cred_t *cr,
351 const uint64_t uid = KUID_TO_SUID(ZTOUID(zp));
367 mutex_enter(&zp->z_acl_lock);
368 if ((zp->z_mode & (S_IXUSR | (S_IXUSR >> 3) | (S_IXUSR >> 6))) != 0 &&
369 (zp->z_mode & (S_ISUID | S_ISGID)) != 0 &&
370 secpolicy_vnode_setid_retain(zp, cr,
371 ((zp->z_mode & S_ISUID) != 0 && uid == 0)) != 0) {
374 zp->z_mode &= ~(S_ISUID | S_ISGID);
375 newmode = zp->z_mode;
376 (void) sa_update(zp->z_sa_hdl, SA_ZPL_MODE(zfsvfs),
379 mutex_exit(&zp->z_acl_lock);
390 va.va_nodeid = zp->z_id;
392 zfs_log_setattr(zilog, tx, TX_SETATTR, zp, &va,
397 mutex_exit(&zp->z_acl_lock);
404 * IN: zp - znode of file to be written to.
420 zfs_write(znode_t *zp, zfs_uio_t *uio, int ioflag, cred_t *cr)
433 zfsvfs_t *zfsvfs = ZTOZSB(zp);
434 if ((error = zfs_enter_verify_zp(zfsvfs, zp, FTAG)) != 0)
443 &zp->z_size, 8);
445 &zp->z_pflags, 8);
461 if ((zp->z_pflags & ZFS_IMMUTABLE) ||
462 ((zp->z_pflags & ZFS_APPENDONLY) && !(ioflag & O_APPEND) &&
463 (zfs_uio_offset(uio) < zp->z_size))) {
471 offset_t woff = ioflag & O_APPEND ? zp->z_size : zfs_uio_offset(uio);
496 lr = zfs_rangelock_enter(&zp->z_rangelock, 0, n, RL_APPEND);
504 woff = zp->z_size;
513 lr = zfs_rangelock_enter(&zp->z_rangelock, woff, n, RL_WRITER);
516 if (zn_rlimit_fsize_uio(zp, uio)) {
533 uint64_t end_size = MAX(zp->z_size, woff + n);
538 const uint64_t uid = KUID_TO_SUID(ZTOUID(zp));
539 const uint64_t gid = KGID_TO_SGID(ZTOGID(zp));
540 const uint64_t projid = zp->z_projid;
560 if (lr->lr_length == UINT64_MAX && zp->z_size <= zp->z_blksz) {
561 if (zp->z_blksz > zfsvfs->z_max_blksz &&
562 !ISP2(zp->z_blksz)) {
568 blksz = 1 << highbit64(zp->z_blksz);
574 blksz = MAX(blksz, zp->z_blksz);
576 blksz = zp->z_blksz;
581 if (n >= blksz && woff >= zp->z_size &&
591 abuf = dmu_request_arcbuf(sa_get_db(zp->z_sa_hdl),
617 dmu_tx_hold_sa(tx, zp->z_sa_hdl, B_FALSE);
618 dmu_buf_impl_t *db = (dmu_buf_impl_t *)sa_get_db(zp->z_sa_hdl);
622 zfs_sa_upgrade_txholds(tx, zp);
643 zfs_grow_blocksize(zp, blksz, tx);
651 error = dmu_write_uio_dbuf(sa_get_db(zp->z_sa_hdl),
656 zfs_clear_setid_bits_if_necessary(zfsvfs, zp,
676 zfs_clear_setid_bits_if_necessary(zfsvfs, zp,
691 sa_get_db(zp->z_sa_hdl), woff, abuf, tx);
698 zfs_clear_setid_bits_if_necessary(zfsvfs, zp,
709 zn_has_cached_data(zp, woff, woff + tx_bytes - 1) &&
711 update_pages(zp, woff, tx_bytes, zfsvfs->z_os);
719 (void) sa_update(zp->z_sa_hdl, SA_ZPL_SIZE(zfsvfs),
720 (void *)&zp->z_size, sizeof (uint64_t), tx);
726 zfs_clear_setid_bits_if_necessary(zfsvfs, zp, cr,
729 zfs_tstamp_update_setup(zp, CONTENT_MODIFIED, mtime, ctime);
735 while ((end_size = zp->z_size) < zfs_uio_offset(uio)) {
736 (void) atomic_cas_64(&zp->z_size, end_size,
746 zp->z_size = zfsvfs->z_replay_eof;
748 error1 = sa_bulk_update(zp->z_sa_hdl, bulk, count, tx);
758 zfs_log_write(zilog, tx, TX_WRITE, zp, woff, tx_bytes, commit,
770 zfs_znode_update_vfs(zp);
785 zil_commit(zilog, zp->z_id);
796 zfs_getsecattr(znode_t *zp, vsecattr_t *vsecp, int flag, cred_t *cr)
798 zfsvfs_t *zfsvfs = ZTOZSB(zp);
802 if ((error = zfs_enter_verify_zp(zfsvfs, zp, FTAG)) != 0)
804 error = zfs_getacl(zp, vsecp, skipaclchk, cr);
811 zfs_setsecattr(znode_t *zp, vsecattr_t *vsecp, int flag, cred_t *cr)
813 zfsvfs_t *zfsvfs = ZTOZSB(zp);
818 if ((error = zfs_enter_verify_zp(zfsvfs, zp, FTAG)) != 0)
821 error = zfs_setacl(zp, vsecp, skipaclchk, cr);
845 znode_t *zp;
860 if (zfs_zget(zfsvfs, object, &zp) != 0)
862 if (zp->z_unlinked) {
867 zfs_zrele_async(zp);
871 if (sa_lookup(zp->z_sa_hdl, SA_ZPL_GEN(zfsvfs), &zp_gen,
873 zfs_zrele_async(zp);
877 zfs_zrele_async(zp);
883 zgd->zgd_private = zp;
893 zgd->zgd_lr = zfs_rangelock_enter(&zp->z_rangelock,
896 if (offset >= zp->z_size) {
913 size = zp->z_blksz;
916 zgd->zgd_lr = zfs_rangelock_enter(&zp->z_rangelock,
918 if (zp->z_blksz == size)
924 if (lr->lr_offset >= zp->z_size)
983 znode_t *zp = zgd->zgd_private;
994 zfs_zrele_async(zp);
1463 zfs_clone_range_replay(znode_t *zp, uint64_t off, uint64_t len, uint64_t blksz,
1478 zfsvfs = ZTOZSB(zp);
1483 if ((error = zfs_enter_verify_zp(zfsvfs, zp, FTAG)) != 0)
1497 &zp->z_size, 8);
1504 dmu_tx_hold_sa(tx, zp->z_sa_hdl, B_FALSE);
1505 db = (dmu_buf_impl_t *)sa_get_db(zp->z_sa_hdl);
1509 zfs_sa_upgrade_txholds(tx, zp);
1517 if (zp->z_blksz < blksz)
1518 zfs_grow_blocksize(zp, blksz, tx);
1520 dmu_brt_clone(zfsvfs->z_os, zp->z_id, off, len, tx, bps, nbps);
1522 zfs_tstamp_update_setup(zp, CONTENT_MODIFIED, mtime, ctime);
1524 if (zp->z_size < off + len)
1525 zp->z_size = off + len;
1527 error = sa_bulk_update(zp->z_sa_hdl, bulk, count, tx);
1537 zfs_znode_update_vfs(zp);