Lines Matching +full:write +full:- +full:0 +full:- +full:bps
9 * or https://opensource.org/licenses/CDDL-1.0.
52 * of 2 contexts depending on zilog->z_replay:
55 * ---------------
60 * a sequence number and inserted in the in-memory list anchored in the zilog.
63 * -----------
72 int isxvattr = (vap->va_mask & ATTR_XVATTR);
95 ASSERT(0);
116 lrattr->lr_attr_masksize = xvap->xva_mapsize;
117 uint32_t *bitmap = &lrattr->lr_attr_bitmap;
118 for (int i = 0; i != xvap->xva_mapsize; i++, bitmap++)
119 *bitmap = xvap->xva_reqattrmap[i];
122 end->lr_attr_attrs = 0;
123 end->lr_attr_crtime[0] = 0;
124 end->lr_attr_crtime[1] = 0;
125 memset(end->lr_attr_scanstamp, 0, AV_SCANSTAMP_SZ);
128 end->lr_attr_attrs |= (xoap->xoa_readonly == 0) ? 0 :
131 end->lr_attr_attrs |= (xoap->xoa_hidden == 0) ? 0 :
134 end->lr_attr_attrs |= (xoap->xoa_system == 0) ? 0 :
137 end->lr_attr_attrs |= (xoap->xoa_archive == 0) ? 0 :
140 end->lr_attr_attrs |= (xoap->xoa_immutable == 0) ? 0 :
143 end->lr_attr_attrs |= (xoap->xoa_nounlink == 0) ? 0 :
146 end->lr_attr_attrs |= (xoap->xoa_appendonly == 0) ? 0 :
149 end->lr_attr_attrs |= (xoap->xoa_opaque == 0) ? 0 :
152 end->lr_attr_attrs |= (xoap->xoa_nodump == 0) ? 0 :
155 end->lr_attr_attrs |= (xoap->xoa_av_quarantined == 0) ? 0 :
158 end->lr_attr_attrs |= (xoap->xoa_av_modified == 0) ? 0 :
161 ZFS_TIME_ENCODE(&xoap->xoa_createtime, end->lr_attr_crtime);
165 memcpy(end->lr_attr_scanstamp, xoap->xoa_av_scanstamp,
172 memcpy(end->lr_attr_scanstamp, &xoap->xoa_projid,
176 end->lr_attr_attrs |= (xoap->xoa_reparse == 0) ? 0 :
179 end->lr_attr_attrs |= (xoap->xoa_offline == 0) ? 0 :
182 end->lr_attr_attrs |= (xoap->xoa_sparse == 0) ? 0 :
185 end->lr_attr_attrs |= (xoap->xoa_projinherit == 0) ? 0 :
196 for (zfuid = list_head(&fuidp->z_fuids); zfuid;
197 zfuid = list_next(&fuidp->z_fuids, zfuid)) {
198 *fuidloc++ = zfuid->z_logfuid;
210 if (fuidp->z_domain_str_sz != 0) {
211 for (zdomain = list_head(&fuidp->z_domains); zdomain;
212 zdomain = list_next(&fuidp->z_domains, zdomain)) {
213 memcpy(start, zdomain->z_domain,
214 strlen(zdomain->z_domain) + 1);
216 strlen(zdomain->z_domain) + 1;
229 int unlinked = 0;
242 while (tzp->z_pflags & ZFS_XATTR) {
243 ASSERT3U(zp->z_xattr_parent, !=, 0);
244 if (zfs_zget(ZTOZSB(tzp), tzp->z_xattr_parent, &dzp) != 0) {
252 unlinked = tzp->z_unlinked;
262 while (zp->z_pflags & ZFS_XATTR) {
263 ASSERT3U(zp->z_xattr_parent, !=, 0);
264 if (zfs_zget(ZTOZSB(zp), zp->z_xattr_parent, &dzp) != 0) {
271 unlinked = zp->z_unlinked;
306 size_t aclsize = 0;
307 size_t xvatsize = 0;
311 size_t fuidsz = 0;
321 fuidsz += fuidp->z_domain_str_sz;
322 fuidsz += fuidp->z_fuid_cnt * sizeof (uint64_t);
325 if (vap->va_mask & ATTR_XVATTR)
326 xvatsize = ZIL_XVAT_SIZE(xvap->xva_mapsize);
333 lr_create_t *lrc = (lr_create_t *)&itx->itx_lr;
334 lrdata = &lrc->lr_data[0];
340 lracl = (lr_acl_create_t *)&itx->itx_lr;
341 lrdata = &lracl->lr_data[0];
345 lr = (_lr_create_t *)&itx->itx_lr;
346 lr->lr_doid = dzp->z_id;
347 lr->lr_foid = zp->z_id;
349 LR_FOID_SET_SLOTS(lr->lr_foid, zp->z_dnodesize >> DNODE_SHIFT);
350 lr->lr_mode = zp->z_mode;
352 lr->lr_uid = (uint64_t)KUID_TO_SUID(ZTOUID(zp));
354 lr->lr_uid = fuidp->z_fuid_owner;
357 lr->lr_gid = (uint64_t)KGID_TO_SGID(ZTOGID(zp));
359 lr->lr_gid = fuidp->z_fuid_group;
361 (void) sa_lookup(zp->z_sa_hdl, SA_ZPL_GEN(ZTOZSB(zp)), &lr->lr_gen,
363 (void) sa_lookup(zp->z_sa_hdl, SA_ZPL_CRTIME(ZTOZSB(zp)),
364 lr->lr_crtime, sizeof (uint64_t) * 2);
366 if (sa_lookup(zp->z_sa_hdl, SA_ZPL_RDEV(ZTOZSB(zp)), &lr->lr_rdev,
367 sizeof (lr->lr_rdev)) != 0)
368 lr->lr_rdev = 0;
373 if (vap->va_mask & ATTR_XVATTR) {
382 lracl->lr_aclcnt = vsecp->vsa_aclcnt;
383 lracl->lr_acl_bytes = aclsize;
384 lracl->lr_domcnt = fuidp ? fuidp->z_domain_cnt : 0;
385 lracl->lr_fuidcnt = fuidp ? fuidp->z_fuid_cnt : 0;
386 if (vsecp->vsa_aclflags & VSA_ACE_ACLFLAGS)
387 lracl->lr_acl_flags = (uint64_t)vsecp->vsa_aclflags;
389 lracl->lr_acl_flags = 0;
391 memcpy(lrdata, vsecp->vsa_aclentp, aclsize);
423 lr = (lr_remove_t *)&itx->itx_lr;
424 lr->lr_doid = dzp->z_id;
425 memcpy(&lr->lr_data[0], name, namesize);
427 itx->itx_oid = foid;
430 * Object ids can be re-instantiated in the next txg so
432 * This can happen if a fsync occurs on the re-instantiated
433 * object for a WR_INDIRECT or WR_NEED_COPY write, which gets
434 * the new file data and flushes a write record for the old object.
458 lr = (lr_link_t *)&itx->itx_lr;
459 lr->lr_doid = dzp->z_id;
460 lr->lr_link_obj = zp->z_id;
461 memcpy(&lr->lr_data[0], name, namesize);
483 lrc = (lr_create_t *)&itx->itx_lr;
484 lr = &lrc->lr_create;
485 lr->lr_doid = dzp->z_id;
486 lr->lr_foid = zp->z_id;
487 lr->lr_uid = KUID_TO_SUID(ZTOUID(zp));
488 lr->lr_gid = KGID_TO_SGID(ZTOGID(zp));
489 lr->lr_mode = zp->z_mode;
490 (void) sa_lookup(zp->z_sa_hdl, SA_ZPL_GEN(ZTOZSB(zp)), &lr->lr_gen,
492 (void) sa_lookup(zp->z_sa_hdl, SA_ZPL_CRTIME(ZTOZSB(zp)),
493 lr->lr_crtime, sizeof (uint64_t) * 2);
494 memcpy(&lrc->lr_data[0], name, namesize);
495 memcpy(&lrc->lr_data[namesize], link, linksize);
514 lrr = (lr_rename_t *)&itx->itx_lr;
515 lr = &lrr->lr_rename;
516 lr->lr_sdoid = sdzp->z_id;
517 lr->lr_tdoid = tdzp->z_id;
518 memcpy(&lrr->lr_data[0], sname, snamesize);
519 memcpy(&lrr->lr_data[snamesize], dname, dnamesize);
520 itx->itx_oid = szp->z_id;
569 lr = (lr_rename_whiteout_t *)&itx->itx_lr;
570 lr->lr_rename.lr_sdoid = sdzp->z_id;
571 lr->lr_rename.lr_tdoid = tdzp->z_id;
578 lr->lr_wfoid = wzp->z_id;
579 LR_FOID_SET_SLOTS(lr->lr_wfoid, wzp->z_dnodesize >> DNODE_SHIFT);
580 (void) sa_lookup(wzp->z_sa_hdl, SA_ZPL_GEN(ZTOZSB(wzp)), &lr->lr_wgen,
582 (void) sa_lookup(wzp->z_sa_hdl, SA_ZPL_CRTIME(ZTOZSB(wzp)),
583 lr->lr_wcrtime, sizeof (uint64_t) * 2);
584 lr->lr_wmode = wzp->z_mode;
585 lr->lr_wuid = (uint64_t)KUID_TO_SUID(ZTOUID(wzp));
586 lr->lr_wgid = (uint64_t)KGID_TO_SGID(ZTOGID(wzp));
589 * This rdev will always be makdevice(0, 0) but because the ZIL log and
594 (void) sa_lookup(wzp->z_sa_hdl, SA_ZPL_RDEV(ZTOZSB(wzp)), &lr->lr_wrdev,
595 sizeof (lr->lr_wrdev));
597 memcpy(&lr->lr_data[0], sname, snamesize);
598 memcpy(&lr->lr_data[snamesize], dname, dnamesize);
599 itx->itx_oid = szp->z_id;
606 * called as soon as the write is on stable storage (be it via a DMU sync or a
616 dmu_buf_impl_t *db = (dmu_buf_impl_t *)sa_get_db(zp->z_sa_hdl);
617 uint32_t blocksize = zp->z_blksz;
619 uint64_t gen = 0;
622 if (zil_replaying(zilog, tx) || zp->z_unlinked ||
629 if (zilog->zl_logbias == ZFS_LOGBIAS_THROUGHPUT || o_direct)
631 else if (!spa_has_slogs(zilog->zl_spa) &&
639 (void) sa_lookup(zp->z_sa_hdl, SA_ZPL_GEN(ZTOZSB(zp)), &gen,
658 len = MIN(blocksize - P2PHASE(off, blocksize), resid);
661 (wr_state == WR_COPIED ? len : 0));
662 lr = (lr_write_t *)&itx->itx_lr;
671 &lr->lr_data[0], DMU_READ_NO_PREFETCH);
673 if (err != 0) {
676 lr = (lr_write_t *)&itx->itx_lr;
681 itx->itx_wr_state = wr_state;
682 lr->lr_foid = zp->z_id;
683 lr->lr_offset = off;
684 lr->lr_length = len;
685 lr->lr_blkoff = 0;
686 BP_ZERO(&lr->lr_blkptr);
688 itx->itx_private = ZTOZSB(zp);
689 itx->itx_sync = (zp->z_sync_cnt != 0);
690 itx->itx_gen = gen;
692 itx->itx_callback = callback;
693 itx->itx_callback_data = callback_data;
697 resid -= len;
701 dsl_pool_wrlog_count(zilog->zl_dmu_pool, size, tx->tx_txg);
715 if (zil_replaying(zilog, tx) || zp->z_unlinked ||
720 lr = (lr_truncate_t *)&itx->itx_lr;
721 lr->lr_foid = zp->z_id;
722 lr->lr_offset = off;
723 lr->lr_length = len;
725 itx->itx_sync = (zp->z_sync_cnt != 0);
742 if (zil_replaying(zilog, tx) || zp->z_unlinked)
750 if (vap->va_mask & ATTR_XVATTR)
751 recsize = sizeof (*lr) + ZIL_XVAT_SIZE(xvap->xva_mapsize);
754 recsize += fuidp->z_domain_str_sz;
757 lr = (lr_setattr_t *)&itx->itx_lr;
758 lr->lr_foid = zp->z_id;
759 lr->lr_mask = (uint64_t)mask_applied;
760 lr->lr_mode = (uint64_t)vap->va_mode;
761 if ((mask_applied & ATTR_UID) && IS_EPHEMERAL(vap->va_uid))
762 lr->lr_uid = fuidp->z_fuid_owner;
764 lr->lr_uid = (uint64_t)vap->va_uid;
766 if ((mask_applied & ATTR_GID) && IS_EPHEMERAL(vap->va_gid))
767 lr->lr_gid = fuidp->z_fuid_group;
769 lr->lr_gid = (uint64_t)vap->va_gid;
771 lr->lr_size = (uint64_t)vap->va_size;
772 ZFS_TIME_ENCODE(&vap->va_atime, lr->lr_atime);
773 ZFS_TIME_ENCODE(&vap->va_mtime, lr->lr_mtime);
774 start = &lr->lr_data[0];
775 if (vap->va_mask & ATTR_XVATTR) {
777 start = &lr->lr_data[ZIL_XVAT_SIZE(xvap->xva_mapsize)];
787 itx->itx_sync = (zp->z_sync_cnt != 0);
803 if (zil_replaying(zilog, tx) || zp->z_unlinked)
809 lr = (lr_setsaxattr_t *)&itx->itx_lr;
810 lr->lr_foid = zp->z_id;
811 memcpy(&lr->lr_data[0], name, namelen);
813 memcpy(&lr->lr_data[namelen], value, size);
814 lr->lr_size = size;
816 lr->lr_size = 0;
819 itx->itx_sync = (zp->z_sync_cnt != 0);
836 size_t aclbytes = vsecp->vsa_aclentsz;
838 if (zil_replaying(zilog, tx) || zp->z_unlinked)
841 txtype = (ZTOZSB(zp)->z_version < ZPL_VERSION_FUID) ?
851 (fuidp ? fuidp->z_domain_str_sz : 0) +
852 sizeof (uint64_t) * (fuidp ? fuidp->z_fuid_cnt : 0);
856 lr = (lr_acl_t *)&itx->itx_lr;
857 lr->lr_foid = zp->z_id;
859 lr->lr_acl_bytes = aclbytes;
860 lr->lr_domcnt = fuidp ? fuidp->z_domain_cnt : 0;
861 lr->lr_fuidcnt = fuidp ? fuidp->z_fuid_cnt : 0;
862 if (vsecp->vsa_mask & VSA_ACE_ACLFLAGS)
863 lr->lr_acl_flags = (uint64_t)vsecp->vsa_aclflags;
865 lr->lr_acl_flags = 0;
867 lr->lr_aclcnt = (uint64_t)vsecp->vsa_aclcnt;
871 memcpy(&lrv0->lr_data[0], vsecp->vsa_aclentp, aclbytes);
873 uint8_t *start = &lr->lr_data[0];
875 memcpy(start, vsecp->vsa_aclentp, aclbytes);
877 start = &lr->lr_data[ZIL_ACE_LENGTH(aclbytes)];
885 itx->itx_sync = (zp->z_sync_cnt != 0);
894 uint64_t off, uint64_t len, uint64_t blksz, const blkptr_t *bps,
902 if (zil_replaying(zilog, tx) || zp->z_unlinked)
907 while (nbps > 0) {
908 partnbps = MIN(nbps, max_log_data / sizeof (bps[0]));
914 sizeof (*lr) + sizeof (bps[0]) * partnbps);
915 lr = (lr_clone_range_t *)&itx->itx_lr;
916 lr->lr_foid = zp->z_id;
917 lr->lr_offset = off;
918 lr->lr_length = partlen;
919 lr->lr_blksz = blksz;
920 lr->lr_nbps = partnbps;
921 memcpy(lr->lr_bps, bps, sizeof (bps[0]) * partnbps);
923 itx->itx_sync = (zp->z_sync_cnt != 0);
927 bps += partnbps;
929 nbps -= partnbps;
932 len -= partlen;
937 "Largest data block to write to zil");