diff options
author | Chris Webb <chris@arachsys.com> | 2008-10-12 20:55:11 -0400 |
---|---|---|
committer | NeilBrown <neilb@suse.de> | 2008-10-12 20:55:11 -0400 |
commit | 7d3c6f8717ee6c2bf6cba5fa0bda3b28fbda6015 (patch) | |
tree | 118b13de811d5eca3e6e3e6410c667ca9cbba607 /drivers | |
parent | fd048088306656824958e7783ffcee27e241b361 (diff) |
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: <stable@kernel.org>
Signed-off-by: Chris Webb <chris@arachsys.com>
Signed-off-by: NeilBrown <neilb@suse.de>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/md/md.c | 6 |
1 files changed, 2 insertions, 4 deletions
diff --git a/drivers/md/md.c b/drivers/md/md.c index 0a3a4bdcd4af..7d8c2bb0a67c 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) | |||
2106 | 2106 | ||
2107 | if (strict_strtoull(buf, 10, &size) < 0) | 2107 | if (strict_strtoull(buf, 10, &size) < 0) |
2108 | return -EINVAL; | 2108 | return -EINVAL; |
2109 | if (size < my_mddev->size) | ||
2110 | return -EINVAL; | ||
2111 | if (my_mddev->pers && rdev->raid_disk >= 0) { | 2109 | if (my_mddev->pers && rdev->raid_disk >= 0) { |
2112 | if (my_mddev->persistent) { | 2110 | if (my_mddev->persistent) { |
2113 | size = super_types[my_mddev->major_version]. | 2111 | size = super_types[my_mddev->major_version]. |
@@ -2118,9 +2116,9 @@ rdev_size_store(mdk_rdev_t *rdev, const char *buf, size_t len) | |||
2118 | size = (rdev->bdev->bd_inode->i_size >> 10); | 2116 | size = (rdev->bdev->bd_inode->i_size >> 10); |
2119 | size -= rdev->data_offset/2; | 2117 | size -= rdev->data_offset/2; |
2120 | } | 2118 | } |
2121 | if (size < my_mddev->size) | ||
2122 | return -EINVAL; /* component must fit device */ | ||
2123 | } | 2119 | } |
2120 | if (size < my_mddev->size) | ||
2121 | return -EINVAL; /* component must fit device */ | ||
2124 | 2122 | ||
2125 | rdev->size = size; | 2123 | rdev->size = size; |
2126 | if (size > oldsize && my_mddev->external) { | 2124 | if (size > oldsize && my_mddev->external) { |