summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNeilBrown <neilb@suse.de>2008-11-04 10:35:35 +1100
committerNeilBrown <neilb@suse.de>2008-11-04 10:35:35 +1100
commitadf0493cba2355fc3714e6ab265f2b6b7de894d8 (patch)
tree80d4139498f20054189f4d44723a69a3ebb0a7e6
parent6be1d39d1dafce71c9c7f5bc74ef3fbd30e3765e (diff)
Avoid opening md device twice in particular '--assemble' instance.
When mdadm --assemble /dev/whatever is given, mdadm will treat it as though '--scan' were given, even though it wasn't. In this case, the code opens /dev/whatever twice, which is pointless. We already know /dev/whatever is open at this point, so remove the 'open' and the tests, and make sure it is always closed afterwards. Signed-off-by: NeilBrown <neilb@suse.de>
-rw-r--r--mdadm.c11
1 files changed, 3 insertions, 8 deletions
diff --git a/mdadm.c b/mdadm.c
index b33f605b..c25f0078 100644
--- a/mdadm.c
+++ b/mdadm.c
@@ -1008,17 +1008,12 @@ int main(int argc, char *argv[])
fprintf(stderr, Name ": %s not identified in config file.\n",
devlist->devname);
rv |= 1;
+ close(mdfd);
} else {
- mdfd = create_mddev(devlist->devname,
- array_ident->autof ? array_ident->autof : autof);
- if (mdfd < 0)
- rv |= 1;
- else {
- rv |= Assemble(ss, devlist->devname, mdfd, array_ident,
+ rv |= Assemble(ss, devlist->devname, mdfd, array_ident,
NULL, backup_file,
readonly, runstop, update, homehost, verbose-quiet, force);
- close(mdfd);
- }
+ close(mdfd);
}
} else if (!scan)
rv = Assemble(ss, devlist->devname, mdfd, &ident,