From 80e4abc99c7f5a16c56c1c4084bfad63aec03c01 Mon Sep 17 00:00:00 2001 From: Adam Kwolek Date: Tue, 14 Jun 2011 12:42:06 +1000 Subject: [PATCH] FIX: Cannot create volume getinfo_super() can clear entire 'inf' structure before filling with new information. Disk number required later is lost. Restore disk number information after getinfo_super() call. Signed-off-by: Adam Kwolek Signed-off-by: NeilBrown --- Create.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/Create.c b/Create.c index 7b4d0fe..48115db 100644 --- a/Create.c +++ b/Create.c @@ -856,11 +856,19 @@ int Create(struct supertype *st, char *mddev, /* getinfo_super might have lost these ... */ inf->disk.major = major(stb.st_rdev); inf->disk.minor = minor(stb.st_rdev); + /* FIXME the following should not be needed + * as getinfo_super is suppose to set + * them. However it doesn't for imsm, + * so we have this hack for now + */ + if (st->ss == &super_imsm) { + inf->disk.number = dnum; + inf->disk.raid_disk = dnum; + } } break; case 2: inf->errors = 0; - rv = 0; rv = add_disk(mdfd, st, &info, inf);