nfs/nfs-start-rpc.sh: prevent mount error, if sunrpc kernel module is not in the...
authorHarald Hoyer <harald@redhat.com>
Thu, 22 Nov 2012 11:14:31 +0000 (12:14 +0100)
committerHarald Hoyer <harald@redhat.com>
Thu, 22 Nov 2012 11:29:43 +0000 (12:29 +0100)
https://bugzilla.redhat.com/show_bug.cgi?id=870632

modules.d/95nfs/nfs-start-rpc.sh

index 525c636..d3faaac 100755 (executable)
@@ -2,16 +2,22 @@
 # -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
 # ex: ts=8 sw=4 sts=4 et filetype=sh
 
-# Start rpcbind or rpcbind
-# FIXME occasionally saw 'rpcbind: fork failed: No such device' -- why?
-command -v portmap >/dev/null && [ -z "$(pidof portmap)" ] && portmap
-command -v rpcbind >/dev/null && [ -z "$(pidof rpcbind)" ] && rpcbind
 
-[ ! -d /var/lib/nfs/rpc_pipefs/nfs ] && \
-    mount -t rpc_pipefs rpc_pipefs /var/lib/nfs/rpc_pipefs
+if modprobe sunrpc || strstr "$(cat /proc/filesystems)" rpc_pipefs; then
 
-# Start rpc.statd as mount won't let us use locks on a NFSv4
-# filesystem without talking to it. NFSv4 does locks internally,
-# rpc.lockd isn't needed
-[ -z "$(pidof rpc.statd)" ] && rpc.statd
-[ -z "$(pidof rpc.idmapd)" ] && rpc.idmapd
+    [ ! -d /var/lib/nfs/rpc_pipefs/nfs ] && \
+        mount -t rpc_pipefs rpc_pipefs /var/lib/nfs/rpc_pipefs
+
+    # Start rpcbind or rpcbind
+    # FIXME occasionally saw 'rpcbind: fork failed: No such device' -- why?
+    command -v portmap >/dev/null && [ -z "$(pidof portmap)" ] && portmap
+    command -v rpcbind >/dev/null && [ -z "$(pidof rpcbind)" ] && rpcbind
+
+    # Start rpc.statd as mount won't let us use locks on a NFSv4
+    # filesystem without talking to it. NFSv4 does locks internally,
+    # rpc.lockd isn't needed
+    [ -z "$(pidof rpc.statd)" ] && rpc.statd
+    [ -z "$(pidof rpc.idmapd)" ] && rpc.idmapd
+else
+    warn 'Kernel module "sunrpc" not in the initramfs, or support for filesystem "rpc_pipefs" missing!'
+fi