aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/md/raid5.c
diff options
context:
space:
mode:
authorNeilBrown <neilb@cse.unsw.edu.au>2005-06-21 20:17:13 -0400
committerLinus Torvalds <torvalds@ppc970.osdl.org>2005-06-21 22:07:43 -0400
commit57afd89f98a990747445f01c458ecae64263b2f8 (patch)
treecab9f5941f32299bc97936e111f6552ebcee9cf6 /drivers/md/raid5.c
parent06d91a5fe0b50c9060e70bdf7786f8a3c66249db (diff)
[PATCH] md: improve the interface to sync_request
1/ change the return value (which is number-of-sectors synced) from 'int' to 'sector_t'. The number of sectors is usually easily small enough to fit in an int, but if resync needs to abort, it may want to return the total number of remaining sectors, which could be large. Also errors cannot be returned as negative numbers now, so use 0 instead 2/ Add a 'skipped' return parameter to allow the array to report that it skipped the sectors. This allows md to take this into account in the speed calculations. Currently there is no important skipping, but the bitmap-based-resync that is coming will use this. Signed-off-by: Neil Brown <neilb@cse.unsw.edu.au> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'drivers/md/raid5.c')
-rw-r--r--drivers/md/raid5.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/drivers/md/raid5.c b/drivers/md/raid5.c
index 677ce49078da..1ce3f5aaa984 100644
--- a/drivers/md/raid5.c
+++ b/drivers/md/raid5.c
@@ -1477,7 +1477,7 @@ static int make_request (request_queue_t *q, struct bio * bi)
1477} 1477}
1478 1478
1479/* FIXME go_faster isn't used */ 1479/* FIXME go_faster isn't used */
1480static int sync_request (mddev_t *mddev, sector_t sector_nr, int go_faster) 1480static sector_t sync_request(mddev_t *mddev, sector_t sector_nr, int *skipped, int go_faster)
1481{ 1481{
1482 raid5_conf_t *conf = (raid5_conf_t *) mddev->private; 1482 raid5_conf_t *conf = (raid5_conf_t *) mddev->private;
1483 struct stripe_head *sh; 1483 struct stripe_head *sh;
@@ -1500,8 +1500,8 @@ static int sync_request (mddev_t *mddev, sector_t sector_nr, int go_faster)
1500 * nothing we can do. 1500 * nothing we can do.
1501 */ 1501 */
1502 if (mddev->degraded >= 1 && test_bit(MD_RECOVERY_SYNC, &mddev->recovery)) { 1502 if (mddev->degraded >= 1 && test_bit(MD_RECOVERY_SYNC, &mddev->recovery)) {
1503 int rv = (mddev->size << 1) - sector_nr; 1503 sector_t rv = (mddev->size << 1) - sector_nr;
1504 md_done_sync(mddev, rv, 1); 1504 *skipped = 1;
1505 return rv; 1505 return rv;
1506 } 1506 }
1507 1507