xfs
[Top] [All Lists]

[PATCH v3 0/7] xfsdump: convert to using the POSIX signal API

To: xfs@xxxxxxxxxxx
Subject: [PATCH v3 0/7] xfsdump: convert to using the POSIX signal API
From: Bill Kendall <wkendall@xxxxxxx>
Date: Mon, 15 Aug 2011 08:54:59 -0500
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.

<Prev in Thread] Current Thread [Next in Thread>