X-Git-Url: http://pilppa.org/gitweb/?a=blobdiff_plain;f=drivers%2Fmd%2Fraid1.c;h=b4f4badc0068991290515b1281cdaddd898893ce;hb=5de1ccbe51e89c51a2fe5ab333b7c9c2e7294aff;hp=044116b53f7a2ef63d1fff9e8bad63bb79cc6ca1;hpb=1f403624bde3c678a166984b1e6a727a0ce06f2b;p=linux-2.6-omap-h63xx.git diff --git a/drivers/md/raid1.c b/drivers/md/raid1.c index 044116b53f7..b4f4badc006 100644 --- a/drivers/md/raid1.c +++ b/drivers/md/raid1.c @@ -2125,14 +2125,16 @@ static int raid1_resize(mddev_t *mddev, sector_t sectors) * worth it. */ md_set_array_sectors(mddev, raid1_size(mddev, sectors, 0)); + if (mddev->array_sectors > raid1_size(mddev, sectors, 0)) + return -EINVAL; set_capacity(mddev->gendisk, mddev->array_sectors); mddev->changed = 1; - if (mddev->array_sectors > mddev->dev_sectors && + if (sectors > mddev->dev_sectors && mddev->recovery_cp == MaxSector) { mddev->recovery_cp = mddev->dev_sectors; set_bit(MD_RECOVERY_NEEDED, &mddev->recovery); } - mddev->dev_sectors = mddev->array_sectors; + mddev->dev_sectors = sectors; mddev->resync_max_sectors = sectors; return 0; }