- dmu_tx_abort(tx);
- goto top;
- }
- dmu_tx_abort(tx);
- goto out;
- }
-
- va = kmap(pp);
- ASSERT3U(len, <=, PAGESIZE);
- dmu_write(zsb->z_os, zp->z_id, off, len, va, tx);
- kunmap(pp);
-
- if (err == 0) {
- uint64_t mtime[2], ctime[2];
- sa_bulk_attr_t bulk[3];
- int count = 0;
-
- SA_ADD_BULK_ATTR(bulk, count, SA_ZPL_MTIME(zsb), NULL,
- &mtime, 16);
- SA_ADD_BULK_ATTR(bulk, count, SA_ZPL_CTIME(zsb), NULL,
- &ctime, 16);
- SA_ADD_BULK_ATTR(bulk, count, SA_ZPL_FLAGS(zsb), NULL,
- &zp->z_pflags, 8);
- zfs_tstamp_update_setup(zp, CONTENT_MODIFIED, mtime, ctime,
- B_TRUE);
- zfs_log_write(zsb->z_log, tx, TX_WRITE, zp, off, len, 0);
- }
- dmu_tx_commit(tx);