mddevRegular
4.4: ✅struct mddev {
void *private;
struct md_personality *pers;
dev_t unit;
int md_minor;
struct list_head disks;
long unsigned int flags;
int suspended;
atomic_t active_io;
int ro;
int sysfs_active;
int ready;
struct gendisk *gendisk;
struct kobject kobj;
int hold_active;
int major_version;
int minor_version;
int patch_version;
int persistent;
int external;
char metadata_type[17];
int chunk_sectors;
time_t ctime;
time_t utime;
int level;
int layout;
char clevel[16];
int raid_disks;
int max_disks;
sector_t dev_sectors;
sector_t array_sectors;
int external_size;
__u64 events;
int can_decrease_events;
char uuid[16];
sector_t reshape_position;
int delta_disks;
int new_level;
int new_layout;
int new_chunk_sectors;
int reshape_backwards;
struct md_thread *thread;
struct md_thread *sync_thread;
char *last_sync_action;
sector_t curr_resync;
sector_t curr_resync_completed;
long unsigned int resync_mark;
sector_t resync_mark_cnt;
sector_t curr_mark_cnt;
sector_t resync_max_sectors;
atomic64_t resync_mismatches;
sector_t suspend_lo;
sector_t suspend_hi;
int sync_speed_min;
int sync_speed_max;
int parallel_resync;
int ok_start_degraded;
long unsigned int recovery;
int recovery_disabled;
int in_sync;
struct mutex open_mutex;
struct mutex reconfig_mutex;
atomic_t active;
atomic_t openers;
int changed;
int degraded;
atomic_t recovery_active;
wait_queue_head_t recovery_wait;
sector_t recovery_cp;
sector_t resync_min;
sector_t resync_max;
struct kernfs_node *sysfs_state;
struct kernfs_node *sysfs_action;
struct work_struct del_work;
spinlock_t lock;
wait_queue_head_t sb_wait;
atomic_t pending_writes;
unsigned int safemode;
unsigned int safemode_delay;
struct timer_list safemode_timer;
atomic_t writes_pending;
struct request_queue *queue;
struct bitmap *bitmap;
struct (anon) bitmap_info;
atomic_t max_corr_read_errors;
struct list_head all_mddevs;
struct attribute_group *to_remove;
struct bio_set *bio_set;
struct bio *flush_bio;
atomic_t flush_pending;
struct work_struct flush_work;
struct work_struct event_work;
void (*sync_super)(struct mddev *, struct md_rdev *);
struct md_cluster_info *cluster_info;
};
4.8: ✅struct mddev {
void *private;
struct md_personality *pers;
dev_t unit;
int md_minor;
struct list_head disks;
long unsigned int flags;
int suspended;
atomic_t active_io;
int ro;
int sysfs_active;
struct gendisk *gendisk;
struct kobject kobj;
int hold_active;
int major_version;
int minor_version;
int patch_version;
int persistent;
int external;
char metadata_type[17];
int chunk_sectors;
time64_t ctime;
time64_t utime;
int level;
int layout;
char clevel[16];
int raid_disks;
int max_disks;
sector_t dev_sectors;
sector_t array_sectors;
int external_size;
__u64 events;
int can_decrease_events;
char uuid[16];
sector_t reshape_position;
int delta_disks;
int new_level;
int new_layout;
int new_chunk_sectors;
int reshape_backwards;
struct md_thread *thread;
struct md_thread *sync_thread;
char *last_sync_action;
sector_t curr_resync;
sector_t curr_resync_completed;
long unsigned int resync_mark;
sector_t resync_mark_cnt;
sector_t curr_mark_cnt;
sector_t resync_max_sectors;
atomic64_t resync_mismatches;
sector_t suspend_lo;
sector_t suspend_hi;
int sync_speed_min;
int sync_speed_max;
int parallel_resync;
int ok_start_degraded;
long unsigned int recovery;
int recovery_disabled;
int in_sync;
struct mutex open_mutex;
struct mutex reconfig_mutex;
atomic_t active;
atomic_t openers;
int changed;
int degraded;
atomic_t recovery_active;
wait_queue_head_t recovery_wait;
sector_t recovery_cp;
sector_t resync_min;
sector_t resync_max;
struct kernfs_node *sysfs_state;
struct kernfs_node *sysfs_action;
struct work_struct del_work;
spinlock_t lock;
wait_queue_head_t sb_wait;
atomic_t pending_writes;
unsigned int safemode;
unsigned int safemode_delay;
struct timer_list safemode_timer;
atomic_t writes_pending;
struct request_queue *queue;
struct bitmap *bitmap;
struct (anon) bitmap_info;
atomic_t max_corr_read_errors;
struct list_head all_mddevs;
struct attribute_group *to_remove;
struct bio_set *bio_set;
struct bio *flush_bio;
atomic_t flush_pending;
struct work_struct flush_work;
struct work_struct event_work;
void (*sync_super)(struct mddev *, struct md_rdev *);
struct md_cluster_info *cluster_info;
unsigned int good_device_nr;
};
4.10: ✅struct mddev {
void *private;
struct md_personality *pers;
dev_t unit;
int md_minor;
struct list_head disks;
long unsigned int flags;
long unsigned int sb_flags;
int suspended;
atomic_t active_io;
int ro;
int sysfs_active;
struct gendisk *gendisk;
struct kobject kobj;
int hold_active;
int major_version;
int minor_version;
int patch_version;
int persistent;
int external;
char metadata_type[17];
int chunk_sectors;
time64_t ctime;
time64_t utime;
int level;
int layout;
char clevel[16];
int raid_disks;
int max_disks;
sector_t dev_sectors;
sector_t array_sectors;
int external_size;
__u64 events;
int can_decrease_events;
char uuid[16];
sector_t reshape_position;
int delta_disks;
int new_level;
int new_layout;
int new_chunk_sectors;
int reshape_backwards;
struct md_thread *thread;
struct md_thread *sync_thread;
char *last_sync_action;
sector_t curr_resync;
sector_t curr_resync_completed;
long unsigned int resync_mark;
sector_t resync_mark_cnt;
sector_t curr_mark_cnt;
sector_t resync_max_sectors;
atomic64_t resync_mismatches;
sector_t suspend_lo;
sector_t suspend_hi;
int sync_speed_min;
int sync_speed_max;
int parallel_resync;
int ok_start_degraded;
long unsigned int recovery;
int recovery_disabled;
int in_sync;
struct mutex open_mutex;
struct mutex reconfig_mutex;
atomic_t active;
atomic_t openers;
int changed;
int degraded;
atomic_t recovery_active;
wait_queue_head_t recovery_wait;
sector_t recovery_cp;
sector_t resync_min;
sector_t resync_max;
struct kernfs_node *sysfs_state;
struct kernfs_node *sysfs_action;
struct work_struct del_work;
spinlock_t lock;
wait_queue_head_t sb_wait;
atomic_t pending_writes;
unsigned int safemode;
unsigned int safemode_delay;
struct timer_list safemode_timer;
atomic_t writes_pending;
struct request_queue *queue;
struct bitmap *bitmap;
struct (anon) bitmap_info;
atomic_t max_corr_read_errors;
struct list_head all_mddevs;
struct attribute_group *to_remove;
struct bio_set *bio_set;
struct bio *flush_bio;
atomic_t flush_pending;
struct work_struct flush_work;
struct work_struct event_work;
void (*sync_super)(struct mddev *, struct md_rdev *);
struct md_cluster_info *cluster_info;
unsigned int good_device_nr;
};
4.13: ✅struct mddev {
void *private;
struct md_personality *pers;
dev_t unit;
int md_minor;
struct list_head disks;
long unsigned int flags;
long unsigned int sb_flags;
int suspended;
atomic_t active_io;
int ro;
int sysfs_active;
struct gendisk *gendisk;
struct kobject kobj;
int hold_active;
int major_version;
int minor_version;
int patch_version;
int persistent;
int external;
char metadata_type[17];
int chunk_sectors;
time64_t ctime;
time64_t utime;
int level;
int layout;
char clevel[16];
int raid_disks;
int max_disks;
sector_t dev_sectors;
sector_t array_sectors;
int external_size;
__u64 events;
int can_decrease_events;
char uuid[16];
sector_t reshape_position;
int delta_disks;
int new_level;
int new_layout;
int new_chunk_sectors;
int reshape_backwards;
struct md_thread *thread;
struct md_thread *sync_thread;
char *last_sync_action;
sector_t curr_resync;
sector_t curr_resync_completed;
long unsigned int resync_mark;
sector_t resync_mark_cnt;
sector_t curr_mark_cnt;
sector_t resync_max_sectors;
atomic64_t resync_mismatches;
sector_t suspend_lo;
sector_t suspend_hi;
int sync_speed_min;
int sync_speed_max;
int parallel_resync;
int ok_start_degraded;
long unsigned int recovery;
int recovery_disabled;
int in_sync;
struct mutex open_mutex;
struct mutex reconfig_mutex;
atomic_t active;
atomic_t openers;
int changed;
int degraded;
atomic_t recovery_active;
wait_queue_head_t recovery_wait;
sector_t recovery_cp;
sector_t resync_min;
sector_t resync_max;
struct kernfs_node *sysfs_state;
struct kernfs_node *sysfs_action;
struct work_struct del_work;
spinlock_t lock;
wait_queue_head_t sb_wait;
atomic_t pending_writes;
unsigned int safemode;
unsigned int safemode_delay;
struct timer_list safemode_timer;
struct percpu_ref writes_pending;
int sync_checkers;
struct request_queue *queue;
struct bitmap *bitmap;
struct (anon) bitmap_info;
atomic_t max_corr_read_errors;
struct list_head all_mddevs;
struct attribute_group *to_remove;
struct bio_set *bio_set;
struct bio_set *sync_set;
struct bio *flush_bio;
atomic_t flush_pending;
struct work_struct flush_work;
struct work_struct event_work;
void (*sync_super)(struct mddev *, struct md_rdev *);
struct md_cluster_info *cluster_info;
unsigned int good_device_nr;
};
4.15: ✅struct mddev {
void *private;
struct md_personality *pers;
dev_t unit;
int md_minor;
struct list_head disks;
long unsigned int flags;
long unsigned int sb_flags;
int suspended;
atomic_t active_io;
int ro;
int sysfs_active;
struct gendisk *gendisk;
struct kobject kobj;
int hold_active;
int major_version;
int minor_version;
int patch_version;
int persistent;
int external;
char metadata_type[17];
int chunk_sectors;
time64_t ctime;
time64_t utime;
int level;
int layout;
char clevel[16];
int raid_disks;
int max_disks;
sector_t dev_sectors;
sector_t array_sectors;
int external_size;
__u64 events;
int can_decrease_events;
char uuid[16];
sector_t reshape_position;
int delta_disks;
int new_level;
int new_layout;
int new_chunk_sectors;
int reshape_backwards;
struct md_thread *thread;
struct md_thread *sync_thread;
char *last_sync_action;
sector_t curr_resync;
sector_t curr_resync_completed;
long unsigned int resync_mark;
sector_t resync_mark_cnt;
sector_t curr_mark_cnt;
sector_t resync_max_sectors;
atomic64_t resync_mismatches;
sector_t suspend_lo;
sector_t suspend_hi;
int sync_speed_min;
int sync_speed_max;
int parallel_resync;
int ok_start_degraded;
long unsigned int recovery;
int recovery_disabled;
int in_sync;
struct mutex open_mutex;
struct mutex reconfig_mutex;
atomic_t active;
atomic_t openers;
int changed;
int degraded;
atomic_t recovery_active;
wait_queue_head_t recovery_wait;
sector_t recovery_cp;
sector_t resync_min;
sector_t resync_max;
struct kernfs_node *sysfs_state;
struct kernfs_node *sysfs_action;
struct work_struct del_work;
spinlock_t lock;
wait_queue_head_t sb_wait;
atomic_t pending_writes;
unsigned int safemode;
unsigned int safemode_delay;
struct timer_list safemode_timer;
struct percpu_ref writes_pending;
int sync_checkers;
struct request_queue *queue;
struct bitmap *bitmap;
struct (anon) bitmap_info;
atomic_t max_corr_read_errors;
struct list_head all_mddevs;
struct attribute_group *to_remove;
struct bio_set *bio_set;
struct bio_set *sync_set;
struct bio *flush_bio;
atomic_t flush_pending;
struct work_struct flush_work;
struct work_struct event_work;
void (*sync_super)(struct mddev *, struct md_rdev *);
struct md_cluster_info *cluster_info;
unsigned int good_device_nr;
};
4.18: ✅struct mddev {
void *private;
struct md_personality *pers;
dev_t unit;
int md_minor;
struct list_head disks;
long unsigned int flags;
long unsigned int sb_flags;
int suspended;
atomic_t active_io;
int ro;
int sysfs_active;
struct gendisk *gendisk;
struct kobject kobj;
int hold_active;
int major_version;
int minor_version;
int patch_version;
int persistent;
int external;
char metadata_type[17];
int chunk_sectors;
time64_t ctime;
time64_t utime;
int level;
int layout;
char clevel[16];
int raid_disks;
int max_disks;
sector_t dev_sectors;
sector_t array_sectors;
int external_size;
__u64 events;
int can_decrease_events;
char uuid[16];
sector_t reshape_position;
int delta_disks;
int new_level;
int new_layout;
int new_chunk_sectors;
int reshape_backwards;
struct md_thread *thread;
struct md_thread *sync_thread;
char *last_sync_action;
sector_t curr_resync;
sector_t curr_resync_completed;
long unsigned int resync_mark;
sector_t resync_mark_cnt;
sector_t curr_mark_cnt;
sector_t resync_max_sectors;
atomic64_t resync_mismatches;
sector_t suspend_lo;
sector_t suspend_hi;
int sync_speed_min;
int sync_speed_max;
int parallel_resync;
int ok_start_degraded;
long unsigned int recovery;
int recovery_disabled;
int in_sync;
struct mutex open_mutex;
struct mutex reconfig_mutex;
atomic_t active;
atomic_t openers;
int changed;
int degraded;
atomic_t recovery_active;
wait_queue_head_t recovery_wait;
sector_t recovery_cp;
sector_t resync_min;
sector_t resync_max;
struct kernfs_node *sysfs_state;
struct kernfs_node *sysfs_action;
struct work_struct del_work;
spinlock_t lock;
wait_queue_head_t sb_wait;
atomic_t pending_writes;
unsigned int safemode;
unsigned int safemode_delay;
struct timer_list safemode_timer;
struct percpu_ref writes_pending;
int sync_checkers;
struct request_queue *queue;
struct bitmap *bitmap;
struct (anon) bitmap_info;
atomic_t max_corr_read_errors;
struct list_head all_mddevs;
struct attribute_group *to_remove;
struct bio_set bio_set;
struct bio_set sync_set;
mempool_t *flush_pool;
mempool_t *flush_bio_pool;
struct work_struct event_work;
void (*sync_super)(struct mddev *, struct md_rdev *);
struct md_cluster_info *cluster_info;
unsigned int good_device_nr;
bool has_superblocks;
};
5.0: ✅struct mddev {
void *private;
struct md_personality *pers;
dev_t unit;
int md_minor;
struct list_head disks;
long unsigned int flags;
long unsigned int sb_flags;
int suspended;
atomic_t active_io;
int ro;
int sysfs_active;
struct gendisk *gendisk;
struct kobject kobj;
int hold_active;
int major_version;
int minor_version;
int patch_version;
int persistent;
int external;
char metadata_type[17];
int chunk_sectors;
time64_t ctime;
time64_t utime;
int level;
int layout;
char clevel[16];
int raid_disks;
int max_disks;
sector_t dev_sectors;
sector_t array_sectors;
int external_size;
__u64 events;
int can_decrease_events;
char uuid[16];
sector_t reshape_position;
int delta_disks;
int new_level;
int new_layout;
int new_chunk_sectors;
int reshape_backwards;
struct md_thread *thread;
struct md_thread *sync_thread;
char *last_sync_action;
sector_t curr_resync;
sector_t curr_resync_completed;
long unsigned int resync_mark;
sector_t resync_mark_cnt;
sector_t curr_mark_cnt;
sector_t resync_max_sectors;
atomic64_t resync_mismatches;
sector_t suspend_lo;
sector_t suspend_hi;
int sync_speed_min;
int sync_speed_max;
int parallel_resync;
int ok_start_degraded;
long unsigned int recovery;
int recovery_disabled;
int in_sync;
struct mutex open_mutex;
struct mutex reconfig_mutex;
atomic_t active;
atomic_t openers;
int changed;
int degraded;
atomic_t recovery_active;
wait_queue_head_t recovery_wait;
sector_t recovery_cp;
sector_t resync_min;
sector_t resync_max;
struct kernfs_node *sysfs_state;
struct kernfs_node *sysfs_action;
struct work_struct del_work;
spinlock_t lock;
wait_queue_head_t sb_wait;
atomic_t pending_writes;
unsigned int safemode;
unsigned int safemode_delay;
struct timer_list safemode_timer;
struct percpu_ref writes_pending;
int sync_checkers;
struct request_queue *queue;
struct bitmap *bitmap;
struct (anon) bitmap_info;
atomic_t max_corr_read_errors;
struct list_head all_mddevs;
struct attribute_group *to_remove;
struct bio_set bio_set;
struct bio_set sync_set;
mempool_t *flush_pool;
mempool_t *flush_bio_pool;
struct work_struct event_work;
void (*sync_super)(struct mddev *, struct md_rdev *);
struct md_cluster_info *cluster_info;
unsigned int good_device_nr;
bool has_superblocks;
};
5.3: ✅struct mddev {
void *private;
struct md_personality *pers;
dev_t unit;
int md_minor;
struct list_head disks;
long unsigned int flags;
long unsigned int sb_flags;
int suspended;
atomic_t active_io;
int ro;
int sysfs_active;
struct gendisk *gendisk;
struct kobject kobj;
int hold_active;
int major_version;
int minor_version;
int patch_version;
int persistent;
int external;
char metadata_type[17];
int chunk_sectors;
time64_t ctime;
time64_t utime;
int level;
int layout;
char clevel[16];
int raid_disks;
int max_disks;
sector_t dev_sectors;
sector_t array_sectors;
int external_size;
__u64 events;
int can_decrease_events;
char uuid[16];
sector_t reshape_position;
int delta_disks;
int new_level;
int new_layout;
int new_chunk_sectors;
int reshape_backwards;
struct md_thread *thread;
struct md_thread *sync_thread;
char *last_sync_action;
sector_t curr_resync;
sector_t curr_resync_completed;
long unsigned int resync_mark;
sector_t resync_mark_cnt;
sector_t curr_mark_cnt;
sector_t resync_max_sectors;
atomic64_t resync_mismatches;
sector_t suspend_lo;
sector_t suspend_hi;
int sync_speed_min;
int sync_speed_max;
int parallel_resync;
int ok_start_degraded;
long unsigned int recovery;
int recovery_disabled;
int in_sync;
struct mutex open_mutex;
struct mutex reconfig_mutex;
atomic_t active;
atomic_t openers;
int changed;
int degraded;
atomic_t recovery_active;
wait_queue_head_t recovery_wait;
sector_t recovery_cp;
sector_t resync_min;
sector_t resync_max;
struct kernfs_node *sysfs_state;
struct kernfs_node *sysfs_action;
struct work_struct del_work;
spinlock_t lock;
wait_queue_head_t sb_wait;
atomic_t pending_writes;
unsigned int safemode;
unsigned int safemode_delay;
struct timer_list safemode_timer;
struct percpu_ref writes_pending;
int sync_checkers;
struct request_queue *queue;
struct bitmap *bitmap;
struct (anon) bitmap_info;
atomic_t max_corr_read_errors;
struct list_head all_mddevs;
struct attribute_group *to_remove;
struct bio_set bio_set;
struct bio_set sync_set;
struct bio *flush_bio;
atomic_t flush_pending;
ktime_t start_flush;
ktime_t last_flush;
struct work_struct flush_work;
struct work_struct event_work;
mempool_t *wb_info_pool;
void (*sync_super)(struct mddev *, struct md_rdev *);
struct md_cluster_info *cluster_info;
unsigned int good_device_nr;
bool has_superblocks;
};
5.4: ✅struct mddev {
void *private;
struct md_personality *pers;
dev_t unit;
int md_minor;
struct list_head disks;
long unsigned int flags;
long unsigned int sb_flags;
int suspended;
atomic_t active_io;
int ro;
int sysfs_active;
struct gendisk *gendisk;
struct kobject kobj;
int hold_active;
int major_version;
int minor_version;
int patch_version;
int persistent;
int external;
char metadata_type[17];
int chunk_sectors;
time64_t ctime;
time64_t utime;
int level;
int layout;
char clevel[16];
int raid_disks;
int max_disks;
sector_t dev_sectors;
sector_t array_sectors;
int external_size;
__u64 events;
int can_decrease_events;
char uuid[16];
sector_t reshape_position;
int delta_disks;
int new_level;
int new_layout;
int new_chunk_sectors;
int reshape_backwards;
struct md_thread *thread;
struct md_thread *sync_thread;
char *last_sync_action;
sector_t curr_resync;
sector_t curr_resync_completed;
long unsigned int resync_mark;
sector_t resync_mark_cnt;
sector_t curr_mark_cnt;
sector_t resync_max_sectors;
atomic64_t resync_mismatches;
sector_t suspend_lo;
sector_t suspend_hi;
int sync_speed_min;
int sync_speed_max;
int parallel_resync;
int ok_start_degraded;
long unsigned int recovery;
int recovery_disabled;
int in_sync;
struct mutex open_mutex;
struct mutex reconfig_mutex;
atomic_t active;
atomic_t openers;
int changed;
int degraded;
atomic_t recovery_active;
wait_queue_head_t recovery_wait;
sector_t recovery_cp;
sector_t resync_min;
sector_t resync_max;
struct kernfs_node *sysfs_state;
struct kernfs_node *sysfs_action;
struct work_struct del_work;
spinlock_t lock;
wait_queue_head_t sb_wait;
atomic_t pending_writes;
unsigned int safemode;
unsigned int safemode_delay;
struct timer_list safemode_timer;
struct percpu_ref writes_pending;
int sync_checkers;
struct request_queue *queue;
struct bitmap *bitmap;
struct (anon) bitmap_info;
atomic_t max_corr_read_errors;
struct list_head all_mddevs;
struct attribute_group *to_remove;
struct bio_set bio_set;
struct bio_set sync_set;
struct bio *flush_bio;
atomic_t flush_pending;
ktime_t start_flush;
ktime_t last_flush;
struct work_struct flush_work;
struct work_struct event_work;
mempool_t *wb_info_pool;
void (*sync_super)(struct mddev *, struct md_rdev *);
struct md_cluster_info *cluster_info;
unsigned int good_device_nr;
bool has_superblocks;
bool fail_last_dev;
};
5.8: ✅struct mddev {
void *private;
struct md_personality *pers;
dev_t unit;
int md_minor;
struct list_head disks;
long unsigned int flags;
long unsigned int sb_flags;
int suspended;
atomic_t active_io;
int ro;
int sysfs_active;
struct gendisk *gendisk;
struct kobject kobj;
int hold_active;
int major_version;
int minor_version;
int patch_version;
int persistent;
int external;
char metadata_type[17];
int chunk_sectors;
time64_t ctime;
time64_t utime;
int level;
int layout;
char clevel[16];
int raid_disks;
int max_disks;
sector_t dev_sectors;
sector_t array_sectors;
int external_size;
__u64 events;
int can_decrease_events;
char uuid[16];
sector_t reshape_position;
int delta_disks;
int new_level;
int new_layout;
int new_chunk_sectors;
int reshape_backwards;
struct md_thread *thread;
struct md_thread *sync_thread;
char *last_sync_action;
sector_t curr_resync;
sector_t curr_resync_completed;
long unsigned int resync_mark;
sector_t resync_mark_cnt;
sector_t curr_mark_cnt;
sector_t resync_max_sectors;
atomic64_t resync_mismatches;
sector_t suspend_lo;
sector_t suspend_hi;
int sync_speed_min;
int sync_speed_max;
int parallel_resync;
int ok_start_degraded;
long unsigned int recovery;
int recovery_disabled;
int in_sync;
struct mutex open_mutex;
struct mutex reconfig_mutex;
atomic_t active;
atomic_t openers;
int changed;
int degraded;
atomic_t recovery_active;
wait_queue_head_t recovery_wait;
sector_t recovery_cp;
sector_t resync_min;
sector_t resync_max;
struct kernfs_node *sysfs_state;
struct kernfs_node *sysfs_action;
struct work_struct del_work;
spinlock_t lock;
wait_queue_head_t sb_wait;
atomic_t pending_writes;
unsigned int safemode;
unsigned int safemode_delay;
struct timer_list safemode_timer;
struct percpu_ref writes_pending;
int sync_checkers;
struct request_queue *queue;
struct bitmap *bitmap;
struct (anon) bitmap_info;
atomic_t max_corr_read_errors;
struct list_head all_mddevs;
struct attribute_group *to_remove;
struct bio_set bio_set;
struct bio_set sync_set;
mempool_t md_io_pool;
struct bio *flush_bio;
atomic_t flush_pending;
ktime_t start_flush;
ktime_t last_flush;
struct work_struct flush_work;
struct work_struct event_work;
mempool_t *serial_info_pool;
void (*sync_super)(struct mddev *, struct md_rdev *);
struct md_cluster_info *cluster_info;
unsigned int good_device_nr;
unsigned int noio_flag;
bool has_superblocks;
bool fail_last_dev;
bool serialize_policy;
};
5.11: ✅struct mddev {
void *private;
struct md_personality *pers;
dev_t unit;
int md_minor;
struct list_head disks;
long unsigned int flags;
long unsigned int sb_flags;
int suspended;
atomic_t active_io;
int ro;
int sysfs_active;
struct gendisk *gendisk;
struct kobject kobj;
int hold_active;
int major_version;
int minor_version;
int patch_version;
int persistent;
int external;
char metadata_type[17];
int chunk_sectors;
time64_t ctime;
time64_t utime;
int level;
int layout;
char clevel[16];
int raid_disks;
int max_disks;
sector_t dev_sectors;
sector_t array_sectors;
int external_size;
__u64 events;
int can_decrease_events;
char uuid[16];
sector_t reshape_position;
int delta_disks;
int new_level;
int new_layout;
int new_chunk_sectors;
int reshape_backwards;
struct md_thread *thread;
struct md_thread *sync_thread;
char *last_sync_action;
sector_t curr_resync;
sector_t curr_resync_completed;
long unsigned int resync_mark;
sector_t resync_mark_cnt;
sector_t curr_mark_cnt;
sector_t resync_max_sectors;
atomic64_t resync_mismatches;
sector_t suspend_lo;
sector_t suspend_hi;
int sync_speed_min;
int sync_speed_max;
int parallel_resync;
int ok_start_degraded;
long unsigned int recovery;
int recovery_disabled;
int in_sync;
struct mutex open_mutex;
struct mutex reconfig_mutex;
atomic_t active;
atomic_t openers;
int changed;
int degraded;
atomic_t recovery_active;
wait_queue_head_t recovery_wait;
sector_t recovery_cp;
sector_t resync_min;
sector_t resync_max;
struct kernfs_node *sysfs_state;
struct kernfs_node *sysfs_action;
struct kernfs_node *sysfs_completed;
struct kernfs_node *sysfs_degraded;
struct kernfs_node *sysfs_level;
struct work_struct del_work;
spinlock_t lock;
wait_queue_head_t sb_wait;
atomic_t pending_writes;
unsigned int safemode;
unsigned int safemode_delay;
struct timer_list safemode_timer;
struct percpu_ref writes_pending;
int sync_checkers;
struct request_queue *queue;
struct bitmap *bitmap;
struct (anon) bitmap_info;
atomic_t max_corr_read_errors;
struct list_head all_mddevs;
struct attribute_group *to_remove;
struct bio_set bio_set;
struct bio_set sync_set;
mempool_t md_io_pool;
struct bio *flush_bio;
atomic_t flush_pending;
ktime_t start_flush;
ktime_t prev_flush_start;
struct work_struct flush_work;
struct work_struct event_work;
mempool_t *serial_info_pool;
void (*sync_super)(struct mddev *, struct md_rdev *);
struct md_cluster_info *cluster_info;
unsigned int good_device_nr;
unsigned int noio_flag;
bool has_superblocks;
bool fail_last_dev;
bool serialize_policy;
};
5.13: ✅struct mddev {
void *private;
struct md_personality *pers;
dev_t unit;
int md_minor;
struct list_head disks;
long unsigned int flags;
long unsigned int sb_flags;
int suspended;
atomic_t active_io;
int ro;
int sysfs_active;
struct gendisk *gendisk;
struct kobject kobj;
int hold_active;
int major_version;
int minor_version;
int patch_version;
int persistent;
int external;
char metadata_type[17];
int chunk_sectors;
time64_t ctime;
time64_t utime;
int level;
int layout;
char clevel[16];
int raid_disks;
int max_disks;
sector_t dev_sectors;
sector_t array_sectors;
int external_size;
__u64 events;
int can_decrease_events;
char uuid[16];
sector_t reshape_position;
int delta_disks;
int new_level;
int new_layout;
int new_chunk_sectors;
int reshape_backwards;
struct md_thread *thread;
struct md_thread *sync_thread;
char *last_sync_action;
sector_t curr_resync;
sector_t curr_resync_completed;
long unsigned int resync_mark;
sector_t resync_mark_cnt;
sector_t curr_mark_cnt;
sector_t resync_max_sectors;
atomic64_t resync_mismatches;
sector_t suspend_lo;
sector_t suspend_hi;
int sync_speed_min;
int sync_speed_max;
int parallel_resync;
int ok_start_degraded;
long unsigned int recovery;
int recovery_disabled;
int in_sync;
struct mutex open_mutex;
struct mutex reconfig_mutex;
atomic_t active;
atomic_t openers;
int changed;
int degraded;
atomic_t recovery_active;
wait_queue_head_t recovery_wait;
sector_t recovery_cp;
sector_t resync_min;
sector_t resync_max;
struct kernfs_node *sysfs_state;
struct kernfs_node *sysfs_action;
struct kernfs_node *sysfs_completed;
struct kernfs_node *sysfs_degraded;
struct kernfs_node *sysfs_level;
struct work_struct del_work;
spinlock_t lock;
wait_queue_head_t sb_wait;
atomic_t pending_writes;
unsigned int safemode;
unsigned int safemode_delay;
struct timer_list safemode_timer;
struct percpu_ref writes_pending;
int sync_checkers;
struct request_queue *queue;
struct bitmap *bitmap;
struct (anon) bitmap_info;
atomic_t max_corr_read_errors;
struct list_head all_mddevs;
struct attribute_group *to_remove;
struct bio_set bio_set;
struct bio_set sync_set;
struct bio *flush_bio;
atomic_t flush_pending;
ktime_t start_flush;
ktime_t prev_flush_start;
struct work_struct flush_work;
struct work_struct event_work;
mempool_t *serial_info_pool;
void (*sync_super)(struct mddev *, struct md_rdev *);
struct md_cluster_info *cluster_info;
unsigned int good_device_nr;
unsigned int noio_flag;
bool has_superblocks;
bool fail_last_dev;
bool serialize_policy;
};
5.15: ✅struct mddev {
void *private;
struct md_personality *pers;
dev_t unit;
int md_minor;
struct list_head disks;
long unsigned int flags;
long unsigned int sb_flags;
int suspended;
atomic_t active_io;
int ro;
int sysfs_active;
struct gendisk *gendisk;
struct kobject kobj;
int hold_active;
int major_version;
int minor_version;
int patch_version;
int persistent;
int external;
char metadata_type[17];
int chunk_sectors;
time64_t ctime;
time64_t utime;
int level;
int layout;
char clevel[16];
int raid_disks;
int max_disks;
sector_t dev_sectors;
sector_t array_sectors;
int external_size;
__u64 events;
int can_decrease_events;
char uuid[16];
sector_t reshape_position;
int delta_disks;
int new_level;
int new_layout;
int new_chunk_sectors;
int reshape_backwards;
struct md_thread *thread;
struct md_thread *sync_thread;
char *last_sync_action;
sector_t curr_resync;
sector_t curr_resync_completed;
long unsigned int resync_mark;
sector_t resync_mark_cnt;
sector_t curr_mark_cnt;
sector_t resync_max_sectors;
atomic64_t resync_mismatches;
sector_t suspend_lo;
sector_t suspend_hi;
int sync_speed_min;
int sync_speed_max;
int parallel_resync;
int ok_start_degraded;
long unsigned int recovery;
int recovery_disabled;
int in_sync;
struct mutex open_mutex;
struct mutex reconfig_mutex;
atomic_t active;
atomic_t openers;
int changed;
int degraded;
atomic_t recovery_active;
wait_queue_head_t recovery_wait;
sector_t recovery_cp;
sector_t resync_min;
sector_t resync_max;
struct kernfs_node *sysfs_state;
struct kernfs_node *sysfs_action;
struct kernfs_node *sysfs_completed;
struct kernfs_node *sysfs_degraded;
struct kernfs_node *sysfs_level;
struct work_struct del_work;
spinlock_t lock;
wait_queue_head_t sb_wait;
atomic_t pending_writes;
unsigned int safemode;
unsigned int safemode_delay;
struct timer_list safemode_timer;
struct percpu_ref writes_pending;
int sync_checkers;
struct request_queue *queue;
struct bitmap *bitmap;
struct (anon) bitmap_info;
atomic_t max_corr_read_errors;
struct list_head all_mddevs;
const struct attribute_group *to_remove;
struct bio_set bio_set;
struct bio_set sync_set;
struct bio_set io_acct_set;
struct bio *flush_bio;
atomic_t flush_pending;
ktime_t start_flush;
ktime_t prev_flush_start;
struct work_struct flush_work;
struct work_struct event_work;
mempool_t *serial_info_pool;
void (*sync_super)(struct mddev *, struct md_rdev *);
struct md_cluster_info *cluster_info;
unsigned int good_device_nr;
unsigned int noio_flag;
bool has_superblocks;
bool fail_last_dev;
bool serialize_policy;
};
5.19: ✅struct mddev {
void *private;
struct md_personality *pers;
dev_t unit;
int md_minor;
struct list_head disks;
long unsigned int flags;
long unsigned int sb_flags;
int suspended;
atomic_t active_io;
int ro;
int sysfs_active;
struct gendisk *gendisk;
struct kobject kobj;
int hold_active;
int major_version;
int minor_version;
int patch_version;
int persistent;
int external;
char metadata_type[17];
int chunk_sectors;
time64_t ctime;
time64_t utime;
int level;
int layout;
char clevel[16];
int raid_disks;
int max_disks;
sector_t dev_sectors;
sector_t array_sectors;
int external_size;
__u64 events;
int can_decrease_events;
char uuid[16];
sector_t reshape_position;
int delta_disks;
int new_level;
int new_layout;
int new_chunk_sectors;
int reshape_backwards;
struct md_thread *thread;
struct md_thread *sync_thread;
char *last_sync_action;
sector_t curr_resync;
sector_t curr_resync_completed;
long unsigned int resync_mark;
sector_t resync_mark_cnt;
sector_t curr_mark_cnt;
sector_t resync_max_sectors;
atomic64_t resync_mismatches;
sector_t suspend_lo;
sector_t suspend_hi;
int sync_speed_min;
int sync_speed_max;
int parallel_resync;
int ok_start_degraded;
long unsigned int recovery;
int recovery_disabled;
int in_sync;
struct mutex open_mutex;
struct mutex reconfig_mutex;
atomic_t active;
atomic_t openers;
int changed;
int degraded;
atomic_t recovery_active;
wait_queue_head_t recovery_wait;
sector_t recovery_cp;
sector_t resync_min;
sector_t resync_max;
struct kernfs_node *sysfs_state;
struct kernfs_node *sysfs_action;
struct kernfs_node *sysfs_completed;
struct kernfs_node *sysfs_degraded;
struct kernfs_node *sysfs_level;
struct work_struct del_work;
spinlock_t lock;
wait_queue_head_t sb_wait;
atomic_t pending_writes;
unsigned int safemode;
unsigned int safemode_delay;
struct timer_list safemode_timer;
struct percpu_ref writes_pending;
int sync_checkers;
struct request_queue *queue;
struct bitmap *bitmap;
struct (anon) bitmap_info;
atomic_t max_corr_read_errors;
struct list_head all_mddevs;
const struct attribute_group *to_remove;
struct bio_set bio_set;
struct bio_set sync_set;
struct bio_set io_acct_set;
struct bio *flush_bio;
atomic_t flush_pending;
ktime_t start_flush;
ktime_t prev_flush_start;
struct work_struct flush_work;
struct work_struct event_work;
mempool_t *serial_info_pool;
void (*sync_super)(struct mddev *, struct md_rdev *);
struct md_cluster_info *cluster_info;
unsigned int good_device_nr;
unsigned int noio_flag;
bool has_superblocks;
bool fail_last_dev;
bool serialize_policy;
};
6.2: ✅struct mddev {
void *private;
struct md_personality *pers;
dev_t unit;
int md_minor;
struct list_head disks;
long unsigned int flags;
long unsigned int sb_flags;
int suspended;
atomic_t active_io;
int ro;
int sysfs_active;
struct gendisk *gendisk;
struct kobject kobj;
int hold_active;
int major_version;
int minor_version;
int patch_version;
int persistent;
int external;
char metadata_type[17];
int chunk_sectors;
time64_t ctime;
time64_t utime;
int level;
int layout;
char clevel[16];
int raid_disks;
int max_disks;
sector_t dev_sectors;
sector_t array_sectors;
int external_size;
__u64 events;
int can_decrease_events;
char uuid[16];
sector_t reshape_position;
int delta_disks;
int new_level;
int new_layout;
int new_chunk_sectors;
int reshape_backwards;
struct md_thread *thread;
struct md_thread *sync_thread;
char *last_sync_action;
sector_t curr_resync;
sector_t curr_resync_completed;
long unsigned int resync_mark;
sector_t resync_mark_cnt;
sector_t curr_mark_cnt;
sector_t resync_max_sectors;
atomic64_t resync_mismatches;
sector_t suspend_lo;
sector_t suspend_hi;
int sync_speed_min;
int sync_speed_max;
int parallel_resync;
int ok_start_degraded;
long unsigned int recovery;
int recovery_disabled;
int in_sync;
struct mutex open_mutex;
struct mutex reconfig_mutex;
atomic_t active;
atomic_t openers;
int changed;
int degraded;
atomic_t recovery_active;
wait_queue_head_t recovery_wait;
sector_t recovery_cp;
sector_t resync_min;
sector_t resync_max;
struct kernfs_node *sysfs_state;
struct kernfs_node *sysfs_action;
struct kernfs_node *sysfs_completed;
struct kernfs_node *sysfs_degraded;
struct kernfs_node *sysfs_level;
struct work_struct del_work;
spinlock_t lock;
wait_queue_head_t sb_wait;
atomic_t pending_writes;
unsigned int safemode;
unsigned int safemode_delay;
struct timer_list safemode_timer;
struct percpu_ref writes_pending;
int sync_checkers;
struct request_queue *queue;
struct bitmap *bitmap;
struct (anon) bitmap_info;
atomic_t max_corr_read_errors;
struct list_head all_mddevs;
const struct attribute_group *to_remove;
struct bio_set bio_set;
struct bio_set sync_set;
struct bio_set io_acct_set;
struct bio *flush_bio;
atomic_t flush_pending;
ktime_t start_flush;
ktime_t prev_flush_start;
struct work_struct flush_work;
struct work_struct event_work;
mempool_t *serial_info_pool;
void (*sync_super)(struct mddev *, struct md_rdev *);
struct md_cluster_info *cluster_info;
unsigned int good_device_nr;
unsigned int noio_flag;
bool has_superblocks;
bool fail_last_dev;
bool serialize_policy;
};
6.5: ✅struct mddev {
void *private;
struct md_personality *pers;
dev_t unit;
int md_minor;
struct list_head disks;
long unsigned int flags;
long unsigned int sb_flags;
int suspended;
struct percpu_ref active_io;
int ro;
int sysfs_active;
struct gendisk *gendisk;
struct kobject kobj;
int hold_active;
int major_version;
int minor_version;
int patch_version;
int persistent;
int external;
char metadata_type[17];
int chunk_sectors;
time64_t ctime;
time64_t utime;
int level;
int layout;
char clevel[16];
int raid_disks;
int max_disks;
sector_t dev_sectors;
sector_t array_sectors;
int external_size;
__u64 events;
int can_decrease_events;
char uuid[16];
sector_t reshape_position;
int delta_disks;
int new_level;
int new_layout;
int new_chunk_sectors;
int reshape_backwards;
struct md_thread *thread;
struct md_thread *sync_thread;
char *last_sync_action;
sector_t curr_resync;
sector_t curr_resync_completed;
long unsigned int resync_mark;
sector_t resync_mark_cnt;
sector_t curr_mark_cnt;
sector_t resync_max_sectors;
atomic64_t resync_mismatches;
sector_t suspend_lo;
sector_t suspend_hi;
int sync_speed_min;
int sync_speed_max;
int parallel_resync;
int ok_start_degraded;
long unsigned int recovery;
int recovery_disabled;
int in_sync;
struct mutex open_mutex;
struct mutex reconfig_mutex;
atomic_t active;
atomic_t openers;
int changed;
int degraded;
atomic_t recovery_active;
wait_queue_head_t recovery_wait;
sector_t recovery_cp;
sector_t resync_min;
sector_t resync_max;
struct kernfs_node *sysfs_state;
struct kernfs_node *sysfs_action;
struct kernfs_node *sysfs_completed;
struct kernfs_node *sysfs_degraded;
struct kernfs_node *sysfs_level;
struct work_struct del_work;
spinlock_t lock;
wait_queue_head_t sb_wait;
atomic_t pending_writes;
unsigned int safemode;
unsigned int safemode_delay;
struct timer_list safemode_timer;
struct percpu_ref writes_pending;
int sync_checkers;
struct request_queue *queue;
struct bitmap *bitmap;
struct (anon) bitmap_info;
atomic_t max_corr_read_errors;
struct list_head all_mddevs;
const struct attribute_group *to_remove;
struct bio_set bio_set;
struct bio_set sync_set;
struct bio_set io_acct_set;
struct bio *flush_bio;
atomic_t flush_pending;
ktime_t start_flush;
ktime_t prev_flush_start;
struct work_struct flush_work;
struct work_struct event_work;
mempool_t *serial_info_pool;
void (*sync_super)(struct mddev *, struct md_rdev *);
struct md_cluster_info *cluster_info;
unsigned int good_device_nr;
unsigned int noio_flag;
struct list_head deleting;
bool has_superblocks;
bool fail_last_dev;
bool serialize_policy;
};
6.8: ✅struct mddev {
void *private;
struct md_personality *pers;
dev_t unit;
int md_minor;
struct list_head disks;
long unsigned int flags;
long unsigned int sb_flags;
int suspended;
struct mutex suspend_mutex;
struct percpu_ref active_io;
int ro;
int sysfs_active;
struct gendisk *gendisk;
struct kobject kobj;
int hold_active;
int major_version;
int minor_version;
int patch_version;
int persistent;
int external;
char metadata_type[17];
int chunk_sectors;
time64_t ctime;
time64_t utime;
int level;
int layout;
char clevel[16];
int raid_disks;
int max_disks;
sector_t dev_sectors;
sector_t array_sectors;
int external_size;
__u64 events;
int can_decrease_events;
char uuid[16];
sector_t reshape_position;
int delta_disks;
int new_level;
int new_layout;
int new_chunk_sectors;
int reshape_backwards;
struct md_thread *thread;
struct md_thread *sync_thread;
char *last_sync_action;
sector_t curr_resync;
sector_t curr_resync_completed;
long unsigned int resync_mark;
sector_t resync_mark_cnt;
sector_t curr_mark_cnt;
sector_t resync_max_sectors;
atomic64_t resync_mismatches;
sector_t suspend_lo;
sector_t suspend_hi;
int sync_speed_min;
int sync_speed_max;
int parallel_resync;
int ok_start_degraded;
long unsigned int recovery;
int recovery_disabled;
int in_sync;
struct mutex open_mutex;
struct mutex reconfig_mutex;
atomic_t active;
atomic_t openers;
int changed;
int degraded;
atomic_t recovery_active;
wait_queue_head_t recovery_wait;
sector_t recovery_cp;
sector_t resync_min;
sector_t resync_max;
struct kernfs_node *sysfs_state;
struct kernfs_node *sysfs_action;
struct kernfs_node *sysfs_completed;
struct kernfs_node *sysfs_degraded;
struct kernfs_node *sysfs_level;
struct work_struct del_work;
struct work_struct sync_work;
spinlock_t lock;
wait_queue_head_t sb_wait;
atomic_t pending_writes;
unsigned int safemode;
unsigned int safemode_delay;
struct timer_list safemode_timer;
struct percpu_ref writes_pending;
int sync_checkers;
struct request_queue *queue;
struct bitmap *bitmap;
struct (anon) bitmap_info;
atomic_t max_corr_read_errors;
struct list_head all_mddevs;
const struct attribute_group *to_remove;
struct bio_set bio_set;
struct bio_set sync_set;
struct bio_set io_clone_set;
struct bio *flush_bio;
atomic_t flush_pending;
ktime_t start_flush;
ktime_t prev_flush_start;
struct work_struct flush_work;
struct work_struct event_work;
mempool_t *serial_info_pool;
void (*sync_super)(struct mddev *, struct md_rdev *);
struct md_cluster_info *cluster_info;
unsigned int good_device_nr;
unsigned int noio_flag;
struct list_head deleting;
struct mutex sync_mutex;
atomic_t sync_seq;
bool has_superblocks;
bool fail_last_dev;
bool serialize_policy;
};
arm64: ✅struct mddev {
void *private;
struct md_personality *pers;
dev_t unit;
int md_minor;
struct list_head disks;
long unsigned int flags;
long unsigned int sb_flags;
int suspended;
atomic_t active_io;
int ro;
int sysfs_active;
struct gendisk *gendisk;
struct kobject kobj;
int hold_active;
int major_version;
int minor_version;
int patch_version;
int persistent;
int external;
char metadata_type[17];
int chunk_sectors;
time64_t ctime;
time64_t utime;
int level;
int layout;
char clevel[16];
int raid_disks;
int max_disks;
sector_t dev_sectors;
sector_t array_sectors;
int external_size;
__u64 events;
int can_decrease_events;
char uuid[16];
sector_t reshape_position;
int delta_disks;
int new_level;
int new_layout;
int new_chunk_sectors;
int reshape_backwards;
struct md_thread *thread;
struct md_thread *sync_thread;
char *last_sync_action;
sector_t curr_resync;
sector_t curr_resync_completed;
long unsigned int resync_mark;
sector_t resync_mark_cnt;
sector_t curr_mark_cnt;
sector_t resync_max_sectors;
atomic64_t resync_mismatches;
sector_t suspend_lo;
sector_t suspend_hi;
int sync_speed_min;
int sync_speed_max;
int parallel_resync;
int ok_start_degraded;
long unsigned int recovery;
int recovery_disabled;
int in_sync;
struct mutex open_mutex;
struct mutex reconfig_mutex;
atomic_t active;
atomic_t openers;
int changed;
int degraded;
atomic_t recovery_active;
wait_queue_head_t recovery_wait;
sector_t recovery_cp;
sector_t resync_min;
sector_t resync_max;
struct kernfs_node *sysfs_state;
struct kernfs_node *sysfs_action;
struct work_struct del_work;
spinlock_t lock;
wait_queue_head_t sb_wait;
atomic_t pending_writes;
unsigned int safemode;
unsigned int safemode_delay;
struct timer_list safemode_timer;
struct percpu_ref writes_pending;
int sync_checkers;
struct request_queue *queue;
struct bitmap *bitmap;
struct (anon) bitmap_info;
atomic_t max_corr_read_errors;
struct list_head all_mddevs;
struct attribute_group *to_remove;
struct bio_set bio_set;
struct bio_set sync_set;
struct bio *flush_bio;
atomic_t flush_pending;
ktime_t start_flush;
ktime_t last_flush;
struct work_struct flush_work;
struct work_struct event_work;
mempool_t *wb_info_pool;
void (*sync_super)(struct mddev *, struct md_rdev *);
struct md_cluster_info *cluster_info;
unsigned int good_device_nr;
bool has_superblocks;
bool fail_last_dev;
};
armhf: ✅struct mddev {
void *private;
struct md_personality *pers;
dev_t unit;
int md_minor;
struct list_head disks;
long unsigned int flags;
long unsigned int sb_flags;
int suspended;
atomic_t active_io;
int ro;
int sysfs_active;
struct gendisk *gendisk;
struct kobject kobj;
int hold_active;
int major_version;
int minor_version;
int patch_version;
int persistent;
int external;
char metadata_type[17];
int chunk_sectors;
time64_t ctime;
time64_t utime;
int level;
int layout;
char clevel[16];
int raid_disks;
int max_disks;
sector_t dev_sectors;
sector_t array_sectors;
int external_size;
__u64 events;
int can_decrease_events;
char uuid[16];
sector_t reshape_position;
int delta_disks;
int new_level;
int new_layout;
int new_chunk_sectors;
int reshape_backwards;
struct md_thread *thread;
struct md_thread *sync_thread;
char *last_sync_action;
sector_t curr_resync;
sector_t curr_resync_completed;
long unsigned int resync_mark;
sector_t resync_mark_cnt;
sector_t curr_mark_cnt;
sector_t resync_max_sectors;
atomic64_t resync_mismatches;
sector_t suspend_lo;
sector_t suspend_hi;
int sync_speed_min;
int sync_speed_max;
int parallel_resync;
int ok_start_degraded;
long unsigned int recovery;
int recovery_disabled;
int in_sync;
struct mutex open_mutex;
struct mutex reconfig_mutex;
atomic_t active;
atomic_t openers;
int changed;
int degraded;
atomic_t recovery_active;
wait_queue_head_t recovery_wait;
sector_t recovery_cp;
sector_t resync_min;
sector_t resync_max;
struct kernfs_node *sysfs_state;
struct kernfs_node *sysfs_action;
struct work_struct del_work;
spinlock_t lock;
wait_queue_head_t sb_wait;
atomic_t pending_writes;
unsigned int safemode;
unsigned int safemode_delay;
struct timer_list safemode_timer;
struct percpu_ref writes_pending;
int sync_checkers;
struct request_queue *queue;
struct bitmap *bitmap;
struct (anon) bitmap_info;
atomic_t max_corr_read_errors;
struct list_head all_mddevs;
struct attribute_group *to_remove;
struct bio_set bio_set;
struct bio_set sync_set;
struct bio *flush_bio;
atomic_t flush_pending;
ktime_t start_flush;
ktime_t last_flush;
struct work_struct flush_work;
struct work_struct event_work;
mempool_t *wb_info_pool;
void (*sync_super)(struct mddev *, struct md_rdev *);
struct md_cluster_info *cluster_info;
unsigned int good_device_nr;
bool has_superblocks;
bool fail_last_dev;
};
ppc64el: ✅struct mddev {
void *private;
struct md_personality *pers;
dev_t unit;
int md_minor;
struct list_head disks;
long unsigned int flags;
long unsigned int sb_flags;
int suspended;
atomic_t active_io;
int ro;
int sysfs_active;
struct gendisk *gendisk;
struct kobject kobj;
int hold_active;
int major_version;
int minor_version;
int patch_version;
int persistent;
int external;
char metadata_type[17];
int chunk_sectors;
time64_t ctime;
time64_t utime;
int level;
int layout;
char clevel[16];
int raid_disks;
int max_disks;
sector_t dev_sectors;
sector_t array_sectors;
int external_size;
__u64 events;
int can_decrease_events;
char uuid[16];
sector_t reshape_position;
int delta_disks;
int new_level;
int new_layout;
int new_chunk_sectors;
int reshape_backwards;
struct md_thread *thread;
struct md_thread *sync_thread;
char *last_sync_action;
sector_t curr_resync;
sector_t curr_resync_completed;
long unsigned int resync_mark;
sector_t resync_mark_cnt;
sector_t curr_mark_cnt;
sector_t resync_max_sectors;
atomic64_t resync_mismatches;
sector_t suspend_lo;
sector_t suspend_hi;
int sync_speed_min;
int sync_speed_max;
int parallel_resync;
int ok_start_degraded;
long unsigned int recovery;
int recovery_disabled;
int in_sync;
struct mutex open_mutex;
struct mutex reconfig_mutex;
atomic_t active;
atomic_t openers;
int changed;
int degraded;
atomic_t recovery_active;
wait_queue_head_t recovery_wait;
sector_t recovery_cp;
sector_t resync_min;
sector_t resync_max;
struct kernfs_node *sysfs_state;
struct kernfs_node *sysfs_action;
struct work_struct del_work;
spinlock_t lock;
wait_queue_head_t sb_wait;
atomic_t pending_writes;
unsigned int safemode;
unsigned int safemode_delay;
struct timer_list safemode_timer;
struct percpu_ref writes_pending;
int sync_checkers;
struct request_queue *queue;
struct bitmap *bitmap;
struct (anon) bitmap_info;
atomic_t max_corr_read_errors;
struct list_head all_mddevs;
struct attribute_group *to_remove;
struct bio_set bio_set;
struct bio_set sync_set;
struct bio *flush_bio;
atomic_t flush_pending;
ktime_t start_flush;
ktime_t last_flush;
struct work_struct flush_work;
struct work_struct event_work;
mempool_t *wb_info_pool;
void (*sync_super)(struct mddev *, struct md_rdev *);
struct md_cluster_info *cluster_info;
unsigned int good_device_nr;
bool has_superblocks;
bool fail_last_dev;
};
riscv64: ✅struct mddev {
void *private;
struct md_personality *pers;
dev_t unit;
int md_minor;
struct list_head disks;
long unsigned int flags;
long unsigned int sb_flags;
int suspended;
atomic_t active_io;
int ro;
int sysfs_active;
struct gendisk *gendisk;
struct kobject kobj;
int hold_active;
int major_version;
int minor_version;
int patch_version;
int persistent;
int external;
char metadata_type[17];
int chunk_sectors;
time64_t ctime;
time64_t utime;
int level;
int layout;
char clevel[16];
int raid_disks;
int max_disks;
sector_t dev_sectors;
sector_t array_sectors;
int external_size;
__u64 events;
int can_decrease_events;
char uuid[16];
sector_t reshape_position;
int delta_disks;
int new_level;
int new_layout;
int new_chunk_sectors;
int reshape_backwards;
struct md_thread *thread;
struct md_thread *sync_thread;
char *last_sync_action;
sector_t curr_resync;
sector_t curr_resync_completed;
long unsigned int resync_mark;
sector_t resync_mark_cnt;
sector_t curr_mark_cnt;
sector_t resync_max_sectors;
atomic64_t resync_mismatches;
sector_t suspend_lo;
sector_t suspend_hi;
int sync_speed_min;
int sync_speed_max;
int parallel_resync;
int ok_start_degraded;
long unsigned int recovery;
int recovery_disabled;
int in_sync;
struct mutex open_mutex;
struct mutex reconfig_mutex;
atomic_t active;
atomic_t openers;
int changed;
int degraded;
atomic_t recovery_active;
wait_queue_head_t recovery_wait;
sector_t recovery_cp;
sector_t resync_min;
sector_t resync_max;
struct kernfs_node *sysfs_state;
struct kernfs_node *sysfs_action;
struct work_struct del_work;
spinlock_t lock;
wait_queue_head_t sb_wait;
atomic_t pending_writes;
unsigned int safemode;
unsigned int safemode_delay;
struct timer_list safemode_timer;
struct percpu_ref writes_pending;
int sync_checkers;
struct request_queue *queue;
struct bitmap *bitmap;
struct (anon) bitmap_info;
atomic_t max_corr_read_errors;
struct list_head all_mddevs;
struct attribute_group *to_remove;
struct bio_set bio_set;
struct bio_set sync_set;
struct bio *flush_bio;
atomic_t flush_pending;
ktime_t start_flush;
ktime_t last_flush;
struct work_struct flush_work;
struct work_struct event_work;
mempool_t *wb_info_pool;
void (*sync_super)(struct mddev *, struct md_rdev *);
struct md_cluster_info *cluster_info;
unsigned int good_device_nr;
bool has_superblocks;
bool fail_last_dev;
};
aws: ✅struct mddev {
void *private;
struct md_personality *pers;
dev_t unit;
int md_minor;
struct list_head disks;
long unsigned int flags;
long unsigned int sb_flags;
int suspended;
atomic_t active_io;
int ro;
int sysfs_active;
struct gendisk *gendisk;
struct kobject kobj;
int hold_active;
int major_version;
int minor_version;
int patch_version;
int persistent;
int external;
char metadata_type[17];
int chunk_sectors;
time64_t ctime;
time64_t utime;
int level;
int layout;
char clevel[16];
int raid_disks;
int max_disks;
sector_t dev_sectors;
sector_t array_sectors;
int external_size;
__u64 events;
int can_decrease_events;
char uuid[16];
sector_t reshape_position;
int delta_disks;
int new_level;
int new_layout;
int new_chunk_sectors;
int reshape_backwards;
struct md_thread *thread;
struct md_thread *sync_thread;
char *last_sync_action;
sector_t curr_resync;
sector_t curr_resync_completed;
long unsigned int resync_mark;
sector_t resync_mark_cnt;
sector_t curr_mark_cnt;
sector_t resync_max_sectors;
atomic64_t resync_mismatches;
sector_t suspend_lo;
sector_t suspend_hi;
int sync_speed_min;
int sync_speed_max;
int parallel_resync;
int ok_start_degraded;
long unsigned int recovery;
int recovery_disabled;
int in_sync;
struct mutex open_mutex;
struct mutex reconfig_mutex;
atomic_t active;
atomic_t openers;
int changed;
int degraded;
atomic_t recovery_active;
wait_queue_head_t recovery_wait;
sector_t recovery_cp;
sector_t resync_min;
sector_t resync_max;
struct kernfs_node *sysfs_state;
struct kernfs_node *sysfs_action;
struct work_struct del_work;
spinlock_t lock;
wait_queue_head_t sb_wait;
atomic_t pending_writes;
unsigned int safemode;
unsigned int safemode_delay;
struct timer_list safemode_timer;
struct percpu_ref writes_pending;
int sync_checkers;
struct request_queue *queue;
struct bitmap *bitmap;
struct (anon) bitmap_info;
atomic_t max_corr_read_errors;
struct list_head all_mddevs;
struct attribute_group *to_remove;
struct bio_set bio_set;
struct bio_set sync_set;
struct bio *flush_bio;
atomic_t flush_pending;
ktime_t start_flush;
ktime_t last_flush;
struct work_struct flush_work;
struct work_struct event_work;
mempool_t *wb_info_pool;
void (*sync_super)(struct mddev *, struct md_rdev *);
struct md_cluster_info *cluster_info;
unsigned int good_device_nr;
bool has_superblocks;
bool fail_last_dev;
};
azure: ✅struct mddev {
void *private;
struct md_personality *pers;
dev_t unit;
int md_minor;
struct list_head disks;
long unsigned int flags;
long unsigned int sb_flags;
int suspended;
atomic_t active_io;
int ro;
int sysfs_active;
struct gendisk *gendisk;
struct kobject kobj;
int hold_active;
int major_version;
int minor_version;
int patch_version;
int persistent;
int external;
char metadata_type[17];
int chunk_sectors;
time64_t ctime;
time64_t utime;
int level;
int layout;
char clevel[16];
int raid_disks;
int max_disks;
sector_t dev_sectors;
sector_t array_sectors;
int external_size;
__u64 events;
int can_decrease_events;
char uuid[16];
sector_t reshape_position;
int delta_disks;
int new_level;
int new_layout;
int new_chunk_sectors;
int reshape_backwards;
struct md_thread *thread;
struct md_thread *sync_thread;
char *last_sync_action;
sector_t curr_resync;
sector_t curr_resync_completed;
long unsigned int resync_mark;
sector_t resync_mark_cnt;
sector_t curr_mark_cnt;
sector_t resync_max_sectors;
atomic64_t resync_mismatches;
sector_t suspend_lo;
sector_t suspend_hi;
int sync_speed_min;
int sync_speed_max;
int parallel_resync;
int ok_start_degraded;
long unsigned int recovery;
int recovery_disabled;
int in_sync;
struct mutex open_mutex;
struct mutex reconfig_mutex;
atomic_t active;
atomic_t openers;
int changed;
int degraded;
atomic_t recovery_active;
wait_queue_head_t recovery_wait;
sector_t recovery_cp;
sector_t resync_min;
sector_t resync_max;
struct kernfs_node *sysfs_state;
struct kernfs_node *sysfs_action;
struct work_struct del_work;
spinlock_t lock;
wait_queue_head_t sb_wait;
atomic_t pending_writes;
unsigned int safemode;
unsigned int safemode_delay;
struct timer_list safemode_timer;
struct percpu_ref writes_pending;
int sync_checkers;
struct request_queue *queue;
struct bitmap *bitmap;
struct (anon) bitmap_info;
atomic_t max_corr_read_errors;
struct list_head all_mddevs;
struct attribute_group *to_remove;
struct bio_set bio_set;
struct bio_set sync_set;
struct bio *flush_bio;
atomic_t flush_pending;
ktime_t start_flush;
ktime_t last_flush;
struct work_struct flush_work;
struct work_struct event_work;
mempool_t *wb_info_pool;
void (*sync_super)(struct mddev *, struct md_rdev *);
struct md_cluster_info *cluster_info;
unsigned int good_device_nr;
bool has_superblocks;
bool fail_last_dev;
};
gcp: ✅struct mddev {
void *private;
struct md_personality *pers;
dev_t unit;
int md_minor;
struct list_head disks;
long unsigned int flags;
long unsigned int sb_flags;
int suspended;
atomic_t active_io;
int ro;
int sysfs_active;
struct gendisk *gendisk;
struct kobject kobj;
int hold_active;
int major_version;
int minor_version;
int patch_version;
int persistent;
int external;
char metadata_type[17];
int chunk_sectors;
time64_t ctime;
time64_t utime;
int level;
int layout;
char clevel[16];
int raid_disks;
int max_disks;
sector_t dev_sectors;
sector_t array_sectors;
int external_size;
__u64 events;
int can_decrease_events;
char uuid[16];
sector_t reshape_position;
int delta_disks;
int new_level;
int new_layout;
int new_chunk_sectors;
int reshape_backwards;
struct md_thread *thread;
struct md_thread *sync_thread;
char *last_sync_action;
sector_t curr_resync;
sector_t curr_resync_completed;
long unsigned int resync_mark;
sector_t resync_mark_cnt;
sector_t curr_mark_cnt;
sector_t resync_max_sectors;
atomic64_t resync_mismatches;
sector_t suspend_lo;
sector_t suspend_hi;
int sync_speed_min;
int sync_speed_max;
int parallel_resync;
int ok_start_degraded;
long unsigned int recovery;
int recovery_disabled;
int in_sync;
struct mutex open_mutex;
struct mutex reconfig_mutex;
atomic_t active;
atomic_t openers;
int changed;
int degraded;
atomic_t recovery_active;
wait_queue_head_t recovery_wait;
sector_t recovery_cp;
sector_t resync_min;
sector_t resync_max;
struct kernfs_node *sysfs_state;
struct kernfs_node *sysfs_action;
struct work_struct del_work;
spinlock_t lock;
wait_queue_head_t sb_wait;
atomic_t pending_writes;
unsigned int safemode;
unsigned int safemode_delay;
struct timer_list safemode_timer;
struct percpu_ref writes_pending;
int sync_checkers;
struct request_queue *queue;
struct bitmap *bitmap;
struct (anon) bitmap_info;
atomic_t max_corr_read_errors;
struct list_head all_mddevs;
struct attribute_group *to_remove;
struct bio_set bio_set;
struct bio_set sync_set;
struct bio *flush_bio;
atomic_t flush_pending;
ktime_t start_flush;
ktime_t last_flush;
struct work_struct flush_work;
struct work_struct event_work;
mempool_t *wb_info_pool;
void (*sync_super)(struct mddev *, struct md_rdev *);
struct md_cluster_info *cluster_info;
unsigned int good_device_nr;
bool has_superblocks;
bool fail_last_dev;
};
lowlatency: ✅struct mddev {
void *private;
struct md_personality *pers;
dev_t unit;
int md_minor;
struct list_head disks;
long unsigned int flags;
long unsigned int sb_flags;
int suspended;
atomic_t active_io;
int ro;
int sysfs_active;
struct gendisk *gendisk;
struct kobject kobj;
int hold_active;
int major_version;
int minor_version;
int patch_version;
int persistent;
int external;
char metadata_type[17];
int chunk_sectors;
time64_t ctime;
time64_t utime;
int level;
int layout;
char clevel[16];
int raid_disks;
int max_disks;
sector_t dev_sectors;
sector_t array_sectors;
int external_size;
__u64 events;
int can_decrease_events;
char uuid[16];
sector_t reshape_position;
int delta_disks;
int new_level;
int new_layout;
int new_chunk_sectors;
int reshape_backwards;
struct md_thread *thread;
struct md_thread *sync_thread;
char *last_sync_action;
sector_t curr_resync;
sector_t curr_resync_completed;
long unsigned int resync_mark;
sector_t resync_mark_cnt;
sector_t curr_mark_cnt;
sector_t resync_max_sectors;
atomic64_t resync_mismatches;
sector_t suspend_lo;
sector_t suspend_hi;
int sync_speed_min;
int sync_speed_max;
int parallel_resync;
int ok_start_degraded;
long unsigned int recovery;
int recovery_disabled;
int in_sync;
struct mutex open_mutex;
struct mutex reconfig_mutex;
atomic_t active;
atomic_t openers;
int changed;
int degraded;
atomic_t recovery_active;
wait_queue_head_t recovery_wait;
sector_t recovery_cp;
sector_t resync_min;
sector_t resync_max;
struct kernfs_node *sysfs_state;
struct kernfs_node *sysfs_action;
struct work_struct del_work;
spinlock_t lock;
wait_queue_head_t sb_wait;
atomic_t pending_writes;
unsigned int safemode;
unsigned int safemode_delay;
struct timer_list safemode_timer;
struct percpu_ref writes_pending;
int sync_checkers;
struct request_queue *queue;
struct bitmap *bitmap;
struct (anon) bitmap_info;
atomic_t max_corr_read_errors;
struct list_head all_mddevs;
struct attribute_group *to_remove;
struct bio_set bio_set;
struct bio_set sync_set;
struct bio *flush_bio;
atomic_t flush_pending;
ktime_t start_flush;
ktime_t last_flush;
struct work_struct flush_work;
struct work_struct event_work;
mempool_t *wb_info_pool;
void (*sync_super)(struct mddev *, struct md_rdev *);
struct md_cluster_info *cluster_info;
unsigned int good_device_nr;
bool has_superblocks;
bool fail_last_dev;
};
Regular
4.4 and 4.8 ⚠️unsigned int good_device_nr
int ready
time_t ctime ➡️ time64_t ctime
time_t utime ➡️ time64_t utime
4.8 and 4.10 ⚠️long unsigned int sb_flags
4.10 and 4.13 ⚠️int sync_checkers
struct bio_set *sync_set
atomic_t writes_pending ➡️ struct percpu_ref writes_pending
4.13 and 4.15 ✅
4.15 and 4.18 ⚠️mempool_t *flush_pool
mempool_t *flush_bio_pool
bool has_superblocks
struct bio *flush_bio
atomic_t flush_pending
struct work_struct flush_work
struct bio_set *bio_set ➡️ struct bio_set bio_set
struct bio_set *sync_set ➡️ struct bio_set sync_set
4.18 and 5.0 ✅
5.0 and 5.3 ⚠️struct bio *flush_bio
atomic_t flush_pending
ktime_t start_flush
ktime_t last_flush
struct work_struct flush_work
mempool_t *wb_info_pool
mempool_t *flush_pool
mempool_t *flush_bio_pool
5.3 and 5.4 ⚠️bool fail_last_dev
5.4 and 5.8 ⚠️mempool_t md_io_pool
mempool_t *serial_info_pool
unsigned int noio_flag
bool serialize_policy
mempool_t *wb_info_pool
5.8 and 5.11 ⚠️struct kernfs_node *sysfs_completed
struct kernfs_node *sysfs_degraded
struct kernfs_node *sysfs_level
ktime_t prev_flush_start
ktime_t last_flush
5.11 and 5.13 ⚠️mempool_t md_io_pool
5.13 and 5.15 ⚠️struct bio_set io_acct_set
struct attribute_group *to_remove ➡️ const struct attribute_group *to_remove
5.15 and 5.19 ✅
5.19 and 6.2 ✅
6.2 and 6.5 ⚠️struct list_head deleting
atomic_t active_io ➡️ struct percpu_ref active_io
6.5 and 6.8 ⚠️struct mutex suspend_mutex
struct work_struct sync_work
struct bio_set io_clone_set
struct mutex sync_mutex
atomic_t sync_seq
struct bio_set io_acct_set
amd64 and arm64 ✅
amd64 and armhf ✅
amd64 and ppc64el ✅
amd64 and riscv64 ✅
generic and aws ✅
generic and azure ✅
generic and gcp ✅
generic and lowlatency ✅