summaryrefslogtreecommitdiffstats
path: root/Create.c
diff options
context:
space:
mode:
authorNeil Brown <neilb@suse.de>2005-04-04 06:02:49 +0000
committerNeil Brown <neilb@suse.de>2005-04-04 06:02:49 +0000
commitd7eaf49f65ecb99e24255026331b0af7a9245cc2 (patch)
tree1a360f741fc0698f0d766a386eab68ee3b94ee65 /Create.c
parentb568741513da4cc6284815345473f67f7cdee1df (diff)
downloadmdadm-d7eaf49f65ecb99e24255026331b0af7a9245cc2.tar.gz
mdadm-d7eaf49f65ecb99e24255026331b0af7a9245cc2.tar.xz
mdadm-d7eaf49f65ecb99e24255026331b0af7a9245cc2.zip
Use O_EXCL when opening component devices to be assembled into an array
In 2.6, this will fail if the device is already in use, so we can detect this error more easily. Signed-off-by: Neil Brown <neilb@cse.unsw.edu.au>
Diffstat (limited to 'Create.c')
-rw-r--r--Create.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/Create.c b/Create.c
index 1c814f7..66a88d2 100644
--- a/Create.c
+++ b/Create.c
@@ -187,7 +187,7 @@ int Create(char *mddev, int mdfd,
array.working_disks++;
if (dnum < raiddisks)
array.active_disks++;
- fd = open(dname, O_RDONLY, 0);
+ fd = open(dname, O_RDONLY|O_EXCL, 0);
if (fd <0 ) {
fprintf(stderr, Name ": Cannot open %s: %s\n",
dname, strerror(errno));
@@ -368,7 +368,7 @@ int Create(char *mddev, int mdfd,
disk.minor = 0;
disk.state = 1; /* faulty */
} else {
- fd = open(dv->devname, O_RDONLY, 0);
+ fd = open(dv->devname, O_RDONLY|O_EXCL, 0);
if (fd < 0) {
fprintf(stderr, Name ": failed to open %s after earlier success - aborting\n",
dv->devname);