Lines Matching refs:mddev
30 static inline struct dev_info *which_dev(struct mddev *mddev, sector_t sector) in which_dev() argument
36 hi = mddev->raid_disks - 1; in which_dev()
37 conf = mddev->private; in which_dev()
55 static sector_t linear_size(struct mddev *mddev, sector_t sectors, int raid_disks) in linear_size() argument
60 conf = mddev->private; in linear_size()
68 static int linear_set_limits(struct mddev *mddev) in linear_set_limits() argument
74 lim.max_hw_sectors = mddev->chunk_sectors; in linear_set_limits()
75 lim.max_write_zeroes_sectors = mddev->chunk_sectors; in linear_set_limits()
76 lim.io_min = mddev->chunk_sectors << 9; in linear_set_limits()
77 err = mddev_stack_rdev_limits(mddev, &lim, MDDEV_STACK_INTEGRITY); in linear_set_limits()
81 return queue_limits_set(mddev->gendisk->queue, &lim); in linear_set_limits()
84 static struct linear_conf *linear_conf(struct mddev *mddev, int raid_disks) in linear_conf() argument
112 rdev_for_each(rdev, mddev) { in linear_conf()
119 mdname(mddev)); in linear_conf()
124 if (mddev->chunk_sectors) { in linear_conf()
126 sector_div(sectors, mddev->chunk_sectors); in linear_conf()
127 rdev->sectors = sectors * mddev->chunk_sectors; in linear_conf()
135 mdname(mddev)); in linear_conf()
149 if (!mddev_is_dm(mddev)) { in linear_conf()
150 ret = linear_set_limits(mddev); in linear_conf()
162 static int linear_run(struct mddev *mddev) in linear_run() argument
167 if (md_check_no_bitmap(mddev)) in linear_run()
170 conf = linear_conf(mddev, mddev->raid_disks); in linear_run()
174 mddev->private = conf; in linear_run()
175 md_set_array_sectors(mddev, linear_size(mddev, 0, 0)); in linear_run()
177 ret = md_integrity_register(mddev); in linear_run()
180 mddev->private = NULL; in linear_run()
185 static int linear_add(struct mddev *mddev, struct md_rdev *rdev) in linear_add() argument
197 if (rdev->saved_raid_disk != mddev->raid_disks) in linear_add()
203 newconf = linear_conf(mddev, mddev->raid_disks + 1); in linear_add()
213 oldconf = rcu_dereference_protected(mddev->private, in linear_add()
214 lockdep_is_held(&mddev->reconfig_mutex)); in linear_add()
215 mddev->raid_disks++; in linear_add()
216 WARN_ONCE(mddev->raid_disks != newconf->raid_disks, in linear_add()
218 rcu_assign_pointer(mddev->private, newconf); in linear_add()
219 md_set_array_sectors(mddev, linear_size(mddev, 0, 0)); in linear_add()
220 set_capacity_and_notify(mddev->gendisk, mddev->array_sectors); in linear_add()
225 static void linear_free(struct mddev *mddev, void *priv) in linear_free() argument
232 static bool linear_make_request(struct mddev *mddev, struct bio *bio) in linear_make_request() argument
239 && md_flush_request(mddev, bio)) in linear_make_request()
242 tmp_dev = which_dev(mddev, bio_sector); in linear_make_request()
252 md_error(mddev, tmp_dev->rdev); in linear_make_request()
260 GFP_NOIO, &mddev->bio_set); in linear_make_request()
273 md_account_bio(mddev, &bio); in linear_make_request()
283 if (mddev->gendisk) in linear_make_request()
284 trace_block_bio_remap(bio, disk_devt(mddev->gendisk), in linear_make_request()
286 mddev_check_write_zeroes(mddev, bio); in linear_make_request()
293 mdname(mddev), in linear_make_request()
302 static void linear_status(struct seq_file *seq, struct mddev *mddev) in linear_status() argument
304 seq_printf(seq, " %dk rounding", mddev->chunk_sectors / 2); in linear_status()
307 static void linear_error(struct mddev *mddev, struct md_rdev *rdev) in linear_error() argument
309 if (!test_and_set_bit(MD_BROKEN, &mddev->flags)) { in linear_error()
310 char *md_name = mdname(mddev); in linear_error()
317 static void linear_quiesce(struct mddev *mddev, int state) in linear_quiesce() argument