diff options
author | NeilBrown <neilb@suse.de> | 2009-10-01 16:58:40 +1000 |
---|---|---|
committer | NeilBrown <neilb@suse.de> | 2009-10-01 16:58:40 +1000 |
commit | ca4f89a3b76187dcd7ca897035a8e92ab67b252d (patch) | |
tree | cfb7a91f30f6f3b51662257c47b581089705acb1 /Manage.c | |
parent | e38cc2d87b319572fe7ff08be5657f563b1ef9e7 (diff) | |
parent | 2b9aa337af7291d3f141322da96c9f667c99d53c (diff) |
Merge branch 'master' into devel-3.1
Conflicts:
mdadm.8
Diffstat (limited to 'Manage.c')
-rw-r--r-- | Manage.c | 19 |
1 files changed, 9 insertions, 10 deletions
@@ -1,7 +1,7 @@ /* * mdadm - manage Linux "md" devices aka RAID arrays. * - * Copyright (C) 2001-2006 Neil Brown <neilb@suse.de> + * Copyright (C) 2001-2009 Neil Brown <neilb@suse.de> * * * This program is free software; you can redistribute it and/or modify @@ -19,12 +19,7 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * * Author: Neil Brown - * Email: <neilb@cse.unsw.edu.au> - * Paper: Neil Brown - * School of Computer Science and Engineering - * The University of New South Wales - * Sydney, 2052 - * Australia + * Email: <neilb@suse.de> */ #include "mdadm.h" @@ -428,11 +423,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", @@ -454,7 +453,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)); @@ -610,7 +609,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); |