diff options
Diffstat (limited to 'drivers/md')
-rw-r--r-- | drivers/md/dm-log-userspace-base.c | 1 | ||||
-rw-r--r-- | drivers/md/dm-log-userspace-transfer.c | 1 | ||||
-rw-r--r-- | drivers/md/dm-region-hash.c | 1 | ||||
-rw-r--r-- | drivers/md/dm-service-time.c | 2 | ||||
-rw-r--r-- | drivers/md/dm-target.c | 1 | ||||
-rw-r--r-- | drivers/md/faulty.c | 1 | ||||
-rw-r--r-- | drivers/md/linear.c | 13 | ||||
-rw-r--r-- | drivers/md/md.c | 1 | ||||
-rw-r--r-- | drivers/md/multipath.c | 21 | ||||
-rw-r--r-- | drivers/md/raid0.c | 14 | ||||
-rw-r--r-- | drivers/md/raid1.c | 29 | ||||
-rw-r--r-- | drivers/md/raid10.c | 29 | ||||
-rw-r--r-- | drivers/md/raid5.c | 20 | ||||
-rw-r--r-- | drivers/md/raid6algos.c | 1 |
14 files changed, 81 insertions, 54 deletions
diff --git a/drivers/md/dm-log-userspace-base.c b/drivers/md/dm-log-userspace-base.c index 7ac2c1450d10..1ed0094f064b 100644 --- a/drivers/md/dm-log-userspace-base.c +++ b/drivers/md/dm-log-userspace-base.c | |||
@@ -5,6 +5,7 @@ | |||
5 | */ | 5 | */ |
6 | 6 | ||
7 | #include <linux/bio.h> | 7 | #include <linux/bio.h> |
8 | #include <linux/slab.h> | ||
8 | #include <linux/dm-dirty-log.h> | 9 | #include <linux/dm-dirty-log.h> |
9 | #include <linux/device-mapper.h> | 10 | #include <linux/device-mapper.h> |
10 | #include <linux/dm-log-userspace.h> | 11 | #include <linux/dm-log-userspace.h> |
diff --git a/drivers/md/dm-log-userspace-transfer.c b/drivers/md/dm-log-userspace-transfer.c index f1c8cae70b4b..075cbcf8a9f5 100644 --- a/drivers/md/dm-log-userspace-transfer.c +++ b/drivers/md/dm-log-userspace-transfer.c | |||
@@ -6,6 +6,7 @@ | |||
6 | 6 | ||
7 | #include <linux/kernel.h> | 7 | #include <linux/kernel.h> |
8 | #include <linux/module.h> | 8 | #include <linux/module.h> |
9 | #include <linux/slab.h> | ||
9 | #include <net/sock.h> | 10 | #include <net/sock.h> |
10 | #include <linux/workqueue.h> | 11 | #include <linux/workqueue.h> |
11 | #include <linux/connector.h> | 12 | #include <linux/connector.h> |
diff --git a/drivers/md/dm-region-hash.c b/drivers/md/dm-region-hash.c index 168bd38f5006..bd5c58b28868 100644 --- a/drivers/md/dm-region-hash.c +++ b/drivers/md/dm-region-hash.c | |||
@@ -11,6 +11,7 @@ | |||
11 | #include <linux/ctype.h> | 11 | #include <linux/ctype.h> |
12 | #include <linux/init.h> | 12 | #include <linux/init.h> |
13 | #include <linux/module.h> | 13 | #include <linux/module.h> |
14 | #include <linux/slab.h> | ||
14 | #include <linux/vmalloc.h> | 15 | #include <linux/vmalloc.h> |
15 | 16 | ||
16 | #include "dm.h" | 17 | #include "dm.h" |
diff --git a/drivers/md/dm-service-time.c b/drivers/md/dm-service-time.c index cfa668f46c40..9c6c2e47ad62 100644 --- a/drivers/md/dm-service-time.c +++ b/drivers/md/dm-service-time.c | |||
@@ -11,6 +11,8 @@ | |||
11 | #include "dm.h" | 11 | #include "dm.h" |
12 | #include "dm-path-selector.h" | 12 | #include "dm-path-selector.h" |
13 | 13 | ||
14 | #include <linux/slab.h> | ||
15 | |||
14 | #define DM_MSG_PREFIX "multipath service-time" | 16 | #define DM_MSG_PREFIX "multipath service-time" |
15 | #define ST_MIN_IO 1 | 17 | #define ST_MIN_IO 1 |
16 | #define ST_MAX_RELATIVE_THROUGHPUT 100 | 18 | #define ST_MAX_RELATIVE_THROUGHPUT 100 |
diff --git a/drivers/md/dm-target.c b/drivers/md/dm-target.c index 04feccf2a997..11dea11dc0b6 100644 --- a/drivers/md/dm-target.c +++ b/drivers/md/dm-target.c | |||
@@ -10,7 +10,6 @@ | |||
10 | #include <linux/init.h> | 10 | #include <linux/init.h> |
11 | #include <linux/kmod.h> | 11 | #include <linux/kmod.h> |
12 | #include <linux/bio.h> | 12 | #include <linux/bio.h> |
13 | #include <linux/slab.h> | ||
14 | 13 | ||
15 | #define DM_MSG_PREFIX "target" | 14 | #define DM_MSG_PREFIX "target" |
16 | 15 | ||
diff --git a/drivers/md/faulty.c b/drivers/md/faulty.c index 713acd02ab39..8e3850b98cca 100644 --- a/drivers/md/faulty.c +++ b/drivers/md/faulty.c | |||
@@ -64,6 +64,7 @@ | |||
64 | #define MaxFault 50 | 64 | #define MaxFault 50 |
65 | #include <linux/blkdev.h> | 65 | #include <linux/blkdev.h> |
66 | #include <linux/raid/md_u.h> | 66 | #include <linux/raid/md_u.h> |
67 | #include <linux/slab.h> | ||
67 | #include "md.h" | 68 | #include "md.h" |
68 | #include <linux/seq_file.h> | 69 | #include <linux/seq_file.h> |
69 | 70 | ||
diff --git a/drivers/md/linear.c b/drivers/md/linear.c index af2d39d603c7..09437e958235 100644 --- a/drivers/md/linear.c +++ b/drivers/md/linear.c | |||
@@ -19,6 +19,7 @@ | |||
19 | #include <linux/blkdev.h> | 19 | #include <linux/blkdev.h> |
20 | #include <linux/raid/md_u.h> | 20 | #include <linux/raid/md_u.h> |
21 | #include <linux/seq_file.h> | 21 | #include <linux/seq_file.h> |
22 | #include <linux/slab.h> | ||
22 | #include "md.h" | 23 | #include "md.h" |
23 | #include "linear.h" | 24 | #include "linear.h" |
24 | 25 | ||
@@ -172,12 +173,14 @@ static linear_conf_t *linear_conf(mddev_t *mddev, int raid_disks) | |||
172 | disk_stack_limits(mddev->gendisk, rdev->bdev, | 173 | disk_stack_limits(mddev->gendisk, rdev->bdev, |
173 | rdev->data_offset << 9); | 174 | rdev->data_offset << 9); |
174 | /* as we don't honour merge_bvec_fn, we must never risk | 175 | /* as we don't honour merge_bvec_fn, we must never risk |
175 | * violating it, so limit ->max_sector to one PAGE, as | 176 | * violating it, so limit max_segments to 1 lying within |
176 | * a one page request is never in violation. | 177 | * a single page. |
177 | */ | 178 | */ |
178 | if (rdev->bdev->bd_disk->queue->merge_bvec_fn && | 179 | if (rdev->bdev->bd_disk->queue->merge_bvec_fn) { |
179 | queue_max_sectors(mddev->queue) > (PAGE_SIZE>>9)) | 180 | blk_queue_max_segments(mddev->queue, 1); |
180 | blk_queue_max_hw_sectors(mddev->queue, PAGE_SIZE>>9); | 181 | blk_queue_segment_boundary(mddev->queue, |
182 | PAGE_CACHE_SIZE - 1); | ||
183 | } | ||
181 | 184 | ||
182 | conf->array_sectors += rdev->sectors; | 185 | conf->array_sectors += rdev->sectors; |
183 | cnt++; | 186 | cnt++; |
diff --git a/drivers/md/md.c b/drivers/md/md.c index fdc1890b6ac5..9712b2e97be4 100644 --- a/drivers/md/md.c +++ b/drivers/md/md.c | |||
@@ -49,6 +49,7 @@ | |||
49 | #include <linux/delay.h> | 49 | #include <linux/delay.h> |
50 | #include <linux/raid/md_p.h> | 50 | #include <linux/raid/md_p.h> |
51 | #include <linux/raid/md_u.h> | 51 | #include <linux/raid/md_u.h> |
52 | #include <linux/slab.h> | ||
52 | #include "md.h" | 53 | #include "md.h" |
53 | #include "bitmap.h" | 54 | #include "bitmap.h" |
54 | 55 | ||
diff --git a/drivers/md/multipath.c b/drivers/md/multipath.c index 4b323f45ad74..789bf535d29c 100644 --- a/drivers/md/multipath.c +++ b/drivers/md/multipath.c | |||
@@ -22,6 +22,7 @@ | |||
22 | #include <linux/blkdev.h> | 22 | #include <linux/blkdev.h> |
23 | #include <linux/raid/md_u.h> | 23 | #include <linux/raid/md_u.h> |
24 | #include <linux/seq_file.h> | 24 | #include <linux/seq_file.h> |
25 | #include <linux/slab.h> | ||
25 | #include "md.h" | 26 | #include "md.h" |
26 | #include "multipath.h" | 27 | #include "multipath.h" |
27 | 28 | ||
@@ -301,14 +302,16 @@ static int multipath_add_disk(mddev_t *mddev, mdk_rdev_t *rdev) | |||
301 | rdev->data_offset << 9); | 302 | rdev->data_offset << 9); |
302 | 303 | ||
303 | /* as we don't honour merge_bvec_fn, we must never risk | 304 | /* as we don't honour merge_bvec_fn, we must never risk |
304 | * violating it, so limit ->max_sector to one PAGE, as | 305 | * violating it, so limit ->max_segments to one, lying |
305 | * a one page request is never in violation. | 306 | * within a single page. |
306 | * (Note: it is very unlikely that a device with | 307 | * (Note: it is very unlikely that a device with |
307 | * merge_bvec_fn will be involved in multipath.) | 308 | * merge_bvec_fn will be involved in multipath.) |
308 | */ | 309 | */ |
309 | if (q->merge_bvec_fn && | 310 | if (q->merge_bvec_fn) { |
310 | queue_max_sectors(q) > (PAGE_SIZE>>9)) | 311 | blk_queue_max_segments(mddev->queue, 1); |
311 | blk_queue_max_hw_sectors(mddev->queue, PAGE_SIZE>>9); | 312 | blk_queue_segment_boundary(mddev->queue, |
313 | PAGE_CACHE_SIZE - 1); | ||
314 | } | ||
312 | 315 | ||
313 | conf->working_disks++; | 316 | conf->working_disks++; |
314 | mddev->degraded--; | 317 | mddev->degraded--; |
@@ -476,9 +479,11 @@ static int multipath_run (mddev_t *mddev) | |||
476 | /* as we don't honour merge_bvec_fn, we must never risk | 479 | /* as we don't honour merge_bvec_fn, we must never risk |
477 | * violating it, not that we ever expect a device with | 480 | * violating it, not that we ever expect a device with |
478 | * a merge_bvec_fn to be involved in multipath */ | 481 | * a merge_bvec_fn to be involved in multipath */ |
479 | if (rdev->bdev->bd_disk->queue->merge_bvec_fn && | 482 | if (rdev->bdev->bd_disk->queue->merge_bvec_fn) { |
480 | queue_max_sectors(mddev->queue) > (PAGE_SIZE>>9)) | 483 | blk_queue_max_segments(mddev->queue, 1); |
481 | blk_queue_max_hw_sectors(mddev->queue, PAGE_SIZE>>9); | 484 | blk_queue_segment_boundary(mddev->queue, |
485 | PAGE_CACHE_SIZE - 1); | ||
486 | } | ||
482 | 487 | ||
483 | if (!test_bit(Faulty, &rdev->flags)) | 488 | if (!test_bit(Faulty, &rdev->flags)) |
484 | conf->working_disks++; | 489 | conf->working_disks++; |
diff --git a/drivers/md/raid0.c b/drivers/md/raid0.c index a1f7147b757f..c3bec024612e 100644 --- a/drivers/md/raid0.c +++ b/drivers/md/raid0.c | |||
@@ -20,6 +20,7 @@ | |||
20 | 20 | ||
21 | #include <linux/blkdev.h> | 21 | #include <linux/blkdev.h> |
22 | #include <linux/seq_file.h> | 22 | #include <linux/seq_file.h> |
23 | #include <linux/slab.h> | ||
23 | #include "md.h" | 24 | #include "md.h" |
24 | #include "raid0.h" | 25 | #include "raid0.h" |
25 | 26 | ||
@@ -176,14 +177,15 @@ static int create_strip_zones(mddev_t *mddev) | |||
176 | disk_stack_limits(mddev->gendisk, rdev1->bdev, | 177 | disk_stack_limits(mddev->gendisk, rdev1->bdev, |
177 | rdev1->data_offset << 9); | 178 | rdev1->data_offset << 9); |
178 | /* as we don't honour merge_bvec_fn, we must never risk | 179 | /* as we don't honour merge_bvec_fn, we must never risk |
179 | * violating it, so limit ->max_sector to one PAGE, as | 180 | * violating it, so limit ->max_segments to 1, lying within |
180 | * a one page request is never in violation. | 181 | * a single page. |
181 | */ | 182 | */ |
182 | 183 | ||
183 | if (rdev1->bdev->bd_disk->queue->merge_bvec_fn && | 184 | if (rdev1->bdev->bd_disk->queue->merge_bvec_fn) { |
184 | queue_max_sectors(mddev->queue) > (PAGE_SIZE>>9)) | 185 | blk_queue_max_segments(mddev->queue, 1); |
185 | blk_queue_max_hw_sectors(mddev->queue, PAGE_SIZE>>9); | 186 | blk_queue_segment_boundary(mddev->queue, |
186 | 187 | PAGE_CACHE_SIZE - 1); | |
188 | } | ||
187 | if (!smallest || (rdev1->sectors < smallest->sectors)) | 189 | if (!smallest || (rdev1->sectors < smallest->sectors)) |
188 | smallest = rdev1; | 190 | smallest = rdev1; |
189 | cnt++; | 191 | cnt++; |
diff --git a/drivers/md/raid1.c b/drivers/md/raid1.c index 5a06122abd3b..e59b10e66edb 100644 --- a/drivers/md/raid1.c +++ b/drivers/md/raid1.c | |||
@@ -31,6 +31,7 @@ | |||
31 | * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | 31 | * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. |
32 | */ | 32 | */ |
33 | 33 | ||
34 | #include <linux/slab.h> | ||
34 | #include <linux/delay.h> | 35 | #include <linux/delay.h> |
35 | #include <linux/blkdev.h> | 36 | #include <linux/blkdev.h> |
36 | #include <linux/seq_file.h> | 37 | #include <linux/seq_file.h> |
@@ -1152,13 +1153,17 @@ static int raid1_add_disk(mddev_t *mddev, mdk_rdev_t *rdev) | |||
1152 | 1153 | ||
1153 | disk_stack_limits(mddev->gendisk, rdev->bdev, | 1154 | disk_stack_limits(mddev->gendisk, rdev->bdev, |
1154 | rdev->data_offset << 9); | 1155 | rdev->data_offset << 9); |
1155 | /* as we don't honour merge_bvec_fn, we must never risk | 1156 | /* as we don't honour merge_bvec_fn, we must |
1156 | * violating it, so limit ->max_sector to one PAGE, as | 1157 | * never risk violating it, so limit |
1157 | * a one page request is never in violation. | 1158 | * ->max_segments to one lying with a single |
1159 | * page, as a one page request is never in | ||
1160 | * violation. | ||
1158 | */ | 1161 | */ |
1159 | if (rdev->bdev->bd_disk->queue->merge_bvec_fn && | 1162 | if (rdev->bdev->bd_disk->queue->merge_bvec_fn) { |
1160 | queue_max_sectors(mddev->queue) > (PAGE_SIZE>>9)) | 1163 | blk_queue_max_segments(mddev->queue, 1); |
1161 | blk_queue_max_hw_sectors(mddev->queue, PAGE_SIZE>>9); | 1164 | blk_queue_segment_boundary(mddev->queue, |
1165 | PAGE_CACHE_SIZE - 1); | ||
1166 | } | ||
1162 | 1167 | ||
1163 | p->head_position = 0; | 1168 | p->head_position = 0; |
1164 | rdev->raid_disk = mirror; | 1169 | rdev->raid_disk = mirror; |
@@ -2098,12 +2103,14 @@ static int run(mddev_t *mddev) | |||
2098 | disk_stack_limits(mddev->gendisk, rdev->bdev, | 2103 | disk_stack_limits(mddev->gendisk, rdev->bdev, |
2099 | rdev->data_offset << 9); | 2104 | rdev->data_offset << 9); |
2100 | /* as we don't honour merge_bvec_fn, we must never risk | 2105 | /* as we don't honour merge_bvec_fn, we must never risk |
2101 | * violating it, so limit ->max_sector to one PAGE, as | 2106 | * violating it, so limit ->max_segments to 1 lying within |
2102 | * a one page request is never in violation. | 2107 | * a single page, as a one page request is never in violation. |
2103 | */ | 2108 | */ |
2104 | if (rdev->bdev->bd_disk->queue->merge_bvec_fn && | 2109 | if (rdev->bdev->bd_disk->queue->merge_bvec_fn) { |
2105 | queue_max_sectors(mddev->queue) > (PAGE_SIZE>>9)) | 2110 | blk_queue_max_segments(mddev->queue, 1); |
2106 | blk_queue_max_hw_sectors(mddev->queue, PAGE_SIZE>>9); | 2111 | blk_queue_segment_boundary(mddev->queue, |
2112 | PAGE_CACHE_SIZE - 1); | ||
2113 | } | ||
2107 | } | 2114 | } |
2108 | 2115 | ||
2109 | mddev->degraded = 0; | 2116 | mddev->degraded = 0; |
diff --git a/drivers/md/raid10.c b/drivers/md/raid10.c index 7584f9ab9bcf..e2766d8251a1 100644 --- a/drivers/md/raid10.c +++ b/drivers/md/raid10.c | |||
@@ -18,6 +18,7 @@ | |||
18 | * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | 18 | * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. |
19 | */ | 19 | */ |
20 | 20 | ||
21 | #include <linux/slab.h> | ||
21 | #include <linux/delay.h> | 22 | #include <linux/delay.h> |
22 | #include <linux/blkdev.h> | 23 | #include <linux/blkdev.h> |
23 | #include <linux/seq_file.h> | 24 | #include <linux/seq_file.h> |
@@ -1155,13 +1156,17 @@ static int raid10_add_disk(mddev_t *mddev, mdk_rdev_t *rdev) | |||
1155 | 1156 | ||
1156 | disk_stack_limits(mddev->gendisk, rdev->bdev, | 1157 | disk_stack_limits(mddev->gendisk, rdev->bdev, |
1157 | rdev->data_offset << 9); | 1158 | rdev->data_offset << 9); |
1158 | /* as we don't honour merge_bvec_fn, we must never risk | 1159 | /* as we don't honour merge_bvec_fn, we must |
1159 | * violating it, so limit ->max_sector to one PAGE, as | 1160 | * never risk violating it, so limit |
1160 | * a one page request is never in violation. | 1161 | * ->max_segments to one lying with a single |
1162 | * page, as a one page request is never in | ||
1163 | * violation. | ||
1161 | */ | 1164 | */ |
1162 | if (rdev->bdev->bd_disk->queue->merge_bvec_fn && | 1165 | if (rdev->bdev->bd_disk->queue->merge_bvec_fn) { |
1163 | queue_max_sectors(mddev->queue) > (PAGE_SIZE>>9)) | 1166 | blk_queue_max_segments(mddev->queue, 1); |
1164 | blk_queue_max_hw_sectors(mddev->queue, PAGE_SIZE>>9); | 1167 | blk_queue_segment_boundary(mddev->queue, |
1168 | PAGE_CACHE_SIZE - 1); | ||
1169 | } | ||
1165 | 1170 | ||
1166 | p->head_position = 0; | 1171 | p->head_position = 0; |
1167 | rdev->raid_disk = mirror; | 1172 | rdev->raid_disk = mirror; |
@@ -2255,12 +2260,14 @@ static int run(mddev_t *mddev) | |||
2255 | disk_stack_limits(mddev->gendisk, rdev->bdev, | 2260 | disk_stack_limits(mddev->gendisk, rdev->bdev, |
2256 | rdev->data_offset << 9); | 2261 | rdev->data_offset << 9); |
2257 | /* as we don't honour merge_bvec_fn, we must never risk | 2262 | /* as we don't honour merge_bvec_fn, we must never risk |
2258 | * violating it, so limit ->max_sector to one PAGE, as | 2263 | * violating it, so limit max_segments to 1 lying |
2259 | * a one page request is never in violation. | 2264 | * within a single page. |
2260 | */ | 2265 | */ |
2261 | if (rdev->bdev->bd_disk->queue->merge_bvec_fn && | 2266 | if (rdev->bdev->bd_disk->queue->merge_bvec_fn) { |
2262 | queue_max_sectors(mddev->queue) > (PAGE_SIZE>>9)) | 2267 | blk_queue_max_segments(mddev->queue, 1); |
2263 | blk_queue_max_hw_sectors(mddev->queue, PAGE_SIZE>>9); | 2268 | blk_queue_segment_boundary(mddev->queue, |
2269 | PAGE_CACHE_SIZE - 1); | ||
2270 | } | ||
2264 | 2271 | ||
2265 | disk->head_position = 0; | 2272 | disk->head_position = 0; |
2266 | } | 2273 | } |
diff --git a/drivers/md/raid5.c b/drivers/md/raid5.c index 70ffbd071b2e..20e48401910e 100644 --- a/drivers/md/raid5.c +++ b/drivers/md/raid5.c | |||
@@ -50,6 +50,7 @@ | |||
50 | #include <linux/async.h> | 50 | #include <linux/async.h> |
51 | #include <linux/seq_file.h> | 51 | #include <linux/seq_file.h> |
52 | #include <linux/cpu.h> | 52 | #include <linux/cpu.h> |
53 | #include <linux/slab.h> | ||
53 | #include "md.h" | 54 | #include "md.h" |
54 | #include "raid5.h" | 55 | #include "raid5.h" |
55 | #include "bitmap.h" | 56 | #include "bitmap.h" |
@@ -1649,8 +1650,8 @@ static sector_t raid5_compute_sector(raid5_conf_t *conf, sector_t r_sector, | |||
1649 | int previous, int *dd_idx, | 1650 | int previous, int *dd_idx, |
1650 | struct stripe_head *sh) | 1651 | struct stripe_head *sh) |
1651 | { | 1652 | { |
1652 | long stripe; | 1653 | sector_t stripe; |
1653 | unsigned long chunk_number; | 1654 | sector_t chunk_number; |
1654 | unsigned int chunk_offset; | 1655 | unsigned int chunk_offset; |
1655 | int pd_idx, qd_idx; | 1656 | int pd_idx, qd_idx; |
1656 | int ddf_layout = 0; | 1657 | int ddf_layout = 0; |
@@ -1670,17 +1671,12 @@ static sector_t raid5_compute_sector(raid5_conf_t *conf, sector_t r_sector, | |||
1670 | */ | 1671 | */ |
1671 | chunk_offset = sector_div(r_sector, sectors_per_chunk); | 1672 | chunk_offset = sector_div(r_sector, sectors_per_chunk); |
1672 | chunk_number = r_sector; | 1673 | chunk_number = r_sector; |
1673 | BUG_ON(r_sector != chunk_number); | ||
1674 | 1674 | ||
1675 | /* | 1675 | /* |
1676 | * Compute the stripe number | 1676 | * Compute the stripe number |
1677 | */ | 1677 | */ |
1678 | stripe = chunk_number / data_disks; | 1678 | stripe = chunk_number; |
1679 | 1679 | *dd_idx = sector_div(stripe, data_disks); | |
1680 | /* | ||
1681 | * Compute the data disk and parity disk indexes inside the stripe | ||
1682 | */ | ||
1683 | *dd_idx = chunk_number % data_disks; | ||
1684 | 1680 | ||
1685 | /* | 1681 | /* |
1686 | * Select the parity disk based on the user selected algorithm. | 1682 | * Select the parity disk based on the user selected algorithm. |
@@ -1869,14 +1865,14 @@ static sector_t compute_blocknr(struct stripe_head *sh, int i, int previous) | |||
1869 | : conf->algorithm; | 1865 | : conf->algorithm; |
1870 | sector_t stripe; | 1866 | sector_t stripe; |
1871 | int chunk_offset; | 1867 | int chunk_offset; |
1872 | int chunk_number, dummy1, dd_idx = i; | 1868 | sector_t chunk_number; |
1869 | int dummy1, dd_idx = i; | ||
1873 | sector_t r_sector; | 1870 | sector_t r_sector; |
1874 | struct stripe_head sh2; | 1871 | struct stripe_head sh2; |
1875 | 1872 | ||
1876 | 1873 | ||
1877 | chunk_offset = sector_div(new_sector, sectors_per_chunk); | 1874 | chunk_offset = sector_div(new_sector, sectors_per_chunk); |
1878 | stripe = new_sector; | 1875 | stripe = new_sector; |
1879 | BUG_ON(new_sector != stripe); | ||
1880 | 1876 | ||
1881 | if (i == sh->pd_idx) | 1877 | if (i == sh->pd_idx) |
1882 | return 0; | 1878 | return 0; |
@@ -1969,7 +1965,7 @@ static sector_t compute_blocknr(struct stripe_head *sh, int i, int previous) | |||
1969 | } | 1965 | } |
1970 | 1966 | ||
1971 | chunk_number = stripe * data_disks + i; | 1967 | chunk_number = stripe * data_disks + i; |
1972 | r_sector = (sector_t)chunk_number * sectors_per_chunk + chunk_offset; | 1968 | r_sector = chunk_number * sectors_per_chunk + chunk_offset; |
1973 | 1969 | ||
1974 | check = raid5_compute_sector(conf, r_sector, | 1970 | check = raid5_compute_sector(conf, r_sector, |
1975 | previous, &dummy1, &sh2); | 1971 | previous, &dummy1, &sh2); |
diff --git a/drivers/md/raid6algos.c b/drivers/md/raid6algos.c index bffc61bff5ab..1f8784bfd44d 100644 --- a/drivers/md/raid6algos.c +++ b/drivers/md/raid6algos.c | |||
@@ -17,6 +17,7 @@ | |||
17 | */ | 17 | */ |
18 | 18 | ||
19 | #include <linux/raid/pq.h> | 19 | #include <linux/raid/pq.h> |
20 | #include <linux/gfp.h> | ||
20 | #ifndef __KERNEL__ | 21 | #ifndef __KERNEL__ |
21 | #include <sys/mman.h> | 22 | #include <sys/mman.h> |
22 | #include <stdio.h> | 23 | #include <stdio.h> |