From 67944412247173c65b14e7eaeb20b961241e1bd5 Mon Sep 17 00:00:00 2001 From: William Hubbs Date: Sat, 16 Feb 2013 12:53:31 -0600 Subject: Make fuser command time out This avoids situations in which fuser hangs because of open files on remote file systems when the remote system goes down. I have also passed this bug on to the maintainers of psmisc since it should really be fixed in fuser. This is based on a patch submitted by evermind@tuxfamily.org Reported-by: evermind@tuxfamily.org X-Gentoo-Bug: 455458 X-Gentoo-Bug-URL: https://bugs.gentoo.org/show_bug.cgi?id=455458 --- etc/rc.conf.Linux | 4 ++++ sh/rc-mount.sh | 3 ++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/etc/rc.conf.Linux b/etc/rc.conf.Linux index 4fb48ae..d85b1c1 100644 --- a/etc/rc.conf.Linux +++ b/etc/rc.conf.Linux @@ -20,6 +20,10 @@ # consolefont, numlock, etc ...) rc_tty_number=12 +# This is how long fuser should wait for a remote server to respond. The +# default is 60 seconds, but it can be adjusted here. +#rc_fuser_timeout=60 + ############################################################################## # CGROUPS RESOURCE MANAGEMENT diff --git a/sh/rc-mount.sh b/sh/rc-mount.sh index 2bb1450..454f9f9 100644 --- a/sh/rc-mount.sh +++ b/sh/rc-mount.sh @@ -41,7 +41,8 @@ do_unmount() retry=4 # Effectively TERM, sleep 1, TERM, sleep 1, KILL, sleep 1 while ! LC_ALL=C $cmd "$mnt" 2>/dev/null; do if type fuser >/dev/null 2>&1; then - pids="$(fuser $f_opts "$mnt" 2>/dev/null)" + pids="$(timeout -k 10 -s KILL "${rc_fuser_timeout:-60}" \ + fuser $f_opts "$mnt" 2>/dev/null)" fi case " $pids " in *" $$ "*) -- cgit v1.2.3