summaryrefslogtreecommitdiff
path: root/msg.c
diff options
context:
space:
mode:
authorAdam Kwolek <adam.kwolek@intel.com>2011-03-02 12:28:13 +1100
committerNeilBrown <neilb@suse.de>2011-03-02 12:28:13 +1100
commit2a093697741d11de7f48356d4da6a5bc4f7153af (patch)
tree86426a8fee466dbea944d0d2e27e8e7d646525e7 /msg.c
parentef5414b282ac79d04e3f9545acbcffc12eaf3468 (diff)
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>
Diffstat (limited to 'msg.c')
-rw-r--r--msg.c18
1 files changed, 14 insertions, 4 deletions
diff --git a/msg.c b/msg.c
index 76e74e7b..a1f4bc6e 100644
--- a/msg.c
+++ b/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);