Hi Vlad

These patches comprise an initial cleanup for NFSRDMA (e.g., we don't
check out all of NFS anymore, just the sunrpc/xprtrdma files). I've
tested that these build, and I was able to run NFS connectathon tests
correctly over an NFSRDMA mount. I've included the DOS formatting
correction patch that you recently applied to ofed_kernel_1_5_3_2, since
I really meant it for ofed_kernel_1_5. Thanks.

-jeff
>From b7f948e471f3fe311c35dd9dccb7f6a68d1ac762 Mon Sep 17 00:00:00 2001
From: Jeff Becker <[email protected]>
Date: Thu, 21 Jul 2011 11:50:44 -0700
Subject: [PATCH 5/5] Remove SUNRPC patch that no longer applies.

Signed-off-by: Jeff Becker <[email protected]>
---
 .../fixes/nfsrdma_zz_1000_reestablish_to_fix.patch |   34 --------------------
 1 files changed, 0 insertions(+), 34 deletions(-)
 delete mode 100644 
kernel_patches/fixes/nfsrdma_zz_1000_reestablish_to_fix.patch

diff --git a/kernel_patches/fixes/nfsrdma_zz_1000_reestablish_to_fix.patch 
b/kernel_patches/fixes/nfsrdma_zz_1000_reestablish_to_fix.patch
deleted file mode 100644
index 087e3f1..0000000
--- a/kernel_patches/fixes/nfsrdma_zz_1000_reestablish_to_fix.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-diff --git a/net/sunrpc/xprtsock.c b/net/sunrpc/xprtsock.c
-index e185961..92a5c42 100644
---- a/net/sunrpc/xprtsock.c
-+++ b/net/sunrpc/xprtsock.c
-@@ -818,6 +818,7 @@ static void xs_close(struct rpc_xprt *xprt)
-       dprintk("RPC:       xs_close xprt %p\n", xprt);
- 
-       xs_reset_transport(transport);
-+      xprt->reestablish_timeout = 0;
- 
-       smp_mb__before_clear_bit();
-       clear_bit(XPRT_CONNECTION_ABORT, &xprt->state);
-@@ -1146,6 +1147,12 @@ static void xs_tcp_data_ready(struct sock *sk, int 
bytes)
-       if (xprt->shutdown)
-               goto out;
- 
-+      /* Any data means we had a useful conversation, so
-+       * the we don't need to delay the next reconnect
-+       */
-+      if (xprt->reestablish_timeout)
-+              xprt->reestablish_timeout = 0;
-+
-       /* We use rd_desc to pass struct xprt to xs_tcp_data_recv */
-       rd_desc.arg.data = xprt;
-       do {
-@@ -1916,6 +1923,8 @@ static void xs_connect(struct rpc_task *task)
-                                  &transport->connect_worker,
-                                  xprt->reestablish_timeout);
-               xprt->reestablish_timeout <<= 1;
-+              if (xprt->reestablish_timeout < XS_TCP_INIT_REEST_TO)
-+                      xprt->reestablish_timeout = XS_TCP_INIT_REEST_TO;
-               if (xprt->reestablish_timeout > XS_TCP_MAX_REEST_TO)
-                       xprt->reestablish_timeout = XS_TCP_MAX_REEST_TO;
-       } else {
-- 
1.7.3.4

>From ecaa8f13ccb7989f875cf97c6def3e25e374c3fb Mon Sep 17 00:00:00 2001
From: Jeff Becker <[email protected]>
Date: Thu, 30 Jun 2011 10:50:05 -0700
Subject: [PATCH 1/5] NFSRDMA cleanup: only checkout and build xprtrdma modules
 Signed-off-by: Jeff Becker <[email protected]>

---
 ofed_scripts/Makefile                  |    7 ------
 ofed_scripts/checkout_files            |   10 +++-----
 ofed_scripts/configure                 |   36 --------------------------------
 ofed_scripts/makefile                  |   28 +-----------------------
 ofed_scripts/nfs_header_checkout_files |   22 -------------------
 ofed_scripts/ofed_checkout.sh          |   10 --------
 6 files changed, 6 insertions(+), 107 deletions(-)
 delete mode 100644 ofed_scripts/nfs_header_checkout_files

diff --git a/ofed_scripts/Makefile b/ofed_scripts/Makefile
index 0baecd6..3bbe66a 100644
--- a/ofed_scripts/Makefile
+++ b/ofed_scripts/Makefile
@@ -14,11 +14,4 @@ obj-$(CONFIG_CHELSIO_T3)        += drivers/net/cxgb3/
 obj-$(CONFIG_MLX4_CORE)         += drivers/net/mlx4/
 obj-$(CONFIG_RDS)               += net/rds/
 obj-$(CONFIG_MEMTRACK)          += drivers/infiniband/debug/
-obj-$(CONFIG_SUNRPC_XPRT_RDMA)  += net/sunrpc/
-obj-$(CONFIG_SUNRPC_XPRT_RDMA)  += net/sunrpc/auth_gss/
 obj-$(CONFIG_SUNRPC_XPRT_RDMA)  += net/sunrpc/xprtrdma/
-obj-$(CONFIG_SUNRPC_XPRT_RDMA)  += fs/nfs/
-obj-$(CONFIG_SUNRPC_XPRT_RDMA)  += fs/lockd/
-obj-$(CONFIG_SUNRPC_XPRT_RDMA)  += fs/exportfs/
-obj-$(CONFIG_SUNRPC_XPRT_RDMA)  += fs/nfs_common/
-obj-$(CONFIG_SUNRPC_XPRT_RDMA)  += fs/nfsd/
diff --git a/ofed_scripts/checkout_files b/ofed_scripts/checkout_files
index 2896430..370e0a7 100644
--- a/ofed_scripts/checkout_files
+++ b/ofed_scripts/checkout_files
@@ -8,12 +8,10 @@ drivers/scsi/iscsi_tcp.c
 drivers/scsi/iscsi_tcp.h
 drivers/scsi/libiscsi.c
 drivers/scsi/scsi_transport_iscsi.c
-fs/exportfs/
-fs/lockd/
-fs/nfs/
-fs/nfs_common/
-fs/nfsd/
 include/linux/mlx4/
+include/linux/sunrpc/rpc_rdma.h
+include/linux/sunrpc/svc_rdma.h
+include/linux/sunrpc/xprtrdma.h
 include/rdma/
 include/scsi/iscsi_if.h
 include/scsi/iscsi_proto.h
@@ -27,5 +25,5 @@ lib/klist.c
 net/rds/
 include/linux/rds.h
 include/linux/socket.h
-net/sunrpc/
+net/sunrpc/xprtrdma
 ofed_scripts/
diff --git a/ofed_scripts/configure b/ofed_scripts/configure
index b2407ac..51cdbaa 100755
--- a/ofed_scripts/configure
+++ b/ofed_scripts/configure
@@ -522,47 +522,11 @@ main()
                             CONFIG_INFINIBAND_NES_DEBUG=
                         ;;
                         --with-nfsrdma-mod)
-                            CONFIG_SUNRPC="m"
-                            CONFIG_SUNRPC_GSS="m"
-                            CONFIG_RPCSEC_GSS_KRB5="m"
-                            CONFIG_RPCSEC_GSS_SPKM3="m"
                             CONFIG_SUNRPC_XPRT_RDMA="m"
-                            CONFIG_NFS_FS="m"
-                            CONFIG_NFS_V3="y"
-                            CONFIG_NFS_V3_ACL="y"
-                           CONFIG_NFS_V4="y"
-                            CONFIG_NFS_ACL_SUPPORT="m"
-                            CONFIG_NFS_DIRECTIO="y"
-                           CONFIG_EXPORTFS="m"
-                            CONFIG_LOCKD="m"
-                            CONFIG_LOCKD_V4="y"
-                            CONFIG_NFSD="m"
-                            CONFIG_NFSD_V2_ACL="y"
-                            CONFIG_NFSD_V3="y"
-                            CONFIG_NFSD_V3_ACL="y"
-                            CONFIG_NFSD_V4="y"
                             CONFIG_NFSD_RDMA="y"
                         ;;
                         --without-nfsrdma-mod)
-                            CONFIG_SUNRPC=
-                            CONFIG_SUNRPC_GSS=
-                            CONFIG_RPCSEC_GSS_KRB5=
-                            CONFIG_RPCSEC_GSS_SPKM3=
                             CONFIG_SUNRPC_XPRT_RDMA=
-                            CONFIG_NFS_FS=
-                            CONFIG_NFS_V3=
-                           CONFIG_NFS_V4=
-                            CONFIG_NFS_V3_ACL=
-                            CONFIG_NFS_ACL_SUPPORT=
-                            CONFIG_NFS_DIRECTIO=
-                           CONFIG_EXPORTFS=
-                            CONFIG_LOCKD=
-                            CONFIG_LOCKD_V4=
-                            CONFIG_NFSD=
-                            CONFIG_NFSD_V2_ACL=
-                            CONFIG_NFSD_V3=
-                            CONFIG_NFSD_V3_ACL=
-                            CONFIG_NFSD_V4=
                             CONFIG_NFSD_RDMA=
                         ;;
                         --with-modprobe|--without-modprobe)
diff --git a/ofed_scripts/makefile b/ofed_scripts/makefile
index d505d75..a9eb4de 100644
--- a/ofed_scripts/makefile
+++ b/ofed_scripts/makefile
@@ -23,12 +23,6 @@ else
         export KERNEL_MEMTRACK_CFLAGS =
 endif
 
-ifeq ($(CONFIG_NFS_FS),m)
-       export KERNEL_NFS_FS_CFLAGS = -I$(CWD)/include-nfs
-else
-       export KERNEL_NFS_FS_CFLAGS = 
-endif
-
 export OPEN_ISCSI_MODULES = iscsi_tcp.ko libiscsi.ko scsi_transport_iscsi.ko
 
 configure.mk.kernel:
@@ -125,24 +119,6 @@ kernel:
                CONFIG_MLX4_DEBUG=$(CONFIG_MLX4_DEBUG) \
                CONFIG_INFINIBAND_AMSO1100=$(CONFIG_INFINIBAND_AMSO1100) \
                CONFIG_SUNRPC_XPRT_RDMA=$(CONFIG_SUNRPC_XPRT_RDMA) \
-               CONFIG_SUNRPC=$(CONFIG_SUNRPC) \
-               CONFIG_SUNRPC_GSS=$(CONFIG_SUNRPC_GSS) \
-               CONFIG_RPCSEC_GSS_KRB5=$(CONFIG_RPCSEC_GSS_KRB5) \
-               CONFIG_RPCSEC_GSS_SPKM3=$(CONFIG_RPCSEC_GSS_SPKM3) \
-               CONFIG_NFS_FS=$(CONFIG_NFS_FS) \
-               CONFIG_NFS_V3=$(CONFIG_NFS_V3) \
-               CONFIG_NFS_V3_ACL=$(CONFIG_NFS_V3_ACL) \
-               CONFIG_NFS_V4=$(CONFIG_NFS_V4) \
-               CONFIG_NFS_ACL_SUPPORT=$(CONFIG_NFS_ACL_SUPPORT) \
-               CONFIG_NFS_DIRECTIO=$(CONFIG_NFS_DIRECTIO) \
-               CONFIG_EXPORTFS=$(CONFIG_EXPORTFS)\
-               CONFIG_LOCKD=$(CONFIG_LOCKD) \
-               CONFIG_LOCKD_V4=$(CONFIG_LOCKD_V4) \
-               CONFIG_NFSD=$(CONFIG_NFSD) \
-               CONFIG_NFSD_V2_ACL=$(CONFIG_NFSD_V2_ACL) \
-               CONFIG_NFSD_V3=$(CONFIG_NFSD_V3) \
-               CONFIG_NFSD_V3_ACL=$(CONFIG_NFSD_V3_ACL) \
-               CONFIG_NFSD_V4=$(CONFIG_NFSD_V4) \
                CONFIG_NFSD_RDMA=$(CONFIG_NFSD_RDMA) \
                LINUXINCLUDE=' \
                -D__OFED_BUILD__ \
@@ -233,8 +209,8 @@ install_kernel_iscsi: install_modules
 install_kernel_nfsrdma: install_modules
        # backup all the modules
        # Copy new nfs rdma kernel modules to $(DESTDIR)/$(MODULES_DIR)/kernel
-       NFSRDMA_PATHS="fs/nfs fs/nfsd fs/lockd fs/exportfs fs/nfs_common 
net/sunrpc net/sunrpc/xprtrdma net/sunrpc/auth_gss"; \
-       NFSRDMA_MODS="net/sunrpc/auth_gss/auth_rpcgss.ko 
net/sunrpc/auth_gss/rpcsec_gss_krb5.ko net/sunrpc/auth_gss/rpcsec_gss_spkm3.ko 
fs/exportfs/exportfs.ko fs/lockd/lockd.ko fs/nfs_common/nfs_acl.ko 
fs/nfsd/nfsd.ko fs/nfs/nfs.ko net/sunrpc/sunrpc.ko 
net/sunrpc/xprtrdma/svcrdma.ko net/sunrpc/xprtrdma/xprtrdma.ko"; \
+       NFSRDMA_PATHS="net/sunrpc/xprtrdma"; \
+       NFSRDMA_MODS="net/sunrpc/xprtrdma/svcrdma.ko 
net/sunrpc/xprtrdma/xprtrdma.ko"; \
        if [ -d $(CWD)/lib/modules/$(KVERSION)/net/sunrpc/xprtrdma ]; then \
                for each_path in $$NFSRDMA_PATHS; do \
                        mkdir -p $(DESTDIR)/$(MODULES_DIR)/kernel/$$each_path; \
diff --git a/ofed_scripts/nfs_header_checkout_files 
b/ofed_scripts/nfs_header_checkout_files
deleted file mode 100644
index 29dd7ff..0000000
--- a/ofed_scripts/nfs_header_checkout_files
+++ /dev/null
@@ -1,22 +0,0 @@
-include/linux/exportfs.h
-include/linux/lockd/
-include/linux/nfs.h
-include/linux/nfs2.h
-include/linux/nfs3.h
-include/linux/nfs4.h
-include/linux/nfs4_acl.h
-include/linux/nfs4_mount.h
-include/linux/nfs_fs.h
-include/linux/nfs_fs_i.h
-include/linux/nfs_fs_sb.h
-include/linux/nfs_idmap.h
-include/linux/nfs_iostat.h
-include/linux/nfs_mount.h
-include/linux/nfs_page.h
-include/linux/nfs_xdr.h
-include/linux/nfsacl.h
-include/linux/nfsd/
-include/linux/nfsd_idmap.h
-include/linux/pipe_fs_i.h
-include/linux/splice.h
-include/linux/sunrpc/
diff --git a/ofed_scripts/ofed_checkout.sh b/ofed_scripts/ofed_checkout.sh
index 7766f98..fa91d08 100755
--- a/ofed_scripts/ofed_checkout.sh
+++ b/ofed_scripts/ofed_checkout.sh
@@ -29,16 +29,6 @@ xex()
 # branch defaults to ofed_kernel
 branch=${1:-ofed_kernel}
 
-#checkout nfs headerfiles and put them in their new location
-if [ ! -e ofed_scripts/nfs_header_checkout_files ]; then
-       ex git checkout ${branch} ofed_scripts/nfs_header_checkout_files
-fi
-
-xex xargs -rt git ls-tree -r --name-only ${branch} 
<ofed_scripts/nfs_header_checkout_files |
-       xex xargs -rt git checkout ${branch}
-
-ex mv include include-nfs
-
 # make sure we have the list of all the other files and dirs
 if [ ! -e ofed_scripts/checkout_files ]; then
        ex git checkout ${branch} ofed_scripts/checkout_files
-- 
1.7.3.4

>From ce2b45a6ddc74389fa54d9e1765b3a5835ff546c Mon Sep 17 00:00:00 2001
From: Jeff Becker <[email protected]>
Date: Tue, 5 Jul 2011 11:40:45 -0700
Subject: [PATCH 2/5] Remove NFS patch (we don't check out NFS).
 Signed-off-by: Jeff Becker <[email protected]>

---
 .../fixes/core_0280_warnings_fs_nfs_nfsroot.patch  |   24 --------------------
 1 files changed, 0 insertions(+), 24 deletions(-)
 delete mode 100644 kernel_patches/fixes/core_0280_warnings_fs_nfs_nfsroot.patch

diff --git a/kernel_patches/fixes/core_0280_warnings_fs_nfs_nfsroot.patch 
b/kernel_patches/fixes/core_0280_warnings_fs_nfs_nfsroot.patch
deleted file mode 100644
index 5f91321..0000000
--- a/kernel_patches/fixes/core_0280_warnings_fs_nfs_nfsroot.patch
+++ /dev/null
@@ -1,24 +0,0 @@
----
- fs/nfs/nfsroot.c |    2 ++
- 1 file changed, 2 insertions(+)
-
-Index: ofa_kernel-1.4/fs/nfs/nfsroot.c
-===================================================================
---- ofa_kernel-1.4.orig/fs/nfs/nfsroot.c
-+++ ofa_kernel-1.4/fs/nfs/nfsroot.c
-@@ -376,6 +376,7 @@ static int __init root_nfs_init(void)
- }
- 
- 
-+#ifndef MODULE
- /*
-  *  Parse NFS server and directory information passed on the kernel
-  *  command line.
-@@ -396,6 +397,7 @@ static int __init nfs_root_setup(char *l
- }
- 
- __setup("nfsroot=", nfs_root_setup);
-+#endif
- 
- /***************************************************************************
- 
-- 
1.7.3.4

From cc336a7859c4cbab4e7e91b471a1848f8bcb42e4 Mon Sep 17 00:00:00 2001
From: Jeff Becker <[email protected]>
Date: Mon, 11 Jul 2011 10:11:13 -0700
Subject: [PATCH 3/5] Patch was formatted as DOS and did not apply - convert to 
UNIX format
 Signed-off-by: Jeff Becker <[email protected]>

---
 ...x_0150_Fix_mlx4_ib_reg_xrc_rcv_qp_locking.patch |   82 ++++++++++----------
 1 files changed, 41 insertions(+), 41 deletions(-)

diff --git 
a/kernel_patches/fixes/mlx4_x_0150_Fix_mlx4_ib_reg_xrc_rcv_qp_locking.patch 
b/kernel_patches/fixes/mlx4_x_0150_Fix_mlx4_ib_reg_xrc_rcv_qp_locking.patch
index 1ca3e71..0442493 100644
--- a/kernel_patches/fixes/mlx4_x_0150_Fix_mlx4_ib_reg_xrc_rcv_qp_locking.patch
+++ b/kernel_patches/fixes/mlx4_x_0150_Fix_mlx4_ib_reg_xrc_rcv_qp_locking.patch
@@ -1,41 +1,41 @@
-mlx4_ib XRC RCV: Fix mlx4_ib_reg_xrc_rcv_qp() locking
-
-In mlx4_ib_reg_xrc_rcv_qp(), we need to take the xrc_reg_list_lock spinlock
-when walking the xrc_reg_list.
-
-Also, I guess spin_lock_irqsave() could be replaced by spin_lock_irq() in
-that function as we know for sure we're in process context.
-
-Signed-off-by: Sébastien Dugué <[email protected]>
-
---
-
- qp.c |    3 +++
- 1 file changed, 3 insertions(+)
-
-dIndex: kernel-ib/drivers/infiniband/hw/mlx4/qp.c
-===================================================================
---- kernel-ib.orig/drivers/infiniband/hw/mlx4/qp.c     2011-01-31 
16:52:11.000000000 +0100
-+++ kernel-ib/drivers/infiniband/hw/mlx4/qp.c  2011-02-11 15:24:27.000000000 
+0100
-@@ -2549,13 +2549,16 @@
-       }
- 
-       mutex_lock(&mibqp->mutex);
-+      spin_lock_irqsave(&mibqp->xrc_reg_list_lock, flags);
-       list_for_each_entry(tmp, &mibqp->xrc_reg_list, list)
-               if (tmp->context == context) {
-+                      spin_unlock_irqrestore(&mibqp->xrc_reg_list_lock, 
flags);
-                       mutex_unlock(&mibqp->mutex);
-                       kfree(ctx_entry);
-                       mutex_unlock(&to_mdev(xrcd->device)->xrc_reg_mutex);
-                       return 0;
-               }
-+      spin_unlock_irqrestore(&mibqp->xrc_reg_list_lock, flags);
- 
-       ctx_entry->context = context;
-       spin_lock_irqsave(&mibqp->xrc_reg_list_lock, flags);
---
-To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
-the body of a message to [email protected]
-More majordomo info at  http://vger.kernel.org/majordomo-info.html
-
+mlx4_ib XRC RCV: Fix mlx4_ib_reg_xrc_rcv_qp() locking
+
+In mlx4_ib_reg_xrc_rcv_qp(), we need to take the xrc_reg_list_lock spinlock
+when walking the xrc_reg_list.
+
+Also, I guess spin_lock_irqsave() could be replaced by spin_lock_irq() in
+that function as we know for sure we're in process context.
+
+Signed-off-by: Sébastien Dugué <[email protected]>
+
+--
+
+ qp.c |    3 +++
+ 1 file changed, 3 insertions(+)
+
+dIndex: kernel-ib/drivers/infiniband/hw/mlx4/qp.c
+===================================================================
+--- kernel-ib.orig/drivers/infiniband/hw/mlx4/qp.c     2011-01-31 
16:52:11.000000000 +0100
++++ kernel-ib/drivers/infiniband/hw/mlx4/qp.c  2011-02-11 15:24:27.000000000 
+0100
+@@ -2549,13 +2549,16 @@
+       }
+ 
+       mutex_lock(&mibqp->mutex);
++      spin_lock_irqsave(&mibqp->xrc_reg_list_lock, flags);
+       list_for_each_entry(tmp, &mibqp->xrc_reg_list, list)
+               if (tmp->context == context) {
++                      spin_unlock_irqrestore(&mibqp->xrc_reg_list_lock, 
flags);
+                       mutex_unlock(&mibqp->mutex);
+                       kfree(ctx_entry);
+                       mutex_unlock(&to_mdev(xrcd->device)->xrc_reg_mutex);
+                       return 0;
+               }
++      spin_unlock_irqrestore(&mibqp->xrc_reg_list_lock, flags);
+ 
+       ctx_entry->context = context;
+       spin_lock_irqsave(&mibqp->xrc_reg_list_lock, flags);
+--
+To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
+the body of a message to [email protected]
+More majordomo info at  http://vger.kernel.org/majordomo-info.html
+
-- 
1.7.3.4

>From 6f9fb072fce5dfb8805b2b3010e102664ae032d5 Mon Sep 17 00:00:00 2001
From: Jeff Becker <[email protected]>
Date: Thu, 21 Jul 2011 10:49:36 -0700
Subject: [PATCH 4/5] Since OFED only builds sunrpc/xprtrdma/* (instead of all 
of NFS), remove
 patches that no longer apply.

Signed-off-by: Jeff Becker <[email protected]>
---
 .../fixes/nfsrdma_zz_0400_unrefcounted_creds.patch |   52 -----
 .../fixes/nfsrdma_zz_0500_O_DIRECT_Oops.patch      |  210 --------------------
 .../fixes/nfsrdma_zz_0600_lockd_ref_fix.patch      |   37 ----
 ...srdma_zz_0900_rpc_task_force_reencode_fix.patch |   12 --
 .../fixes/nfsrdma_zz_1100_eaddrnotavail_fix.patch  |   12 --
 .../nfsrdma_zz_1200_honor_autoclose_fix.patch      |   32 ---
 .../fixes/nfsrdma_zz_1300_xs_nospace_fix           |   43 ----
 .../nfsrdma_zz_1600_fix_xprt_transmit_race.patch   |   49 -----
 .../fixes/nfsrdma_zz_1900_remove_bad_put.patch     |   43 ----
 9 files changed, 0 insertions(+), 490 deletions(-)
 delete mode 100644 
kernel_patches/fixes/nfsrdma_zz_0400_unrefcounted_creds.patch
 delete mode 100644 kernel_patches/fixes/nfsrdma_zz_0500_O_DIRECT_Oops.patch
 delete mode 100644 kernel_patches/fixes/nfsrdma_zz_0600_lockd_ref_fix.patch
 delete mode 100644 
kernel_patches/fixes/nfsrdma_zz_0900_rpc_task_force_reencode_fix.patch
 delete mode 100644 kernel_patches/fixes/nfsrdma_zz_1100_eaddrnotavail_fix.patch
 delete mode 100644 
kernel_patches/fixes/nfsrdma_zz_1200_honor_autoclose_fix.patch
 delete mode 100644 kernel_patches/fixes/nfsrdma_zz_1300_xs_nospace_fix
 delete mode 100644 
kernel_patches/fixes/nfsrdma_zz_1600_fix_xprt_transmit_race.patch
 delete mode 100644 kernel_patches/fixes/nfsrdma_zz_1900_remove_bad_put.patch

diff --git a/kernel_patches/fixes/nfsrdma_zz_0400_unrefcounted_creds.patch 
b/kernel_patches/fixes/nfsrdma_zz_0400_unrefcounted_creds.patch
deleted file mode 100644
index 07e33f6..0000000
--- a/kernel_patches/fixes/nfsrdma_zz_0400_unrefcounted_creds.patch
+++ /dev/null
@@ -1,52 +0,0 @@
-commit 033a666ccb842ab4134fcd0c861d5ba9f5d6bf3a
-
-From: David Howells <[email protected]>
-
-NFSD: Don't hold unrefcounted creds over call to nfsd_setuser()
-
-    nfsd_open() gets an unrefcounted pointer to the current process's effective
-    credentials at the top of the function, then calls nfsd_setuser() via
-    fh_verify() - which may replace and destroy the current process's effective
-    credentials - and then passes the unrefcounted pointer to dentry_open() - 
but
-    the credentials may have been destroyed by this point.
-
-    Instead, the value from current_cred() should be passed directly to
-    dentry_open() as one of its arguments, rather than being cached in a 
variable.
-
-    Possibly fh_verify() should return the creds to use.
-
-    This is a regression introduced by
-    745ca2475a6ac596e3d8d37c2759c0fbe2586227 "CRED: Pass credentials through
-    dentry_open()".
-
-    Signed-off-by: David Howells <[email protected]>
-    Tested-and-Verified-By: Steve Dickson <[email protected]>
-    Cc: [email protected]
-    Signed-off-by: J. Bruce Fields <[email protected]>
----
-
- fs/nfsd/vfs.c |    3 +--
- 1 files changed, 1 insertions(+), 2 deletions(-)
-
-
-diff --git a/fs/nfsd/vfs.c b/fs/nfsd/vfs.c
-index b660435..7843755 100644
---- a/fs/nfsd/vfs.c
-+++ b/fs/nfsd/vfs.c
-@@ -677,7 +677,6 @@ __be32
- nfsd_open(struct svc_rqst *rqstp, struct svc_fh *fhp, int type,
-                       int access, struct file **filp)
- {
--      const struct cred *cred = current_cred();
-       struct dentry   *dentry;
-       struct inode    *inode;
-       int             flags = O_RDONLY|O_LARGEFILE;
-@@ -732,7 +731,7 @@ nfsd_open(struct svc_rqst *rqstp, struct svc_fh *fhp, int 
type,
-               vfs_dq_init(inode);
-       }
-       *filp = dentry_open(dget(dentry), mntget(fhp->fh_export->ex_path.mnt),
--                          flags, cred);
-+                          flags, current_cred());
-       if (IS_ERR(*filp))
-               host_err = PTR_ERR(*filp);
- out_nfserr:
diff --git a/kernel_patches/fixes/nfsrdma_zz_0500_O_DIRECT_Oops.patch 
b/kernel_patches/fixes/nfsrdma_zz_0500_O_DIRECT_Oops.patch
deleted file mode 100644
index 206186b..0000000
--- a/kernel_patches/fixes/nfsrdma_zz_0500_O_DIRECT_Oops.patch
+++ /dev/null
@@ -1,210 +0,0 @@
-commit 1ae88b2e446261c038f2c0c3150ffae142b227a2
-Author: Trond Myklebust <[email protected]>
-Date:   Wed Aug 12 09:12:30 2009 -0400
-
-    NFS: Fix an O_DIRECT Oops...
-    
-    We can't call nfs_readdata_release()/nfs_writedata_release() without
-    first initialising and referencing args.context. Doing so inside
-    nfs_direct_read_schedule_segment()/nfs_direct_write_schedule_segment()
-    causes an Oops.
-    
-    We should rather be calling nfs_readdata_free()/nfs_writedata_free() in
-    those cases.
-    
-    Looking at the O_DIRECT code, the "struct nfs_direct_req" is already
-    referencing the nfs_open_context for us. Since the readdata and writedata
-    structures carry a reference to that, we can simplify things by getting rid
-    of the extra nfs_open_context references, so that we can replace all
-    instances of nfs_readdata_release()/nfs_writedata_release().
-    
-    Reported-by: Catalin Marinas <[email protected]>
-    Signed-off-by: Trond Myklebust <[email protected]>
-    Tested-by: Catalin Marinas <[email protected]>
-    Cc: [email protected]
-    Signed-off-by: Linus Torvalds <[email protected]>
-
-diff --git a/fs/nfs/direct.c b/fs/nfs/direct.c
-index 489fc01..e4e089a 100644
---- a/fs/nfs/direct.c
-+++ b/fs/nfs/direct.c
-@@ -255,7 +255,7 @@ static void nfs_direct_read_release(void *calldata)
- 
-       if (put_dreq(dreq))
-               nfs_direct_complete(dreq);
--      nfs_readdata_release(calldata);
-+      nfs_readdata_free(data);
- }
- 
- static const struct rpc_call_ops nfs_read_direct_ops = {
-@@ -314,14 +314,14 @@ static ssize_t nfs_direct_read_schedule_segment(struct 
nfs_direct_req *dreq,
-                                       data->npages, 1, 0, data->pagevec, 
NULL);
-               up_read(&current->mm->mmap_sem);
-               if (result < 0) {
--                      nfs_readdata_release(data);
-+                      nfs_readdata_free(data);
-                       break;
-               }
-               if ((unsigned)result < data->npages) {
-                       bytes = result * PAGE_SIZE;
-                       if (bytes <= pgbase) {
-                               nfs_direct_release_pages(data->pagevec, result);
--                              nfs_readdata_release(data);
-+                              nfs_readdata_free(data);
-                               break;
-                       }
-                       bytes -= pgbase;
-@@ -334,7 +334,7 @@ static ssize_t nfs_direct_read_schedule_segment(struct 
nfs_direct_req *dreq,
-               data->inode = inode;
-               data->cred = msg.rpc_cred;
-               data->args.fh = NFS_FH(inode);
--              data->args.context = get_nfs_open_context(ctx);
-+              data->args.context = ctx;
-               data->args.offset = pos;
-               data->args.pgbase = pgbase;
-               data->args.pages = data->pagevec;
-@@ -441,7 +441,7 @@ static void nfs_direct_free_writedata(struct 
nfs_direct_req *dreq)
-               struct nfs_write_data *data = 
list_entry(dreq->rewrite_list.next, struct nfs_write_data, pages);
-               list_del(&data->pages);
-               nfs_direct_release_pages(data->pagevec, data->npages);
--              nfs_writedata_release(data);
-+              nfs_writedata_free(data);
-       }
- }
- 
-@@ -534,7 +534,7 @@ static void nfs_direct_commit_release(void *calldata)
- 
-       dprintk("NFS: %5u commit returned %d\n", data->task.tk_pid, status);
-       nfs_direct_write_complete(dreq, data->inode);
--      nfs_commitdata_release(calldata);
-+      nfs_commit_free(data);
- }
- 
- static const struct rpc_call_ops nfs_commit_direct_ops = {
-@@ -570,7 +570,7 @@ static void nfs_direct_commit_schedule(struct 
nfs_direct_req *dreq)
-       data->args.fh = NFS_FH(data->inode);
-       data->args.offset = 0;
-       data->args.count = 0;
--      data->args.context = get_nfs_open_context(dreq->ctx);
-+      data->args.context = dreq->ctx;
-       data->res.count = 0;
-       data->res.fattr = &data->fattr;
-       data->res.verf = &data->verf;
-@@ -734,14 +734,14 @@ static ssize_t nfs_direct_write_schedule_segment(struct 
nfs_direct_req *dreq,
-                                       data->npages, 0, 0, data->pagevec, 
NULL);
-               up_read(&current->mm->mmap_sem);
-               if (result < 0) {
--                      nfs_writedata_release(data);
-+                      nfs_writedata_free(data);
-                       break;
-               }
-               if ((unsigned)result < data->npages) {
-                       bytes = result * PAGE_SIZE;
-                       if (bytes <= pgbase) {
-                               nfs_direct_release_pages(data->pagevec, result);
--                              nfs_writedata_release(data);
-+                              nfs_writedata_free(data);
-                               break;
-                       }
-                       bytes -= pgbase;
-@@ -756,7 +756,7 @@ static ssize_t nfs_direct_write_schedule_segment(struct 
nfs_direct_req *dreq,
-               data->inode = inode;
-               data->cred = msg.rpc_cred;
-               data->args.fh = NFS_FH(inode);
--              data->args.context = get_nfs_open_context(ctx);
-+              data->args.context = ctx;
-               data->args.offset = pos;
-               data->args.pgbase = pgbase;
-               data->args.pages = data->pagevec;
-diff --git a/fs/nfs/read.c b/fs/nfs/read.c
-index 73ea5e8..12c9e66 100644
---- a/fs/nfs/read.c
-+++ b/fs/nfs/read.c
-@@ -60,17 +60,15 @@ struct nfs_read_data *nfs_readdata_alloc(unsigned int 
pagecount)
-       return p;
- }
- 
--static void nfs_readdata_free(struct nfs_read_data *p)
-+void nfs_readdata_free(struct nfs_read_data *p)
- {
-       if (p && (p->pagevec != &p->page_array[0]))
-               kfree(p->pagevec);
-       mempool_free(p, nfs_rdata_mempool);
- }
- 
--void nfs_readdata_release(void *data)
-+static void nfs_readdata_release(struct nfs_read_data *rdata)
- {
--      struct nfs_read_data *rdata = data;
--
-       put_nfs_open_context(rdata->args.context);
-       nfs_readdata_free(rdata);
- }
-diff --git a/fs/nfs/write.c b/fs/nfs/write.c
-index 0a0a2ff..a34fae2 100644
---- a/fs/nfs/write.c
-+++ b/fs/nfs/write.c
-@@ -87,17 +87,15 @@ struct nfs_write_data *nfs_writedata_alloc(unsigned int 
pagecount)
-       return p;
- }
- 
--static void nfs_writedata_free(struct nfs_write_data *p)
-+void nfs_writedata_free(struct nfs_write_data *p)
- {
-       if (p && (p->pagevec != &p->page_array[0]))
-               kfree(p->pagevec);
-       mempool_free(p, nfs_wdata_mempool);
- }
- 
--void nfs_writedata_release(void *data)
-+static void nfs_writedata_release(struct nfs_write_data *wdata)
- {
--      struct nfs_write_data *wdata = data;
--
-       put_nfs_open_context(wdata->args.context);
-       nfs_writedata_free(wdata);
- }
-diff --git a/include-nfs/linux/nfs_fs.h b/include-nfs/linux/nfs_fs.h
-index fdffb41..f6b9024 100644
---- a/include-nfs/linux/nfs_fs.h
-+++ b/include-nfs/linux/nfs_fs.h
-@@ -473,7 +473,6 @@ extern int  nfs_writepages(struct address_space *, struct 
writeback_control *);
- extern int  nfs_flush_incompatible(struct file *file, struct page *page);
- extern int  nfs_updatepage(struct file *, struct page *, unsigned int, 
unsigned int);
- extern int nfs_writeback_done(struct rpc_task *, struct nfs_write_data *);
--extern void nfs_writedata_release(void *);
- 
- /*
-  * Try to write back everything synchronously (but check the
-@@ -488,7 +487,6 @@ extern int nfs_wb_page_cancel(struct inode *inode, struct 
page* page);
- extern int  nfs_commit_inode(struct inode *, int);
- extern struct nfs_write_data *nfs_commitdata_alloc(void);
- extern void nfs_commit_free(struct nfs_write_data *wdata);
--extern void nfs_commitdata_release(void *wdata);
- #else
- static inline int
- nfs_commit_inode(struct inode *inode, int how)
-@@ -507,6 +505,7 @@ nfs_have_writebacks(struct inode *inode)
-  * Allocate nfs_write_data structures
-  */
- extern struct nfs_write_data *nfs_writedata_alloc(unsigned int npages);
-+extern void nfs_writedata_free(struct nfs_write_data *);
- 
- /*
-  * linux/fs/nfs/read.c
-@@ -515,7 +514,6 @@ extern int  nfs_readpage(struct file *, struct page *);
- extern int  nfs_readpages(struct file *, struct address_space *,
-               struct list_head *, unsigned);
- extern int  nfs_readpage_result(struct rpc_task *, struct nfs_read_data *);
--extern void nfs_readdata_release(void *data);
- extern int  nfs_readpage_async(struct nfs_open_context *, struct inode *,
-                              struct page *);
- 
-@@ -523,6 +521,7 @@ extern int  nfs_readpage_async(struct nfs_open_context *, 
struct inode *,
-  * Allocate nfs_read_data structures
-  */
- extern struct nfs_read_data *nfs_readdata_alloc(unsigned int npages);
-+extern void nfs_readdata_free(struct nfs_read_data *);
- 
- /*
-  * linux/fs/nfs3proc.c
diff --git a/kernel_patches/fixes/nfsrdma_zz_0600_lockd_ref_fix.patch 
b/kernel_patches/fixes/nfsrdma_zz_0600_lockd_ref_fix.patch
deleted file mode 100644
index 8388481..0000000
--- a/kernel_patches/fixes/nfsrdma_zz_0600_lockd_ref_fix.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-nfsd: Add lockd up/down logic for transports created in the kernel.
-
-From: Steve Wise <[email protected]>
-
-The nfsd transport initialization logic also starts and stops the lockd. Add
-logic to start and stop the daemon for transports added from kernel-space
-as well as user-space.
-
-signed-off-by: Steve Wise <[email protected]>
----
-
- fs/nfsd/nfsctl.c |    4 ++++
- 1 files changed, 4 insertions(+), 0 deletions(-)
-
-
-diff --git a/fs/nfsd/nfsctl.c b/fs/nfsd/nfsctl.c
-index af16849..eb6973c 100644
---- a/fs/nfsd/nfsctl.c
-+++ b/fs/nfsd/nfsctl.c
-@@ -980,6 +980,9 @@ static ssize_t __write_ports(struct file *file, char *buf, 
size_t size)
-                                       /* Give a reasonable perror msg for
-                                        * bad transport string */
-                                       err = -EPROTONOSUPPORT;
-+                              if (err >= 0)
-+                                      lockd_up();
-+                              nfsd_serv->sv_nrthreads--;
-                       }
-                       return err < 0 ? err : 0;
-               }
-@@ -1002,6 +1005,7 @@ static ssize_t __write_ports(struct file *file, char 
*buf, size_t size)
-                                       svc_close_xprt(xprt);
-                                       svc_xprt_put(xprt);
-                                       err = 0;
-+                                      lockd_down();
-                               } else
-                                       err = -ENOTCONN;
-                       }
diff --git 
a/kernel_patches/fixes/nfsrdma_zz_0900_rpc_task_force_reencode_fix.patch 
b/kernel_patches/fixes/nfsrdma_zz_0900_rpc_task_force_reencode_fix.patch
deleted file mode 100644
index 5028b86..0000000
--- a/kernel_patches/fixes/nfsrdma_zz_0900_rpc_task_force_reencode_fix.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff --git a/net/sunrpc/clnt.c b/net/sunrpc/clnt.c
-index 5abab09..8d02e05 100644
---- a/net/sunrpc/clnt.c
-+++ b/net/sunrpc/clnt.c
-@@ -876,6 +876,7 @@ static inline void
- rpc_task_force_reencode(struct rpc_task *task)
- {
-       task->tk_rqstp->rq_snd_buf.len = 0;
-+      task->tk_rqstp->rq_bytes_sent = 0;
- }
- 
- static inline void
diff --git a/kernel_patches/fixes/nfsrdma_zz_1100_eaddrnotavail_fix.patch 
b/kernel_patches/fixes/nfsrdma_zz_1100_eaddrnotavail_fix.patch
deleted file mode 100644
index 249d1b2..0000000
--- a/kernel_patches/fixes/nfsrdma_zz_1100_eaddrnotavail_fix.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff --git a/net/sunrpc/xprtsock.c b/net/sunrpc/xprtsock.c
-index 92a5c42..c90414f 100644
---- a/net/sunrpc/xprtsock.c
-+++ b/net/sunrpc/xprtsock.c
-@@ -1799,6 +1799,7 @@ static void xs_tcp_setup_socket(struct rpc_xprt *xprt,
-                */
-               set_bit(XPRT_CONNECTION_CLOSE, &xprt->state);
-               xprt_force_disconnect(xprt);
-+              break;
-       case -ECONNREFUSED:
-       case -ECONNRESET:
-       case -ENETUNREACH:
diff --git a/kernel_patches/fixes/nfsrdma_zz_1200_honor_autoclose_fix.patch 
b/kernel_patches/fixes/nfsrdma_zz_1200_honor_autoclose_fix.patch
deleted file mode 100644
index 96e788d..0000000
--- a/kernel_patches/fixes/nfsrdma_zz_1200_honor_autoclose_fix.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-commit feb8ca37cc3d83c07fd042509ef1e176cfeb2cfa
-
-From: Trond Myklebust <[email protected]>
-
-SUNRPC: Ensure that we honour autoclose before attempting to reconnect
-
-    If the XPRT_CLOSE_WAIT flag is set, we need to ensure that we call
-    xprt->ops->close() while holding xprt_lock_write() before we can
-    start reconnecting.
-
-    Signed-off-by: Trond Myklebust <[email protected]>
----
-
- net/sunrpc/xprt.c |    4 ++++
- 1 files changed, 4 insertions(+), 0 deletions(-)
-
-
-diff --git a/net/sunrpc/xprt.c b/net/sunrpc/xprt.c
-index 06ca058..1b04e60 100644
---- a/net/sunrpc/xprt.c
-+++ b/net/sunrpc/xprt.c
-@@ -697,6 +697,10 @@ void xprt_connect(struct rpc_task *task)
-       }
-       if (!xprt_lock_write(xprt, task))
-               return;
-+
-+      if (test_and_clear_bit(XPRT_CLOSE_WAIT, &xprt->state))
-+              xprt->ops->close(xprt);
-+
-       if (xprt_connected(xprt))
-               xprt_release_write(xprt, task);
-       else {
diff --git a/kernel_patches/fixes/nfsrdma_zz_1300_xs_nospace_fix 
b/kernel_patches/fixes/nfsrdma_zz_1300_xs_nospace_fix
deleted file mode 100644
index 02f5445..0000000
--- a/kernel_patches/fixes/nfsrdma_zz_1300_xs_nospace_fix
+++ /dev/null
@@ -1,43 +0,0 @@
-xprtsock: Fix xs_nospace to return EAGAIN by default
-
-From: Tom Tucker <[email protected]>
-
-The xs_nospace function is called to handle EAGAIN
-from underlyling kernel sockets services. The
-function has a race such that SOCK_ASYNC_NOSPACE
-can be reset before it is tested. If this happens,
-xs_nospace will return 0 instead of EAGAIN. This
-changes the interpretation to 'partial send' and
-xs_tcp_release_rqst will tear down the connection.
-
-Change the default return from xs_nospace to EAGAIN
-to handle this race properly.
-
-Signed-off-by: Tom Tucker <[email protected]>
----
-
- net/sunrpc/xprtsock.c |    3 +--
- 1 files changed, 1 insertions(+), 2 deletions(-)
-
-
-diff --git a/net/sunrpc/xprtsock.c b/net/sunrpc/xprtsock.c
-index c90414f..91c3d42 100644
---- a/net/sunrpc/xprtsock.c
-+++ b/net/sunrpc/xprtsock.c
-@@ -537,7 +537,7 @@ static int xs_nospace(struct rpc_task *task)
-       struct rpc_rqst *req = task->tk_rqstp;
-       struct rpc_xprt *xprt = req->rq_xprt;
-       struct sock_xprt *transport = container_of(xprt, struct sock_xprt, 
xprt);
--      int ret = 0;
-+      int ret = -EAGAIN;
- 
-       dprintk("RPC: %5u xmit incomplete (%u left of %u)\n",
-                       task->tk_pid, req->rq_slen - req->rq_bytes_sent,
-@@ -549,7 +549,6 @@ static int xs_nospace(struct rpc_task *task)
-       /* Don't race with disconnect */
-       if (xprt_connected(xprt)) {
-               if (test_bit(SOCK_ASYNC_NOSPACE, &transport->sock->flags)) {
--                      ret = -EAGAIN;
-                       /*
-                        * Notify TCP that we're limited by the application
-                        * window size
diff --git a/kernel_patches/fixes/nfsrdma_zz_1600_fix_xprt_transmit_race.patch 
b/kernel_patches/fixes/nfsrdma_zz_1600_fix_xprt_transmit_race.patch
deleted file mode 100644
index de97d2b..0000000
--- a/kernel_patches/fixes/nfsrdma_zz_1600_fix_xprt_transmit_race.patch
+++ /dev/null
@@ -1,49 +0,0 @@
-rpcrdma: Fix rq_list race in xprt_transmit
-
-From: Tom Tucker <[email protected]>
-
-Move the spin lock to protect rq_received and rq_list when electing
-to transmit a new request. This function races with the reply
-handler as part of the retransmit path.
-
-Absent this change, the request can be added back to the list as a reply is
-being processed.
-
-Signed-off-by: Tom Tucker <[email protected]>
----
-
- net/sunrpc/xprt.c |    8 +++++---
- 1 files changed, 5 insertions(+), 3 deletions(-)
-
-
-diff --git a/net/sunrpc/xprt.c b/net/sunrpc/xprt.c
-index 06ca058..a5150e8 100644
---- a/net/sunrpc/xprt.c
-+++ b/net/sunrpc/xprt.c
-@@ -872,21 +872,23 @@ void xprt_transmit(struct rpc_task *task)
- 
-       dprintk("RPC: %5u xprt_transmit(%u)\n", task->tk_pid, req->rq_slen);
- 
-+      spin_lock_bh(&xprt->transport_lock);
-       if (!req->rq_received) {
-               if (list_empty(&req->rq_list)) {
--                      spin_lock_bh(&xprt->transport_lock);
-                       /* Update the softirq receive buffer */
-                       memcpy(&req->rq_private_buf, &req->rq_rcv_buf,
-                                       sizeof(req->rq_private_buf));
-                       /* Add request to the receive list */
-                       list_add_tail(&req->rq_list, &xprt->recv);
--                      spin_unlock_bh(&xprt->transport_lock);
-                       xprt_reset_majortimeo(req);
-                       /* Turn off autodisconnect */
-                       del_singleshot_timer_sync(&xprt->timer);
-               }
--      } else if (!req->rq_bytes_sent)
-+              spin_unlock_bh(&xprt->transport_lock);
-+      } else if (!req->rq_bytes_sent) {
-+              spin_unlock_bh(&xprt->transport_lock);
-               return;
-+      }
- 
-       req->rq_connect_cookie = xprt->connect_cookie;
-       req->rq_xtime = jiffies;
diff --git a/kernel_patches/fixes/nfsrdma_zz_1900_remove_bad_put.patch 
b/kernel_patches/fixes/nfsrdma_zz_1900_remove_bad_put.patch
deleted file mode 100644
index ea0e184..0000000
--- a/kernel_patches/fixes/nfsrdma_zz_1900_remove_bad_put.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-sunrpc: remove unnecessary svc_xprt_put
-
-From: Neil Brown <[email protected]>
-
-commit ab1b18f70a007ea6caeb007d269abb75b131a410 upstream.
-
-The 'struct svc_deferred_req's on the xpt_deferred queue do not
-own a reference to the owning xprt.  This is seen in svc_revisit
-which is where things are added to this queue.  dr->xprt is set to
-NULL and the reference to the xprt it put.
-
-So when this list is cleaned up in svc_delete_xprt, we mustn't
-put the reference.
-
-Also, replace the 'for' with a 'while' which is arguably
-simpler and more likely to compile efficiently.
-
-Signed-off-by: NeilBrown <[email protected]>
-Signed-off-by: J. Bruce Fields <[email protected]>
-Signed-off-by: Greg Kroah-Hartman <[email protected]>
----
-
- net/sunrpc/svc_xprt.c |    5 +----
- 1 files changed, 1 insertions(+), 4 deletions(-)
-
-
-diff --git a/net/sunrpc/svc_xprt.c b/net/sunrpc/svc_xprt.c
-index c200d92..b99558f 100644
---- a/net/sunrpc/svc_xprt.c
-+++ b/net/sunrpc/svc_xprt.c
-@@ -894,11 +894,8 @@ void svc_delete_xprt(struct svc_xprt *xprt)
-       if (test_bit(XPT_TEMP, &xprt->xpt_flags))
-               serv->sv_tmpcnt--;
- 
--      for (dr = svc_deferred_dequeue(xprt); dr;
--           dr = svc_deferred_dequeue(xprt)) {
--              svc_xprt_put(xprt);
-+      while ((dr = svc_deferred_dequeue(xprt)) != NULL)
-               kfree(dr);
--      }
- 
-       svc_xprt_put(xprt);
-       spin_unlock_bh(&serv->sv_lock);
-- 
1.7.3.4

_______________________________________________
ewg mailing list
[email protected]
http://lists.openfabrics.org/cgi-bin/mailman/listinfo/ewg

Reply via email to