X-Git-Url: http://git.ipfire.org/?p=thirdparty%2Fmdadm.git;a=blobdiff_plain;f=Manage.c;h=4202fd952cbb088a15aea2a58acfd2dcc63973f3;hp=1fb8468981886342d76f9786a8ff90a203f27c47;hb=111d01fcc76d2e7d0b05f78fae67e89cdf6856ad;hpb=11fcec12ef68fa3b915e26676c47ee0f97d62256;ds=sidebyside diff --git a/Manage.c b/Manage.c index 1fb84689..4202fd95 100644 --- a/Manage.c +++ b/Manage.c @@ -446,11 +446,14 @@ int Manage_subdevs(char *devname, int fd, disc.number =j; disc.state = 0; if (array.not_persistent==0) { + int dfd; if (dv->writemostly) disc.state |= 1 << MD_DISK_WRITEMOSTLY; - tst->ss->add_to_super(tst, &disc); - if (tst->ss->write_init_super(tst, &disc, - dv->devname)) + dfd = open(dv->devname, O_RDWR | O_EXCL); + tst->ss->add_to_super(tst, &disc, dfd, + dv->devname); + /* write_init_super will close 'dfd' */ + if (tst->ss->write_init_super(tst)) return 1; } else if (dv->re_add) { /* this had better be raid1.