X-Git-Url: http://git.ipfire.org/?a=blobdiff_plain;f=Kill.c;h=fbda6863a6594c8bacf6aaafd7157767d05975b0;hb=4b1ac34b51a3783ab528b1af307156fab057b543;hp=9441f73bb43f88ce4733ac7671e7c2cfc9dd94ab;hpb=e5811618d1edde67fe33b9d5524061e3d0a72468;p=thirdparty%2Fmdadm.git diff --git a/Kill.c b/Kill.c index 9441f73b..fbda6863 100644 --- a/Kill.c +++ b/Kill.c @@ -41,7 +41,7 @@ int Kill(char *dev, int force) * Definitely not safe. */ - mdp_super_t super; + void *super; int fd, rv = 0; fd = open(dev, O_RDWR|O_EXCL); @@ -50,32 +50,18 @@ int Kill(char *dev, int force) dev); return 1; } - rv = load_super(fd, &super); - if (force && rv >= 5) + rv = load_super0(fd, &super, dev); + if (force && rv >= 2) rv = 0; /* ignore bad data in superblock */ - switch(rv) { - case 1: - fprintf(stderr, Name ": cannot file device size for %s: %s\n", - dev, strerror(errno)); - break; - case 2: - fprintf(stderr, Name ": %s is too small for md.\n", dev); - break; - case 3: - case 4: - fprintf(stderr, Name ": cannot access superblock on %s.\n", dev); - break; - case 5: - case 6: - fprintf(stderr, Name ": %s does not appear to have an MD superblock.\n", dev); - break; - } - if (!rv) { + if (rv== 0 || (force && rv >= 2)) { memset(&super, 0, sizeof(super)); - if (store_super(fd, &super)) { + if (store_super0(fd, super)) { fprintf(stderr, Name ": Could not zero superblock on %s\n", dev); rv = 1; + } else if (rv) { + fprintf(stderr, Name ": superblock zeroed anyway\n"); + rv = 0; } } close(fd);