summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNeilBrown <neilb@suse.de>2015-05-13 14:08:41 +1000
committerNeilBrown <neilb@suse.de>2015-05-13 14:08:41 +1000
commit2609f339028a6035a3fadb1190b565438000e35c (patch)
tree935cf70d7863fd2ab05429631a6e957c03d0f531
parentb638e7d4408bb43e655974f52946ad1cc07c0a90 (diff)
downloadmdadm-2609f339028a6035a3fadb1190b565438000e35c.tar.gz
Manage: when re-adding, do check avail size if ->sb cannot be found.
avail_size1 requires ->sb, so we must only call it if ->sb was loaded. If ->sb wasn't loaded, then we are only proceding on the basis that the kernel might be able to work something out - we don't need to do any tests on size. Reported-by: Christoffer Hammarström <christoffer.hammarstrom@linuxgods.com> Signed-off-by: NeilBrown <neilb@suse.de> URL: https://bugs.debian.org/784874
-rw-r--r--Manage.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/Manage.c b/Manage.c
index 225af81..2e602d7 100644
--- a/Manage.c
+++ b/Manage.c
@@ -781,7 +781,8 @@ int Manage_add(int fd, int tfd, struct mddev_dev *dv,
}
/* Make sure device is large enough */
- if (tst->ss->avail_size(tst, ldsize/512, INVALID_SECTORS) <
+ if (tst->sb &&
+ tst->ss->avail_size(tst, ldsize/512, INVALID_SECTORS) <
array_size) {
if (dv->disposition == 'M')
return 0;