[oe-commits] Jason Wessel : Allow user mode NFS server to run without rpcbind / portmap

git version control git at git.openembedded.org
Mon Oct 10 09:00:21 UTC 2011


Module: openembedded-core.git
Branch: master-next
Commit: 3b1346c607c41a2d592c48594457c32153cb2314
URL:    http://git.openembedded.org/?p=openembedded-core.git&a=commit;h=3b1346c607c41a2d592c48594457c32153cb2314

Author: Jason Wessel <jason.wessel at windriver.com>
Date:   Wed Oct  5 10:26:30 2011 -0500

Allow user mode NFS server to run without rpcbind / portmap

and nfsroot mount without the need to talk to an RPC info
server as long as the port numbers for mountd and nfsd
are known in advance.

This patch updates the qemu startup scripts and the
user mode NFS server to have the ability to start
without the need to use rpcbind or portmap services.

Signed-off-by: Jason Wessel <jason.wessel at windriver.com>
Signed-off-by: Richard Purdie <richard.purdie at linuxfoundation.org>

---

 .../023-no-rpc-register.patch                      |   34 ++++++++++++++++++++
 .../unfs-server/unfs-server_2.1+2.2beta47.bb       |    3 +-
 scripts/runqemu-export-rootfs                      |    4 ++-
 scripts/runqemu-internal                           |   16 +++------
 4 files changed, 44 insertions(+), 13 deletions(-)

diff --git a/meta/recipes-devtools/unfs-server/unfs-server-2.1+2.2beta47/023-no-rpc-register.patch b/meta/recipes-devtools/unfs-server/unfs-server-2.1+2.2beta47/023-no-rpc-register.patch
new file mode 100644
index 0000000..50f23fc
--- /dev/null
+++ b/meta/recipes-devtools/unfs-server/unfs-server-2.1+2.2beta47/023-no-rpc-register.patch
@@ -0,0 +1,34 @@
+Upstream-Status: Inappropriate [other]
+Upstream is not making further releases of this software.
+
+Signed-off-by: Jason Wessel <jason.wessel at windriver.com>
+
+# Allow user mode NFS to work without rpcbind / portmap
+# Patch origin: Wind River
+
+---
+ rpcmisc.c |    6 ++++--
+ 1 file changed, 4 insertions(+), 2 deletions(-)
+
+--- a/rpcmisc.c
++++ b/rpcmisc.c
+@@ -91,7 +91,8 @@ not_inetd:
+ 		if (transp == NULL)
+ 			Dprintf(L_FATAL, "cannot create udp service.");
+ 		for (i = 0; (vers = verstbl[i]) != 0; i++) {
+-			if (!svc_register(transp, prog, vers, dispatch, IPPROTO_UDP)) {
++			if (!(svc_register(transp, prog, vers, dispatch, IPPROTO_UDP) ||
++			      svc_register(transp, prog, vers, dispatch, 0))) {
+ 				Dprintf(L_FATAL,
+ 					"unable to register (%s, %d, udp).",
+ 					name, vers);
+@@ -110,7 +111,8 @@ not_inetd:
+ 		transp->xp_ops->xp_recv = auth_rendevouser;
+ #endif
+ 		for (i = 0; (vers = verstbl[i]) != 0; i++) {
+-			if (!svc_register(transp, prog, vers, dispatch, IPPROTO_TCP)) {
++			if (!(svc_register(transp, prog, vers, dispatch, IPPROTO_TCP) ||
++			      svc_register(transp, prog, vers, dispatch, 0))) {
+ 				Dprintf(L_FATAL,
+ 					"unable to register (%s, %d, tcp).",
+ 					name, vers);
diff --git a/meta/recipes-devtools/unfs-server/unfs-server_2.1+2.2beta47.bb b/meta/recipes-devtools/unfs-server/unfs-server_2.1+2.2beta47.bb
index 8ed2e33..29c7052 100644
--- a/meta/recipes-devtools/unfs-server/unfs-server_2.1+2.2beta47.bb
+++ b/meta/recipes-devtools/unfs-server/unfs-server_2.1+2.2beta47.bb
@@ -7,7 +7,7 @@ RDEPENDS_${PN} = "pseudo"
 RDEPENDS_${PN}_virtclass-native = "pseudo-native"
 RDEPENDS_${PN}_virtclass-nativesdk = "pseudo-nativesdk"
 BASEPV = "2.2beta47"
-PR = "r0"
+PR = "r1"
 
 SRC_URI = "ftp://linux.mathematik.tu-darmstadt.de/pub/linux/oldstuff/people/okir/nfs-server-${BASEPV}.tar.gz \
            file://001-2.2b47-2.2b51.patch \
@@ -32,6 +32,7 @@ SRC_URI = "ftp://linux.mathematik.tu-darmstadt.de/pub/linux/oldstuff/people/okir
            file://020-undefined-chmod-fix.patch \
            file://021-nolibwrap.patch \
            file://022-add-close-on-exec-descriptors.patch \
+           file://023-no-rpc-register.patch \
           "
 
 SRC_URI[md5sum] = "79a29fe9f79b2f3241d4915767b8c511"
diff --git a/scripts/runqemu-export-rootfs b/scripts/runqemu-export-rootfs
index fec288a..f8213ba 100755
--- a/scripts/runqemu-export-rootfs
+++ b/scripts/runqemu-export-rootfs
@@ -83,10 +83,12 @@ NFS_MOUNTPROG=$[ 21111 + $NFS_INSTANCE ]
 NFS_NFSPROG=$[ 11111 + $NFS_INSTANCE ]
 # NFS port number
 NFS_PORT=$[ 3049 + $NFS_INSTANCE ]
+# mountd port number
+MOUNT_PORT=$[ 3048 + $NFS_INSTANCE ]
 
 ## For debugging you would additionally add
 ## --debug all
-MOUNTD_OPTS="--allow-non-root --mount-pid $MOUNTPID -f $EXPORTS --rmtab $RMTAB --prog $NFS_MOUNTPROG -r"
+MOUNTD_OPTS="--allow-non-root --mount-pid $MOUNTPID -f $EXPORTS --rmtab $RMTAB --prog $NFS_MOUNTPROG -r -P $MOUNT_PORT"
 NFSD_OPTS="--allow-non-root --nfs-pid $NFSPID -f $EXPORTS --prog $NFS_NFSPROG -P $NFS_PORT -r"
 
 # Setup the exports file
diff --git a/scripts/runqemu-internal b/scripts/runqemu-internal
index ce3291f..2968ed9 100755
--- a/scripts/runqemu-internal
+++ b/scripts/runqemu-internal
@@ -258,21 +258,15 @@ fi
 if [ "$FSTYPE" = "nfs" ]; then
     NFS_SERVER="192.168.7.1"
     NFS_DIR=`echo $ROOTFS | sed 's/^[^:]*:\(.*\)/\1/'`
-    MOUNTD_PORT=$[ 21111 + $NFS_INSTANCE ]
-    NFSD_PORT=$[ 11111 + $NFS_INSTANCE ]
-    UNFS_OPTS="nfsvers=2,mountprog=$MOUNTD_PORT,nfsprog=$NFSD_PORT,udp"
+    MOUNTD_RPCPORT=$[ 21111 + $NFS_INSTANCE ]
+    NFSD_RPCPORT=$[ 11111 + $NFS_INSTANCE ]
+    NFSD_PORT=$[ 3049 + $NFS_INSTANCE ]
+    MOUNTD_PORT=$[ 3048 + $NFS_INSTANCE ]
+    UNFS_OPTS="nfsvers=2,mountprog=$MOUNTD_RPCPORT,nfsprog=$NFSD_RPCPORT,udp,port=$NFSD_PORT,mountport=$MOUNTD_PORT"
 
     PSEUDO_LOCALSTATEDIR=~/.runqemu-sdk/pseudo
     export PSEUDO_LOCALSTATEDIR
 
-    rpcbind_running=`ps ax | grep rpcbind | grep -v grep | wc -l`
-    portmap_running=`ps ax | grep portmap | grep -v grep | wc -l`
-    if [[ $rpcbind_running == 0 && $portmap_running == 0 ]]; then
-        echo "You need to be running either rpcbind or portmap to continue"
-        cleanup
-        return
-    fi
-
     # Start the userspace NFS server
     echo "runqemu-export-rootfs restart $ROOTFS"
     runqemu-export-rootfs restart $ROOTFS





More information about the Openembedded-commits mailing list