Lines Matching defs:mddev
24 static inline struct dev_info *which_dev(struct mddev *mddev, sector_t sector)
30 hi = mddev->raid_disks - 1;
31 conf = mddev->private;
49 static sector_t linear_size(struct mddev *mddev, sector_t sectors, int raid_disks)
54 conf = mddev->private;
62 static struct linear_conf *linear_conf(struct mddev *mddev, int raid_disks)
76 rdev_for_each(rdev, mddev) {
83 mdname(mddev));
88 if (mddev->chunk_sectors) {
90 sector_div(sectors, mddev->chunk_sectors);
91 rdev->sectors = sectors * mddev->chunk_sectors;
94 disk_stack_limits(mddev->gendisk, rdev->bdev,
105 mdname(mddev));
110 blk_queue_flag_clear(QUEUE_FLAG_DISCARD, mddev->queue);
112 blk_queue_flag_set(QUEUE_FLAG_DISCARD, mddev->queue);
125 * conf->raid_disks is copy of mddev->raid_disks. The reason to
126 * keep a copy of mddev->raid_disks in struct linear_conf is,
127 * mddev->raid_disks may not be consistent with pointers number of
131 * pointers in conf->disks[] array, and mddev->private is updated
144 static int linear_run (struct mddev *mddev)
149 if (md_check_no_bitmap(mddev))
151 conf = linear_conf(mddev, mddev->raid_disks);
155 mddev->private = conf;
156 md_set_array_sectors(mddev, linear_size(mddev, 0, 0));
158 ret = md_integrity_register(mddev);
161 mddev->private = NULL;
166 static int linear_add(struct mddev *mddev, struct md_rdev *rdev)
178 if (rdev->saved_raid_disk != mddev->raid_disks)
184 newconf = linear_conf(mddev,mddev->raid_disks+1);
190 * value of mddev->raid_disks, WARN_ONCE() is just used to make
195 mddev_suspend(mddev);
196 oldconf = rcu_dereference_protected(mddev->private,
197 lockdep_is_held(&mddev->reconfig_mutex));
198 mddev->raid_disks++;
199 WARN_ONCE(mddev->raid_disks != newconf->raid_disks,
200 "copied raid_disks doesn't match mddev->raid_disks");
201 rcu_assign_pointer(mddev->private, newconf);
202 md_set_array_sectors(mddev, linear_size(mddev, 0, 0));
203 set_capacity(mddev->gendisk, mddev->array_sectors);
204 mddev_resume(mddev);
205 revalidate_disk_size(mddev->gendisk, true);
210 static void linear_free(struct mddev *mddev, void *priv)
217 static bool linear_make_request(struct mddev *mddev, struct bio *bio)
225 && md_flush_request(mddev, bio))
228 tmp_dev = which_dev(mddev, bio_sector);
245 GFP_NOIO, &mddev->bio_set);
260 if (mddev->gendisk)
262 bio, disk_devt(mddev->gendisk),
264 mddev_check_writesame(mddev, bio);
265 mddev_check_write_zeroes(mddev, bio);
272 mdname(mddev),
281 static void linear_status (struct seq_file *seq, struct mddev *mddev)
283 seq_printf(seq, " %dk rounding", mddev->chunk_sectors / 2);
286 static void linear_quiesce(struct mddev *mddev, int state)