diff options
author | Neil Brown <neilb@suse.de> | 2008-05-27 09:18:32 +1000 |
---|---|---|
committer | Neil Brown <neilb@suse.de> | 2008-05-27 09:18:32 +1000 |
commit | 2318b9f0dc98b03d3e3374e41b2ca6f85b18f922 (patch) | |
tree | 6726127a79b25ae40749067d21cbbde81544d7a7 | |
parent | 30e1b9a585ea667a3d79edd4e4ca2bf5692c2ab9 (diff) | |
download | mdadm-2318b9f0dc98b03d3e3374e41b2ca6f85b18f922.tar.gz mdadm-2318b9f0dc98b03d3e3374e41b2ca6f85b18f922.tar.xz mdadm-2318b9f0dc98b03d3e3374e41b2ca6f85b18f922.zip |
Remove 'fd' arg from sysfs_add_disk
It it never used, and removing means there are several 'open's that can
go.
-rw-r--r-- | Assemble.c | 19 | ||||
-rw-r--r-- | Create.c | 5 | ||||
-rw-r--r-- | Incremental.c | 10 | ||||
-rw-r--r-- | mdadm.h | 2 | ||||
-rw-r--r-- | sysfs.c | 2 |
5 files changed, 13 insertions, 25 deletions
@@ -913,19 +913,12 @@ int Assemble(struct supertype *st, char *mddev, int mdfd, if (j >= 0 /* && devices[j].uptodate */) { #ifndef MDASSEMBLE if (st->ss->external) { - int fd = dev_open(devices[j].devname, - O_RDONLY); - if (fd < 0) - rv = 1; - else { - devices[j].i.disk.number = - devices[j].i.disk.raid_disk; - st->ss->getinfo_super_n(st, - &devices[j].i); - rv = sysfs_add_disk(sra, fd, - &devices[j].i); - close(fd); - } + devices[j].i.disk.number = + devices[j].i.disk.raid_disk; + st->ss->getinfo_super_n(st, + &devices[j].i); + rv = sysfs_add_disk(sra, + &devices[j].i); } else #endif rv = ioctl(mdfd, ADD_NEW_DISK, @@ -640,16 +640,15 @@ int Create(struct supertype *st, char *mddev, int mdfd, fd, dv->devname); break; case 2: + close(fd); info.component_size = info.array.size * 2; info.errors = 0; rv = 0; if (st->ss->external) { st->ss->getinfo_super_n(st, &info); - rv = sysfs_add_disk(sra, fd, &info); - close(fd); + rv = sysfs_add_disk(sra, &info); } else { - close(fd); rv = ioctl(mdfd, ADD_NEW_DISK, &info.disk); } diff --git a/Incremental.c b/Incremental.c index 04e2e15..2c03a14 100644 --- a/Incremental.c +++ b/Incremental.c @@ -793,14 +793,10 @@ int Incremental_container(struct supertype *st, char *devname, int verbose, sysfs_set_str(sra, NULL, "metadata_version", ver); sysfs_set_array(sra, ra); - for (dev = ra->devs; dev; dev = dev->next) { - char buf[20]; - int dfd; - sprintf(buf, "%d:%d", dev->disk.major, dev->disk.minor); - dfd = dev_open(buf, O_RDONLY); - if (sysfs_add_disk(sra, dfd, dev) == 0) + for (dev = ra->devs; dev; dev = dev->next) + if (sysfs_add_disk(sra, dev) == 0) working++; - } + if (runstop > 0 || working >= ra->array.working_disks) { switch(ra->array.level) { case LEVEL_LINEAR: @@ -342,7 +342,7 @@ extern int sysfs_get_ll(struct mdinfo *sra, struct mdinfo *dev, char *name, unsigned long long *val); extern int sysfs_set_array(struct mdinfo *sra, struct mdinfo *info); -extern int sysfs_add_disk(struct mdinfo *sra, int fd, struct mdinfo *sd); +extern int sysfs_add_disk(struct mdinfo *sra, struct mdinfo *sd); @@ -359,7 +359,7 @@ int sysfs_set_array(struct mdinfo *sra, return rv; } -int sysfs_add_disk(struct mdinfo *sra, int fd, struct mdinfo *sd) +int sysfs_add_disk(struct mdinfo *sra, struct mdinfo *sd) { char dv[100]; char nm[100]; |