Changes from v2: [v3 3/7] xfsdump: remove SIGCHLD handling - Explicitly ignore SIGCHLD. This has the benefit of causing any librmt rsh sessions that exit early to be reaped automatically. [v3 4/7] xfsdump: rework dialog timeout and EINTR reliance - Add 'volatile' qualifier to 'dlog_signo_received' and 'dlog_allowed_flag', which are set in signal handlers, to prevent compiler from optimizing them out from being checked during a loop. - Add an ASSERT(dlog_allowed_flag) to dlog_string_query() to be consistent with other callers of promptinput(). [v3 6/7] xfsdump: convert to the POSIX signal API - Move struct sigaction declaration to top of block. Changes from v1: [v2 1/7] xfsdump: remove conditional OPENMASKED code - No changes since v1. [v2 2/7] xfsdump: process EPIPE instead of catching SIGPIPE - Minor change to ignore SIGPIPE in one location rather than separately for the miniroot and !miniroot cases. [v2 3/7] xfsdump: remove SIGCHLD handling - No changes since v1. [v2 4/7] xfsdump: rework dialog timeout and EINTR reliance - New patch to cleanup signal handling in dialog code. No longer use alarm() and don't depend on a particular thread receiving a signal to break out of a blocking read(). [v2 5/7] xfsdump: rework dialog to use main signal handler - New patch to avoid swapping signal handlers when entering a dialog. [v2 6/7] xfsdump: convert to the POSIX signal API - Was patch #4 from v1 series. Essentially the same, but changes in dlog.c are simpler since the signal handler doesn't get swapped. [v2 7/7] xfsdump: refactor inventory session creation - New patch to make it obvious that the signal mask is properly restored after creating the inventory. This patch series converts xfsdump from using the System V signal API to using the POSIX API. The first 3 patches remove/rework some of the existing signal code, and the final patch does the actual conversion. The primary motivatation for this change is a currently unused section of code in xfsdump's main(): /* sleep until next signal */ sigrelse(SIGINT); sigrelse(SIGHUP); ... sigpause(SIGARLM); The intention is to wake up if any of the signals is received, but this will only wake up if SIGALRM is received. Using sigsuspend() with the appropriate mask fixes the issue. _______________________________________________ xfs mailing list xfs@xxxxxxxxxxx http://oss.sgi.com/mailman/listinfo/xfs