mirror of
https://git.openafs.org/openafs.git
synced 2025-01-18 06:50:12 +00:00
e127edeff6
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> |
||
---|---|---|
build-tools | ||
doc | ||
src | ||
tests | ||
.gitignore | ||
.gitreview | ||
.mailmap | ||
.splintrc | ||
acinclude.m4 | ||
CODING | ||
configure-libafs.ac | ||
configure.ac | ||
CONTRIBUTING | ||
INSTALL | ||
libafsdep | ||
LICENSE | ||
Makefile-libafs.in | ||
Makefile.in | ||
NEWS | ||
NTMakefile | ||
README | ||
README-WINDOWS | ||
regen.sh |
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.