summaryrefslogtreecommitdiffstats
path: root/Manage.c
diff options
context:
space:
mode:
authorNeilBrown <neilb@suse.de>2009-06-02 15:28:36 +1000
committerNeilBrown <neilb@suse.de>2009-06-02 15:28:36 +1000
commit3b435195fc34ba447c8ca8fa2f90cd6d5ad88cdb (patch)
treeef736cccca9d0c9053dc6437f7d229dfcdd9b23f /Manage.c
parent38a07ed61e58320e18a6c25ab9da4d749d43bdc5 (diff)
parentc7b474474c793e9a82bd0d84868fdf7367c89696 (diff)
downloadmdadm-3b435195fc34ba447c8ca8fa2f90cd6d5ad88cdb.tar.gz
mdadm-3b435195fc34ba447c8ca8fa2f90cd6d5ad88cdb.tar.xz
mdadm-3b435195fc34ba447c8ca8fa2f90cd6d5ad88cdb.zip
Merge branch 'master' into devel-3.0
Conflicts: super0.c super1.c
Diffstat (limited to 'Manage.c')
-rw-r--r--Manage.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/Manage.c b/Manage.c
index 594adef..3aa09bc 100644
--- a/Manage.c
+++ b/Manage.c
@@ -441,11 +441,15 @@ int Manage_subdevs(char *devname, int fd,
} else {
j = 0;
- if (stat(dv->devname, &stb)) {
+ tfd = dev_open(dv->devname, O_RDONLY);
+ if (tfd < 0 || fstat(tfd, &stb) != 0) {
fprintf(stderr, Name ": cannot find %s: %s\n",
dv->devname, strerror(errno));
+ if (tfd >= 0)
+ close(tfd);
return 1;
}
+ close(tfd);
if ((stb.st_mode & S_IFMT) != S_IFBLK) {
fprintf(stderr, Name ": %s is not a "
"block device.\n",
@@ -467,7 +471,7 @@ int Manage_subdevs(char *devname, int fd,
return 1;
}
/* Make sure it isn't in use (in 2.6 or later) */
- tfd = open(dv->devname, O_RDONLY|O_EXCL|O_DIRECT);
+ tfd = dev_open(dv->devname, O_RDONLY|O_EXCL|O_DIRECT);
if (tfd < 0) {
fprintf(stderr, Name ": Cannot open %s: %s\n",
dv->devname, strerror(errno));
@@ -623,7 +627,7 @@ int Manage_subdevs(char *devname, int fd,
int dfd;
if (dv->writemostly == 1)
disc.state |= 1 << MD_DISK_WRITEMOSTLY;
- dfd = open(dv->devname, O_RDWR | O_EXCL|O_DIRECT);
+ dfd = dev_open(dv->devname, O_RDWR | O_EXCL|O_DIRECT);
if (tst->ss->add_to_super(tst, &disc, dfd,
dv->devname)) {
close(dfd);