diff --git a/SOURCES/nfs-utils-2.5.4-mount-ebusy.patch b/SOURCES/nfs-utils-2.5.4-mount-ebusy.patch
new file mode 100644
index 0000000..bd0526f
--- /dev/null
+++ b/SOURCES/nfs-utils-2.5.4-mount-ebusy.patch
@@ -0,0 +1,32 @@
+commit c547ad481dca5bc0b0a2e365ebcff3439848f664
+Author: Rohan Sable <rsable@redhat.com>
+Date:   Mon Feb 14 11:15:22 2022 -0500
+
+    mount.nfs Fix error reporting for already mounted shares
+    
+    When mount is triggered for an already mounted
+    share (using auto negotiation), it displays
+    "mount.nfs: Protocol not supported" or
+    "mount.nfs: access denied by server while mounting"
+    instead of EBUSY. This easily causes confusion if
+    the mount was not tried verbose :
+    
+    Signed-off-by: Rohan Sable <rsable@redhat.com>
+    Signed-off-by: Yongcheng Yang <yoyang@redhat.com>
+    Signed-off-by: Steve Dickson <steved@redhat.com>
+
+diff --git a/utils/mount/stropts.c b/utils/mount/stropts.c
+index 3c4e218a..573df6ee 100644
+--- a/utils/mount/stropts.c
++++ b/utils/mount/stropts.c
+@@ -973,7 +973,9 @@ fall_back:
+ 	if ((result = nfs_try_mount_v3v2(mi, FALSE)))
+ 		return result;
+ 
+-	errno = olderrno;
++	if (errno != EBUSY && errno != EACCES)
++		errno = olderrno;
++
+ 	return result;
+ }
+ 
diff --git a/SOURCES/nfs-utils-2.5.4-nfsman-maxconnect.patch b/SOURCES/nfs-utils-2.5.4-nfsman-maxconnect.patch
new file mode 100644
index 0000000..3aab8a0
--- /dev/null
+++ b/SOURCES/nfs-utils-2.5.4-nfsman-maxconnect.patch
@@ -0,0 +1,37 @@
+commit 28deb4f398363e4e75ea41ff0fe604b11f6ee91a
+Author: Olga Kornievskaia <kolga@netapp.com>
+Date:   Tue Sep 21 13:00:12 2021 -0400
+
+    nfs.man: adding new mount option max_connect
+    
+    When client discovers trunkable servers, instead of dropping newly
+    created trunkable connections, add this connection to the existing
+    RPC client.
+    
+    Signed-off-by: Olga Kornievskaia <kolga@netapp.com>
+    Signed-off-by: Steve Dickson <steved@redhat.com>
+
+diff --git a/utils/mount/nfs.man b/utils/mount/nfs.man
+index f1b76936..57a693fd 100644
+--- a/utils/mount/nfs.man
++++ b/utils/mount/nfs.man
+@@ -416,6 +416,19 @@ Note that the
+ option may also be used by some pNFS drivers to decide how many
+ connections to set up to the data servers.
+ .TP 1.5i
++.BR max_connect= n
++While
++.BR nconnect
++option sets a limit on the number of connections that can be established
++to a given server IP,
++.BR max_connect
++option allows the user to specify maximum number of connections to different
++server IPs that belong to the same NFSv4.1+ server (session trunkable
++connections) up to a limit of 16. When client discovers that it established
++a client ID to an already existing server, instead of dropping the newly
++created network transport, the client will add this new connection to the
++list of available transports for that RPC client.
++.TP 1.5i
+ .BR rdirplus " / " nordirplus
+ Selects whether to use NFS v3 or v4 READDIRPLUS requests.
+ If this option is not specified, the NFS client uses READDIRPLUS requests
diff --git a/SOURCES/nfs-utils-2.5.4-rpcctl-xprt.patch b/SOURCES/nfs-utils-2.5.4-rpcctl-xprt.patch
new file mode 100644
index 0000000..255b384
--- /dev/null
+++ b/SOURCES/nfs-utils-2.5.4-rpcctl-xprt.patch
@@ -0,0 +1,36 @@
+diff --git a/tools/rpcctl/rpcctl.py b/tools/rpcctl/rpcctl.py
+index b8df556b..d2110ad6 100755
+--- a/tools/rpcctl/rpcctl.py
++++ b/tools/rpcctl/rpcctl.py
+@@ -90,10 +90,18 @@ class Xprt:
+         self.dstaddr = write_addr_file(self.path / "dstaddr", newaddr)
+ 
+     def set_state(self, state):
++        if self.info.get("main_xprt"):
++            raise Exception(f"Main xprts cannot be set {state}")
+         with open(self.path / "xprt_state", 'w') as f:
+             f.write(state)
+         self.read_state()
+ 
++    def remove(self):
++        if self.info.get("main_xprt"):
++            raise Exception("Main xprts cannot be removed")
++        self.set_state("offline")
++        self.set_state("remove")
++
+     def add_command(subparser):
+         parser = subparser.add_parser("xprt", help="Commands for individual xprts")
+         parser.set_defaults(func=Xprt.show, xprt=None)
+@@ -139,10 +147,9 @@ class Xprt:
+             if args.property == "dstaddr":
+                 xprt.set_dstaddr(socket.gethostbyname(args.newaddr[0]))
+             elif args.property == "remove":
+-                xprt.set_state("offline")
+-                xprt.set_state("remove")
++                xprt.remove()
+             else:
+-                args.set_state(args.property)
++                xprt.set_state(args.property)
+         print(xprt)
+ 
+ 
diff --git a/SOURCES/nfs-utils-2.5.4-rpcidmapd-return.patch b/SOURCES/nfs-utils-2.5.4-rpcidmapd-return.patch
new file mode 100644
index 0000000..cd5ee1d
--- /dev/null
+++ b/SOURCES/nfs-utils-2.5.4-rpcidmapd-return.patch
@@ -0,0 +1,40 @@
+commit 9abd3b4b57155dfdfd6895e6086ef550ee56fc49
+Author: Wenchao Hao <haowenchao@huawei.com>
+Date:   Tue Feb 22 16:06:51 2022 -0500
+
+    idmapd: Fix error status when nfs-idmapd exits
+    
+    nfs-idmapd.service would report following error when stopped:
+    
+    Starting NFSv4 ID-name mapping service...
+    rpc.idmapd[1198]: Setting log level to 0
+    Started NFSv4 ID-name mapping service.
+    rpc.idmapd[1198]: exiting on signal 15
+    Stopping NFSv4 ID-name mapping service...
+    nfs-idmapd.service: Main process exited, code=exited, status=1/FAILURE
+    nfs-idmapd.service: Failed with result 'exit-code'.
+    Stopped NFSv4 ID-name mapping service.
+    
+    commit 93e8f092(idmapd: Add graceful exit and resource cleanup)
+    redirected SIGTERM, so when executing "systemctl stop nfs-idmapd", the
+    main() of idmapd would running to tail to return, while it returned 1
+    which considered as error by systemd.
+    
+    So here just return 0 in main().
+    
+    Signed-off-by: Wenchao Hao <haowenchao@huawei.com>
+    Signed-off-by: Steve Dickson <steved@redhat.com>
+
+diff --git a/utils/idmapd/idmapd.c b/utils/idmapd/idmapd.c
+index e2c160e8..e79c124d 100644
+--- a/utils/idmapd/idmapd.c
++++ b/utils/idmapd/idmapd.c
+@@ -474,7 +474,7 @@ main(int argc, char **argv)
+ 		event_free(svrdirev);
+ 	event_base_free(evbase);
+ 
+-	return 1;
++	return 0;
+ }
+ 
+ static void
diff --git a/SOURCES/nfs-utils-2.5.4-rpcpipefs-warn.patch b/SOURCES/nfs-utils-2.5.4-rpcpipefs-warn.patch
new file mode 100644
index 0000000..6e7282e
--- /dev/null
+++ b/SOURCES/nfs-utils-2.5.4-rpcpipefs-warn.patch
@@ -0,0 +1,31 @@
+commit 7f8463fe702174bd613df9d308cc899af25ae02e
+Author: Steve Dickson <steved@redhat.com>
+Date:   Wed Feb 23 15:19:51 2022 -0500
+
+    systemd: Fix format-overflow warning
+    
+    rpc-pipefs-generator.c:35:23: error: '%s' directive output between 0 and 2147483653 bytes may exceed minimum required size of 4095 [-Werror=format-overflow=]
+       35 |         sprintf(path, "%s/%s", dirname, pipefs_unit);
+          |                       ^
+    
+    Signed-off-by: Steve Dickson <steved@redhat.com>
+
+diff --git a/systemd/rpc-pipefs-generator.c b/systemd/rpc-pipefs-generator.c
+index c24db567..7b2bb4f7 100644
+--- a/systemd/rpc-pipefs-generator.c
++++ b/systemd/rpc-pipefs-generator.c
+@@ -28,11 +28,12 @@ static int generate_mount_unit(const char *pipefs_path, const char *pipefs_unit,
+ {
+ 	char	*path;
+ 	FILE	*f;
++	size_t size = (strlen(dirname) + 1 + strlen(pipefs_unit) + 1);
+ 
+-	path = malloc(strlen(dirname) + 1 + strlen(pipefs_unit));
++	path = malloc(size);
+ 	if (!path)
+ 		return 1;
+-	sprintf(path, "%s/%s", dirname, pipefs_unit);
++	snprintf(path, size, "%s/%s", dirname, pipefs_unit);
+ 	f = fopen(path, "w");
+ 	if (!f)
+ 	{
diff --git a/SOURCES/nfs-utils-2.5.4-systemd-rpcstatd.patch b/SOURCES/nfs-utils-2.5.4-systemd-rpcstatd.patch
new file mode 100644
index 0000000..5b2b3aa
--- /dev/null
+++ b/SOURCES/nfs-utils-2.5.4-systemd-rpcstatd.patch
@@ -0,0 +1,31 @@
+commit 8a835cebb149ba2a54b6518722c79019cf8e3da4
+Author: Benjamin Coddington <bcodding@redhat.com>
+Date:   Mon Aug 1 13:19:04 2022 -0400
+
+    rpc-statd.service: Stop rpcbind and rpc.stat in an exit race
+    
+    When `systemctl stop rpcbind.socket` is run, the dependency means
+    that systemd first sends SIGTERM to rpcbind, then sigterm to rpc.statd.
+    
+    On SIGTERM, rpcbind tears down /var/run/rpcbind.sock.  However,
+    rpc-statd on SIGTERM attempts to unregister from rpcbind
+    
+    systemd needs to wait for rpc.statd to exit before sending
+    SIGTERM to rpcbind
+    
+    Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=2100395
+    Signed-off-by: Steve Dickson <steved@redhat.com>
+
+diff --git a/systemd/rpc-statd.service b/systemd/rpc-statd.service
+index 095629f2..392750da 100644
+--- a/systemd/rpc-statd.service
++++ b/systemd/rpc-statd.service
+@@ -5,7 +5,7 @@ Conflicts=umount.target
+ Requires=nss-lookup.target rpcbind.socket
+ Wants=network-online.target
+ Wants=rpc-statd-notify.service
+-After=network-online.target nss-lookup.target rpcbind.socket
++After=network-online.target nss-lookup.target rpcbind.service
+ 
+ PartOf=nfs-utils.service
+ IgnoreOnIsolate=yes
diff --git a/SPECS/nfs-utils.spec b/SPECS/nfs-utils.spec
index c55c633..d01d891 100644
--- a/SPECS/nfs-utils.spec
+++ b/SPECS/nfs-utils.spec
@@ -2,7 +2,7 @@ Summary: NFS utilities and supporting clients and daemons for the kernel NFS ser
 Name: nfs-utils
 URL: http://linux-nfs.org/
 Version: 2.5.4
-Release: 10%{?dist}
+Release: 15%{?dist}
 Epoch: 1
 
 # group all 32bit related archs
@@ -24,6 +24,16 @@ Patch004: nfs-utils-2.5.4-mount-nov2.patch
 Patch005: nfs-utils-2.5.4-gssd-debug-msg.patch
 Patch006: nfs-utils-2.5.4-rpcctl.patch
 
+#
+# RHEL9.1
+#
+Patch007: nfs-utils-2.5.4-nfsman-maxconnect.patch
+Patch008: nfs-utils-2.5.4-rpcpipefs-warn.patch
+Patch009: nfs-utils-2.5.4-rpcidmapd-return.patch
+Patch010: nfs-utils-2.5.4-mount-ebusy.patch
+Patch011: nfs-utils-2.5.4-rpcctl-xprt.patch
+Patch012: nfs-utils-2.5.4-systemd-rpcstatd.patch
+
 Patch100: nfs-utils-1.2.1-statdpath-man.patch
 Patch101: nfs-utils-1.2.1-exp-subtree-warn-off.patch
 Patch102: nfs-utils-1.2.5-idmap-errmsg.patch
@@ -36,7 +46,7 @@ Provides: exportfs    = %{epoch}:%{version}-%{release}
 Provides: nfsstat     = %{epoch}:%{version}-%{release}
 Provides: showmount   = %{epoch}:%{version}-%{release}
 Provides: rpcdebug    = %{epoch}:%{version}-%{release}
-Provides: rpcclt      = %{epoch}:%{version}-%{release}
+Provides: rpcctl      = %{epoch}:%{version}-%{release}
 Provides: rpc.idmapd  = %{epoch}:%{version}-%{release}
 Provides: rpc.mountd  = %{epoch}:%{version}-%{release}
 Provides: rpc.nfsd    = %{epoch}:%{version}-%{release}
@@ -101,7 +111,7 @@ Show NFS client Statistics
 %package -n nfsv4-client-utils
 Summary: NFSv4 utilities for supporting client
 Provides: rpc.gssd    = %{epoch}:%{version}-%{release}
-Provides: rpcclt      = %{epoch}:%{version}-%{release}
+Provides: rpcctl      = %{epoch}:%{version}-%{release}
 Provides: mount.nfs   = %{epoch}:%{version}-%{release}
 Provides: mount.nfs4  = %{epoch}:%{version}-%{release}
 Provides: umount.nfs  = %{epoch}:%{version}-%{release}
@@ -279,9 +289,6 @@ fi
 if [ $1 -eq 0 ]; then
 	%systemd_preun nfs-client.target
 	%systemd_preun nfs-server.service
-
-    rm -rf /var/lib/nfs/statd
-    rm -rf /var/lib/nfs/v4recovery
 fi
 
 %preun -n nfsv4-client-utils
@@ -301,6 +308,11 @@ fi
 
 /bin/systemctl --system daemon-reload >/dev/null 2>&1 || :
 
+if [ $1 -eq 0 ] ; then
+    rm -rf /var/lib/nfs/statd
+    rm -rf /var/lib/nfs/v4recovery
+fi
+
 %triggerin -- nfs-utils > 1:2.1.1-3
 /bin/systemctl try-restart gssproxy || :
 
@@ -454,6 +466,26 @@ fi
 %{_mandir}/*/nfsiostat.8.gz
 
 %changelog
+* Thu Aug 18 2022 Steve Dickson <steved@redhat.com> 2.5.4-15
+- Fix uninstall warnings (bz 2048023)
+- rpc-statd.service: Stop rpcbind and rpc.stat in an exit race (bz 2112941)
+
+* Mon Aug  1 2022 Steve Dickson <steved@redhat.com> 2.5.4-14
+- Fix the typo of dependency tag "Provides: rpcclt" (bz 2104406)
+
+* Thu Jul 28 2022 Steve Dickson <steved@redhat.com> 2.5.4-13
+- mount.nfs: Fix Typo auto negotiating code. (bz 2054300)
+
+* Fri Jul 22 2022 Steve Dickson <steved@redhat.com> 2.5.4-12
+- idmapd: Fix error status when nfs-idmapd exits (bz 2001764)
+- mount.nfs Fix error reporting for already mounted shares (bz 2054300)
+- rpcctl - fix failure when setting xprt offline and online (bz 2081934)
+- rpc-pipefs-generator: allocate enough space (bz 2109420)
+
+* Sat Jul 16 2022 Steve Dickson <steved@redhat.com> 2.5.4-11
+- nfs.man: adding new mount option max_connect (bz 2106848)
+- systemd: Fix format-overflow warning (bz 2106896)
+
 * Mon Feb 28 2022 Steve Dickson <steved@redhat.com> 2.5.4-10
 - Added the rpcctl command (bz 2059245)