From: Chris Webb Date: Mon, 13 Oct 2008 00:55:11 +0000 (+1100) Subject: md: Fix rdev_size_store with size == 0 X-Git-Tag: v2.6.28-rc1~288^2~14 X-Git-Url: http://pilppa.com/gitweb/?a=commitdiff_plain;h=7d3c6f8717ee6c2bf6cba5fa0bda3b28fbda6015;p=linux-2.6-omap-h63xx.git md: Fix rdev_size_store with size == 0 Fix rdev_size_store with size == 0. size == 0 means to use the largest size allowed by the underlying device and is used when modifying an active array. This fixes a regression introduced by commit d7027458d68b2f1752a28016dcf2ffd0a7e8f567 Cc: Signed-off-by: Chris Webb Signed-off-by: NeilBrown --- diff --git a/drivers/md/md.c b/drivers/md/md.c index 0a3a4bdcd4a..7d8c2bb0a67 100644 --- a/drivers/md/md.c +++ b/drivers/md/md.c @@ -2106,8 +2106,6 @@ rdev_size_store(mdk_rdev_t *rdev, const char *buf, size_t len) if (strict_strtoull(buf, 10, &size) < 0) return -EINVAL; - if (size < my_mddev->size) - return -EINVAL; if (my_mddev->pers && rdev->raid_disk >= 0) { if (my_mddev->persistent) { size = super_types[my_mddev->major_version]. @@ -2118,9 +2116,9 @@ rdev_size_store(mdk_rdev_t *rdev, const char *buf, size_t len) size = (rdev->bdev->bd_inode->i_size >> 10); size -= rdev->data_offset/2; } - if (size < my_mddev->size) - return -EINVAL; /* component must fit device */ } + if (size < my_mddev->size) + return -EINVAL; /* component must fit device */ rdev->size = size; if (size > oldsize && my_mddev->external) {