diff options
author | Matthew Macy <mmacy@freebsd.org> | 2020-12-13 00:00:00 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-12-13 00:00:00 +0000 |
commit | 923d730329290c7dc8ae5b4d27c6ed01d24d9f4c (patch) | |
tree | 2e285cd70b66efb49072dfb7f3167e75617b3717 /module/zfs/arc.c | |
parent | c76a40bfdaedd1eb2c037dfdf822ea5c4db97397 (diff) | |
download | src-923d730329290c7dc8ae5b4d27c6ed01d24d9f4c.tar.gz src-923d730329290c7dc8ae5b4d27c6ed01d24d9f4c.zip |
Diffstat (limited to 'module/zfs/arc.c')
-rw-r--r-- | module/zfs/arc.c | 7 |
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; |