summaryrefslogtreecommitdiff
path: root/mdopen.c
diff options
context:
space:
mode:
authorNeilBrown <neilb@suse.de>2008-11-04 10:35:31 +1100
committerNeilBrown <neilb@suse.de>2008-11-04 10:35:31 +1100
commit6be1d39d1dafce71c9c7f5bc74ef3fbd30e3765e (patch)
treed2a72a97977794d6bcfb42402b7e7a0bf4012730 /mdopen.c
parent2399204dddcabcf629ccb57be1957010444fc0ea (diff)
Introduce new open_mddev which just does an open.
Some cases we aren't interested in creating the mddev, just opening it. Make those more explicit. Signed-off-by: NeilBrown <neilb@suse.de>
Diffstat (limited to 'mdopen.c')
-rw-r--r--mdopen.c31
1 files changed, 23 insertions, 8 deletions
diff --git a/mdopen.c b/mdopen.c
index 51568359..285d811b 100644
--- a/mdopen.c
+++ b/mdopen.c
@@ -254,15 +254,30 @@ int create_mddev(char *dev, int autof)
make_parts(dev,parts, ci->symlinks);
}
}
- mdfd = open(dev, O_RDWR);
- if (mdfd < 0)
- fprintf(stderr, Name ": error opening %s: %s\n",
- dev, strerror(errno));
- else if (md_get_version(mdfd) <= 0) {
- fprintf(stderr, Name ": %s does not appear to be an md device\n",
- dev);
+ mdfd = open_mddev(dev, 1);
+ return mdfd;
+}
+
+/* Open this and check that it is an md device.
+ * On success, return filedescriptor.
+ * On failure, return -1 if it doesn't exist,
+ * or -2 if it exists but is not an md device.
+ */
+int open_mddev(char *dev, int report_errors)
+{
+ int mdfd = open(dev, O_RDWR);
+ if (mdfd < 0) {
+ if (report_errors)
+ fprintf(stderr, Name ": error opening %s: %s\n",
+ dev, strerror(errno));
+ return -1;
+ }
+ if (md_get_version(mdfd) <= 0) {
close(mdfd);
- mdfd = -1;
+ if (report_errors)
+ fprintf(stderr, Name ": %s does not appear to be "
+ "an md device\n", dev);
+ return -2;
}
return mdfd;
}