On Mon, 11 Sep 2006 the mental interface of Petter Reinholdtsen told: > > I would like to implement the following fix for the problem with > network services being killed before remote file systems are taken > down. Can you test it, and let me know if it work for you?
Works perfect on my ppc. [...] > Index: debian/initscripts/etc/init.d/umountnfs.sh > =================================================================== > --- debian/initscripts/etc/init.d/umountnfs.sh (revisjon 907) > +++ debian/initscripts/etc/init.d/umountnfs.sh (arbeidskopi) [...] > ES=$? ^^^^^ Patched against 2.86.ds1-20 has a fuzz. Please see attached patch. I completed initsripts/lintian.overwrites with three additional notes. Thanks Elimar -- It's a good thing we don't get all the government we pay for.
diff -urNad sysvinit-2.86.ds1~/debian/changelog sysvinit-2.86.ds1/debian/changelog --- sysvinit-2.86.ds1~/debian/changelog 2006-09-11 14:50:23.000000000 +0200 +++ sysvinit-2.86.ds1/debian/changelog 2006-09-11 15:10:40.000000000 +0200 @@ -1,3 +1,12 @@ +sysvinit (2.86.ds1-21) unstable; urgency=low + + * Only kill processes using remote file systems before trying to + umount them, if fuser from the psmisc package is available, and + move sendsigs to a point between where remote and local file systems + are umounted. Recommend psmisc. (Closes: #258420, #367944) + + -- Petter Reinholdtsen <[EMAIL PROTECTED]> Mon, 11 Sep 2006 00:44:44 +0200 + sysvinit (2.86.ds1-20) unstable; urgency=low * Change initscripts postinst to use update-rc.d program instead of diff -urNad sysvinit-2.86.ds1~/debian/control sysvinit-2.86.ds1/debian/control --- sysvinit-2.86.ds1~/debian/control 2006-09-11 14:50:23.000000000 +0200 +++ sysvinit-2.86.ds1/debian/control 2006-09-11 15:10:40.000000000 +0200 @@ -36,6 +36,7 @@ Package: initscripts Architecture: any Depends: ${shlibs:Depends}, ${glibc:Depends}, ${mount:Depends}, e2fsprogs (>= 1.32+1.33-WIP-2003.04.14-1), debianutils (>= 2.13.1), lsb-base (>= 3.0-6) +Recommends: psmisc Conflicts: mdutils, sysv-rc (<< 2.86.ds1-1.2), sysvinit (<< 2.86.ds1-12) Replaces: mdutils, sysvinit (<< 2.85-12), libc6, libc6.1, libc0.1, libc0.3 Description: Scripts for initializing and shutting down the system diff -urNad sysvinit-2.86.ds1~/debian/initscripts/etc/init.d/umountnfs.sh sysvinit-2.86.ds1/debian/initscripts/etc/init.d/umountnfs.sh --- sysvinit-2.86.ds1~/debian/initscripts/etc/init.d/umountnfs.sh 2006-09-11 14:50:23.000000000 +0200 +++ sysvinit-2.86.ds1/debian/initscripts/etc/init.d/umountnfs.sh 2006-09-11 15:10:40.000000000 +0200 @@ -70,6 +70,25 @@ if [ "$DIRS" ] then + # Kill all processes using the directories we try to umount + if [ -x /bin/fuser ] ; then + [ "$VERBOSE" = no ] || log_action_begin_msg "Asking non-system processes to terminate" + fuser -k INT -m $DIRS + [ "$VERBOSE" = no ] || log_action_end_msg 0 + + for count in 1 2 3 4 5; do # Wait up to 5 seconds + sleep 1 + [ -z "`fuser -m $DIRS 2> /dev/null`" ] && break + done + + pidsleft=`fuser -m $DIRS 2>/dev/null` + if [ "$pidsleft" ] ; then + [ "$VERBOSE" = no ] || log_action_begin_msg "Killing non-system processes" + fuser -k TERM -m $DIRS + [ "$VERBOSE" = no ] || log_action_end_msg 0 + fi + fi + [ "$VERBOSE" = no ] || log_action_begin_msg "Unmounting remote and non-toplevel virtual filesystems" umount $FLAGS $DIRS [ "$VERBOSE" = no ] || log_action_end_msg $? diff -urNad sysvinit-2.86.ds1~/debian/initscripts/lintian.overrides sysvinit-2.86.ds1/debian/initscripts/lintian.overrides --- sysvinit-2.86.ds1~/debian/initscripts/lintian.overrides 2006-09-11 14:50:23.000000000 +0200 +++ sysvinit-2.86.ds1/debian/initscripts/lintian.overrides 2006-09-11 15:21:53.000000000 +0200 @@ -1,3 +1,6 @@ initscripts: script-in-etc-init.d-not-registered-via-update-rc.d initscripts: file-in-etc-not-marked-as-conffile /etc/init.d/skeleton initscripts: non-standard-toplevel-dir sys/ +initscripts: non-standard-file-permissions-for-etc-init.d-script etc/init.d/skeleton 0644 != 0755 +initscripts: script-not-executable ./etc/init.d/skeleton +initscripts: maintainer-script-calls-init-script-directly postrm:14 diff -urNad sysvinit-2.86.ds1~/debian/initscripts/postinst sysvinit-2.86.ds1/debian/initscripts/postinst --- sysvinit-2.86.ds1~/debian/initscripts/postinst 2006-09-11 14:50:23.000000000 +0200 +++ sysvinit-2.86.ds1/debian/initscripts/postinst 2006-09-11 15:10:40.000000000 +0200 @@ -93,6 +93,12 @@ update-rc.d -f hostname.sh remove >/dev/null 2>&1 || : fi +# In 2.86.ds1-21, the sendsigs script were moved. +if dpkg --compare-versions "$PREV_VER" lt "2.86.ds1-21" +then + update-rc.d -f sendsigs remove >/dev/null 2>&1 || : +fi + # # Okay, we could do this with update-rc.d, but that would probably # be pretty slow. This way we win some speed. @@ -122,8 +128,8 @@ updatercd reboot start 90 6 . updatercd umountroot start 60 0 6 . updatercd umountfs start 40 0 6 . +updatercd sendsigs start 37 0 6 . updatercd umountnfs.sh start 31 0 6 . -updatercd sendsigs start 20 0 6 . updatercd killprocs start 30 1 . updatercd single start 90 1 .