diff options
author | Adam Kwolek <adam.kwolek@intel.com> | 2011-03-02 12:28:13 +1100 |
---|---|---|
committer | NeilBrown <neilb@suse.de> | 2011-03-02 12:28:13 +1100 |
commit | 2a093697741d11de7f48356d4da6a5bc4f7153af (patch) | |
tree | 86426a8fee466dbea944d0d2e27e8e7d646525e7 /msg.c | |
parent | ef5414b282ac79d04e3f9545acbcffc12eaf3468 (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.c | 18 |
1 files changed, 14 insertions, 4 deletions
@@ -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); |