From 34c088f8f3b258e8102088470944c89393ca2098 Mon Sep 17 00:00:00 2001 From: NeilBrown Date: Thu, 21 Feb 2013 14:33:17 +1100 Subject: [PATCH] --- yaml --- r: 360741 b: refs/heads/master c: a64685399181780998281fe07309a94b25dd24c3 h: refs/heads/master i: 360739: 05373156fbd495466e869be77cf394d37cea6379 v: v3 --- [refs] | 2 +- trunk/drivers/md/md.c | 3 +++ trunk/drivers/md/raid0.c | 3 ++- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/[refs] b/[refs] index b8b89ba45065..4fcb6a259e79 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: fe5d2f4a15967bbe907e7b3e31e49dae7af7cc6b +refs/heads/master: a64685399181780998281fe07309a94b25dd24c3 diff --git a/trunk/drivers/md/md.c b/trunk/drivers/md/md.c index 1e634a68541e..f363135144f6 100644 --- a/trunk/drivers/md/md.c +++ b/trunk/drivers/md/md.c @@ -2998,6 +2998,9 @@ rdev_size_store(struct md_rdev *rdev, const char *buf, size_t len) } else if (!sectors) sectors = (i_size_read(rdev->bdev->bd_inode) >> 9) - rdev->data_offset; + if (!my_mddev->pers->resize) + /* Cannot change size for RAID0 or Linear etc */ + return -EINVAL; } if (sectors < my_mddev->dev_sectors) return -EINVAL; /* component must fit device */ diff --git a/trunk/drivers/md/raid0.c b/trunk/drivers/md/raid0.c index 24b359717a7e..15c8d3505450 100644 --- a/trunk/drivers/md/raid0.c +++ b/trunk/drivers/md/raid0.c @@ -411,7 +411,8 @@ static sector_t raid0_size(struct mddev *mddev, sector_t sectors, int raid_disks "%s does not support generic reshape\n", __func__); rdev_for_each(rdev, mddev) - array_sectors += rdev->sectors; + array_sectors += (rdev->sectors & + ~(sector_t)(mddev->chunk_sectors-1)); return array_sectors; }