diff options
author | Adam Kwolek <adam.kwolek@intel.com> | 2011-06-14 12:42:06 +1000 |
---|---|---|
committer | NeilBrown <neilb@suse.de> | 2011-06-14 12:42:06 +1000 |
commit | 80e4abc99c7f5a16c56c1c4084bfad63aec03c01 (patch) | |
tree | 6a0d7888580e72c9f2d8eea269aef126a9ac0203 | |
parent | 0de8d44ddeb80d73dcad8d28cf4c1e779f5c2040 (diff) | |
download | mdadm-80e4abc99c7f5a16c56c1c4084bfad63aec03c01.tar.gz |
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 <adam.kwolek@intel.com>
Signed-off-by: NeilBrown <neilb@suse.de>
-rw-r--r-- | Create.c | 10 |
1 files changed, 9 insertions, 1 deletions
@@ -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); |