Bruce Dubbs wrote:
Thomas Seeling wrote:
Hallo,
I seem to have a serious misunderstanding how SysV init works ...
After building NFS support I could happily mount NFS filesystems from my
NAS.
Then I did a reboot and noticed that the sequence of kill scripts is a
bit ... unfortunate to say the least.
First it removes the IP address from the network interfaces and only
*then* it tries to unmount the "rest" of the filesystems.
This does not work for NFS though - it hangs forever.
So I wrote a special kill script to unmount NFS and put it *before* the
kill script for the interfaces.
This works fine and I was happy.
At least for a short time - until I used the "poweroff" command and
noticed that once again the sequence is not correct.
I thought the logic behind poweroff and reboot is the same but obviously
there are different code paths.
Can somebody clue me in what I'm doing wrong?
Here are my init scripts as far as network and NFS are concerned:
/etc/rc.d/init.d/:
mountfs
mountnetfs
network
nfs-client
/etc/rc.d/rc3.d/:
S20network
S30rpcbind
S31nfs-client
/etc/rc.d/rc6.d/:
K30nfs-client
K30rpcbind
K45mountnetfs
K80network
S99reboot
For poweroff, the sequence needs to be defined in /etc/rc.d/rc0.d/.
One of the boot scripts may need a minor correction. We don't use nfs a
lot so we might have a problem with shutdown.
The stop portion of mountfs does:
umount -a -d -r -t notmpfs,nosysfs,nodevtmpfs,noproc,nodevpts >/dev/null
Try adding a -f switch to that to force the umount when the network is
down. In the meantime I'll think about a cleaner way to do the network
umounts. Perhaps the best place would be in the network stop script and add
umount -a -f -O _netdev >/dev/null
But that will not handle any network mounts that are not in fstab.
Any testing and feedback you can give will be appreciated.
When considering network mounted filesystems we need to consider nfs,
sshfs, and smb (samba) mounts. One thing all these have in common is that
the mounted device (first entry) in /proc/mounts has a colon specifying
the host.
Adding the following to the *network* script should umount all these files.
stop)
# Unmount any file systems mounted over the network
# Read /proc/mounts and look for a colon in the first field
for device in `cut -d" " -f1 /proc/mounts|grep :`; do
umount -f $device 2>$1 >/dev/null
done
...
What do you think?
-- Bruce
--
http://lists.linuxfromscratch.org/listinfo/blfs-support
FAQ: http://www.linuxfromscratch.org/blfs/faq.html
Unsubscribe: See the above information page