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_NAME:=nfs-kernel-server
PKG_VERSION:=2.6.2 PKG_VERSION:=2.6.2
PKG_RELEASE:=4 PKG_RELEASE:=3
PKG_HASH:=26d46448982252e9e2c8346d10cf13e1143e7089c866f53e25db3359f3e9493c PKG_HASH:=26d46448982252e9e2c8346d10cf13e1143e7089c866f53e25db3359f3e9493c
PKG_SOURCE_URL:=@SF/nfs PKG_SOURCE_URL:=@SF/nfs
@ -70,7 +70,7 @@ define Package/nfs-utils/Default
$(call Package/nfs-kernel-server/Default) $(call Package/nfs-kernel-server/Default)
SECTION:=utils SECTION:=utils
CATEGORY:=Utilities 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/ URL:=http://nfs.sourceforge.net/
MAINTAINER:=Peter Wagner <tripolar@gmx.at> MAINTAINER:=Peter Wagner <tripolar@gmx.at>
endef endef
@ -109,6 +109,8 @@ TARGET_LDFLAGS += -L$(STAGING_DIR)/usr/lib/libevent
CONFIGURE_ARGS += \ CONFIGURE_ARGS += \
--disable-caps \ --disable-caps \
--disable-gss \ --disable-gss \
--disable-nfsdcld \
--disable-nfsdcltrack \
--enable-shared \ --enable-shared \
--enable-static \ --enable-static \
--with-rpcgen=internal \ --with-rpcgen=internal \
@ -200,12 +202,7 @@ endef
define Package/nfs-utils/install define Package/nfs-utils/install
$(INSTALL_DIR) $(1)/sbin $(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/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) (cd $(1)/sbin; ln -sf mount.nfs mount.nfs4; ln -sf mount.nfs umount.nfs; ln -sf mount.nfs umount.nfs4)
endef endef

View File

@ -6,26 +6,23 @@ STOP=60
USE_PROCD=1 USE_PROCD=1
NFS_DIR="/var/lib/nfs" NFS_D=/var/lib/nfs
RECOVERY_DIR="$NFS_DIR/v4recovery" RECOVERY_D=$NFS_D/v4recovery
LOCK_DIR="/var/lib/nfs/sm" LOCK_D=/var/lib/nfs/sm
PROCFS_DIR="/proc/fs/nfsd" VAR_NFS=/var/lib/nfs
VAR_NFS_DIR="/var/lib/nfs"
NFSDCLD_DIR="$NFS_DIR/nfsdcld"
RPC_PIPEFS_DIR="/tmp/lib/nfs/rpc_pipefs"
start_service() { start_service() {
grep -q "$PROCFS_DIR" /proc/mounts || \ grep -q /proc/fs/nfsd /proc/mounts || \
mount -t nfsd nfsd "$PROCFS_DIR" mount -t nfsd nfsd /proc/fs/nfsd
mkdir -p "$NFS_DIR" mkdir -p $NFS_D
mkdir -p "$RECOVERY_DIR" mkdir -p $RECOVERY_D
mkdir -p "$LOCK_DIR" mkdir -p $LOCK_D
touch "$NFS_DIR/rmtab" touch $NFS_D/rmtab
mkdir -p "$VAR_NFS_DIR" mkdir -p $VAR_NFS
chown -R nfs:nfs "$VAR_NFS_DIR" 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_open_instance
procd_set_param command /usr/sbin/rpc.statd -p 32778 -o 32779 -F procd_set_param command /usr/sbin/rpc.statd -p 32778 -o 32779 -F
@ -37,38 +34,16 @@ start_service() {
procd_open_instance procd_open_instance
procd_set_param command /usr/sbin/rpc.mountd -p 32780 -F procd_set_param command /usr/sbin/rpc.mountd -p 32780 -F
procd_close_instance 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() { stop_service() {
rpc.nfsd 0 2>/dev/null rpc.nfsd 0 2> /dev/null
/usr/sbin/exportfs -au /usr/sbin/exportfs -au
grep -q /proc/fs/nfsd /proc/mounts && \
# nfsdcld umount /proc/fs/nfsd
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"
} }
service_triggers() { 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 procd_add_reload_mount_trigger $export_dirs
} }