Add error return to dumpsys(), and use it in doadump().
This commit does not add error returns to minidumpsys() or textdump_dumpsys(); those can also be added later. Submitted by: Conrad Meyer (EMC / Isilon storage division)
This commit is contained in:
@@ -271,7 +271,7 @@ foreach_chunk(callback_t cb, void *arg)
|
||||
return (seqnr);
|
||||
}
|
||||
|
||||
void
|
||||
int
|
||||
dumpsys(struct dumperinfo *di)
|
||||
{
|
||||
Elf_Ehdr ehdr;
|
||||
@@ -282,7 +282,7 @@ dumpsys(struct dumperinfo *di)
|
||||
|
||||
if (do_minidump) {
|
||||
minidumpsys(di);
|
||||
return;
|
||||
return (0);
|
||||
}
|
||||
|
||||
bzero(&ehdr, sizeof(ehdr));
|
||||
@@ -368,7 +368,7 @@ dumpsys(struct dumperinfo *di)
|
||||
/* Signal completion, signoff and exit stage left. */
|
||||
dump_write(di, NULL, 0, 0, 0);
|
||||
printf("\nDump complete\n");
|
||||
return;
|
||||
return (0);
|
||||
|
||||
fail:
|
||||
if (error < 0)
|
||||
@@ -380,4 +380,5 @@ dumpsys(struct dumperinfo *di)
|
||||
printf("\nDump failed. Partition too small.\n");
|
||||
else
|
||||
printf("\n** DUMP FAILED (ERROR %d) **\n", error);
|
||||
return (error);
|
||||
}
|
||||
|
||||
@@ -249,7 +249,9 @@ int
|
||||
doadump(boolean_t textdump)
|
||||
{
|
||||
boolean_t coredump;
|
||||
int error;
|
||||
|
||||
error = 0;
|
||||
if (dumping)
|
||||
return (EBUSY);
|
||||
if (dumper.dumper == NULL)
|
||||
@@ -267,10 +269,10 @@ doadump(boolean_t textdump)
|
||||
}
|
||||
#endif
|
||||
if (coredump)
|
||||
dumpsys(&dumper);
|
||||
error = dumpsys(&dumper);
|
||||
|
||||
dumping--;
|
||||
return (0);
|
||||
return (error);
|
||||
}
|
||||
|
||||
static int
|
||||
|
||||
@@ -257,7 +257,7 @@ foreach_chunk(callback_t cb, void *arg)
|
||||
return (seqnr);
|
||||
}
|
||||
|
||||
void
|
||||
int
|
||||
dumpsys(struct dumperinfo *di)
|
||||
{
|
||||
Elf_Ehdr ehdr;
|
||||
@@ -268,7 +268,7 @@ dumpsys(struct dumperinfo *di)
|
||||
|
||||
if (do_minidump) {
|
||||
minidumpsys(di);
|
||||
return;
|
||||
return (0);
|
||||
}
|
||||
|
||||
bzero(&ehdr, sizeof(ehdr));
|
||||
@@ -354,7 +354,7 @@ dumpsys(struct dumperinfo *di)
|
||||
/* Signal completion, signoff and exit stage left. */
|
||||
dump_write(di, NULL, 0, 0, 0);
|
||||
printf("\nDump complete\n");
|
||||
return;
|
||||
return (0);
|
||||
|
||||
fail:
|
||||
if (error < 0)
|
||||
@@ -366,4 +366,5 @@ dumpsys(struct dumperinfo *di)
|
||||
printf("\nDump failed. Partition too small.\n");
|
||||
else
|
||||
printf("\n** DUMP FAILED (ERROR %d) **\n", error);
|
||||
return (error);
|
||||
}
|
||||
|
||||
@@ -205,7 +205,7 @@ foreach_chunk(callback_t cb, void *arg)
|
||||
return (seqnr);
|
||||
}
|
||||
|
||||
void
|
||||
int
|
||||
dumpsys(struct dumperinfo *di)
|
||||
{
|
||||
Elf_Ehdr ehdr;
|
||||
@@ -299,7 +299,7 @@ dumpsys(struct dumperinfo *di)
|
||||
/* Signal completion, signoff and exit stage left. */
|
||||
dump_write(di, NULL, 0, 0, 0);
|
||||
printf("\nDump complete\n");
|
||||
return;
|
||||
return (0);
|
||||
|
||||
fail:
|
||||
if (error < 0)
|
||||
@@ -311,4 +311,5 @@ dumpsys(struct dumperinfo *di)
|
||||
printf("\nDump failed. Partition too small.\n");
|
||||
else
|
||||
printf("\n** DUMP FAILED (ERROR %d) **\n", error);
|
||||
return (error);
|
||||
}
|
||||
|
||||
@@ -142,7 +142,7 @@ blk_dump(struct dumperinfo *di, vm_paddr_t pa, vm_size_t size)
|
||||
return (error);
|
||||
}
|
||||
|
||||
void
|
||||
int
|
||||
dumpsys(struct dumperinfo *di)
|
||||
{
|
||||
struct sparc64_dump_hdr hdr;
|
||||
@@ -218,9 +218,10 @@ dumpsys(struct dumperinfo *di)
|
||||
/* Signal completion, signoff and exit stage left. */
|
||||
dump_write(di, NULL, 0, 0, 0);
|
||||
printf("\nDump complete\n");
|
||||
return;
|
||||
return (0);
|
||||
|
||||
fail:
|
||||
/* XXX It should look more like VMS :-) */
|
||||
printf("** DUMP FAILED (ERROR %d) **\n", error);
|
||||
return (error);
|
||||
}
|
||||
|
||||
+1
-1
@@ -336,7 +336,7 @@ struct dumperinfo {
|
||||
|
||||
int set_dumper(struct dumperinfo *, const char *_devname);
|
||||
int dump_write(struct dumperinfo *, void *, vm_offset_t, off_t, size_t);
|
||||
void dumpsys(struct dumperinfo *);
|
||||
int dumpsys(struct dumperinfo *);
|
||||
int doadump(boolean_t);
|
||||
extern int dumping; /* system is dumping */
|
||||
|
||||
|
||||
@@ -266,7 +266,7 @@ foreach_chunk(callback_t cb, void *arg)
|
||||
return (seqnr);
|
||||
}
|
||||
|
||||
void
|
||||
int
|
||||
dumpsys(struct dumperinfo *di)
|
||||
{
|
||||
Elf_Ehdr ehdr;
|
||||
@@ -277,7 +277,7 @@ dumpsys(struct dumperinfo *di)
|
||||
|
||||
if (do_minidump) {
|
||||
minidumpsys(di);
|
||||
return;
|
||||
return (0);
|
||||
}
|
||||
bzero(&ehdr, sizeof(ehdr));
|
||||
ehdr.e_ident[EI_MAG0] = ELFMAG0;
|
||||
@@ -363,7 +363,7 @@ dumpsys(struct dumperinfo *di)
|
||||
/* Signal completion, signoff and exit stage left. */
|
||||
dump_write(di, NULL, 0, 0, 0);
|
||||
printf("\nDump complete\n");
|
||||
return;
|
||||
return (0);
|
||||
|
||||
fail:
|
||||
if (error < 0)
|
||||
@@ -375,4 +375,5 @@ dumpsys(struct dumperinfo *di)
|
||||
printf("\nDump failed. Partition too small.\n");
|
||||
else
|
||||
printf("\n** DUMP FAILED (ERROR %d) **\n", error);
|
||||
return (error);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user