Move code to check_mdmon_version() function
Move code to function for code reuse. Signed-off-by: Adam Kwolek <adam.kwolek@intel.com> Signed-off-by: NeilBrown <neilb@suse.de>
This commit is contained in:
parent
b91726651d
commit
7aa437c2d8
61
msg.c
61
msg.c
|
@ -281,33 +281,14 @@ int block_subarray(struct mdinfo *sra)
|
||||||
|
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
/**
|
|
||||||
* block_monitor - prevent mdmon spare assignment
|
/* check mdmon version if it supports
|
||||||
* @container - container to block
|
* array blocking mechanism
|
||||||
* @freeze - flag to additionally freeze sync_action
|
|
||||||
*
|
|
||||||
* This is used by the reshape code to freeze the container, and the
|
|
||||||
* auto-rebuild implementation to atomically move spares.
|
|
||||||
* In both cases we need to stop mdmon from assigning spares to replace
|
|
||||||
* failed devices as we might have other plans for the spare.
|
|
||||||
* For the reshape case we also need to 'freeze' sync_action so that
|
|
||||||
* no recovery happens until we have fully prepared for the reshape.
|
|
||||||
*
|
|
||||||
* We tell mdmon that the array is frozen by marking the 'metadata' name
|
|
||||||
* with a leading '-'. The previously told mdmon "Don't make this array
|
|
||||||
* read/write, leave it readonly". Now it means a more general "Don't
|
|
||||||
* reconfigure this array at all".
|
|
||||||
* As older versions of mdmon (which might run from initrd) don't understand
|
|
||||||
* this, we first check that the running mdmon is new enough.
|
|
||||||
*/
|
*/
|
||||||
int block_monitor(char *container, const int freeze)
|
int check_mdmon_version(char *container)
|
||||||
{
|
{
|
||||||
int devnum = devname2devnum(container);
|
|
||||||
struct mdstat_ent *ent, *e, *e2;
|
|
||||||
struct mdinfo *sra = NULL;
|
|
||||||
char *version = NULL;
|
char *version = NULL;
|
||||||
char buf[64];
|
int devnum = devname2devnum(container);
|
||||||
int rv = 0;
|
|
||||||
|
|
||||||
if (!mdmon_running(devnum)) {
|
if (!mdmon_running(devnum)) {
|
||||||
/* if mdmon is not active we assume that any instance that is
|
/* if mdmon is not active we assume that any instance that is
|
||||||
|
@ -331,6 +312,38 @@ int block_monitor(char *container, const int freeze)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* block_monitor - prevent mdmon spare assignment
|
||||||
|
* @container - container to block
|
||||||
|
* @freeze - flag to additionally freeze sync_action
|
||||||
|
*
|
||||||
|
* This is used by the reshape code to freeze the container, and the
|
||||||
|
* auto-rebuild implementation to atomically move spares.
|
||||||
|
* In both cases we need to stop mdmon from assigning spares to replace
|
||||||
|
* failed devices as we might have other plans for the spare.
|
||||||
|
* For the reshape case we also need to 'freeze' sync_action so that
|
||||||
|
* no recovery happens until we have fully prepared for the reshape.
|
||||||
|
*
|
||||||
|
* We tell mdmon that the array is frozen by marking the 'metadata' name
|
||||||
|
* with a leading '-'. The previously told mdmon "Don't make this array
|
||||||
|
* read/write, leave it readonly". Now it means a more general "Don't
|
||||||
|
* reconfigure this array at all".
|
||||||
|
* As older versions of mdmon (which might run from initrd) don't understand
|
||||||
|
* this, we first check that the running mdmon is new enough.
|
||||||
|
*/
|
||||||
|
int block_monitor(char *container, const int freeze)
|
||||||
|
{
|
||||||
|
struct mdstat_ent *ent, *e, *e2;
|
||||||
|
struct mdinfo *sra = NULL;
|
||||||
|
char buf[64];
|
||||||
|
int rv = 0;
|
||||||
|
|
||||||
|
if (check_mdmon_version(container))
|
||||||
|
return -1;
|
||||||
|
|
||||||
ent = mdstat_read(0, 0);
|
ent = mdstat_read(0, 0);
|
||||||
if (!ent) {
|
if (!ent) {
|
||||||
fprintf(stderr, Name
|
fprintf(stderr, Name
|
||||||
|
|
Loading…
Reference in New Issue