summaryrefslogtreecommitdiffstats
path: root/include/sys/zio.h
diff options
context:
space:
mode:
authorDon Brady <[email protected]>2017-01-12 12:52:56 -0700
committerBrian Behlendorf <[email protected]>2017-01-12 11:52:56 -0800
commit4e21fd060a567a9c8a1bd0e640985412181c1e33 (patch)
tree622424c5f98ac43cd93d8af221775a77df161856 /include/sys/zio.h
parent5727b00e06a4208a7040489d582f13bc3c183384 (diff)
OpenZFS 7303 - dynamic metaslab selection
This change introduces a new weighting algorithm to improve metaslab selection. The new weighting algorithm relies on the SPACEMAP_HISTOGRAM feature. As a result, the metaslab weight now encodes the type of weighting algorithm used (size-based vs segment-based). Porting Notes: The metaslab allocation tracing code is conditionally removed on linux (dependent on mdb debugger). Authored by: George Wilson <[email protected]> Reviewed by: Alex Reece <[email protected]> Reviewed by: Chris Siden <[email protected]> Reviewed by: Dan Kimmel <[email protected]> Reviewed by: Matthew Ahrens <[email protected]> Reviewed by: Paul Dagnelie <[email protected]> Reviewed by: Pavel Zakharov [email protected] Reviewed by: Prakash Surya <[email protected]> Reviewed by: Don Brady <[email protected]> Reviewed-by: Brian Behlendorf <[email protected]> Ported-by: Don Brady <[email protected]> OpenZFS-issue: https://www.illumos.org/issues/7303 OpenZFS-commit: https://github.com/openzfs/openzfs/commit/d5190931bd Closes #5404
Diffstat (limited to 'include/sys/zio.h')
-rw-r--r--include/sys/zio.h6
1 files changed, 6 insertions, 0 deletions
diff --git a/include/sys/zio.h b/include/sys/zio.h
index 6c5153dcf..1f8708e5a 100644
--- a/include/sys/zio.h
+++ b/include/sys/zio.h
@@ -358,6 +358,11 @@ typedef int zio_pipe_stage_t(zio_t *zio);
#define ZIO_REEXECUTE_NOW 0x01
#define ZIO_REEXECUTE_SUSPEND 0x02
+typedef struct zio_alloc_list {
+ list_t zal_list;
+ uint64_t zal_size;
+} zio_alloc_list_t;
+
typedef struct zio_link {
zio_t *zl_parent;
zio_t *zl_child;
@@ -417,6 +422,7 @@ struct zio {
avl_node_t io_queue_node;
avl_node_t io_offset_node;
avl_node_t io_alloc_node;
+ zio_alloc_list_t io_alloc_list;
/* Internal pipeline state */
enum zio_flag io_flags;