aboutsummaryrefslogtreecommitdiff
path: root/module/zfs/arc.c
diff options
context:
space:
mode:
authorMatthew Macy <mmacy@freebsd.org>2020-12-13 00:00:00 +0000
committerGitHub <noreply@github.com>2020-12-13 00:00:00 +0000
commit923d730329290c7dc8ae5b4d27c6ed01d24d9f4c (patch)
tree2e285cd70b66efb49072dfb7f3167e75617b3717 /module/zfs/arc.c
parentc76a40bfdaedd1eb2c037dfdf822ea5c4db97397 (diff)
downloadsrc-923d730329290c7dc8ae5b4d27c6ed01d24d9f4c.tar.gz
src-923d730329290c7dc8ae5b4d27c6ed01d24d9f4c.zip
Diffstat (limited to 'module/zfs/arc.c')
-rw-r--r--module/zfs/arc.c7
1 files changed, 3 insertions, 4 deletions
diff --git a/module/zfs/arc.c b/module/zfs/arc.c
index 1bc27391c941..8519eda30df7 100644
--- a/module/zfs/arc.c
+++ b/module/zfs/arc.c
@@ -5759,7 +5759,7 @@ arc_read_done(zio_t *zio)
*/
int callback_cnt = 0;
for (acb = callback_list; acb != NULL; acb = acb->acb_next) {
- if (!acb->acb_done)
+ if (!acb->acb_done || acb->acb_nobuf)
continue;
callback_cnt++;
@@ -5999,7 +5999,7 @@ top:
}
ASSERT(*arc_flags & ARC_FLAG_NOWAIT);
- if (done && !no_buf) {
+ if (done) {
arc_callback_t *acb = NULL;
acb = kmem_zalloc(sizeof (arc_callback_t),
@@ -6009,6 +6009,7 @@ top:
acb->acb_compressed = compressed_read;
acb->acb_encrypted = encrypted_read;
acb->acb_noauth = noauth_read;
+ acb->acb_nobuf = no_buf;
acb->acb_zb = *zb;
if (pio != NULL)
acb->acb_zio_dummy = zio_null(pio,
@@ -6018,8 +6019,6 @@ top:
acb->acb_zio_head = head_zio;
acb->acb_next = hdr->b_l1hdr.b_acb;
hdr->b_l1hdr.b_acb = acb;
- mutex_exit(hash_lock);
- goto out;
}
mutex_exit(hash_lock);
goto out;