]>
Commit | Line | Data |
---|---|---|
2cb7cef9 BS |
1 | From 1f403624bde3c678a166984b1e6a727a0ce06f2b Mon Sep 17 00:00:00 2001 |
2 | From: Dan Williams <dan.j.williams@intel.com> | |
3 | Date: Tue, 31 Mar 2009 14:59:03 +1100 | |
4 | Subject: [PATCH] md: centralize ->array_sectors modifications | |
5 | ||
6 | Get personalities out of the business of directly modifying | |
7 | ->array_sectors. Lays groundwork to introduce policy on when | |
8 | ->array_sectors can be modified. | |
9 | ||
10 | Reviewed-by: Andre Noll <maan@systemlinux.org> | |
11 | Signed-off-by: Dan Williams <dan.j.williams@intel.com> | |
12 | Acked-by: NeilBrown <neilb@suse.de> | |
13 | --- | |
14 | drivers/md/linear.c | 4 ++-- | |
15 | drivers/md/md.c | 6 ++++++ | |
16 | drivers/md/raid1.c | 2 +- | |
17 | drivers/md/raid10.c | 2 +- | |
18 | drivers/md/raid5.c | 8 +++++--- | |
19 | include/linux/raid/md.h | 1 + | |
20 | 6 files changed, 16 insertions(+), 7 deletions(-) | |
21 | ||
22 | --- linux-2.6.27-SLE11_BRANCH.orig/drivers/md/linear.c | |
23 | +++ linux-2.6.27-SLE11_BRANCH/drivers/md/linear.c | |
24 | @@ -270,7 +270,7 @@ static int linear_run (mddev_t *mddev) | |
25 | if (!conf) | |
26 | return 1; | |
27 | mddev->private = conf; | |
28 | - mddev->array_sectors = linear_size(mddev, 0, 0); | |
29 | + md_set_array_sectors(mddev, linear_size(mddev, 0, 0)); | |
30 | ||
31 | blk_queue_merge_bvec(mddev->queue, linear_mergeable_bvec); | |
32 | mddev->queue->unplug_fn = linear_unplug; | |
33 | @@ -304,7 +304,7 @@ static int linear_add(mddev_t *mddev, md | |
34 | newconf->prev = mddev_to_conf(mddev); | |
35 | mddev->private = newconf; | |
36 | mddev->raid_disks++; | |
37 | - mddev->array_sectors = linear_size(mddev, 0, 0); | |
38 | + md_set_array_sectors(mddev, linear_size(mddev, 0, 0)); | |
39 | set_capacity(mddev->gendisk, mddev->array_sectors); | |
40 | return 0; | |
41 | } | |
42 | --- linux-2.6.27-SLE11_BRANCH.orig/drivers/md/md.c | |
43 | +++ linux-2.6.27-SLE11_BRANCH/drivers/md/md.c | |
44 | @@ -4662,6 +4662,12 @@ static int set_array_info(mddev_t * mdde | |
45 | return 0; | |
46 | } | |
47 | ||
48 | +void md_set_array_sectors(mddev_t *mddev, sector_t array_sectors) | |
49 | +{ | |
50 | + mddev->array_sectors = array_sectors; | |
51 | +} | |
52 | +EXPORT_SYMBOL(md_set_array_sectors); | |
53 | + | |
54 | static int update_size(mddev_t *mddev, sector_t num_sectors) | |
55 | { | |
56 | mdk_rdev_t * rdev; | |
57 | --- linux-2.6.27-SLE11_BRANCH.orig/drivers/md/raid1.c | |
58 | +++ linux-2.6.27-SLE11_BRANCH/drivers/md/raid1.c | |
59 | @@ -2115,7 +2115,7 @@ static int raid1_resize(mddev_t *mddev, | |
60 | * any io in the removed space completes, but it hardly seems | |
61 | * worth it. | |
62 | */ | |
63 | - mddev->array_sectors = raid1_size(mddev, sectors, 0); | |
64 | + md_set_array_sectors(mddev, raid1_size(mddev, sectors, 0)); | |
65 | set_capacity(mddev->gendisk, mddev->array_sectors); | |
66 | mddev->changed = 1; | |
67 | if (mddev->array_sectors / 2 > mddev->size && | |
68 | --- linux-2.6.27-SLE11_BRANCH.orig/drivers/md/raid10.c | |
69 | +++ linux-2.6.27-SLE11_BRANCH/drivers/md/raid10.c | |
70 | @@ -2186,7 +2186,7 @@ static int run(mddev_t *mddev) | |
71 | /* | |
72 | * Ok, everything is just fine now | |
73 | */ | |
74 | - mddev->array_sectors = raid10_size(mddev, 0, 0); | |
75 | + md_set_array_sectors(mddev, raid10_size(mddev, 0, 0)); | |
76 | mddev->resync_max_sectors = mddev->array_sectors; | |
77 | ||
78 | mddev->queue->unplug_fn = raid10_unplug; | |
79 | --- linux-2.6.27-SLE11_BRANCH.orig/drivers/md/raid5.c | |
80 | +++ linux-2.6.27-SLE11_BRANCH/drivers/md/raid5.c | |
81 | @@ -4437,7 +4437,7 @@ static int run(mddev_t *mddev) | |
82 | mddev->queue->backing_dev_info.congested_data = mddev; | |
83 | mddev->queue->backing_dev_info.congested_fn = raid5_congested; | |
84 | ||
85 | - mddev->array_sectors = raid5_size(mddev, 0, 0); | |
86 | + md_set_array_sectors(mddev, raid5_size(mddev, 0, 0)); | |
87 | ||
88 | blk_queue_merge_bvec(mddev->queue, raid5_mergeable_bvec); | |
89 | ||
90 | @@ -4658,7 +4658,8 @@ static int raid5_resize(mddev_t *mddev, | |
91 | * worth it. | |
92 | */ | |
93 | sectors &= ~((sector_t)mddev->chunk_size/512 - 1); | |
94 | - mddev->array_sectors = raid5_size(mddev, sectors, mddev->raid_disks); | |
95 | + md_set_array_sectors(mddev, raid5_size(mddev, sectors, | |
96 | + mddev->raid_disks)); | |
97 | set_capacity(mddev->gendisk, mddev->array_sectors); | |
98 | mddev->changed = 1; | |
99 | if (sectors/2 > mddev->size && mddev->recovery_cp == MaxSector) { | |
100 | @@ -4797,7 +4798,8 @@ static void end_reshape(raid5_conf_t *co | |
101 | if (!test_bit(MD_RECOVERY_INTR, &conf->mddev->recovery)) { | |
102 | mddev_t *mddev = conf->mddev; | |
103 | ||
104 | - mddev->array_sectors = raid5_size(mddev, 0, conf->raid_disks); | |
105 | + md_set_array_sectors(mddev, raid5_size(mddev, 0, | |
106 | + conf->raid_disks)); | |
107 | set_capacity(mddev->gendisk, mddev->array_sectors); | |
108 | mddev->changed = 1; | |
109 | conf->previous_raid_disks = conf->raid_disks; | |
110 | --- linux-2.6.27-SLE11_BRANCH.orig/include/linux/raid/md.h | |
111 | +++ linux-2.6.27-SLE11_BRANCH/include/linux/raid/md.h | |
112 | @@ -97,6 +97,7 @@ extern void md_do_sync(mddev_t *mddev); | |
113 | extern void md_new_event(mddev_t *mddev); | |
114 | extern int md_allow_write(mddev_t *mddev); | |
115 | extern void md_wait_for_blocked_rdev(mdk_rdev_t *rdev, mddev_t *mddev); | |
116 | +extern void md_set_array_sectors(mddev_t *mddev, sector_t array_sectors); | |
117 | ||
118 | #endif /* CONFIG_MD */ | |
119 | #endif |