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 b7c4407c29.
This commit is contained in:
coolsnowwolf 2025-02-08 16:03:54 +08:00
parent 5d275f5e72
commit 6a69eb1bb9
2 changed files with 21 additions and 49 deletions

View File

@ -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 <tripolar@gmx.at>
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

View File

@ -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 </etc/exports)"
local export_dirs="$(while read mp _r ; do echo -n "$mp " ; done < /etc/exports)"
procd_add_reload_mount_trigger $export_dirs
}