]> git.proxmox.com Git - mirror_zfs.git/commit
Use a struct to organize metaslab-group-allocator fields
authorMatthew Ahrens <mahrens@delphix.com>
Wed, 22 Apr 2020 17:26:56 +0000 (10:26 -0700)
committerGitHub <noreply@github.com>
Wed, 22 Apr 2020 17:26:56 +0000 (10:26 -0700)
commit32d805c3e2888cbb71956454ced38b4882c27c00
tree931f46905fb0558788fe390bb54657845f69d38f
parenta84c92f93364116b5e7f4685eb6d665526251a51
Use a struct to organize metaslab-group-allocator fields

Each metaslab group (of which there is one per top-level vdev) has
several (4, by default) "metaslab group allocators".  Each "allocator"
has its own metaslab that it prefers to allocate from (the "primary"
allocator), and each can perform allocations concurrently with the other
allocators.  In addition to the primary metaslab, there are several
other fields that need to be tracked separately for each allocator.
These are currently stored as several arrays in the metaslab_group_t,
each array indexed by allocator number.

This change organizes all the metaslab-group-allocator-specific fields
into a new struct, metaslab_group_allocator_t.  The metaslab_group_t now
needs only one array indexed by the allocator number - which contains
the metaslab_group_allocator_t's.

Reviewed-by: Paul Dagnelie <pcd@delphix.com>
Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: Matthew Ahrens <mahrens@delphix.com>
Closes #10213
include/sys/metaslab_impl.h
module/zfs/metaslab.c
module/zfs/spa.c