X-Git-Url: http://git.ipfire.org/?a=blobdiff_plain;f=Kill.c;h=f2fdb856c44b4a9a904063deb0d4d89fdcb4d821;hb=f1bbb5ff6d13f7f8421ee0c1d5b8b00a7114f123;hp=3d1810f04fbcc820f4f140caee8abf98411bb6db;hpb=f21e18ca8969f21549c646096f354eac57cd53a8;p=thirdparty%2Fmdadm.git diff --git a/Kill.c b/Kill.c index 3d1810f0..f2fdb856 100644 --- a/Kill.c +++ b/Kill.c @@ -29,7 +29,7 @@ #include "md_u.h" #include "md_p.h" -int Kill(char *dev, struct supertype *st, int force, int quiet, int noexcl) +int Kill(char *dev, struct supertype *st, int force, int verbose, int noexcl) { /* * Nothing fancy about Kill. It just zeroes out a superblock @@ -46,33 +46,33 @@ int Kill(char *dev, struct supertype *st, int force, int quiet, int noexcl) noexcl = 1; fd = open(dev, O_RDWR|(noexcl ? 0 : O_EXCL)); if (fd < 0) { - if (!quiet) - fprintf(stderr, Name ": Couldn't open %s for write - not zeroing\n", + if (verbose >= 0) + pr_err("Couldn't open %s for write - not zeroing\n", dev); return 2; } if (st == NULL) st = guess_super(fd); - if (st == NULL) { - if (!quiet) - fprintf(stderr, Name ": Unrecognised md component device - %s\n", dev); + if (st == NULL || st->ss->init_super == NULL) { + if (verbose >= 0) + pr_err("Unrecognised md component device - %s\n", dev); close(fd); return 2; } + st->ignore_hw_compat = 1; rv = st->ss->load_super(st, fd, dev); - if (force && rv >= 2) - rv = 0; /* ignore bad data in superblock */ - if (rv== 0 || (force && rv >= 2)) { + if (rv == 0 || (force && rv >= 2)) { st->ss->free_super(st); - st->ss->init_super(st, NULL, 0, "", NULL, NULL); + st->ss->init_super(st, NULL, 0, "", NULL, NULL, + INVALID_SECTORS); if (st->ss->store_super(st, fd)) { - if (!quiet) - fprintf(stderr, Name ": Could not zero superblock on %s\n", + if (verbose >= 0) + pr_err("Could not zero superblock on %s\n", dev); rv = 1; } else if (rv) { - if (!quiet) - fprintf(stderr, Name ": superblock zeroed anyway\n"); + if (verbose >= 0) + pr_err("superblock zeroed anyway\n"); rv = 0; } } @@ -80,7 +80,7 @@ int Kill(char *dev, struct supertype *st, int force, int quiet, int noexcl) return rv; } -int Kill_subarray(char *dev, char *subarray, int quiet) +int Kill_subarray(char *dev, char *subarray, int verbose) { /* Delete a subarray out of a container, the subarry must be * inactive. The subarray string must be a subarray index @@ -96,45 +96,33 @@ int Kill_subarray(char *dev, char *subarray, int quiet) memset(st, 0, sizeof(*st)); - if (snprintf(st->subarray, sizeof(st->subarray), "%s", subarray) >= - (int)sizeof(st->subarray)) { - if (!quiet) - fprintf(stderr, - Name ": Input overflow for subarray '%s' > %zu bytes\n", - subarray, sizeof(st->subarray) - 1); - return 2; - } - - fd = open_subarray(dev, st, quiet); + fd = open_subarray(dev, subarray, st, verbose < 0); if (fd < 0) return 2; if (!st->ss->kill_subarray) { - if (!quiet) - fprintf(stderr, - Name ": Operation not supported for %s metadata\n", - st->ss->name); + if (verbose >= 0) + pr_err("Operation not supported for %s metadata\n", + st->ss->name); goto free_super; } - if (is_subarray_active(subarray, st->devname)) { - if (!quiet) - fprintf(stderr, - Name ": Subarray-%s still active, aborting\n", - subarray); + if (is_subarray_active(subarray, st->devnm)) { + if (verbose >= 0) + pr_err("Subarray-%s still active, aborting\n", + subarray); goto free_super; } - if (mdmon_running(st->devnum)) + if (mdmon_running(st->devnm)) st->update_tail = &st->updates; /* ok we've found our victim, drop the axe */ rv = st->ss->kill_subarray(st); if (rv) { - if (!quiet) - fprintf(stderr, - Name ": Failed to delete subarray-%s from %s\n", - subarray, dev); + if (verbose >= 0) + pr_err("Failed to delete subarray-%s from %s\n", + subarray, dev); goto free_super; } @@ -144,10 +132,9 @@ int Kill_subarray(char *dev, char *subarray, int quiet) else st->ss->sync_metadata(st); - if (!quiet) - fprintf(stderr, - Name ": Deleted subarray-%s from %s, UUIDs may have changed\n", - subarray, dev); + if (verbose >= 0) + pr_err("Deleted subarray-%s from %s, UUIDs may have changed\n", + subarray, dev); rv = 0;