]> git.ipfire.org Git - people/teissler/ipfire-2.x.git/blob - src/patches/suse-2.6.27.31/patches.fixes/0016-md-centralize-array_sectors-modifications.patch
Merge branch 'master' of git://git.ipfire.org/ipfire-2.x
[people/teissler/ipfire-2.x.git] / src / patches / suse-2.6.27.31 / patches.fixes / 0016-md-centralize-array_sectors-modifications.patch
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