imsm: defend against unsupported migrations (temporary)

Until support for higher order migrations (online capacity expansion,
raid level migration, chunk size migration...) are implemented do not
allow arrays in these states to be assembled.

Signed-off-by: Dan Williams <dan.j.williams@intel.com>
This commit is contained in:
Dan Williams 2009-04-12 00:58:28 -07:00
parent 1484e72797
commit 1ce0101c9a
1 changed files with 13 additions and 1 deletions

View File

@ -3355,6 +3355,18 @@ static struct mdinfo *container_content_imsm(struct supertype *st)
struct mdinfo *this;
int slot;
/* do not publish arrays that are in the middle of an
* unsupported migration
*/
if (dev->vol.migr_state &&
(migr_type(dev) == MIGR_GEN_MIGR ||
migr_type(dev) == MIGR_STATE_CHANGE)) {
fprintf(stderr, Name ": cannot assemble volume '%.16s':"
" unsupported migration in progress\n",
dev->volume);
continue;
}
this = malloc(sizeof(*this));
memset(this, 0, sizeof(*this));
this->next = rest;
@ -3401,7 +3413,7 @@ static struct mdinfo *container_content_imsm(struct supertype *st)
info_d = malloc(sizeof(*info_d));
if (!info_d) {
fprintf(stderr, Name ": failed to allocate disk"
" for volume %s\n", (char *) dev->volume);
" for volume %.16s\n", dev->volume);
free(this);
this = rest;
break;