Lines Matching +full:set +full:- +full:aces
1 // SPDX-License-Identifier: CDDL-1.0
10 * or https://opensource.org/licenses/CDDL-1.0.
53 * of 2 contexts depending on zilog->z_replay:
56 * ---------------
61 * a sequence number and inserted in the in-memory list anchored in the zilog.
64 * -----------
73 int isxvattr = (vap->va_mask & ATTR_XVATTR); in zfs_log_create_txtype()
105 * for the create time which may be set. Following the create time
106 * records a single 64 bit integer which has the bits to set on
117 lrattr->lr_attr_masksize = xvap->xva_mapsize; in zfs_log_xvattr()
118 uint32_t *bitmap = &lrattr->lr_attr_bitmap; in zfs_log_xvattr()
119 for (int i = 0; i != xvap->xva_mapsize; i++, bitmap++) in zfs_log_xvattr()
120 *bitmap = xvap->xva_reqattrmap[i]; in zfs_log_xvattr()
123 end->lr_attr_attrs = 0; in zfs_log_xvattr()
124 end->lr_attr_crtime[0] = 0; in zfs_log_xvattr()
125 end->lr_attr_crtime[1] = 0; in zfs_log_xvattr()
126 memset(end->lr_attr_scanstamp, 0, AV_SCANSTAMP_SZ); in zfs_log_xvattr()
129 end->lr_attr_attrs |= (xoap->xoa_readonly == 0) ? 0 : in zfs_log_xvattr()
132 end->lr_attr_attrs |= (xoap->xoa_hidden == 0) ? 0 : in zfs_log_xvattr()
135 end->lr_attr_attrs |= (xoap->xoa_system == 0) ? 0 : in zfs_log_xvattr()
138 end->lr_attr_attrs |= (xoap->xoa_archive == 0) ? 0 : in zfs_log_xvattr()
141 end->lr_attr_attrs |= (xoap->xoa_immutable == 0) ? 0 : in zfs_log_xvattr()
144 end->lr_attr_attrs |= (xoap->xoa_nounlink == 0) ? 0 : in zfs_log_xvattr()
147 end->lr_attr_attrs |= (xoap->xoa_appendonly == 0) ? 0 : in zfs_log_xvattr()
150 end->lr_attr_attrs |= (xoap->xoa_opaque == 0) ? 0 : in zfs_log_xvattr()
153 end->lr_attr_attrs |= (xoap->xoa_nodump == 0) ? 0 : in zfs_log_xvattr()
156 end->lr_attr_attrs |= (xoap->xoa_av_quarantined == 0) ? 0 : in zfs_log_xvattr()
159 end->lr_attr_attrs |= (xoap->xoa_av_modified == 0) ? 0 : in zfs_log_xvattr()
162 ZFS_TIME_ENCODE(&xoap->xoa_createtime, end->lr_attr_crtime); in zfs_log_xvattr()
166 memcpy(end->lr_attr_scanstamp, xoap->xoa_av_scanstamp, in zfs_log_xvattr()
173 memcpy(end->lr_attr_scanstamp, &xoap->xoa_projid, in zfs_log_xvattr()
177 end->lr_attr_attrs |= (xoap->xoa_reparse == 0) ? 0 : in zfs_log_xvattr()
180 end->lr_attr_attrs |= (xoap->xoa_offline == 0) ? 0 : in zfs_log_xvattr()
183 end->lr_attr_attrs |= (xoap->xoa_sparse == 0) ? 0 : in zfs_log_xvattr()
186 end->lr_attr_attrs |= (xoap->xoa_projinherit == 0) ? 0 : in zfs_log_xvattr()
197 for (zfuid = list_head(&fuidp->z_fuids); zfuid; in zfs_log_fuid_ids()
198 zfuid = list_next(&fuidp->z_fuids, zfuid)) { in zfs_log_fuid_ids()
199 *fuidloc++ = zfuid->z_logfuid; in zfs_log_fuid_ids()
211 if (fuidp->z_domain_str_sz != 0) { in zfs_log_fuid_domains()
212 for (zdomain = list_head(&fuidp->z_domains); zdomain; in zfs_log_fuid_domains()
213 zdomain = list_next(&fuidp->z_domains, zdomain)) { in zfs_log_fuid_domains()
214 memcpy(start, zdomain->z_domain, in zfs_log_fuid_domains()
215 strlen(zdomain->z_domain) + 1); in zfs_log_fuid_domains()
217 strlen(zdomain->z_domain) + 1; in zfs_log_fuid_domains()
243 while (tzp->z_pflags & ZFS_XATTR) { in zfs_xattr_owner_unlinked()
244 ASSERT3U(zp->z_xattr_parent, !=, 0); in zfs_xattr_owner_unlinked()
245 if (zfs_zget(ZTOZSB(tzp), tzp->z_xattr_parent, &dzp) != 0) { in zfs_xattr_owner_unlinked()
253 unlinked = tzp->z_unlinked; in zfs_xattr_owner_unlinked()
263 while (zp->z_pflags & ZFS_XATTR) { in zfs_xattr_owner_unlinked()
264 ASSERT3U(zp->z_xattr_parent, !=, 0); in zfs_xattr_owner_unlinked()
265 if (zfs_zget(ZTOZSB(zp), zp->z_xattr_parent, &dzp) != 0) { in zfs_xattr_owner_unlinked()
272 unlinked = zp->z_unlinked; in zfs_xattr_owner_unlinked()
291 * and ACL and normal users/groups in the ACEs.
322 fuidsz += fuidp->z_domain_str_sz; in zfs_log_create()
323 fuidsz += fuidp->z_fuid_cnt * sizeof (uint64_t); in zfs_log_create()
326 if (vap->va_mask & ATTR_XVATTR) in zfs_log_create()
327 xvatsize = ZIL_XVAT_SIZE(xvap->xva_mapsize); in zfs_log_create()
334 lr_create_t *lrc = (lr_create_t *)&itx->itx_lr; in zfs_log_create()
335 lrdata = &lrc->lr_data[0]; in zfs_log_create()
341 lracl = (lr_acl_create_t *)&itx->itx_lr; in zfs_log_create()
342 lrdata = &lracl->lr_data[0]; in zfs_log_create()
346 lr = (_lr_create_t *)&itx->itx_lr; in zfs_log_create()
347 lr->lr_doid = dzp->z_id; in zfs_log_create()
348 lr->lr_foid = zp->z_id; in zfs_log_create()
350 LR_FOID_SET_SLOTS(lr->lr_foid, zp->z_dnodesize >> DNODE_SHIFT); in zfs_log_create()
351 lr->lr_mode = zp->z_mode; in zfs_log_create()
353 lr->lr_uid = (uint64_t)KUID_TO_SUID(ZTOUID(zp)); in zfs_log_create()
355 lr->lr_uid = fuidp->z_fuid_owner; in zfs_log_create()
358 lr->lr_gid = (uint64_t)KGID_TO_SGID(ZTOGID(zp)); in zfs_log_create()
360 lr->lr_gid = fuidp->z_fuid_group; in zfs_log_create()
362 (void) sa_lookup(zp->z_sa_hdl, SA_ZPL_GEN(ZTOZSB(zp)), &lr->lr_gen, in zfs_log_create()
364 (void) sa_lookup(zp->z_sa_hdl, SA_ZPL_CRTIME(ZTOZSB(zp)), in zfs_log_create()
365 lr->lr_crtime, sizeof (uint64_t) * 2); in zfs_log_create()
367 if (sa_lookup(zp->z_sa_hdl, SA_ZPL_RDEV(ZTOZSB(zp)), &lr->lr_rdev, in zfs_log_create()
368 sizeof (lr->lr_rdev)) != 0) in zfs_log_create()
369 lr->lr_rdev = 0; in zfs_log_create()
374 if (vap->va_mask & ATTR_XVATTR) { in zfs_log_create()
383 lracl->lr_aclcnt = vsecp->vsa_aclcnt; in zfs_log_create()
384 lracl->lr_acl_bytes = aclsize; in zfs_log_create()
385 lracl->lr_domcnt = fuidp ? fuidp->z_domain_cnt : 0; in zfs_log_create()
386 lracl->lr_fuidcnt = fuidp ? fuidp->z_fuid_cnt : 0; in zfs_log_create()
387 if (vsecp->vsa_aclflags & VSA_ACE_ACLFLAGS) in zfs_log_create()
388 lracl->lr_acl_flags = (uint64_t)vsecp->vsa_aclflags; in zfs_log_create()
390 lracl->lr_acl_flags = 0; in zfs_log_create()
392 memcpy(lrdata, vsecp->vsa_aclentp, aclsize); in zfs_log_create()
424 lr = (lr_remove_t *)&itx->itx_lr; in zfs_log_remove()
425 lr->lr_doid = dzp->z_id; in zfs_log_remove()
426 memcpy(&lr->lr_data[0], name, namesize); in zfs_log_remove()
428 itx->itx_oid = foid; in zfs_log_remove()
431 * Object ids can be re-instantiated in the next txg so in zfs_log_remove()
433 * This can happen if a fsync occurs on the re-instantiated in zfs_log_remove()
459 lr = (lr_link_t *)&itx->itx_lr; in zfs_log_link()
460 lr->lr_doid = dzp->z_id; in zfs_log_link()
461 lr->lr_link_obj = zp->z_id; in zfs_log_link()
462 memcpy(&lr->lr_data[0], name, namesize); in zfs_log_link()
484 lrc = (lr_create_t *)&itx->itx_lr; in zfs_log_symlink()
485 lr = &lrc->lr_create; in zfs_log_symlink()
486 lr->lr_doid = dzp->z_id; in zfs_log_symlink()
487 lr->lr_foid = zp->z_id; in zfs_log_symlink()
488 lr->lr_uid = KUID_TO_SUID(ZTOUID(zp)); in zfs_log_symlink()
489 lr->lr_gid = KGID_TO_SGID(ZTOGID(zp)); in zfs_log_symlink()
490 lr->lr_mode = zp->z_mode; in zfs_log_symlink()
491 (void) sa_lookup(zp->z_sa_hdl, SA_ZPL_GEN(ZTOZSB(zp)), &lr->lr_gen, in zfs_log_symlink()
493 (void) sa_lookup(zp->z_sa_hdl, SA_ZPL_CRTIME(ZTOZSB(zp)), in zfs_log_symlink()
494 lr->lr_crtime, sizeof (uint64_t) * 2); in zfs_log_symlink()
495 memcpy(&lrc->lr_data[0], name, namesize); in zfs_log_symlink()
496 memcpy(&lrc->lr_data[namesize], link, linksize); in zfs_log_symlink()
515 lrr = (lr_rename_t *)&itx->itx_lr; in do_zfs_log_rename()
516 lr = &lrr->lr_rename; in do_zfs_log_rename()
517 lr->lr_sdoid = sdzp->z_id; in do_zfs_log_rename()
518 lr->lr_tdoid = tdzp->z_id; in do_zfs_log_rename()
519 memcpy(&lrr->lr_data[0], sname, snamesize); in do_zfs_log_rename()
520 memcpy(&lrr->lr_data[snamesize], dname, dnamesize); in do_zfs_log_rename()
521 itx->itx_oid = szp->z_id; in do_zfs_log_rename()
570 lr = (lr_rename_whiteout_t *)&itx->itx_lr; in zfs_log_rename_whiteout()
571 lr->lr_rename.lr_sdoid = sdzp->z_id; in zfs_log_rename_whiteout()
572 lr->lr_rename.lr_tdoid = tdzp->z_id; in zfs_log_rename_whiteout()
579 lr->lr_wfoid = wzp->z_id; in zfs_log_rename_whiteout()
580 LR_FOID_SET_SLOTS(lr->lr_wfoid, wzp->z_dnodesize >> DNODE_SHIFT); in zfs_log_rename_whiteout()
581 (void) sa_lookup(wzp->z_sa_hdl, SA_ZPL_GEN(ZTOZSB(wzp)), &lr->lr_wgen, in zfs_log_rename_whiteout()
583 (void) sa_lookup(wzp->z_sa_hdl, SA_ZPL_CRTIME(ZTOZSB(wzp)), in zfs_log_rename_whiteout()
584 lr->lr_wcrtime, sizeof (uint64_t) * 2); in zfs_log_rename_whiteout()
585 lr->lr_wmode = wzp->z_mode; in zfs_log_rename_whiteout()
586 lr->lr_wuid = (uint64_t)KUID_TO_SUID(ZTOUID(wzp)); in zfs_log_rename_whiteout()
587 lr->lr_wgid = (uint64_t)KGID_TO_SGID(ZTOGID(wzp)); in zfs_log_rename_whiteout()
595 (void) sa_lookup(wzp->z_sa_hdl, SA_ZPL_RDEV(ZTOZSB(wzp)), &lr->lr_wrdev, in zfs_log_rename_whiteout()
596 sizeof (lr->lr_wrdev)); in zfs_log_rename_whiteout()
598 memcpy(&lr->lr_data[0], sname, snamesize); in zfs_log_rename_whiteout()
599 memcpy(&lr->lr_data[snamesize], dname, dnamesize); in zfs_log_rename_whiteout()
600 itx->itx_oid = szp->z_id; in zfs_log_rename_whiteout()
615 dmu_buf_impl_t *db = (dmu_buf_impl_t *)sa_get_db(zp->z_sa_hdl); in zfs_log_write()
616 uint32_t blocksize = zp->z_blksz; in zfs_log_write()
620 if (zil_replaying(zilog, tx) || zp->z_unlinked || in zfs_log_write()
630 (void) sa_lookup(zp->z_sa_hdl, SA_ZPL_GEN(ZTOZSB(zp)), &gen, in zfs_log_write()
649 len = MIN(blocksize - P2PHASE(off, blocksize), resid); in zfs_log_write()
653 lr = (lr_write_t *)&itx->itx_lr; in zfs_log_write()
662 &lr->lr_data[0], DMU_READ_NO_PREFETCH | in zfs_log_write()
668 lr = (lr_write_t *)&itx->itx_lr; in zfs_log_write()
673 log_size += itx->itx_size; in zfs_log_write()
677 itx->itx_wr_state = wr_state; in zfs_log_write()
678 lr->lr_foid = zp->z_id; in zfs_log_write()
679 lr->lr_offset = off; in zfs_log_write()
680 lr->lr_length = len; in zfs_log_write()
681 lr->lr_blkoff = 0; in zfs_log_write()
682 BP_ZERO(&lr->lr_blkptr); in zfs_log_write()
684 itx->itx_private = ZTOZSB(zp); in zfs_log_write()
685 itx->itx_sync = (zp->z_sync_cnt != 0); in zfs_log_write()
686 itx->itx_gen = gen; in zfs_log_write()
689 itx->itx_callback = callback; in zfs_log_write()
690 itx->itx_callback_data = callback_data; in zfs_log_write()
696 resid -= len; in zfs_log_write()
699 dsl_pool_wrlog_count(zilog->zl_dmu_pool, log_size, tx->tx_txg); in zfs_log_write()
712 if (zil_replaying(zilog, tx) || zp->z_unlinked || in zfs_log_truncate()
717 lr = (lr_truncate_t *)&itx->itx_lr; in zfs_log_truncate()
718 lr->lr_foid = zp->z_id; in zfs_log_truncate()
719 lr->lr_offset = off; in zfs_log_truncate()
720 lr->lr_length = len; in zfs_log_truncate()
722 itx->itx_sync = (zp->z_sync_cnt != 0); in zfs_log_truncate()
739 if (zil_replaying(zilog, tx) || zp->z_unlinked) in zfs_log_setattr()
743 * If XVATTR set, then log record size needs to allow in zfs_log_setattr()
747 if (vap->va_mask & ATTR_XVATTR) in zfs_log_setattr()
748 recsize = sizeof (*lr) + ZIL_XVAT_SIZE(xvap->xva_mapsize); in zfs_log_setattr()
751 recsize += fuidp->z_domain_str_sz; in zfs_log_setattr()
754 lr = (lr_setattr_t *)&itx->itx_lr; in zfs_log_setattr()
755 lr->lr_foid = zp->z_id; in zfs_log_setattr()
756 lr->lr_mask = (uint64_t)mask_applied; in zfs_log_setattr()
757 lr->lr_mode = (uint64_t)vap->va_mode; in zfs_log_setattr()
758 if ((mask_applied & ATTR_UID) && IS_EPHEMERAL(vap->va_uid)) in zfs_log_setattr()
759 lr->lr_uid = fuidp->z_fuid_owner; in zfs_log_setattr()
761 lr->lr_uid = (uint64_t)vap->va_uid; in zfs_log_setattr()
763 if ((mask_applied & ATTR_GID) && IS_EPHEMERAL(vap->va_gid)) in zfs_log_setattr()
764 lr->lr_gid = fuidp->z_fuid_group; in zfs_log_setattr()
766 lr->lr_gid = (uint64_t)vap->va_gid; in zfs_log_setattr()
768 lr->lr_size = (uint64_t)vap->va_size; in zfs_log_setattr()
769 ZFS_TIME_ENCODE(&vap->va_atime, lr->lr_atime); in zfs_log_setattr()
770 ZFS_TIME_ENCODE(&vap->va_mtime, lr->lr_mtime); in zfs_log_setattr()
771 start = &lr->lr_data[0]; in zfs_log_setattr()
772 if (vap->va_mask & ATTR_XVATTR) { in zfs_log_setattr()
774 start = &lr->lr_data[ZIL_XVAT_SIZE(xvap->xva_mapsize)]; in zfs_log_setattr()
784 itx->itx_sync = (zp->z_sync_cnt != 0); in zfs_log_setattr()
800 if (zil_replaying(zilog, tx) || zp->z_unlinked) in zfs_log_setsaxattr()
806 lr = (lr_setsaxattr_t *)&itx->itx_lr; in zfs_log_setsaxattr()
807 lr->lr_foid = zp->z_id; in zfs_log_setsaxattr()
808 memcpy(&lr->lr_data[0], name, namelen); in zfs_log_setsaxattr()
810 memcpy(&lr->lr_data[namelen], value, size); in zfs_log_setsaxattr()
811 lr->lr_size = size; in zfs_log_setsaxattr()
813 lr->lr_size = 0; in zfs_log_setsaxattr()
816 itx->itx_sync = (zp->z_sync_cnt != 0); in zfs_log_setsaxattr()
833 size_t aclbytes = vsecp->vsa_aclentsz; in zfs_log_acl()
835 if (zil_replaying(zilog, tx) || zp->z_unlinked) in zfs_log_acl()
838 txtype = (ZTOZSB(zp)->z_version < ZPL_VERSION_FUID) ? in zfs_log_acl()
848 (fuidp ? fuidp->z_domain_str_sz : 0) + in zfs_log_acl()
849 sizeof (uint64_t) * (fuidp ? fuidp->z_fuid_cnt : 0); in zfs_log_acl()
853 lr = (lr_acl_t *)&itx->itx_lr; in zfs_log_acl()
854 lr->lr_foid = zp->z_id; in zfs_log_acl()
856 lr->lr_acl_bytes = aclbytes; in zfs_log_acl()
857 lr->lr_domcnt = fuidp ? fuidp->z_domain_cnt : 0; in zfs_log_acl()
858 lr->lr_fuidcnt = fuidp ? fuidp->z_fuid_cnt : 0; in zfs_log_acl()
859 if (vsecp->vsa_mask & VSA_ACE_ACLFLAGS) in zfs_log_acl()
860 lr->lr_acl_flags = (uint64_t)vsecp->vsa_aclflags; in zfs_log_acl()
862 lr->lr_acl_flags = 0; in zfs_log_acl()
864 lr->lr_aclcnt = (uint64_t)vsecp->vsa_aclcnt; in zfs_log_acl()
868 memcpy(&lrv0->lr_data[0], vsecp->vsa_aclentp, aclbytes); in zfs_log_acl()
870 uint8_t *start = &lr->lr_data[0]; in zfs_log_acl()
872 memcpy(start, vsecp->vsa_aclentp, aclbytes); in zfs_log_acl()
874 start = &lr->lr_data[ZIL_ACE_LENGTH(aclbytes)]; in zfs_log_acl()
882 itx->itx_sync = (zp->z_sync_cnt != 0); in zfs_log_acl()
899 if (zil_replaying(zilog, tx) || zp->z_unlinked) in zfs_log_clone_range()
912 lr = (lr_clone_range_t *)&itx->itx_lr; in zfs_log_clone_range()
913 lr->lr_foid = zp->z_id; in zfs_log_clone_range()
914 lr->lr_offset = off; in zfs_log_clone_range()
915 lr->lr_length = partlen; in zfs_log_clone_range()
916 lr->lr_blksz = blksz; in zfs_log_clone_range()
917 lr->lr_nbps = partnbps; in zfs_log_clone_range()
918 memcpy(lr->lr_bps, bps, sizeof (bps[0]) * partnbps); in zfs_log_clone_range()
920 itx->itx_sync = (zp->z_sync_cnt != 0); in zfs_log_clone_range()
926 nbps -= partnbps; in zfs_log_clone_range()
929 len -= partlen; in zfs_log_clone_range()