Commit 5cf00fcd authored by NeilBrown's avatar NeilBrown

md/raid10: collect some geometry fields into a dedicated structure.

We will shortly be adding reshape support for RAID10 which will
require it having 2 concurrent geometries (before and after).
To make that easier, collect most geometry fields into 'struct geom'
and access them from there.  Then we will more easily be able to add
a second set of fields.

Note that 'copies' is not in this struct and so cannot be changed.
There is little need to change this number and doing so is a lot
more difficult as it requires reallocating more things.
So leave it out for now.
Signed-off-by: default avatarNeilBrown <neilb@suse.de>
parent b5254dd5
This diff is collapsed.
...@@ -14,33 +14,34 @@ struct mirror_info { ...@@ -14,33 +14,34 @@ struct mirror_info {
struct r10conf { struct r10conf {
struct mddev *mddev; struct mddev *mddev;
struct mirror_info *mirrors; struct mirror_info *mirrors;
int raid_disks;
spinlock_t device_lock; spinlock_t device_lock;
/* geometry */ /* geometry */
int near_copies; /* number of copies laid out struct geom {
int raid_disks;
int near_copies; /* number of copies laid out
* raid0 style */ * raid0 style */
int far_copies; /* number of copies laid out int far_copies; /* number of copies laid out
* at large strides across drives * at large strides across drives
*/ */
int far_offset; /* far_copies are offset by 1 int far_offset; /* far_copies are offset by 1
* stripe instead of many * stripe instead of many
*/ */
int copies; /* near_copies * far_copies. sector_t stride; /* distance between far copies.
* must be <= raid_disks
*/
sector_t stride; /* distance between far copies.
* This is size / far_copies unless * This is size / far_copies unless
* far_offset, in which case it is * far_offset, in which case it is
* 1 stripe. * 1 stripe.
*/ */
int chunk_shift; /* shift from chunks to sectors */
sector_t chunk_mask;
} geo;
int copies; /* near_copies * far_copies.
* must be <= raid_disks
*/
sector_t dev_sectors; /* temp copy of sector_t dev_sectors; /* temp copy of
* mddev->dev_sectors */ * mddev->dev_sectors */
int chunk_shift; /* shift from chunks to sectors */
sector_t chunk_mask;
struct list_head retry_list; struct list_head retry_list;
/* queue pending writes and submit them on unplug */ /* queue pending writes and submit them on unplug */
struct bio_list pending_bio_list; struct bio_list pending_bio_list;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment