diff options
author | NeilBrown <neilb@suse.de> | 2009-05-12 09:49:45 +1000 |
---|---|---|
committer | NeilBrown <neilb@suse.de> | 2009-05-12 09:49:45 +1000 |
commit | c7b474474c793e9a82bd0d84868fdf7367c89696 (patch) | |
tree | c622523a1beaccd8a5db9c1685ea9874b24b5d99 /Manage.c | |
parent | 6957819fe61c0366565bfb2588982773ed010dfa (diff) | |
download | mdadm-c7b474474c793e9a82bd0d84868fdf7367c89696.tar.gz mdadm-c7b474474c793e9a82bd0d84868fdf7367c89696.tar.xz mdadm-c7b474474c793e9a82bd0d84868fdf7367c89696.zip |
Monitor: support spare-group manipulation for 1.x metadata.
The code for moving spares around a spare-group currently
only works for 0.90 metadata. Generalise it for 1.x metadata
as well.
Reported-by: "Garth Snyder" <garth@grsweb.us>
Signed-off-by NeilBrown <neilb@suse.de>
Diffstat (limited to 'Manage.c')
-rw-r--r-- | Manage.c | 8 |
1 files changed, 6 insertions, 2 deletions
@@ -292,11 +292,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", @@ -313,7 +317,7 @@ int Manage_subdevs(char *devname, int fd, /* add the device */ /* Make sure it isn't in use (in 2.6 or later) */ - tfd = open(dv->devname, O_RDONLY|O_EXCL); + tfd = dev_open(dv->devname, O_RDONLY|O_EXCL); if (tfd < 0) { fprintf(stderr, Name ": Cannot open %s: %s\n", dv->devname, strerror(errno)); |