From: NeilBrown Date: Mon, 3 Nov 2008 23:35:35 +0000 (+1100) Subject: Avoid opening md device twice in particular '--assemble' instance. X-Git-Tag: mdadm-3.0-devel2~52 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=adf0493cba2355fc3714e6ab265f2b6b7de894d8;p=thirdparty%2Fmdadm.git 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 --- 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,