The default RedHat 6.0 initscripts/knfsd /etc/rc.d/init.d
files are ordered so that NFS filesystems are mounted well
before the system begins its life as an NFS server. This is
probably the wrong way around.
Why? Consider what happens when you have two NFS servers
that mount each other's filesystems and that get rebooted
at the same time. In the current ordering, each can be
sitting there trying to NFS-mount filesystems from the
other; deadlock. If the NFS server was started first,
this deadlock situation wouldn't come up.
I expect that similar situations can happen with other
network filesystems, such as SMB.
NFS filesystem mounting is before server starting because
the server uses stuff that's on /usr. This probably
won't be changed without moving the NFS server stuff to
/sbin. (admittedly, running the nfs server off of NFS is
an odd case...)
I think that the better (and easier) solution is to have a new
/etc/rc.d/init.d file (and step) that mounts /usr early on if it's
not already mounted, just after the network and portmap and so on
have been started, and then move the netfs mount-everything after
the various remote filesystem servers have been started.
Bug 5674 has been closed as Red Hat Linux 6.0 is not supported by Red Hat any
longer, and the problem is not one that seems easily fixed. The mounting of /usr
before other services might cause problems on clients that mount /usr off the net.
In general, the advice from Unix System Administration Handbook and other books
is NOT to architect your network with 2 servers needing cross mounts from each
other. It is prone to cause problems beyond the boot-time race condition no
matter the OS.