From 1e4732cbda8eb0c95901ed9f924b5a13bf24c76e Mon Sep 17 00:00:00 2001 From: Matthew Macy Date: Wed, 9 Dec 2020 15:05:06 -0800 Subject: Decouple arc_read_done callback from arc buf instantiation Add ARC_FLAG_NO_BUF to indicate that a buffer need not be instantiated. This fixes a ~20% performance regression on cached reads due to zfetch changes. Reviewed-by: Tony Nguyen Reviewed-by: Brian Behlendorf Reviewed-by: Matthew Ahrens Signed-off-by: Matt Macy Closes #11220 Closes #11232 --- include/sys/arc.h | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'include/sys/arc.h') diff --git a/include/sys/arc.h b/include/sys/arc.h index a0852b4d5..9ade1a432 100644 --- a/include/sys/arc.h +++ b/include/sys/arc.h @@ -154,6 +154,11 @@ typedef enum arc_flags */ ARC_FLAG_CACHED_ONLY = 1 << 22, + /* + * Don't instantiate an arc_buf_t for arc_read_done. + */ + ARC_FLAG_NO_BUF = 1 << 23, + /* * The arc buffer's compression mode is stored in the top 7 bits of the * flags field, so these dummy flags are included so that MDB can -- cgit v1.2.3