Go to file
Andrew Deason e127edeff6 volser: Add simple shutdown signal handler
Currently, the volserver process doesn't register any signal handlers
for a shutdown sequence. When the fileserver process group is shutdown,
the bosserver sends a SIGTERM to the volserver process, and the
volserver process immediately dies. If any volumes are attached by the
volserver at the time (e.g., for dumping or restoring a volume), the
volume is not cleanly detached, and usually must be salvaged later on
before it can be used. This can be confusing to administrators, since a
volume may need salvage even though we never logged a reason why the
volume got in an unclean/broken state.

To improve this situation, add a signal handler to the volserver so we
can go through a shutdown process. In the future, we can add a more
complex shutdown process that may interrupt running volume transactions,
or wait for transactions to go away, or something else. But for now,
just as a first step, add a very simple shutdown process that just logs
what transactions are being interrupted, so we at least give a clue as
to why some volumes were not cleanly detached.

With this commit, the volserver now logs some messages if transactions
are running when it's shutdown. For example, a VolserLog may look like
this:

    Mon Jan 13 10:11:32 2025 Volserver shutting down on signal 15
    Mon Jan 13 10:11:32 2025 Interrupting transaction 2 for volume 536871057 partition /vicepa; volume may need salvage
    Mon Jan 13 10:11:32 2025 Interrupting transaction 1 for volume 536871052 partition /vicepa; volume may need salvage
    Mon Jan 13 10:11:32 2025 Volserver shutdown complete

With this commit, the volserver process also exits with code 0 on a
normal shutdown, instead of being terminated by the SIGTERM signal. The
BosLog entry for shutting down a volserver process used to look like
this:

    Mon Jan 13 10:11:32 2025 dafs:vol exited on signal 15

and with this commit, now looks like this:

    Mon Jan 13 10:11:32 2025 dafs:vol exited with code 0

This commit just adds the signal handler for the pthreaded volserver;
don't bother adding a code path for the obsolete LWP volserver.

Change-Id: I9f8321f845d45f6b37d9c69d12d54d1830d68b23
Reviewed-on: https://gerrit.openafs.org/16083
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
Reviewed-by: Marcio Brito Barbosa <mbarbosa@sinenomine.net>
Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
2025-01-16 10:24:19 -05:00
build-tools make-release: create SHA256 checksums too 2024-04-25 12:22:19 -04:00
doc doc: Document change in 'fs flushall' privileges 2025-01-07 10:13:33 -05:00
src volser: Add simple shutdown signal handler 2025-01-16 10:24:19 -05:00
tests tests: Fix perl string concatenation spacing 2024-09-12 11:36:12 -04:00
.gitignore FBSD: Fix typo in .gitignore for FreeBSD built products directory 2024-11-15 14:23:00 -05:00
.gitreview Add .gitreview 2018-02-04 15:34:55 -05:00
.mailmap git: add a mailmap file 2016-09-25 21:05:23 -04:00
.splintrc start-splint-support-20030528 2003-05-28 19:18:08 +00:00
acinclude.m4 cf: Remove SRCDIR_PARENT 2024-08-19 09:41:11 -04:00
CODING CODING: switch braces policy for single-line bodies 2025-01-16 00:56:17 -05:00
configure-libafs.ac Make OpenAFS 1.9.2 2024-11-12 12:35:52 -05:00
configure.ac DARWIN: Add --with-macos-* packaging options 2024-12-20 10:51:59 -05:00
CONTRIBUTING Correct our contributor's code of conduct 2020-09-04 10:01:28 -04:00
INSTALL INSTALL: Update AIX notes 2024-07-02 14:52:10 -04:00
libafsdep Move build support files into build-tools 2010-07-14 20:40:36 -07:00
LICENSE cf: Make local copy of ax_gcc_func_attribute.m4 2020-07-24 08:35:59 -04:00
Makefile-libafs.in Fix libafs_tree's cross-architecture support 2010-05-24 20:28:41 -07:00
Makefile.in DARWIN: Add --with-macos-* packaging options 2024-12-20 10:51:59 -05:00
NEWS Update NEWS for OpenAFS 1.9.1 2021-03-18 21:48:27 -04:00
NTMakefile Remove rpctestlib 2021-06-10 12:59:53 -04:00
README Tweak grammar in README 2015-12-28 19:32:17 -05:00
README-WINDOWS Update windows build documentation 2013-07-02 15:14:09 -07:00
regen.sh Use autoconf-archive m4 from src/external 2020-05-08 11:30:36 -04:00

AFS is a distributed file system that enables users to share and
access all of the files stored in a network of computers as easily as
they access the files stored on their local machines. The file system is
called distributed for this exact reason: files can reside on many
different machines, but are available to users on every machine.

OpenAFS 1.0 was originally released by IBM under the terms of the
IBM Public License 1.0 (IPL10).  For details on IPL10 see the LICENSE
file in this directory.  The current OpenAFS distribution is licensed
under a combination of the IPL10 and many other licenses as granted by
the relevant copyright holders.  The LICENSE file in this directory
contains more details, thought it is not a comprehensive statement.

See INSTALL for information about building and installing OpenAFS
on various platforms.

See CODING for developer information and guidelines.

See NEWS for recent changes to OpenAFS.