md_rdev
struct md_rdev *jdev;
struct md_rdev *rdev = &rs->dev[i].rdev;
struct md_rdev *rdev;
struct md_rdev *rdev;
static int read_disk_sb(struct md_rdev *rdev, int size, bool force_reload)
static void super_sync(struct mddev *mddev, struct md_rdev *rdev)
static int super_load(struct md_rdev *rdev, struct md_rdev *refdev)
static int super_init_validation(struct raid_set *rs, struct md_rdev *rdev)
struct md_rdev *r;
static int super_validate(struct raid_set *rs, struct md_rdev *rdev)
struct md_rdev *rdev, *freshest;
struct md_rdev rdev;
struct md_rdev *rdev;
struct md_rdev *rdev;
struct md_rdev *rdev;
struct md_rdev *rdev;
static const char *__raid_dev_status(struct raid_set *rs, struct md_rdev *rdev)
struct md_rdev *rdev;
struct md_rdev *r;
struct md_rdev rdev;
struct md_rdev *rdev;
struct md_rdev *rdev;
struct md_rdev *rdev;
struct md_rdev *rdev;
static struct md_rdev *next_active_rdev(struct md_rdev *rdev, struct mddev *mddev)
rdev = list_entry(&mddev->disks, struct md_rdev, same_set);
static int __write_sb_page(struct md_rdev *rdev, struct bitmap *bitmap,
struct md_rdev *rdev = NULL;
struct md_rdev *rdev;
struct md_rdev *rdev;
static int add_new_disk(struct mddev *mddev, struct md_rdev *rdev)
static int remove_disk(struct mddev *mddev, struct md_rdev *rdev)
static int gather_bitmaps(struct md_rdev *rdev)
struct md_rdev *rdev;
struct md_rdev *rdev;
struct md_rdev *rdev;
struct md_rdev;
int (*add_new_disk)(struct mddev *mddev, struct md_rdev *rdev);
int (*remove_disk)(struct mddev *mddev, struct md_rdev *rdev);
int (*gather_bitmaps)(struct md_rdev *rdev);
struct md_rdev *rdev;
static int linear_add(struct mddev *mddev, struct md_rdev *rdev)
static void linear_error(struct mddev *mddev, struct md_rdev *rdev)
struct md_rdev *rdev;
struct md_rdev *rdev;
struct md_rdev *rdev;
struct md_rdev *md_find_rdev_rcu(struct mddev *mddev, dev_t dev)
struct md_rdev *rdev;
static void export_rdev(struct md_rdev *rdev, struct mddev *mddev);
struct md_rdev *rdev;
struct md_rdev *rdev, *tmp;
struct md_rdev *rdev;
void md_wait_for_blocked_rdev(struct md_rdev *rdev, struct mddev *mddev)
struct md_rdev *rdev;
bool rdev_set_badblocks(struct md_rdev *rdev, sector_t s, int sectors,
void rdev_clear_badblocks(struct md_rdev *rdev, sector_t s, int sectors,
static void check_sb_changes(struct mddev *mddev, struct md_rdev *rdev)
struct md_rdev *rdev2, *tmp;
static inline sector_t calc_dev_sboffset(struct md_rdev *rdev)
static int alloc_disk_sb(struct md_rdev *rdev)
static int read_rdev(struct mddev *mddev, struct md_rdev *rdev)
void md_rdev_clear(struct md_rdev *rdev)
struct md_rdev *rdev = NULL, *iter;
struct md_rdev *rdev;
struct md_rdev *rdev = bio->bi_private;
void md_write_metadata(struct mddev *mddev, struct md_rdev *rdev,
int sync_page_io(struct md_rdev *rdev, sector_t sector, int size,
static int read_disk_sb(struct md_rdev *rdev, int size)
int (*load_super)(struct md_rdev *rdev,
struct md_rdev *refdev,
struct md_rdev *freshest,
struct md_rdev *rdev);
struct md_rdev *rdev);
unsigned long long (*rdev_size_change)(struct md_rdev *rdev,
int (*allow_new_offset)(struct md_rdev *rdev,
static int super_90_load(struct md_rdev *rdev, struct md_rdev *refdev, int minor_version)
static int super_90_validate(struct mddev *mddev, struct md_rdev *freshest, struct md_rdev *rdev)
static void rdev_uninit_serial(struct md_rdev *rdev)
static void super_90_sync(struct mddev *mddev, struct md_rdev *rdev)
struct md_rdev *rdev2;
struct md_rdev *rdev;
static int rdev_init_serial(struct md_rdev *rdev)
super_90_rdev_size_change(struct md_rdev *rdev, sector_t num_sectors)
super_90_allow_new_offset(struct md_rdev *rdev, unsigned long long new_offset)
static int super_1_load(struct md_rdev *rdev, struct md_rdev *refdev, int minor_version)
static int super_1_validate(struct mddev *mddev, struct md_rdev *freshest, struct md_rdev *rdev)
struct md_rdev *rdev;
static void super_1_sync(struct mddev *mddev, struct md_rdev *rdev)
struct md_rdev *rdev2;
static int rdev_need_serial(struct md_rdev *rdev)
void mddev_create_serial_pool(struct mddev *mddev, struct md_rdev *rdev)
super_1_rdev_size_change(struct md_rdev *rdev, sector_t num_sectors)
super_1_allow_new_offset(struct md_rdev *rdev,
static void sync_super(struct mddev *mddev, struct md_rdev *rdev)
struct md_rdev *rdev, *rdev2;
static bool rdev_read_only(struct md_rdev *rdev)
static int bind_rdev_to_array(struct md_rdev *rdev, struct mddev *mddev)
static struct md_rdev claim_rdev;
static void export_rdev(struct md_rdev *rdev, struct mddev *mddev)
static void md_kick_rdev_from_array(struct md_rdev *rdev)
struct md_rdev *rdev;
rdev = list_first_entry(&mddev->disks, struct md_rdev,
void mddev_destroy_serial_pool(struct mddev *mddev, struct md_rdev *rdev)
struct md_rdev *rdev;
struct md_rdev *rdev = NULL, *iter;
struct md_rdev *temp;
struct md_rdev *rdev;
static int add_bound_rdev(struct md_rdev *rdev)
ssize_t (*show)(struct md_rdev *, char *);
ssize_t (*store)(struct md_rdev *, const char *, size_t);
state_show(struct md_rdev *rdev, char *page)
state_store(struct md_rdev *rdev, const char *buf, size_t len)
errors_show(struct md_rdev *rdev, char *page)
errors_store(struct md_rdev *rdev, const char *buf, size_t len)
slot_show(struct md_rdev *rdev, char *page)
slot_store(struct md_rdev *rdev, const char *buf, size_t len)
offset_show(struct md_rdev *rdev, char *page)
offset_store(struct md_rdev *rdev, const char *buf, size_t len)
static ssize_t new_offset_show(struct md_rdev *rdev, char *page)
static ssize_t new_offset_store(struct md_rdev *rdev,
rdev_size_show(struct md_rdev *rdev, char *page)
static int md_rdevs_overlap(struct md_rdev *a, struct md_rdev *b)
static bool md_rdev_overlaps(struct md_rdev *rdev)
struct md_rdev *rdev2;
rdev_size_store(struct md_rdev *rdev, const char *buf, size_t len)
static ssize_t recovery_start_show(struct md_rdev *rdev, char *page)
static ssize_t recovery_start_store(struct md_rdev *rdev, const char *buf, size_t len)
static ssize_t bb_show(struct md_rdev *rdev, char *page)
static ssize_t bb_store(struct md_rdev *rdev, const char *page, size_t len)
static ssize_t ubb_show(struct md_rdev *rdev, char *page)
static ssize_t ubb_store(struct md_rdev *rdev, const char *page, size_t len)
ppl_sector_show(struct md_rdev *rdev, char *page)
ppl_sector_store(struct md_rdev *rdev, const char *buf, size_t len)
ppl_size_show(struct md_rdev *rdev, char *page)
ppl_size_store(struct md_rdev *rdev, const char *buf, size_t len)
struct md_rdev *rdev = container_of(kobj, struct md_rdev, kobj);
struct md_rdev *rdev = container_of(kobj, struct md_rdev, kobj);
struct md_rdev *rdev = container_of(ko, struct md_rdev, kobj);
int md_rdev_init(struct md_rdev *rdev)
static struct md_rdev *md_import_device(dev_t newdev, int super_format, int super_minor)
struct md_rdev *rdev;
struct md_rdev *rdev, *freshest, *tmp;
struct md_rdev *rdev;
struct md_rdev *rdev;
struct md_rdev *rdev;
struct md_rdev *rdev0
struct md_rdev, same_set);
static bool rdev_needs_recovery(struct md_rdev *rdev, sector_t sectors)
struct md_rdev *rdev;
struct md_rdev *rdev;
struct md_rdev *rdev;
struct md_rdev *rdev;
int mddev_stack_new_rdev(struct mddev *mddev, struct md_rdev *rdev)
struct md_rdev *rdev;
struct md_rdev *rdev2;
struct md_rdev *rdev;
struct md_rdev *rdev;
struct md_rdev *rdev;
struct md_rdev *rdev0, *rdev, *tmp;
struct md_rdev, same_set);
struct md_rdev *rdev;
struct md_rdev *rdev;
struct md_rdev *rdev;
struct md_rdev *rdev0
struct md_rdev, same_set);
struct md_rdev *rdev2;
struct md_rdev *rdev;
struct md_rdev *rdev;
struct md_rdev *rdev;
struct md_rdev *rdev;
struct md_rdev *rdev;
void md_error(struct mddev *mddev, struct md_rdev *rdev)
struct md_rdev *rdev;
struct md_rdev *rdev;
struct md_rdev *rdev;
static bool is_rdev_holder_idle(struct md_rdev *rdev, bool init)
struct md_rdev *rdev;
struct md_rdev *rdev;
struct md_rdev *tmp;
void md_submit_discard_bio(struct mddev *mddev, struct md_rdev *rdev,
struct md_rdev *recover_rdev = NULL;
struct md_rdev *rdev;
struct md_rdev *rdev;
struct md_rdev *rdev;
static bool rdev_removeable(struct md_rdev *rdev)
struct md_rdev *md_find_rdev_nr_rcu(struct mddev *mddev, int nr)
struct md_rdev *rdev;
static bool rdev_is_spare(struct md_rdev *rdev)
static bool rdev_addable(struct md_rdev *rdev)
struct md_rdev *rdev;
struct md_rdev *this);
static int remove_spares(struct mddev *mddev, struct md_rdev *this)
struct md_rdev *rdev;
struct md_rdev *this)
struct md_rdev *rdev;
static struct md_rdev *find_rdev(struct mddev *mddev, dev_t dev)
struct md_rdev *rdev;
int mddev_stack_new_rdev(struct mddev *mddev, struct md_rdev *rdev);
static inline bool rdev_blocked(struct md_rdev *rdev)
static inline int is_badblock(struct md_rdev *rdev, sector_t s, sector_t sectors,
static inline int rdev_has_badblock(struct md_rdev *rdev, sector_t s,
extern bool rdev_set_badblocks(struct md_rdev *rdev, sector_t s, int sectors,
extern void rdev_clear_badblocks(struct md_rdev *rdev, sector_t s, int sectors,
void (*sync_super)(struct mddev *mddev, struct md_rdev *rdev);
void (*error_handler)(struct mddev *mddev, struct md_rdev *rdev);
int (*hot_add_disk) (struct mddev *mddev, struct md_rdev *rdev);
int (*hot_remove_disk) (struct mddev *mddev, struct md_rdev *rdev);
static inline int sysfs_link_rdev(struct mddev *mddev, struct md_rdev *rdev)
static inline void sysfs_unlink_rdev(struct mddev *mddev, struct md_rdev *rdev)
extern void md_error(struct mddev *mddev, struct md_rdev *rdev);
void md_submit_discard_bio(struct mddev *mddev, struct md_rdev *rdev,
void md_write_metadata(struct mddev *mddev, struct md_rdev *rdev,
extern int sync_page_io(struct md_rdev *rdev, sector_t sector, int size,
extern void md_wait_for_blocked_rdev(struct md_rdev *rdev, struct mddev *mddev);
extern int md_rdev_init(struct md_rdev *rdev);
extern void md_rdev_clear(struct md_rdev *rdev);
extern void mddev_create_serial_pool(struct mddev *mddev, struct md_rdev *rdev);
struct md_rdev *rdev);
struct md_rdev *md_find_rdev_nr_rcu(struct mddev *mddev, int nr);
struct md_rdev *md_find_rdev_rcu(struct mddev *mddev, dev_t dev);
static inline bool is_rdev_broken(struct md_rdev *rdev)
static inline void rdev_dec_pending(struct md_rdev *rdev, struct mddev *mddev)
conf->devlist = kzalloc(array3_size(sizeof(struct md_rdev *),
static struct md_rdev *map_sector(struct mddev *mddev, struct strip_zone *zone,
struct md_rdev *rdev;
struct md_rdev *rdev;
struct md_rdev *tmp_dev;
static void raid0_error(struct mddev *mddev, struct md_rdev *rdev)
struct md_rdev *rdev;
struct md_rdev *smallest, *rdev1, *rdev2, *rdev, **dev;
struct md_rdev **devlist; /* lists of rdevs, pointed to
struct md_rdev *rdev = (void *)bio->bi_bdev;
static inline void check_decay_read_errors(struct mddev *mddev, struct md_rdev *rdev)
static inline bool exceed_read_errors(struct mddev *mddev, struct md_rdev *rdev)
static inline int raid1_check_read_range(struct md_rdev *rdev,
struct md_rdev *rdev = conf->mirrors[i].rdev;
struct md_rdev *rdev = conf->mirrors[i].rdev;
struct md_rdev *rdev = conf->mirrors[i].rdev;
struct md_rdev *rdev = READ_ONCE(conf->mirrors[i].rdev);
static void raid1_error(struct mddev *mddev, struct md_rdev *rdev)
struct md_rdev *rdev = conf->mirrors[i].rdev;
struct md_rdev *rdev = conf->mirrors[i].rdev;
struct md_rdev *repl = conf->mirrors[conf->raid_disks + i].rdev;
static bool raid1_add_conf(struct r1conf *conf, struct md_rdev *rdev, int disk,
struct md_rdev *rdev = info->rdev;
static int raid1_add_disk(struct mddev *mddev, struct md_rdev *rdev)
static int raid1_remove_disk(struct mddev *mddev, struct md_rdev *rdev)
struct md_rdev *repl =
struct md_rdev *rdev = conf->mirrors[find_bio_disk(r1_bio, bio)].rdev;
static int r1_sync_page_io(struct md_rdev *rdev, sector_t sector,
struct md_rdev *rdev;
struct md_rdev *rdev = conf->mirrors[read_disk].rdev;
struct md_rdev *rdev = conf->mirrors[read_disk].rdev;
struct md_rdev *rdev = conf->mirrors[i].rdev;
struct md_rdev *rdev = conf->mirrors[m].rdev;
struct md_rdev *rdev = conf->mirrors[m].rdev;
struct md_rdev *rdev;
struct md_rdev *rdev;
struct md_rdev *rdev = conf->mirrors[i].rdev;
struct md_rdev *rdev;
struct md_rdev *rdev = conf->mirrors[d].rdev;
struct md_rdev *rdev = conf->mirrors[r1_bio->read_disk].rdev;
struct md_rdev *rdev = conf->mirrors[mirror].rdev;
static int check_and_add_serial(struct md_rdev *rdev, struct r1bio *r1_bio,
struct md_rdev *rdev;
static bool rdev_in_recovery(struct md_rdev *rdev, struct r1bio *r1_bio)
struct md_rdev *rdev;
struct md_rdev *rdev;
static bool rdev_readable(struct md_rdev *rdev, struct r1bio *r1_bio)
struct md_rdev *rdev;
static void wait_for_serialization(struct md_rdev *rdev, struct r1bio *r1_bio)
static void remove_serial(struct md_rdev *rdev, sector_t lo, sector_t hi)
struct md_rdev *rdev;
struct md_rdev *rdev)
struct md_rdev *rdev;
struct md_rdev *err_rdev = NULL;
struct md_rdev *rdev;
struct md_rdev *blocked_rdev;
struct md_rdev *rdev, *rrdev;
struct md_rdev *rdev, *rrdev;
struct md_rdev *rdev = conf->mirrors[d].rdev;
struct md_rdev *rrdev = conf->mirrors[d].replacement;
struct md_rdev *rdev = NULL;
struct md_rdev *rdev, *rrdev;
struct md_rdev *rdev = conf->mirrors[disk].rdev;
struct md_rdev *rrdev = conf->mirrors[disk].replacement;
struct md_rdev *rdev = READ_ONCE(conf->mirrors[i].rdev);
struct md_rdev *rdev;
static void raid10_error(struct mddev *mddev, struct md_rdev *rdev)
struct md_rdev *rdev;
static int raid10_add_disk(struct mddev *mddev, struct md_rdev *rdev)
static int raid10_remove_disk(struct mddev *mddev, struct md_rdev *rdev)
struct md_rdev **rdevp;
struct md_rdev *rdev = NULL;
struct md_rdev *rdev;
struct md_rdev *rdev;
struct md_rdev *rdev2 = conf->mirrors[dw].rdev;
static int r10_sync_page_io(struct md_rdev *rdev, sector_t sector,
struct md_rdev *rdev;
struct md_rdev *rdev = conf->mirrors[r10_bio->devs[i].devnum].rdev;
struct md_rdev *rdev = r10_bio->devs[slot].rdev;
struct md_rdev *rdev;
struct md_rdev *rdev =
struct md_rdev *mrdev, *mreplace;
struct md_rdev *rdev = conf->mirrors[j].rdev;
struct md_rdev *rdev = conf->mirrors[d].rdev;
struct md_rdev *rdev;
struct md_rdev *rdev;
struct md_rdev *rdev;
struct md_rdev *rdev;
struct md_rdev *rdev = conf->mirrors[i].rdev;
struct md_rdev *rdev = conf->mirrors[i].rdev;
struct md_rdev *rdev;
struct md_rdev *rdev;
struct md_rdev *rdev = NULL;
struct md_rdev *rdev2;
struct md_rdev *rdev;
struct md_rdev *rdev = conf->mirrors[d].rdev;
struct md_rdev *rdev = NULL;
struct md_rdev *rdev = conf->mirrors[d].rdev;
static struct md_rdev *read_balance(struct r10conf *conf,
struct md_rdev *best_dist_rdev, *best_pending_rdev, *rdev = NULL;
struct md_rdev *rdev; /* used for reads
struct md_rdev *rdev, *replacement;
struct md_rdev *rdev, *rrdev;
struct md_rdev *rdev = log->rdev;
void r5c_update_on_rdev_error(struct mddev *mddev, struct md_rdev *rdev)
int r5l_init_log(struct r5conf *conf, struct md_rdev *rdev)
struct md_rdev *rdev;
static inline int log_init(struct r5conf *conf, struct md_rdev *journal_dev,
static inline int log_modify(struct r5conf *conf, struct md_rdev *rdev, bool add)
void r5c_update_on_rdev_error(struct mddev *mddev, struct md_rdev *rdev);
int ppl_modify_log(struct r5conf *conf, struct md_rdev *rdev, bool add);
int r5l_init_log(struct r5conf *conf, struct md_rdev *rdev);
struct md_rdev *rdev = log->rdev;
struct md_rdev *rdev = log->rdev;
struct md_rdev *rdev; /* array member disk associated with
static int ppl_validate_rdev(struct md_rdev *rdev)
static void ppl_init_child_log(struct ppl_log *log, struct md_rdev *rdev)
struct md_rdev *rdev = conf->disks[i].rdev;
int ppl_modify_log(struct r5conf *conf, struct md_rdev *rdev, bool add)
struct md_rdev *rdev;
struct md_rdev *rdev;
struct md_rdev *parity_rdev;
struct md_rdev *rdev;
struct md_rdev *rdev = log->rdev;
struct md_rdev *rdev, *rrdev = NULL;
struct md_rdev *rdev = NULL;
struct md_rdev *rdev;
static void raid5_error(struct mddev *mddev, struct md_rdev *rdev)
struct md_rdev *rdev = conf->disks[i].rdev;
struct md_rdev *rdev = conf->disks[i].rdev;
struct md_rdev *rdev;
struct md_rdev *rdev;
struct md_rdev *rdev2 = conf->disks[i].rdev;
struct md_rdev *rdev2 = conf->disks[i].rdev;
struct md_rdev *rdev2 = conf->disks[i].replacement;
struct md_rdev *rdev;
struct md_rdev *rdev = (void *)raid_bi->bi_next;
struct md_rdev *rdev;
struct md_rdev *rdev;
struct md_rdev *rdev = conf->disks[i].rdev;
struct md_rdev *rdev = READ_ONCE(conf->disks[i].rdev);
struct md_rdev *rdev = READ_ONCE(conf->disks[i].rdev);
struct md_rdev *rdev;
struct md_rdev *rdev;
struct md_rdev *rdev;
struct md_rdev *journal_dev = NULL;
struct md_rdev *rdev = READ_ONCE(conf->disks[i].rdev);
struct md_rdev *rdev;
struct md_rdev *rdev, *replacement;
static int raid5_remove_disk(struct mddev *mddev, struct md_rdev *rdev)
struct md_rdev **rdevp;
struct md_rdev *tmp;
static int raid5_add_disk(struct mddev *mddev, struct md_rdev *rdev)
struct md_rdev *tmp;
struct md_rdev *rdev;
struct md_rdev *rdev;
struct md_rdev *rdev;
struct md_rdev *rdev;
struct md_rdev *blocked_rdev;
struct md_rdev *rdev;
struct md_rdev *replacement;