summaryrefslogtreecommitdiff
path: root/mdassemble.c
diff options
context:
space:
mode:
Diffstat (limited to 'mdassemble.c')
-rw-r--r--mdassemble.c25
1 files changed, 13 insertions, 12 deletions
diff --git a/mdassemble.c b/mdassemble.c
index 66d82131..1e3f1041 100644
--- a/mdassemble.c
+++ b/mdassemble.c
@@ -55,7 +55,7 @@ mapping_t pers[] = {
#ifndef MDASSEMBLE_AUTO
/* from mdopen.c */
-int create_mddev(char *dev, int autof/*unused */)
+int open_mddev(char *dev, int report_errors/*unused*/)
{
int mdfd = open(dev, O_RDWR);
if (mdfd < 0)
@@ -69,6 +69,10 @@ int create_mddev(char *dev, int autof/*unused */)
}
return mdfd;
}
+int create_mddev(char *dev, int autof/*unused*/)
+{
+ return open_mddev(dev, 0);
+}
#endif
int rv;
@@ -86,19 +90,16 @@ int main(int argc, char *argv[]) {
} else
for (; array_list; array_list = array_list->next) {
mdu_array_info_t array;
- mdfd = create_mddev(array_list->devname, array_list->autof);
- if (mdfd < 0) {
- rv |= 1;
- continue;
- }
- if (ioctl(mdfd, GET_ARRAY_INFO, &array) < 0) {
- rv |= Assemble(array_list->st, array_list->devname, mdfd,
- array_list, NULL, NULL,
- readonly, runstop, NULL, NULL, verbose, force);
- } else {
+ mdfd = open_mddev(array_list->devname, 0);
+ if (mdfd >= 0 && ioctl(mdfd, GET_ARRAY_INFO, &array) == 0) {
rv |= Manage_ro(array_list->devname, mdfd, -1); /* make it readwrite */
+ continue;
}
- close(mdfd);
+ if (mdfd >= 0)
+ close(mdfd);
+ rv |= Assemble(array_list->st, array_list->devname,
+ array_list, NULL, NULL,
+ readonly, runstop, NULL, NULL, verbose, force);
}
return rv;
}