aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNeilBrown <neilb@suse.de>2006-10-28 13:38:30 -0400
committerLinus Torvalds <torvalds@g5.osdl.org>2006-10-28 14:30:51 -0400
commit01ab5662f573fe3a6bcefa200f15ab3069cec8a3 (patch)
tree6a3280e26f6f65673394dc8ab3b39897d1c11c18
parent2b6e845986347ef86729e8651908af3e8a8441f5 (diff)
[PATCH] md: simplify checking of available size when resizing an array
When "mdadm --grow --size=xxx" is used to resize an array (use more or less of each device), we check the new siza against the available space in each device. We already have that number recorded in rdev->size, so calculating it is pointless (and wrong in one obscure case). Signed-off-by: Neil Brown <neilb@suse.de> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-rw-r--r--drivers/md/md.c7
1 files changed, 2 insertions, 5 deletions
diff --git a/drivers/md/md.c b/drivers/md/md.c
index c40ce9f9cc9b..50ab4a936e30 100644
--- a/drivers/md/md.c
+++ b/drivers/md/md.c
@@ -4045,11 +4045,8 @@ static int update_size(mddev_t *mddev, unsigned long size)
4045 return -EBUSY; 4045 return -EBUSY;
4046 ITERATE_RDEV(mddev,rdev,tmp) { 4046 ITERATE_RDEV(mddev,rdev,tmp) {
4047 sector_t avail; 4047 sector_t avail;
4048 if (rdev->sb_offset > rdev->data_offset) 4048 avail = rdev->size * 2;
4049 avail = (rdev->sb_offset*2) - rdev->data_offset; 4049
4050 else
4051 avail = get_capacity(rdev->bdev->bd_disk)
4052 - rdev->data_offset;
4053 if (fit && (size == 0 || size > avail/2)) 4050 if (fit && (size == 0 || size > avail/2))
4054 size = avail/2; 4051 size = avail/2;
4055 if (avail < ((sector_t)size << 1)) 4052 if (avail < ((sector_t)size << 1))