mirror of
https://git.proxmox.com/git/mirror_zfs.git
synced 2026-05-22 02:27:36 +03:00
Pass flags to more DMU write/hold functions
Over the time many of DMU functions got flags argument to control prefetch, caching, etc. Few functions though left without it, even though closer look shown that many of them do not require prefetch due to their access pattern. This patch adds the flags argument to dmu_write(), dmu_buf_hold_array() and dmu_buf_hold_array_by_bonus(), passing DMU_READ_NO_PREFETCH where applicable. I am going to also pass DMU_UNCACHEDIO to some of them later. Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov> Reviewed-by: Rob Norris <robn@despairlabs.com> Signed-off-by: Alexander Motin <alexander.motin@TrueNAS.com> Closes #17872
This commit is contained in:
committed by
Brian Behlendorf
parent
9a9e06e5dd
commit
5847626175
+10
-5
@@ -2306,7 +2306,8 @@ ztest_replay_write(void *arg1, void *arg2, boolean_t byteswap)
|
||||
}
|
||||
|
||||
if (abuf == NULL) {
|
||||
dmu_write(os, lr->lr_foid, offset, length, data, tx);
|
||||
dmu_write(os, lr->lr_foid, offset, length, data, tx,
|
||||
DMU_READ_PREFETCH);
|
||||
} else {
|
||||
memcpy(abuf->b_data, data, length);
|
||||
VERIFY0(dmu_assign_arcbuf_by_dbuf(db, offset, abuf, tx, 0));
|
||||
@@ -5243,7 +5244,8 @@ ztest_dmu_read_write(ztest_ds_t *zd, uint64_t id)
|
||||
* We've verified all the old bufwads, and made new ones.
|
||||
* Now write them out.
|
||||
*/
|
||||
dmu_write(os, packobj, packoff, packsize, packbuf, tx);
|
||||
dmu_write(os, packobj, packoff, packsize, packbuf, tx,
|
||||
DMU_READ_PREFETCH);
|
||||
|
||||
if (freeit) {
|
||||
if (ztest_opts.zo_verbose >= 7) {
|
||||
@@ -5258,7 +5260,8 @@ ztest_dmu_read_write(ztest_ds_t *zd, uint64_t id)
|
||||
" txg %"PRIx64"\n",
|
||||
bigoff, bigsize, txg);
|
||||
}
|
||||
dmu_write(os, bigobj, bigoff, bigsize, bigbuf, tx);
|
||||
dmu_write(os, bigobj, bigoff, bigsize, bigbuf, tx,
|
||||
DMU_READ_PREFETCH);
|
||||
}
|
||||
|
||||
dmu_tx_commit(tx);
|
||||
@@ -5513,7 +5516,8 @@ ztest_dmu_read_write_zcopy(ztest_ds_t *zd, uint64_t id)
|
||||
* We've verified all the old bufwads, and made new ones.
|
||||
* Now write them out.
|
||||
*/
|
||||
dmu_write(os, packobj, packoff, packsize, packbuf, tx);
|
||||
dmu_write(os, packobj, packoff, packsize, packbuf, tx,
|
||||
DMU_READ_PREFETCH);
|
||||
if (ztest_opts.zo_verbose >= 7) {
|
||||
(void) printf("writing offset %"PRIx64" size %"PRIx64""
|
||||
" txg %"PRIx64"\n",
|
||||
@@ -6119,7 +6123,8 @@ ztest_dmu_commit_callbacks(ztest_ds_t *zd, uint64_t id)
|
||||
"future leak: got %"PRIu64", open txg is %"PRIu64"",
|
||||
old_txg, txg);
|
||||
|
||||
dmu_write(os, od->od_object, 0, sizeof (uint64_t), &txg, tx);
|
||||
dmu_write(os, od->od_object, 0, sizeof (uint64_t), &txg, tx,
|
||||
DMU_READ_PREFETCH);
|
||||
|
||||
(void) mutex_enter(&zcl.zcl_callbacks_lock);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user