Print this page
2445 savecore fails with dump archive but return EXIT_OK

*** 19,28 **** --- 19,31 ---- * CDDL HEADER END */ /* * Copyright (c) 1983, 2010, Oracle and/or its affiliates. All rights reserved. */ + /* + * Copyright 2012 Nexenta Systems, Inc. All rights reserved. + */ #include <stdio.h> #include <stdlib.h> #include <stdarg.h> #include <unistd.h>
*** 216,239 **** case SC_EXIT_OK: code = 0; break; case SC_EXIT_PEND: code = 2; break; case SC_EXIT_FM: code = 3; break; 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; break; } --- 219,244 ---- case SC_EXIT_OK: code = 0; 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; case SC_EXIT_FM: code = 3; break; case SC_EXIT_ERR: default: if (!mflag && logprint_raised++ == 0) raise_event(SC_EVENT_SAVECORE_FAILURE, buf); code = 1; break; }
*** 354,383 **** Pread(dumpfd, &datahdr, sizeof (datahdr), endoff + sizeof (dumphdr)); pagesize = dumphdr.dump_pagesize; if (dumphdr.dump_magic != DUMP_MAGIC) ! logprint(SC_SL_NONE | SC_EXIT_OK, "bad magic number %x", dumphdr.dump_magic); if ((dumphdr.dump_flags & DF_VALID) == 0 && !disregard_valid_flag) logprint(SC_SL_NONE | SC_IF_VERBOSE | SC_EXIT_OK, "dump already processed"); if (dumphdr.dump_version != DUMP_VERSION) ! logprint(SC_SL_NONE | SC_IF_VERBOSE | SC_EXIT_OK, "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, "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, "dump data version (%d) != %s data version (%d)", datahdr.dump_datahdr_version, progname, DUMP_DATAHDR_VERSION); } else { (void) memset(&datahdr, 0, sizeof (datahdr)); --- 359,388 ---- Pread(dumpfd, &datahdr, sizeof (datahdr), endoff + sizeof (dumphdr)); pagesize = dumphdr.dump_pagesize; if (dumphdr.dump_magic != DUMP_MAGIC) ! logprint(SC_SL_NONE | SC_EXIT_PEND, "bad magic number %x", dumphdr.dump_magic); if ((dumphdr.dump_flags & DF_VALID) == 0 && !disregard_valid_flag) logprint(SC_SL_NONE | SC_IF_VERBOSE | SC_EXIT_OK, "dump already processed"); if (dumphdr.dump_version != DUMP_VERSION) ! 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_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_PEND, "dump data version (%d) != %s data version (%d)", datahdr.dump_datahdr_version, progname, DUMP_DATAHDR_VERSION); } else { (void) memset(&datahdr, 0, sizeof (datahdr));