X-Git-Url: http://git.ipfire.org/?a=blobdiff_plain;f=Manage.c;h=a6e1072502c4f7e2c998094605fd1492faecf2e9;hb=6144ed441445ee4d567614aaed78dd24148881ce;hp=76447edacd2be231229cee95ff7d061d1af769dd;hpb=c94709e83f662c4780aa9c6917b03c774747eca5;p=thirdparty%2Fmdadm.git diff --git a/Manage.c b/Manage.c index 76447eda..a6e10725 100644 --- a/Manage.c +++ b/Manage.c @@ -45,12 +45,15 @@ int Manage_ro(char *devname, int fd, int readonly) * */ mdu_array_info_t array; +#ifndef MDASSEMBLE struct mdinfo *mdi; +#endif if (md_get_version(fd) < 9000) { fprintf(stderr, Name ": need md driver version 0.90.0 or later\n"); return 1; } +#ifndef MDASSEMBLE /* If this is an externally-manage array, we need to modify the * metadata_version so that mdmon doesn't undo our change. */ @@ -92,7 +95,7 @@ int Manage_ro(char *devname, int fd, int readonly) } return 0; } - +#endif if (ioctl(fd, GET_ARRAY_INFO, &array)) { fprintf(stderr, Name ": %s does not appear to be active.\n", devname); @@ -712,6 +715,23 @@ int Manage_subdevs(char *devname, int fd, close(lfd); return 1; } + if (tst->ss->external) { + /* + * Before dropping our exclusive open we make an + * attempt at preventing mdmon from seeing an + * 'add' event before reconciling this 'remove' + * event. + */ + char *name = devnum2devname(fd2devnum(fd)); + + if (!name) { + fprintf(stderr, Name ": unable to get container name\n"); + return 1; + } + + ping_manager(name); + free(name); + } close(lfd); if (verbose >= 0) fprintf(stderr, Name ": hot removed %s\n",