diff --git a/0008-export-fix-handling-of-error-from-match_fsid.patch b/0003-export-fix-handling-of-error-from-match_fsid.patch similarity index 100% rename from 0008-export-fix-handling-of-error-from-match_fsid.patch rename to 0003-export-fix-handling-of-error-from-match_fsid.patch diff --git a/0003-fix-coredump-in-bl_add_disk.patch b/0003-fix-coredump-in-bl_add_disk.patch deleted file mode 100644 index beb277189c83199549d58a942c319cfc1647fb49..0000000000000000000000000000000000000000 --- a/0003-fix-coredump-in-bl_add_disk.patch +++ /dev/null @@ -1,44 +0,0 @@ -From c7e995c8a4a3985d1b315814d29e8d9211d6dc5e Mon Sep 17 00:00:00 2001 -From: lixiaokeng -Date: Tue, 30 Nov 2021 16:38:02 +0800 -Subject: [PATCH 1/2] fix coredump in bl_add_disk - -The serial->data is not malloced separately, so it can't be freed. -Just free(serial). - -Signed-off-by: Lixiaokeng ---- - utils/blkmapd/device-discovery.c | 3 --- - 1 file changed, 3 deletions(-) - -diff --git a/utils/blkmapd/device-discovery.c b/utils/blkmapd/device-discovery.c -index f5f9b10..2c50205 100644 ---- a/utils/blkmapd/device-discovery.c -+++ b/utils/blkmapd/device-discovery.c -@@ -188,7 +188,6 @@ static void bl_add_disk(char *filepath) - - if (disk && diskpath) { - if (serial) { -- free(serial->data); - free(serial); - } - return; -@@ -229,7 +228,6 @@ static void bl_add_disk(char *filepath) - disk->valid_path = path; - } - if (serial) { -- free(serial->data); - free(serial); - } - } -@@ -242,7 +240,6 @@ static void bl_add_disk(char *filepath) - free(path); - } - if (serial) { -- free(serial->data); - free(serial); - } - return; --- -2.26.1.windows.1 - diff --git a/0009-export-move-cache_open-before-workers-are-forked.patch b/0004-export-move-cache_open-before-workers-are-forked.patch similarity index 100% rename from 0009-export-move-cache_open-before-workers-are-forked.patch rename to 0004-export-move-cache_open-before-workers-are-forked.patch diff --git a/0004-nfs-blkmaped-Fix-the-error-status-when-nfs_blkmapd-s.patch b/0004-nfs-blkmaped-Fix-the-error-status-when-nfs_blkmapd-s.patch deleted file mode 100644 index 30e9b7c622a4ca42eba9272bb2c06a4a0d2dad28..0000000000000000000000000000000000000000 --- a/0004-nfs-blkmaped-Fix-the-error-status-when-nfs_blkmapd-s.patch +++ /dev/null @@ -1,35 +0,0 @@ -From 576d3569c025e829e4ce432103532fcf63808d39 Mon Sep 17 00:00:00 2001 -From: zhanchengbin -Date: Tue, 6 Sep 2022 09:49:30 +0800 -Subject: [PATCH] nfs-blkmaped: Fix the error status when nfs_blkmapd stops - -The systemctl stop nfs-blkmap.service will sends the SIGTERM signal -to the nfs-blkmap.service first.If the process fails to be stopped, -it sends the SIGKILL signal again to kill the process. -However, exit(1) is executed in the SIGTERM processing function of -nfs-blkmap.service. As a result, systemd receives an error message -indicating that nfs-blkmap.service failed. -"Active: failed" is displayed when the systemctl status -nfs-blkmap.service command is executed. - -Signed-off-by: zhanchengbin ---- - utils/blkmapd/device-discovery.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/utils/blkmapd/device-discovery.c b/utils/blkmapd/device-discovery.c -index 77ebe73..8ca548c 100644 ---- a/utils/blkmapd/device-discovery.c -+++ b/utils/blkmapd/device-discovery.c -@@ -462,7 +462,7 @@ static void sig_die(int signal) - unlink(PID_FILE); - } - BL_LOG_ERR("exit on signal(%d)\n", signal); -- exit(1); -+ exit(0); - } - static void usage(void) - { --- -1.8.3.1 - diff --git a/0010-gssd-fix-handling-DNS-lookup-failure.patch b/0005-gssd-fix-handling-DNS-lookup-failure.patch similarity index 100% rename from 0010-gssd-fix-handling-DNS-lookup-failure.patch rename to 0005-gssd-fix-handling-DNS-lookup-failure.patch diff --git a/0005-nfs-blkmapd-PID-file-read-by-systemd-failed.patch b/0005-nfs-blkmapd-PID-file-read-by-systemd-failed.patch deleted file mode 100644 index f1fea1ea38e3856919439d8a9069737a2e1534f6..0000000000000000000000000000000000000000 --- a/0005-nfs-blkmapd-PID-file-read-by-systemd-failed.patch +++ /dev/null @@ -1,94 +0,0 @@ -From 9565ab64e60f8282967e138f43c6057562dc5c27 Mon Sep 17 00:00:00 2001 -From: zhanchengbin -Date: Sat, 19 Nov 2022 11:50:07 -0500 -Subject: [PATCH] nfs-blkmapd: PID file read by systemd failed - -When started nfs-blkmap.service, the PID file can't be opened, The -cause is that the child process does not create the PID file before -the systemd reads the PID file. - -Adding "ExecStartPost=/bin/sleep 0.1" to -/usr/lib/systemd/system/nfs-blkmap.service will probably solve this -problem, However, there is no guarantee that the above solutions are -effective under high cpu pressure.So replace the daemon function with -the fork function, and put the behavior of creating the PID file in -the parent process to solve the above problems. - -Signed-off-by: zhanchengbin -Signed-off-by: Zhiqiang Liu -Signed-off-by: Steve Dickson ---- - utils/blkmapd/device-discovery.c | 48 ++++++++++++++++++++++++++-------------- - 1 file changed, 32 insertions(+), 16 deletions(-) - -diff --git a/utils/blkmapd/device-discovery.c b/utils/blkmapd/device-discovery.c -index bd89059..a565fdb 100644 ---- a/utils/blkmapd/device-discovery.c -+++ b/utils/blkmapd/device-discovery.c -@@ -504,28 +504,44 @@ int main(int argc, char **argv) - if (fg) { - openlog("blkmapd", LOG_PERROR, 0); - } else { -- if (daemon(0, 0) != 0) { -- fprintf(stderr, "Daemonize failed\n"); -- exit(1); -+ pid_t pid = fork(); -+ if (pid < 0) { -+ BL_LOG_ERR("fork error\n"); -+ exit(1); -+ } else if (pid != 0) { -+ pidfd = open(PID_FILE, O_WRONLY | O_CREAT, 0644); -+ if (pidfd < 0) { -+ BL_LOG_ERR("Create pid file %s failed\n", PID_FILE); -+ exit(1); -+ } -+ -+ if (lockf(pidfd, F_TLOCK, 0) < 0) { -+ BL_LOG_ERR("Already running; Exiting!"); -+ close(pidfd); -+ exit(1); -+ } -+ if (ftruncate(pidfd, 0) < 0) -+ BL_LOG_ERR("ftruncate on %s failed: m\n", PID_FILE); -+ sprintf(pidbuf, "%d\n", pid); -+ if (write(pidfd, pidbuf, strlen(pidbuf)) != (ssize_t)strlen(pidbuf)) -+ BL_LOG_ERR("write on %s failed: m\n", PID_FILE); -+ exit(0); -+ } -+ -+ (void)setsid(); -+ if (chdir("/")) { -+ BL_LOG_ERR("chdir error\n"); -+ } -+ int fd = open("/dev/null", O_RDWR, 0); -+ if (fd >= 0) { -+ (void)dup2(fd, STDIN_FILENO); -+ (void)dup2(fd, STDOUT_FILENO); -+ (void)dup2(fd, STDERR_FILENO); -+ -+ (void)close(fd); - } - - openlog("blkmapd", LOG_PID, 0); -- pidfd = open(PID_FILE, O_WRONLY | O_CREAT, 0644); -- if (pidfd < 0) { -- BL_LOG_ERR("Create pid file %s failed\n", PID_FILE); -- exit(1); -- } -- -- if (lockf(pidfd, F_TLOCK, 0) < 0) { -- BL_LOG_ERR("Already running; Exiting!"); -- close(pidfd); -- exit(1); -- } -- if (ftruncate(pidfd, 0) < 0) -- BL_LOG_WARNING("ftruncate on %s failed: m\n", PID_FILE); -- sprintf(pidbuf, "%d\n", getpid()); -- if (write(pidfd, pidbuf, strlen(pidbuf)) != (ssize_t)strlen(pidbuf)) -- BL_LOG_WARNING("write on %s failed: m\n", PID_FILE); - } - - signal(SIGINT, sig_die); --- -2.27.0 - diff --git a/0006-nfs-utils-Don-t-allow-junction-tests-to-trigger-auto.patch b/0006-nfs-utils-Don-t-allow-junction-tests-to-trigger-auto.patch deleted file mode 100644 index 623b46ec35d7d5de3faa07cec36fe5faa6f53d53..0000000000000000000000000000000000000000 --- a/0006-nfs-utils-Don-t-allow-junction-tests-to-trigger-auto.patch +++ /dev/null @@ -1,83 +0,0 @@ -From cdbef4e97a1cbc68cbaf16ba57d71858d2c69973 Mon Sep 17 00:00:00 2001 -From: Jeff Layton -Date: Tue, 10 Jan 2023 09:37:25 -0500 -Subject: [PATCH] nfs-utils: Don't allow junction tests to trigger automounts - -JianHong reported some strange behavior with automounts on an nfs server -without an explicit pseudoroot. When clients issued a readdir in the -pseudoroot, automounted directories that were not yet mounted would show -up even if they weren't exported, though the clients wouldn't be able to -do anything with them. - -The issue was that triggering the automount on a directory would cause -the mountd upcall to time out, which would cause nfsd to include the -automounted dentry in the readdir response. Eventually, the automount -would work and report that it wasn't exported and subsequent attempts to -access the dentry would (properly) fail. - -We never want mountd to trigger an automount. The kernel should do that -if it wants to use it. Change the junction checks to do an O_PATH open -and use fstatat with AT_NO_AUTOMOUNT. - -Cc: Chuck Lever -Link: https://bugzilla.redhat.com/show_bug.cgi?id=2148353 -Link: https://bugzilla.kernel.org/show_bug.cgi?id=216777 -Reported-by: JianHong Yin -Signed-off-by: Jeff Layton -Signed-off-by: Steve Dickson ---- - support/junction/junction.c | 10 +++++----- - 1 file changed, 5 insertions(+), 5 deletions(-) - -diff --git a/support/junction/junction.c b/support/junction/junction.c -index 41cce261..0628bb0f 100644 ---- a/support/junction/junction.c -+++ b/support/junction/junction.c -@@ -63,7 +63,7 @@ junction_open_path(const char *pathname, int *fd) - if (pathname == NULL || fd == NULL) - return FEDFS_ERR_INVAL; - -- tmp = open(pathname, O_DIRECTORY); -+ tmp = open(pathname, O_PATH|O_DIRECTORY); - if (tmp == -1) { - switch (errno) { - case EPERM: -@@ -93,7 +93,7 @@ junction_is_directory(int fd, const char *path) - { - struct stat stb; - -- if (fstat(fd, &stb) == -1) { -+ if (fstatat(fd, "", &stb, AT_NO_AUTOMOUNT|AT_EMPTY_PATH) == -1) { - xlog(D_GENERAL, "%s: failed to stat %s: %m", - __func__, path); - return FEDFS_ERR_ACCESS; -@@ -121,7 +121,7 @@ junction_is_sticky_bit_set(int fd, const char *path) - { - struct stat stb; - -- if (fstat(fd, &stb) == -1) { -+ if (fstatat(fd, "", &stb, AT_NO_AUTOMOUNT|AT_EMPTY_PATH) == -1) { - xlog(D_GENERAL, "%s: failed to stat %s: %m", - __func__, path); - return FEDFS_ERR_ACCESS; -@@ -155,7 +155,7 @@ junction_set_sticky_bit(int fd, const char *path) - { - struct stat stb; - -- if (fstat(fd, &stb) == -1) { -+ if (fstatat(fd, "", &stb, AT_NO_AUTOMOUNT|AT_EMPTY_PATH) == -1) { - xlog(D_GENERAL, "%s: failed to stat %s: %m", - __func__, path); - return FEDFS_ERR_ACCESS; -@@ -393,7 +393,7 @@ junction_get_mode(const char *pathname, mode_t *mode) - if (retval != FEDFS_OK) - return retval; - -- if (fstat(fd, &stb) == -1) { -+ if (fstatat(fd, "", &stb, AT_NO_AUTOMOUNT|AT_EMPTY_PATH) == -1) { - xlog(D_GENERAL, "%s: failed to stat %s: %m", - __func__, pathname); - (void)close(fd); --- -2.33.0 - diff --git a/0007-Covscan-Scan-Wrong-Check-of-Return-Value.patch b/0007-Covscan-Scan-Wrong-Check-of-Return-Value.patch deleted file mode 100644 index b4de88238061231c412563e15929b0506e9f0842..0000000000000000000000000000000000000000 --- a/0007-Covscan-Scan-Wrong-Check-of-Return-Value.patch +++ /dev/null @@ -1,28 +0,0 @@ -From 631c6aa34aae7328dc297210fd2de2d5364c697f Mon Sep 17 00:00:00 2001 -From: Steve Dickson -Date: Wed, 4 Jan 2023 12:04:09 -0500 -Subject: [PATCH] Covscan Scan: Wrong Check of Return Value - -Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=2151966 -Signed-off-by: Steve Dickson ---- - support/export/client.c | 3 +++ - 1 file changed, 3 insertions(+) - -diff --git a/support/export/client.c b/support/export/client.c -index ea4f89d3..79164fef 100644 ---- a/support/export/client.c -+++ b/support/export/client.c -@@ -699,6 +699,9 @@ check_netgroup(const nfs_client *clp, const struct addrinfo *ai) - - /* check whether the IP itself is in the netgroup */ - ip = calloc(INET6_ADDRSTRLEN, 1); -+ if (ip == NULL) -+ goto out; -+ - if (inet_ntop(ai->ai_family, &(((struct sockaddr_in *)ai->ai_addr)->sin_addr), ip, INET6_ADDRSTRLEN) == ip) { - if (innetgr(netgroup, ip, NULL, NULL)) { - free(hname); --- -2.33.0 - diff --git a/nfs-utils-2.6.2.tar.xz b/nfs-utils-2.6.2.tar.xz deleted file mode 100644 index e6762840c7bc36dd589679ddfebb64e8c479917f..0000000000000000000000000000000000000000 Binary files a/nfs-utils-2.6.2.tar.xz and /dev/null differ diff --git a/nfs-utils-2.6.3.tar.xz b/nfs-utils-2.6.3.tar.xz new file mode 100644 index 0000000000000000000000000000000000000000..7c55cdd1935e4254021c95212b41c348da830df7 Binary files /dev/null and b/nfs-utils-2.6.3.tar.xz differ diff --git a/nfs-utils.spec b/nfs-utils.spec index 9a57aac3b18bfc814b1565b36957ba41ba9df8e4..2705e42ad57952e8ed682f38a8c8766e8faa7083 100644 --- a/nfs-utils.spec +++ b/nfs-utils.spec @@ -3,8 +3,8 @@ %global _statdpath /var/lib/nfs/statd Name: nfs-utils -Version: 2.6.2 -Release: 5 +Version: 2.6.3 +Release: 1 Epoch: 2 Summary: The Linux NFS userland utility package License: MIT and GPLv2 and GPLv2+ and BSD @@ -15,14 +15,9 @@ Source0: https://www.kernel.org/pub/linux/utils/nfs-utils/%{version}/%{name}-%{v Patch0: 0000-systemd-idmapd-require-rpc-pipefs.patch Patch1: 0001-correct-the-statd-path-in-man.patch Patch2: 0002-nfs-utils-set-use-gss-proxy-1-to-enable-gss-proxy-by.patch -Patch3: 0003-fix-coredump-in-bl_add_disk.patch -Patch4: 0004-nfs-blkmaped-Fix-the-error-status-when-nfs_blkmapd-s.patch -Patch5: 0005-nfs-blkmapd-PID-file-read-by-systemd-failed.patch -Patch6: 0006-nfs-utils-Don-t-allow-junction-tests-to-trigger-auto.patch -Patch7: 0007-Covscan-Scan-Wrong-Check-of-Return-Value.patch -Patch8: 0008-export-fix-handling-of-error-from-match_fsid.patch -Patch9: 0009-export-move-cache_open-before-workers-are-forked.patch -Patch10: 0010-gssd-fix-handling-DNS-lookup-failure.patch +Patch3: 0003-export-fix-handling-of-error-from-match_fsid.patch +Patch4: 0004-export-move-cache_open-before-workers-are-forked.patch +Patch5: 0005-gssd-fix-handling-DNS-lookup-failure.patch BuildRequires: libevent-devel,libcap-devel, libtirpc-devel libblkid-devel BuildRequires: krb5-libs >= 1.4 autoconf >= 2.57 openldap-devel >= 2.2 @@ -243,8 +238,8 @@ fi %dir %attr(700,rpcuser,rpcuser) %{_sharedstatedir}/nfs/statd/sm %dir %attr(700,rpcuser,rpcuser) %{_sharedstatedir}/nfs/statd/sm.bak %ghost %attr(644,rpcuser,rpcuser) %{_statdpath}/state -%attr(0600,root,root) %config(noreplace) /usr/lib/modprobe.d/50-nfs.conf %{_libexecdir}/nfsrahead +%{_udevrulesdir}/60-nfs.rules %{_udevrulesdir}/99-nfs.rules %attr(4755,root,root) /sbin/mount.nfs /sbin/{rpc.statd,nfsdcltrack,osd_login,mount.nfs4,umount.*,nfsdcld} @@ -295,6 +290,9 @@ fi %{_mandir}/*/* %changelog +* Wed Jan 10 2024 wuguanghao - 2:2.6.3-1 +- upgrade version to 2.6.3 + * Tue Dec 19 2023 wuguanghao - 2:2.6.2-5 - backport bugfix patches from community