From e73730e5e78fb4c7bbd6e338db60f63e4c2658b1 Mon Sep 17 00:00:00 2001 From: Steve Dickson Date: Thu, 26 Aug 2021 14:31:19 -0400 Subject: [PATCH] Restored the nfs-utils-2.5.4-mount-sloppy.patch Signed-off-by: Steve Dickson Resolves: bz1987070 --- nfs-utils-2.5.4-mount-sloppy.patch | 107 ++++++++++++++--------- nfs-utils-2.5.4-nfsdcltrack-printf.patch | 44 ++++++++++ 2 files changed, 110 insertions(+), 41 deletions(-) diff --git a/nfs-utils-2.5.4-mount-sloppy.patch b/nfs-utils-2.5.4-mount-sloppy.patch index aa2da35..ce1956b 100644 --- a/nfs-utils-2.5.4-mount-sloppy.patch +++ b/nfs-utils-2.5.4-mount-sloppy.patch @@ -1,44 +1,69 @@ -diff -up nfs-utils-2.5.4/utils/nfsdcltrack/nfsdcltrack.c.orig nfs-utils-2.5.4/utils/nfsdcltrack/nfsdcltrack.c ---- nfs-utils-2.5.4/utils/nfsdcltrack/nfsdcltrack.c.orig 2021-06-10 14:07:47.000000000 -0400 -+++ nfs-utils-2.5.4/utils/nfsdcltrack/nfsdcltrack.c 2021-08-18 13:44:11.839124879 -0400 -@@ -507,7 +507,7 @@ cltrack_gracedone(const char *timestr) +commit 4dd8d833c9350d42528ada0fd65aee41b712f41d +Author: Steve Dickson +Date: Tue Jul 20 17:14:04 2021 -0400 + + mount.nfs: Fix the sloppy option processing + + The new mount API broke how the sloppy option is parsed. + So the option processing needs to be moved up in + the mount.nfs command. + + The option needs to be the first option in the string + that is passed into the kernel with the -s mount(8) + and/or the -o sloppy is used. + + Commit 92b664ef fixed the process of the -s flag + and this version fixes the -o sloppy processing + as well works when libmount-mount is and is not + enabled plus cleans up the mount options passed + to the kernel. + + Reviewed-and-tested-by: Dave Wysochanski + Signed-off-by: Steve Dickson + +diff --git a/utils/mount/nfs.man b/utils/mount/nfs.man +index f98cb47d..f1b76936 100644 +--- a/utils/mount/nfs.man ++++ b/utils/mount/nfs.man +@@ -555,6 +555,13 @@ using the FS-Cache facility. See cachefilesd(8) + and /Documentation/filesystems/caching + for detail on how to configure the FS-Cache facility. + Default value is nofsc. ++.TP 1.5i ++.B sloppy ++The ++.B sloppy ++option is an alternative to specifying ++.BR mount.nfs " -s " option. ++ + .SS "Options for NFS versions 2 and 3 only" + Use these options, along with the options in the above subsection, + for NFS versions 2 and 3 only. +diff --git a/utils/mount/stropts.c b/utils/mount/stropts.c +index 82b054a5..fa67a66f 100644 +--- a/utils/mount/stropts.c ++++ b/utils/mount/stropts.c +@@ -339,11 +339,19 @@ static int nfs_verify_lock_option(struct mount_options *options) + + static int nfs_insert_sloppy_option(struct mount_options *options) { - int ret; - char *tail; -- time_t gracetime; -+ uint64_t gracetime; +- if (!sloppy || linux_version_code() < MAKE_VERSION(2, 6, 27)) ++ if (linux_version_code() < MAKE_VERSION(2, 6, 27)) + return 1; +- if (po_insert(options, "sloppy") == PO_FAILED) +- return 0; ++ if (po_contains(options, "sloppy")) { ++ po_remove_all(options, "sloppy"); ++ sloppy++; ++ } ++ ++ if (sloppy) { ++ if (po_insert(options, "sloppy") == PO_FAILED) ++ return 0; ++ } ++ + return 1; + } - ret = sqlite_prepare_dbh(storagedir); -diff -up nfs-utils-2.5.4/utils/nfsdcltrack/sqlite.c.orig nfs-utils-2.5.4/utils/nfsdcltrack/sqlite.c ---- nfs-utils-2.5.4/utils/nfsdcltrack/sqlite.c.orig 2021-06-10 14:07:47.000000000 -0400 -+++ nfs-utils-2.5.4/utils/nfsdcltrack/sqlite.c 2021-08-18 13:48:16.264408309 -0400 -@@ -48,6 +48,7 @@ - #include - #include - #include -+#include - #include - - #include "xlog.h" -@@ -539,7 +540,7 @@ out_err: - * remove any client records that were not reclaimed since grace_start. - */ - int --sqlite_remove_unreclaimed(time_t grace_start) -+sqlite_remove_unreclaimed(uint64_t grace_start) - { - int ret; - char *err = NULL; -diff -up nfs-utils-2.5.4/utils/nfsdcltrack/sqlite.h.orig nfs-utils-2.5.4/utils/nfsdcltrack/sqlite.h ---- nfs-utils-2.5.4/utils/nfsdcltrack/sqlite.h.orig 2021-06-10 14:07:47.000000000 -0400 -+++ nfs-utils-2.5.4/utils/nfsdcltrack/sqlite.h 2021-08-18 13:44:11.839124879 -0400 -@@ -26,7 +26,7 @@ int sqlite_insert_client(const unsigned - int sqlite_remove_client(const unsigned char *clname, const size_t namelen); - int sqlite_check_client(const unsigned char *clname, const size_t namelen, - const bool has_session); --int sqlite_remove_unreclaimed(const time_t grace_start); -+int sqlite_remove_unreclaimed(const uint64_t grace_start); - int sqlite_query_reclaiming(const time_t grace_start); - - #endif /* _SQLITE_H */ + diff --git a/nfs-utils-2.5.4-nfsdcltrack-printf.patch b/nfs-utils-2.5.4-nfsdcltrack-printf.patch index 9d23e23..ec5b703 100644 --- a/nfs-utils-2.5.4-nfsdcltrack-printf.patch +++ b/nfs-utils-2.5.4-nfsdcltrack-printf.patch @@ -1,3 +1,47 @@ +diff -up nfs-utils-2.5.4/utils/nfsdcltrack/nfsdcltrack.c.orig nfs-utils-2.5.4/utils/nfsdcltrack/nfsdcltrack.c +--- nfs-utils-2.5.4/utils/nfsdcltrack/nfsdcltrack.c.orig 2021-06-10 14:07:47.000000000 -0400 ++++ nfs-utils-2.5.4/utils/nfsdcltrack/nfsdcltrack.c 2021-08-18 13:44:11.839124879 -0400 +@@ -507,7 +507,7 @@ cltrack_gracedone(const char *timestr) + { + int ret; + char *tail; +- time_t gracetime; ++ uint64_t gracetime; + + + ret = sqlite_prepare_dbh(storagedir); +diff -up nfs-utils-2.5.4/utils/nfsdcltrack/sqlite.c.orig nfs-utils-2.5.4/utils/nfsdcltrack/sqlite.c +--- nfs-utils-2.5.4/utils/nfsdcltrack/sqlite.c.orig 2021-06-10 14:07:47.000000000 -0400 ++++ nfs-utils-2.5.4/utils/nfsdcltrack/sqlite.c 2021-08-18 13:48:16.264408309 -0400 +@@ -48,6 +48,7 @@ + #include + #include + #include ++#include + #include + + #include "xlog.h" +@@ -539,7 +540,7 @@ out_err: + * remove any client records that were not reclaimed since grace_start. + */ + int +-sqlite_remove_unreclaimed(time_t grace_start) ++sqlite_remove_unreclaimed(uint64_t grace_start) + { + int ret; + char *err = NULL; +diff -up nfs-utils-2.5.4/utils/nfsdcltrack/sqlite.h.orig nfs-utils-2.5.4/utils/nfsdcltrack/sqlite.h +--- nfs-utils-2.5.4/utils/nfsdcltrack/sqlite.h.orig 2021-06-10 14:07:47.000000000 -0400 ++++ nfs-utils-2.5.4/utils/nfsdcltrack/sqlite.h 2021-08-18 13:44:11.839124879 -0400 +@@ -26,7 +26,7 @@ int sqlite_insert_client(const unsigned + int sqlite_remove_client(const unsigned char *clname, const size_t namelen); + int sqlite_check_client(const unsigned char *clname, const size_t namelen, + const bool has_session); +-int sqlite_remove_unreclaimed(const time_t grace_start); ++int sqlite_remove_unreclaimed(const uint64_t grace_start); + int sqlite_query_reclaiming(const time_t grace_start); + + #endif /* _SQLITE_H */ diff --git a/utils/nfsdcltrack/nfsdcltrack.c b/utils/nfsdcltrack/nfsdcltrack.c index 2f8bea81..7c1c4bcc 100644 --- a/utils/nfsdcltrack/nfsdcltrack.c