From 2318b9f0dc98b03d3e3374e41b2ca6f85b18f922 Mon Sep 17 00:00:00 2001 From: Neil Brown Date: Tue, 27 May 2008 09:18:32 +1000 Subject: [PATCH] Remove 'fd' arg from sysfs_add_disk It it never used, and removing means there are several 'open's that can go. --- Assemble.c | 19 ++++++------------- Create.c | 5 ++--- Incremental.c | 10 +++------- mdadm.h | 2 +- sysfs.c | 2 +- 5 files changed, 13 insertions(+), 25 deletions(-) diff --git a/Assemble.c b/Assemble.c index ed40e579..9c320c2d 100644 --- a/Assemble.c +++ b/Assemble.c @@ -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, diff --git a/Create.c b/Create.c index 2b59d037..ee73548d 100644 --- a/Create.c +++ b/Create.c @@ -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 04e2e159..2c03a146 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: diff --git a/mdadm.h b/mdadm.h index c5760950..6bf0c625 100644 --- a/mdadm.h +++ b/mdadm.h @@ -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); diff --git a/sysfs.c b/sysfs.c index 34840f76..87d314c1 100644 --- a/sysfs.c +++ b/sysfs.c @@ -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]; -- 2.39.2