From 6a69eb1bb9c73cb4274eb202c1c700fe62b0fbbf Mon Sep 17 00:00:00 2001 From: coolsnowwolf Date: Sat, 8 Feb 2025 16:03:54 +0800 Subject: [PATCH] Revert "In kernel version 6.8 and above, nfsd has deprecated the CONFIG_NFSD_LEGACY_CLIENT_TRACKING option, and in kernel 6.12, if CONFIG_NFSD_LEGACY_CLIENT_TRACKING is still enabled, the following kernel panic may occur:" This reverts commit b7c4407c296d2fcde087863f7580bc9e97cb89ec. --- net/nfs-kernel-server/Makefile | 11 ++--- net/nfs-kernel-server/files/nfsd.init | 59 ++++++++------------------- 2 files changed, 21 insertions(+), 49 deletions(-) diff --git a/net/nfs-kernel-server/Makefile b/net/nfs-kernel-server/Makefile index 3423456e..e3043577 100644 --- a/net/nfs-kernel-server/Makefile +++ b/net/nfs-kernel-server/Makefile @@ -8,7 +8,7 @@ include $(TOPDIR)/rules.mk PKG_NAME:=nfs-kernel-server PKG_VERSION:=2.6.2 -PKG_RELEASE:=4 +PKG_RELEASE:=3 PKG_HASH:=26d46448982252e9e2c8346d10cf13e1143e7089c866f53e25db3359f3e9493c PKG_SOURCE_URL:=@SF/nfs @@ -70,7 +70,7 @@ define Package/nfs-utils/Default $(call Package/nfs-kernel-server/Default) SECTION:=utils CATEGORY:=Utilities - DEPENDS+= +NFS_KERNEL_SERVER_V4:libkeyutils +NFS_KERNEL_SERVER_V4:libdevmapper +libevent2-core +libsqlite3 + DEPENDS+= +NFS_KERNEL_SERVER_V4:libkeyutils +NFS_KERNEL_SERVER_V4:libdevmapper URL:=http://nfs.sourceforge.net/ MAINTAINER:=Peter Wagner endef @@ -109,6 +109,8 @@ TARGET_LDFLAGS += -L$(STAGING_DIR)/usr/lib/libevent CONFIGURE_ARGS += \ --disable-caps \ --disable-gss \ + --disable-nfsdcld \ + --disable-nfsdcltrack \ --enable-shared \ --enable-static \ --with-rpcgen=internal \ @@ -200,12 +202,7 @@ endef define Package/nfs-utils/install $(INSTALL_DIR) $(1)/sbin - $(INSTALL_DIR) $(1)/usr/sbin $(INSTALL_BIN) $(PKG_INSTALL_DIR)/sbin/mount.nfs $(1)/sbin/ - $(INSTALL_BIN) $(PKG_INSTALL_DIR)/sbin/nfsdcltrack $(1)/sbin/ - $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/nfsdcld $(1)/usr/sbin/ - $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/nfsdclddb $(1)/usr/sbin/ - $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/nfsdclnts $(1)/usr/sbin/ (cd $(1)/sbin; ln -sf mount.nfs mount.nfs4; ln -sf mount.nfs umount.nfs; ln -sf mount.nfs umount.nfs4) endef diff --git a/net/nfs-kernel-server/files/nfsd.init b/net/nfs-kernel-server/files/nfsd.init index 4d8181c0..7b0f1751 100644 --- a/net/nfs-kernel-server/files/nfsd.init +++ b/net/nfs-kernel-server/files/nfsd.init @@ -6,26 +6,23 @@ STOP=60 USE_PROCD=1 -NFS_DIR="/var/lib/nfs" -RECOVERY_DIR="$NFS_DIR/v4recovery" -LOCK_DIR="/var/lib/nfs/sm" -PROCFS_DIR="/proc/fs/nfsd" -VAR_NFS_DIR="/var/lib/nfs" -NFSDCLD_DIR="$NFS_DIR/nfsdcld" -RPC_PIPEFS_DIR="/tmp/lib/nfs/rpc_pipefs" +NFS_D=/var/lib/nfs +RECOVERY_D=$NFS_D/v4recovery +LOCK_D=/var/lib/nfs/sm +VAR_NFS=/var/lib/nfs start_service() { - grep -q "$PROCFS_DIR" /proc/mounts || \ - mount -t nfsd nfsd "$PROCFS_DIR" - mkdir -p "$NFS_DIR" - mkdir -p "$RECOVERY_DIR" - mkdir -p "$LOCK_DIR" - touch "$NFS_DIR/rmtab" + grep -q /proc/fs/nfsd /proc/mounts || \ + mount -t nfsd nfsd /proc/fs/nfsd + mkdir -p $NFS_D + mkdir -p $RECOVERY_D + mkdir -p $LOCK_D + touch $NFS_D/rmtab - mkdir -p "$VAR_NFS_DIR" - chown -R nfs:nfs "$VAR_NFS_DIR" + mkdir -p $VAR_NFS + chown nfs:nfs $VAR_NFS - sysctl -w fs.nfs.nlm_tcpport=32777 fs.nfs.nlm_udpport=32777 >/dev/null + sysctl -w fs.nfs.nlm_tcpport=32777 fs.nfs.nlm_udpport=32777 > /dev/null procd_open_instance procd_set_param command /usr/sbin/rpc.statd -p 32778 -o 32779 -F @@ -37,38 +34,16 @@ start_service() { procd_open_instance procd_set_param command /usr/sbin/rpc.mountd -p 32780 -F procd_close_instance - - # nfsdcld - if [ -x /usr/sbin/nfsdcld ]; then - mkdir -p "$NFSDCLD_DIR" "$RPC_PIPEFS_DIR" - chmod 755 "$NFSDCLD_DIR" "$RPC_PIPEFS_DIR" - grep -q "$RPC_PIPEFS_DIR" /proc/mounts || \ - mount -t rpc_pipefs none "$RPC_PIPEFS_DIR" - procd_open_instance - procd_set_param command /usr/sbin/nfsdcld - procd_close_instance - fi } stop_service() { - rpc.nfsd 0 2>/dev/null + rpc.nfsd 0 2> /dev/null /usr/sbin/exportfs -au - - # nfsdcld - if [ -x /usr/sbin/nfsdcld ]; then - pid=$(pgrep nfsdcld) - if [ -n "$pid" ]; then - kill "$pid" - fi - grep -q "$RPC_PIPEFS_DIR" /proc/mounts && \ - umount "$RPC_PIPEFS_DIR" - fi - - grep -q "$PROCFS_DIR" /proc/mounts && \ - umount "$PROCFS_DIR" + grep -q /proc/fs/nfsd /proc/mounts && \ + umount /proc/fs/nfsd } service_triggers() { - local export_dirs="$(while read mp _r; do echo -n "$mp "; done