Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 1f403624 authored by Dan Williams's avatar Dan Williams
Browse files

md: centralize ->array_sectors modifications



Get personalities out of the business of directly modifying
->array_sectors.  Lays groundwork to introduce policy on when
->array_sectors can be modified.

Reviewed-by: default avatarAndre Noll <maan@systemlinux.org>
Signed-off-by: default avatarDan Williams <dan.j.williams@intel.com>
parent 80c3a6ce
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -312,7 +312,7 @@ static int run(mddev_t *mddev)
	list_for_each_entry(rdev, &mddev->disks, same_set)
		conf->rdev = rdev;

	mddev->array_sectors = faulty_size(mddev, 0, 0);
	md_set_array_sectors(mddev, faulty_size(mddev, 0, 0));
	mddev->private = conf;

	reconfig(mddev, mddev->layout, -1);
+2 −2
Original line number Diff line number Diff line
@@ -263,7 +263,7 @@ static int linear_run (mddev_t *mddev)
	if (!conf)
		return 1;
	mddev->private = conf;
	mddev->array_sectors = linear_size(mddev, 0, 0);
	md_set_array_sectors(mddev, linear_size(mddev, 0, 0));

	blk_queue_merge_bvec(mddev->queue, linear_mergeable_bvec);
	mddev->queue->unplug_fn = linear_unplug;
@@ -297,7 +297,7 @@ static int linear_add(mddev_t *mddev, mdk_rdev_t *rdev)
	newconf->prev = mddev_to_conf(mddev);
	mddev->private = newconf;
	mddev->raid_disks++;
	mddev->array_sectors = linear_size(mddev, 0, 0);
	md_set_array_sectors(mddev, linear_size(mddev, 0, 0));
	set_capacity(mddev->gendisk, mddev->array_sectors);
	return 0;
}
+6 −0
Original line number Diff line number Diff line
@@ -4977,6 +4977,12 @@ static int set_array_info(mddev_t * mddev, mdu_array_info_t *info)
	return 0;
}

void md_set_array_sectors(mddev_t *mddev, sector_t array_sectors)
{
	mddev->array_sectors = array_sectors;
}
EXPORT_SYMBOL(md_set_array_sectors);

static int update_size(mddev_t *mddev, sector_t num_sectors)
{
	mdk_rdev_t *rdev;
+1 −0
Original line number Diff line number Diff line
@@ -430,3 +430,4 @@ extern void md_do_sync(mddev_t *mddev);
extern void md_new_event(mddev_t *mddev);
extern int md_allow_write(mddev_t *mddev);
extern void md_wait_for_blocked_rdev(mdk_rdev_t *rdev, mddev_t *mddev);
extern void md_set_array_sectors(mddev_t *mddev, sector_t array_sectors);
+1 −1
Original line number Diff line number Diff line
@@ -510,7 +510,7 @@ static int multipath_run (mddev_t *mddev)
	/*
	 * Ok, everything is just fine now
	 */
	mddev->array_sectors = multipath_size(mddev, 0, 0);
	md_set_array_sectors(mddev, multipath_size(mddev, 0, 0));

	mddev->queue->unplug_fn = multipath_unplug;
	mddev->queue->backing_dev_info.congested_fn = multipath_congested;
Loading