Add block_subarray()
Put code for blocking subarray in to separate function. This little code/function will be used for blocking arrays from mdmon monitoring during assembly process. Arrays cannot wait for container assembly finish, because meanwhile monitor can enable arrays for writing. Signed-off-by: Adam Kwolek <adam.kwolek@intel.com> Signed-off-by: NeilBrown <neilb@suse.de>
This commit is contained in:
parent
ef5414b282
commit
2a09369774
18
msg.c
18
msg.c
|
@ -235,7 +235,7 @@ static char *ping_monitor_version(char *devname)
|
|||
return msg.buf;
|
||||
}
|
||||
|
||||
static int unblock_subarray(struct mdinfo *sra, const int unfreeze)
|
||||
int unblock_subarray(struct mdinfo *sra, const int unfreeze)
|
||||
{
|
||||
char buf[64];
|
||||
int rc = 0;
|
||||
|
@ -255,6 +255,18 @@ static int unblock_subarray(struct mdinfo *sra, const int unfreeze)
|
|||
return rc;
|
||||
}
|
||||
|
||||
int block_subarray(struct mdinfo *sra)
|
||||
{
|
||||
char buf[64];
|
||||
int rc = 0;
|
||||
|
||||
sprintf(buf, "external:%s\n", sra->text_version);
|
||||
buf[9] = '-';
|
||||
if (sysfs_set_str(sra, NULL, "metadata_version", buf))
|
||||
rc = -1;
|
||||
|
||||
return rc;
|
||||
}
|
||||
/**
|
||||
* block_monitor - prevent mdmon spare assignment
|
||||
* @container - container to block
|
||||
|
@ -334,9 +346,7 @@ int block_monitor(char *container, const int freeze)
|
|||
* takeover in reshape case and spare reassignment in the
|
||||
* auto-rebuild case)
|
||||
*/
|
||||
sprintf(buf, "external:%s\n", sra->text_version);
|
||||
buf[9] = '-';
|
||||
if (sysfs_set_str(sra, NULL, "metadata_version", buf))
|
||||
if (block_subarray(sra))
|
||||
break;
|
||||
ping_monitor(container);
|
||||
|
||||
|
|
2
msg.h
2
msg.h
|
@ -27,6 +27,8 @@ extern int ack(int fd, int tmo);
|
|||
extern int wait_reply(int fd, int tmo);
|
||||
extern int connect_monitor(char *devname);
|
||||
extern int ping_monitor(char *devname);
|
||||
extern int block_subarray(struct mdinfo *sra);
|
||||
extern int unblock_subarray(struct mdinfo *sra, const int unfreeze);
|
||||
extern int block_monitor(char *container, const int freeze);
|
||||
extern void unblock_monitor(char *container, const int unfreeze);
|
||||
extern int fping_monitor(int sock);
|
||||
|
|
Loading…
Reference in New Issue