From 5ada8a07255938930de285f1d55b0ef0bdba90ff Mon Sep 17 00:00:00 2001 From: Alexander Eremin Date: Tue, 24 Jul 2012 05:53:38 -0500 Subject: [PATCH] 2445 savecore fails with dump archive but return EXIT_OK Reviewed by: Jason King Reviewed by: Vitaliy Gusev Reviewed by: Gordon Ross Reviewed by: Richard Lowe Approved by: Richard Lowe --- usr/src/cmd/savecore/savecore.c | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/usr/src/cmd/savecore/savecore.c b/usr/src/cmd/savecore/savecore.c index 1315893f0d..e079c8807a 100644 --- a/usr/src/cmd/savecore/savecore.c +++ b/usr/src/cmd/savecore/savecore.c @@ -21,6 +21,9 @@ /* * Copyright (c) 1983, 2010, Oracle and/or its affiliates. All rights reserved. */ +/* + * Copyright 2012 Nexenta Systems, Inc. All rights reserved. + */ #include #include @@ -218,6 +221,13 @@ logprint(uint32_t flags, char *message, ...) break; case SC_EXIT_PEND: + /* + * Raise an ireport saying why we are exiting. Do not + * raise if run as savecore -m. If something in the + * raise_event codepath calls logprint avoid recursion. + */ + if (!mflag && logprint_raised++ == 0) + raise_event(SC_EVENT_SAVECORE_FAILURE, buf); code = 2; break; @@ -227,11 +237,6 @@ logprint(uint32_t flags, char *message, ...) case SC_EXIT_ERR: default: - /* - * Raise an ireport saying why we are exiting. Do not - * raise if run as savecore -m. If something in the - * raise_event codepath calls logprint avoid recursion. - */ if (!mflag && logprint_raised++ == 0) raise_event(SC_EVENT_SAVECORE_FAILURE, buf); code = 1; @@ -356,7 +361,7 @@ read_dumphdr(void) pagesize = dumphdr.dump_pagesize; if (dumphdr.dump_magic != DUMP_MAGIC) - logprint(SC_SL_NONE | SC_EXIT_OK, "bad magic number %x", + logprint(SC_SL_NONE | SC_EXIT_PEND, "bad magic number %x", dumphdr.dump_magic); if ((dumphdr.dump_flags & DF_VALID) == 0 && !disregard_valid_flag) @@ -364,18 +369,18 @@ read_dumphdr(void) "dump already processed"); if (dumphdr.dump_version != DUMP_VERSION) - logprint(SC_SL_NONE | SC_IF_VERBOSE | SC_EXIT_OK, + logprint(SC_SL_NONE | SC_IF_VERBOSE | SC_EXIT_PEND, "dump version (%d) != %s version (%d)", dumphdr.dump_version, progname, DUMP_VERSION); if (dumphdr.dump_wordsize != DUMP_WORDSIZE) - logprint(SC_SL_NONE | SC_EXIT_OK, + logprint(SC_SL_NONE | SC_EXIT_PEND, "dump is from %u-bit kernel - cannot save on %u-bit kernel", dumphdr.dump_wordsize, DUMP_WORDSIZE); if (datahdr.dump_datahdr_magic == DUMP_DATAHDR_MAGIC) { if (datahdr.dump_datahdr_version != DUMP_DATAHDR_VERSION) - logprint(SC_SL_NONE | SC_IF_VERBOSE | SC_EXIT_OK, + logprint(SC_SL_NONE | SC_IF_VERBOSE | SC_EXIT_PEND, "dump data version (%d) != %s data version (%d)", datahdr.dump_datahdr_version, progname, DUMP_DATAHDR_VERSION); -- 2.11.4.GIT