diff --git a/sbin/dump/dump.8 b/sbin/dump/dump.8 index 8e6339994845..a6362c174a2d 100644 --- a/sbin/dump/dump.8 +++ b/sbin/dump/dump.8 @@ -312,7 +312,8 @@ after the old tape has been rewound and removed, and a new tape has been mounted. .Pp .Nm Dump -tells the operator what is going on at periodic intervals, +tells the operator what is going on at periodic intervals -- +every 5 minutes, or promptly after receiving SIGINFO -- including usually low estimates of the number of blocks to write, the number of tapes it will take, the time to completion, and the time to the tape change. diff --git a/sbin/dump/dump.h b/sbin/dump/dump.h index f2658868f6de..d9bff13ed9b7 100644 --- a/sbin/dump/dump.h +++ b/sbin/dump/dump.h @@ -95,6 +95,7 @@ int tp_bshift; /* log2(TP_BSIZE) */ /* operator interface functions */ void broadcast __P((char *message)); +void infosch __P((int)); void lastdump __P((int arg)); /* int should be char */ void msg __P((const char *fmt, ...)) __printflike(1, 2); void msgtail __P((const char *fmt, ...)) __printflike(1, 2); diff --git a/sbin/dump/optr.c b/sbin/dump/optr.c index 1c53cdda8a44..a35b550a903f 100644 --- a/sbin/dump/optr.c +++ b/sbin/dump/optr.c @@ -51,6 +51,7 @@ static const char rcsid[] = #include #include #include +#include #include #include @@ -195,7 +196,7 @@ timeest() time_t tnow; int deltat; - (void) time((time_t *) &tnow); + (void) time(&tnow); if (tnow >= tschedule) { tschedule = tnow + 300; if (blockswritten < 500) @@ -209,6 +210,16 @@ timeest() } } +/* + * Schedule a printout of the estimate in the next call to timeest(). + */ +void +infosch(signal) + int signal; +{ + tschedule = 0; +} + void #if __STDC__ msg(const char *fmt, ...) diff --git a/sbin/dump/tape.c b/sbin/dump/tape.c index 10b05c9f30e6..25c97630f774 100644 --- a/sbin/dump/tape.c +++ b/sbin/dump/tape.c @@ -617,6 +617,7 @@ startnewtape(top) } enslave(); /* Share open tape file descriptor with slaves */ + signal(SIGINFO, infosch); asize = 0; blocksthisvol = 0;