aboutsummaryrefslogtreecommitdiffstats
path: root/include/sys/arc.h
diff options
context:
space:
mode:
authorMatthew Ahrens <[email protected]>2015-12-26 22:10:31 +0100
committerBrian Behlendorf <[email protected]>2016-01-12 09:02:33 -0800
commit7f60329a261bd48558a498fb10e9b29638eab33b (patch)
tree5e6616fbac91442ce424ca44a8288bf9f46db3cc /include/sys/arc.h
parentab5cbbd1078bf007b50b084bb31fd58c7c5652f4 (diff)
Illumos 5987 - zfs prefetch code needs work
5987 zfs prefetch code needs work Reviewed by: Adam Leventhal <[email protected]> Reviewed by: George Wilson <[email protected]> Reviewed by: Paul Dagnelie <[email protected]> Approved by: Gordon Ross <[email protected]> References: https://www.illumos.org/issues/5987 zfs prefetch code needs work illumos/illumos-gate@cf6106c 5987 zfs prefetch code needs work Porting notes: - [module/zfs/dbuf.c] - 5f6d0b6 Handle block pointers with a corrupt logical size - [module/zfs/dmu_zfetch.c] - c65aa5b Fix gcc missing parenthesis warnings - 428870f Update core ZFS code from build 121 to build 141. - 79c76d5 Change KM_PUSHPAGE -> KM_SLEEP - b8d06fc Switch KM_SLEEP to KM_PUSHPAGE - Account for ISO C90 - mixed declarations and code - warnings - Module parameters (new/changed): - Replaced zfetch_block_cap with zfetch_max_distance (Max bytes to prefetch per stream (default 8MB; 8 * 1024 * 1024)) - Preserved zfs_prefetch_disable as 'int' for consistency with existing Linux module options. - [include/sys/trace_arc.h] - Added new tracepoints - DEFINE_ARC_BUF_HDR_EVENT(zfs_arc__sync__wait__for__async); - DEFINE_ARC_BUF_HDR_EVENT(zfs_arc__demand__hit__predictive__prefetch); - [man/man5/zfs-module-parameters.5] - Updated man page Ported-by: kernelOfTruth [email protected] Signed-off-by: Brian Behlendorf <[email protected]>
Diffstat (limited to 'include/sys/arc.h')
-rw-r--r--include/sys/arc.h28
1 files changed, 16 insertions, 12 deletions
diff --git a/include/sys/arc.h b/include/sys/arc.h
index db7a64aa2..5780554b5 100644
--- a/include/sys/arc.h
+++ b/include/sys/arc.h
@@ -84,27 +84,31 @@ typedef enum arc_flags
ARC_FLAG_CACHED = 1 << 4, /* I/O was in cache */
ARC_FLAG_L2CACHE = 1 << 5, /* cache in L2ARC */
ARC_FLAG_L2COMPRESS = 1 << 6, /* compress in L2ARC */
+ ARC_FLAG_PREDICTIVE_PREFETCH = 1 << 7, /* I/O from zfetch */
/*
* Private ARC flags. These flags are private ARC only flags that
* will show up in b_flags in the arc_hdr_buf_t. These flags should
* only be set by ARC code.
*/
- ARC_FLAG_IN_HASH_TABLE = 1 << 7, /* buffer is hashed */
- ARC_FLAG_IO_IN_PROGRESS = 1 << 8, /* I/O in progress */
- ARC_FLAG_IO_ERROR = 1 << 9, /* I/O failed for buf */
- ARC_FLAG_FREED_IN_READ = 1 << 10, /* freed during read */
- ARC_FLAG_BUF_AVAILABLE = 1 << 11, /* block not in use */
- ARC_FLAG_INDIRECT = 1 << 12, /* indirect block */
- ARC_FLAG_L2_WRITING = 1 << 13, /* write in progress */
- ARC_FLAG_L2_EVICTED = 1 << 14, /* evicted during I/O */
- ARC_FLAG_L2_WRITE_HEAD = 1 << 15, /* head of write list */
+ ARC_FLAG_IN_HASH_TABLE = 1 << 8, /* buffer is hashed */
+ ARC_FLAG_IO_IN_PROGRESS = 1 << 9, /* I/O in progress */
+ ARC_FLAG_IO_ERROR = 1 << 10, /* I/O failed for buf */
+ ARC_FLAG_FREED_IN_READ = 1 << 11, /* freed during read */
+ ARC_FLAG_BUF_AVAILABLE = 1 << 12, /* block not in use */
+ ARC_FLAG_INDIRECT = 1 << 13, /* indirect block */
+ /* Indicates that block was read with ASYNC priority. */
+ ARC_FLAG_PRIO_ASYNC_READ = 1 << 14,
+ ARC_FLAG_L2_WRITING = 1 << 15, /* write in progress */
+ ARC_FLAG_L2_EVICTED = 1 << 16, /* evicted during I/O */
+ ARC_FLAG_L2_WRITE_HEAD = 1 << 17, /* head of write list */
/* indicates that the buffer contains metadata (otherwise, data) */
- ARC_FLAG_BUFC_METADATA = 1 << 16,
+ ARC_FLAG_BUFC_METADATA = 1 << 18,
/* Flags specifying whether optional hdr struct fields are defined */
- ARC_FLAG_HAS_L1HDR = 1 << 17,
- ARC_FLAG_HAS_L2HDR = 1 << 18,
+ ARC_FLAG_HAS_L1HDR = 1 << 19,
+ ARC_FLAG_HAS_L2HDR = 1 << 20,
+
} arc_flags_t;
struct arc_buf {