mirror of
https://git.proxmox.com/git/mirror_zfs.git
synced 2025-01-07 16:50:26 +03:00
zfs_log_write: simplify data copying code for WR_COPIED records
lr_write_t records that are WR_COPIED have the record data directly appended to them (see lr_write_t type definition). The data is copied from the debuf using dmu_read_by_dnode. This function was called, only for WR_COPIED records, as part of a short-circuiting if-statement's if-expression. I found this side-effectful call to dmu_read_by_dnode pretty hard to spot. This patch improves readability by moving the call to its own line. Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov> Reviewed-by: George Wilson <gwilson@delphix.com> Signed-off-by: Christian Schwarz <me@cschwarz.com> Closes #10956
This commit is contained in:
parent
c70c6e004e
commit
ba28919168
@ -584,15 +584,22 @@ zfs_log_write(zilog_t *zilog, dmu_tx_t *tx, int txtype,
|
|||||||
(wr_state == WR_COPIED ? len : 0));
|
(wr_state == WR_COPIED ? len : 0));
|
||||||
lr = (lr_write_t *)&itx->itx_lr;
|
lr = (lr_write_t *)&itx->itx_lr;
|
||||||
|
|
||||||
DB_DNODE_ENTER(db);
|
/*
|
||||||
if (wr_state == WR_COPIED && dmu_read_by_dnode(DB_DNODE(db),
|
* For WR_COPIED records, copy the data into the lr_write_t.
|
||||||
off, len, lr + 1, DMU_READ_NO_PREFETCH) != 0) {
|
*/
|
||||||
zil_itx_destroy(itx);
|
if (wr_state == WR_COPIED) {
|
||||||
itx = zil_itx_create(txtype, sizeof (*lr));
|
int err;
|
||||||
lr = (lr_write_t *)&itx->itx_lr;
|
DB_DNODE_ENTER(db);
|
||||||
wr_state = WR_NEED_COPY;
|
err = dmu_read_by_dnode(DB_DNODE(db), off, len, lr + 1,
|
||||||
|
DMU_READ_NO_PREFETCH);
|
||||||
|
if (err != 0) {
|
||||||
|
zil_itx_destroy(itx);
|
||||||
|
itx = zil_itx_create(txtype, sizeof (*lr));
|
||||||
|
lr = (lr_write_t *)&itx->itx_lr;
|
||||||
|
wr_state = WR_NEED_COPY;
|
||||||
|
}
|
||||||
|
DB_DNODE_EXIT(db);
|
||||||
}
|
}
|
||||||
DB_DNODE_EXIT(db);
|
|
||||||
|
|
||||||
itx->itx_wr_state = wr_state;
|
itx->itx_wr_state = wr_state;
|
||||||
lr->lr_foid = zp->z_id;
|
lr->lr_foid = zp->z_id;
|
||||||
|
Loading…
Reference in New Issue
Block a user