summaryrefslogtreecommitdiffstats
path: root/module/zfs/arc.c
diff options
context:
space:
mode:
authorGeorge Amanakis <[email protected]>2020-09-22 19:08:05 -0400
committerGitHub <[email protected]>2020-09-22 16:08:05 -0700
commitc6f5e9d92f1af425cc190fe1d0c8946170bbb570 (patch)
tree10f1cc6a7cff66e937dcc5d2fcd3c8cd3969a661 /module/zfs/arc.c
parent0daa0320e99437c72aac946500f445875e476010 (diff)
Restore clearing of L2CACHE flag in arc_read_done()
Commit 45152dc removed clearing of L2CACHE flag in arc_read_done() and moved related code in l2arc_write_eligible(). After careful code inspection arc_read_done() is not bypassed in the case of prefetches. Thus restore the old behavior. Reviewed-by: Brian Behlendorf <[email protected]> Reviewed-by: adam moss <[email protected]> Signed-off-by: George Amanakis <[email protected]> Closes #10951
Diffstat (limited to 'module/zfs/arc.c')
-rw-r--r--module/zfs/arc.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/module/zfs/arc.c b/module/zfs/arc.c
index 53ebf629e..1cce068e6 100644
--- a/module/zfs/arc.c
+++ b/module/zfs/arc.c
@@ -5724,6 +5724,8 @@ arc_read_done(zio_t *zio)
}
arc_hdr_clear_flags(hdr, ARC_FLAG_L2_EVICTED);
+ if (l2arc_noprefetch && HDR_PREFETCH(hdr))
+ arc_hdr_clear_flags(hdr, ARC_FLAG_L2CACHE);
callback_list = hdr->b_l1hdr.b_acb;
ASSERT3P(callback_list, !=, NULL);
@@ -7990,11 +7992,9 @@ l2arc_write_eligible(uint64_t spa_guid, arc_buf_hdr_t *hdr)
* 2. is already cached on the L2ARC.
* 3. has an I/O in progress (it may be an incomplete read).
* 4. is flagged not eligible (zfs property).
- * 5. is a prefetch and l2arc_noprefetch is set.
*/
if (hdr->b_spa != spa_guid || HDR_HAS_L2HDR(hdr) ||
- HDR_IO_IN_PROGRESS(hdr) || !HDR_L2CACHE(hdr) ||
- (l2arc_noprefetch && HDR_PREFETCH(hdr)))
+ HDR_IO_IN_PROGRESS(hdr) || !HDR_L2CACHE(hdr))
return (B_FALSE);
return (B_TRUE);