diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2012-06-06 12:49:28 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2012-06-06 12:49:28 -0400 |
commit | 374916ed16180b8de388699704e827e7740be525 (patch) | |
tree | 5ef81883ac392c0ee57dd53cfdbc64e863844957 | |
parent | 9e68447f5b38d6092a6feeeb713a6564e963e68b (diff) | |
parent | aba336bd1d46d6b0404b06f6915ed76150739057 (diff) |
Merge tag 'md-3.5-fixes' of git://neil.brown.name/md
Pull two md fixes from NeilBrown:
"One sparse-warning fix, one bugfix for 3.4-stable"
* tag 'md-3.5-fixes' of git://neil.brown.name/md:
md: raid1/raid10: fix problem with merge_bvec_fn
lib/raid6: fix sparse warnings in recovery functions
-rw-r--r-- | drivers/md/raid1.c | 4 | ||||
-rw-r--r-- | drivers/md/raid10.c | 4 | ||||
-rw-r--r-- | lib/raid6/recov.c | 7 | ||||
-rw-r--r-- | lib/raid6/recov_ssse3.c | 7 |
4 files changed, 16 insertions, 6 deletions
diff --git a/drivers/md/raid1.c b/drivers/md/raid1.c index 835de7168cd3..a9c7981ddd24 100644 --- a/drivers/md/raid1.c +++ b/drivers/md/raid1.c | |||
@@ -2550,6 +2550,7 @@ static struct r1conf *setup_conf(struct mddev *mddev) | |||
2550 | err = -EINVAL; | 2550 | err = -EINVAL; |
2551 | spin_lock_init(&conf->device_lock); | 2551 | spin_lock_init(&conf->device_lock); |
2552 | rdev_for_each(rdev, mddev) { | 2552 | rdev_for_each(rdev, mddev) { |
2553 | struct request_queue *q; | ||
2553 | int disk_idx = rdev->raid_disk; | 2554 | int disk_idx = rdev->raid_disk; |
2554 | if (disk_idx >= mddev->raid_disks | 2555 | if (disk_idx >= mddev->raid_disks |
2555 | || disk_idx < 0) | 2556 | || disk_idx < 0) |
@@ -2562,6 +2563,9 @@ static struct r1conf *setup_conf(struct mddev *mddev) | |||
2562 | if (disk->rdev) | 2563 | if (disk->rdev) |
2563 | goto abort; | 2564 | goto abort; |
2564 | disk->rdev = rdev; | 2565 | disk->rdev = rdev; |
2566 | q = bdev_get_queue(rdev->bdev); | ||
2567 | if (q->merge_bvec_fn) | ||
2568 | mddev->merge_check_needed = 1; | ||
2565 | 2569 | ||
2566 | disk->head_position = 0; | 2570 | disk->head_position = 0; |
2567 | } | 2571 | } |
diff --git a/drivers/md/raid10.c b/drivers/md/raid10.c index 987db37cb875..99ae6068e456 100644 --- a/drivers/md/raid10.c +++ b/drivers/md/raid10.c | |||
@@ -3475,6 +3475,7 @@ static int run(struct mddev *mddev) | |||
3475 | 3475 | ||
3476 | rdev_for_each(rdev, mddev) { | 3476 | rdev_for_each(rdev, mddev) { |
3477 | long long diff; | 3477 | long long diff; |
3478 | struct request_queue *q; | ||
3478 | 3479 | ||
3479 | disk_idx = rdev->raid_disk; | 3480 | disk_idx = rdev->raid_disk; |
3480 | if (disk_idx < 0) | 3481 | if (disk_idx < 0) |
@@ -3493,6 +3494,9 @@ static int run(struct mddev *mddev) | |||
3493 | goto out_free_conf; | 3494 | goto out_free_conf; |
3494 | disk->rdev = rdev; | 3495 | disk->rdev = rdev; |
3495 | } | 3496 | } |
3497 | q = bdev_get_queue(rdev->bdev); | ||
3498 | if (q->merge_bvec_fn) | ||
3499 | mddev->merge_check_needed = 1; | ||
3496 | diff = (rdev->new_data_offset - rdev->data_offset); | 3500 | diff = (rdev->new_data_offset - rdev->data_offset); |
3497 | if (!mddev->reshape_backwards) | 3501 | if (!mddev->reshape_backwards) |
3498 | diff = -diff; | 3502 | diff = -diff; |
diff --git a/lib/raid6/recov.c b/lib/raid6/recov.c index 1805a5cc5daa..a95bccb8497d 100644 --- a/lib/raid6/recov.c +++ b/lib/raid6/recov.c | |||
@@ -22,8 +22,8 @@ | |||
22 | #include <linux/raid/pq.h> | 22 | #include <linux/raid/pq.h> |
23 | 23 | ||
24 | /* Recover two failed data blocks. */ | 24 | /* Recover two failed data blocks. */ |
25 | void raid6_2data_recov_intx1(int disks, size_t bytes, int faila, int failb, | 25 | static void raid6_2data_recov_intx1(int disks, size_t bytes, int faila, |
26 | void **ptrs) | 26 | int failb, void **ptrs) |
27 | { | 27 | { |
28 | u8 *p, *q, *dp, *dq; | 28 | u8 *p, *q, *dp, *dq; |
29 | u8 px, qx, db; | 29 | u8 px, qx, db; |
@@ -66,7 +66,8 @@ void raid6_2data_recov_intx1(int disks, size_t bytes, int faila, int failb, | |||
66 | } | 66 | } |
67 | 67 | ||
68 | /* Recover failure of one data block plus the P block */ | 68 | /* Recover failure of one data block plus the P block */ |
69 | void raid6_datap_recov_intx1(int disks, size_t bytes, int faila, void **ptrs) | 69 | static void raid6_datap_recov_intx1(int disks, size_t bytes, int faila, |
70 | void **ptrs) | ||
70 | { | 71 | { |
71 | u8 *p, *q, *dq; | 72 | u8 *p, *q, *dq; |
72 | const u8 *qmul; /* Q multiplier table */ | 73 | const u8 *qmul; /* Q multiplier table */ |
diff --git a/lib/raid6/recov_ssse3.c b/lib/raid6/recov_ssse3.c index 37ae61930559..ecb710c0b4d9 100644 --- a/lib/raid6/recov_ssse3.c +++ b/lib/raid6/recov_ssse3.c | |||
@@ -19,8 +19,8 @@ static int raid6_has_ssse3(void) | |||
19 | boot_cpu_has(X86_FEATURE_SSSE3); | 19 | boot_cpu_has(X86_FEATURE_SSSE3); |
20 | } | 20 | } |
21 | 21 | ||
22 | void raid6_2data_recov_ssse3(int disks, size_t bytes, int faila, int failb, | 22 | static void raid6_2data_recov_ssse3(int disks, size_t bytes, int faila, |
23 | void **ptrs) | 23 | int failb, void **ptrs) |
24 | { | 24 | { |
25 | u8 *p, *q, *dp, *dq; | 25 | u8 *p, *q, *dp, *dq; |
26 | const u8 *pbmul; /* P multiplier table for B data */ | 26 | const u8 *pbmul; /* P multiplier table for B data */ |
@@ -194,7 +194,8 @@ void raid6_2data_recov_ssse3(int disks, size_t bytes, int faila, int failb, | |||
194 | } | 194 | } |
195 | 195 | ||
196 | 196 | ||
197 | void raid6_datap_recov_ssse3(int disks, size_t bytes, int faila, void **ptrs) | 197 | static void raid6_datap_recov_ssse3(int disks, size_t bytes, int faila, |
198 | void **ptrs) | ||
198 | { | 199 | { |
199 | u8 *p, *q, *dq; | 200 | u8 *p, *q, *dq; |
200 | const u8 *qmul; /* Q multiplier table */ | 201 | const u8 *qmul; /* Q multiplier table */ |