]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
remove sunrpc patch
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 28 Sep 2012 21:05:55 +0000 (14:05 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 28 Sep 2012 21:05:55 +0000 (14:05 -0700)
queue-3.4/sunrpc-fix-a-udp-transport-regression.patch
queue-3.5/sunrpc-fix-a-udp-transport-regression.patch
are removed.

queue-3.4/series
queue-3.4/sunrpc-fix-a-udp-transport-regression.patch [deleted file]
queue-3.5/series
queue-3.5/sunrpc-fix-a-udp-transport-regression.patch [deleted file]

index 523cf77b5d292e479ee09e990065238704f794f7..c85ffe4c242cf896501cd0d5c0da2f398836c6c9 100644 (file)
@@ -67,7 +67,6 @@ ahci-add-alternate-identifier-for-the-88se9172.patch
 kobject-fix-oops-with-input0-bad-kobj_uevent_env-content-in-show_uevent.patch
 redefine-atomic_init-and-atomic64_init-to-drop-the-casts.patch
 digsig-add-hash-size-comparision-on-signature-verification.patch
-sunrpc-fix-a-udp-transport-regression.patch
 md-don-t-truncate-size-at-4tb-for-raid0-and-linear.patch
 md-make-sure-metadata-is-updated-when-spares-are-activated-or-removed.patch
 md-raid5-fix-calculate-of-degraded-when-a-replacement-becomes-active.patch
diff --git a/queue-3.4/sunrpc-fix-a-udp-transport-regression.patch b/queue-3.4/sunrpc-fix-a-udp-transport-regression.patch
deleted file mode 100644 (file)
index e6ba96b..0000000
+++ /dev/null
@@ -1,155 +0,0 @@
-From f39c1bfb5a03e2d255451bff05be0d7255298fa4 Mon Sep 17 00:00:00 2001
-From: Trond Myklebust <Trond.Myklebust@netapp.com>
-Date: Fri, 7 Sep 2012 11:08:50 -0400
-Subject: SUNRPC: Fix a UDP transport regression
-
-From: Trond Myklebust <Trond.Myklebust@netapp.com>
-
-commit f39c1bfb5a03e2d255451bff05be0d7255298fa4 upstream.
-
-Commit 43cedbf0e8dfb9c5610eb7985d5f21263e313802 (SUNRPC: Ensure that
-we grab the XPRT_LOCK before calling xprt_alloc_slot) is causing
-hangs in the case of NFS over UDP mounts.
-
-Since neither the UDP or the RDMA transport mechanism use dynamic slot
-allocation, we can skip grabbing the socket lock for those transports.
-Add a new rpc_xprt_op to allow switching between the TCP and UDP/RDMA
-case.
-
-Note that the NFSv4.1 back channel assigns the slot directly
-through rpc_run_bc_task, so we can ignore that case.
-
-Reported-by: Dick Streefland <dick.streefland@altium.nl>
-Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-
----
- include/linux/sunrpc/xprt.h     |    3 +++
- net/sunrpc/xprt.c               |   34 ++++++++++++++++++++--------------
- net/sunrpc/xprtrdma/transport.c |    1 +
- net/sunrpc/xprtsock.c           |    3 +++
- 4 files changed, 27 insertions(+), 14 deletions(-)
-
---- a/include/linux/sunrpc/xprt.h
-+++ b/include/linux/sunrpc/xprt.h
-@@ -114,6 +114,7 @@ struct rpc_xprt_ops {
-       void            (*set_buffer_size)(struct rpc_xprt *xprt, size_t sndsize, size_t rcvsize);
-       int             (*reserve_xprt)(struct rpc_xprt *xprt, struct rpc_task *task);
-       void            (*release_xprt)(struct rpc_xprt *xprt, struct rpc_task *task);
-+      void            (*alloc_slot)(struct rpc_xprt *xprt, struct rpc_task *task);
-       void            (*rpcbind)(struct rpc_task *task);
-       void            (*set_port)(struct rpc_xprt *xprt, unsigned short port);
-       void            (*connect)(struct rpc_task *task);
-@@ -279,6 +280,8 @@ void                       xprt_connect(struct rpc_task *tas
- void                  xprt_reserve(struct rpc_task *task);
- int                   xprt_reserve_xprt(struct rpc_xprt *xprt, struct rpc_task *task);
- int                   xprt_reserve_xprt_cong(struct rpc_xprt *xprt, struct rpc_task *task);
-+void                  xprt_alloc_slot(struct rpc_xprt *xprt, struct rpc_task *task);
-+void                  xprt_lock_and_alloc_slot(struct rpc_xprt *xprt, struct rpc_task *task);
- int                   xprt_prepare_transmit(struct rpc_task *task);
- void                  xprt_transmit(struct rpc_task *task);
- void                  xprt_end_transmit(struct rpc_task *task);
---- a/net/sunrpc/xprt.c
-+++ b/net/sunrpc/xprt.c
-@@ -969,11 +969,11 @@ static bool xprt_dynamic_free_slot(struc
-       return false;
- }
--static void xprt_alloc_slot(struct rpc_task *task)
-+void xprt_alloc_slot(struct rpc_xprt *xprt, struct rpc_task *task)
- {
--      struct rpc_xprt *xprt = task->tk_xprt;
-       struct rpc_rqst *req;
-+      spin_lock(&xprt->reserve_lock);
-       if (!list_empty(&xprt->free)) {
-               req = list_entry(xprt->free.next, struct rpc_rqst, rq_list);
-               list_del(&req->rq_list);
-@@ -994,12 +994,29 @@ static void xprt_alloc_slot(struct rpc_t
-       default:
-               task->tk_status = -EAGAIN;
-       }
-+      spin_unlock(&xprt->reserve_lock);
-       return;
- out_init_req:
-       task->tk_status = 0;
-       task->tk_rqstp = req;
-       xprt_request_init(task, xprt);
-+      spin_unlock(&xprt->reserve_lock);
-+}
-+EXPORT_SYMBOL_GPL(xprt_alloc_slot);
-+
-+void xprt_lock_and_alloc_slot(struct rpc_xprt *xprt, struct rpc_task *task)
-+{
-+      /* Note: grabbing the xprt_lock_write() ensures that we throttle
-+       * new slot allocation if the transport is congested (i.e. when
-+       * reconnecting a stream transport or when out of socket write
-+       * buffer space).
-+       */
-+      if (xprt_lock_write(xprt, task)) {
-+              xprt_alloc_slot(xprt, task);
-+              xprt_release_write(xprt, task);
-+      }
- }
-+EXPORT_SYMBOL_GPL(xprt_lock_and_alloc_slot);
- static void xprt_free_slot(struct rpc_xprt *xprt, struct rpc_rqst *req)
- {
-@@ -1083,20 +1100,9 @@ void xprt_reserve(struct rpc_task *task)
-       if (task->tk_rqstp != NULL)
-               return;
--      /* Note: grabbing the xprt_lock_write() here is not strictly needed,
--       * but ensures that we throttle new slot allocation if the transport
--       * is congested (e.g. if reconnecting or if we're out of socket
--       * write buffer space).
--       */
-       task->tk_timeout = 0;
-       task->tk_status = -EAGAIN;
--      if (!xprt_lock_write(xprt, task))
--              return;
--
--      spin_lock(&xprt->reserve_lock);
--      xprt_alloc_slot(task);
--      spin_unlock(&xprt->reserve_lock);
--      xprt_release_write(xprt, task);
-+      xprt->ops->alloc_slot(xprt, task);
- }
- static inline __be32 xprt_alloc_xid(struct rpc_xprt *xprt)
---- a/net/sunrpc/xprtrdma/transport.c
-+++ b/net/sunrpc/xprtrdma/transport.c
-@@ -713,6 +713,7 @@ static void xprt_rdma_print_stats(struct
- static struct rpc_xprt_ops xprt_rdma_procs = {
-       .reserve_xprt           = xprt_rdma_reserve_xprt,
-       .release_xprt           = xprt_release_xprt_cong, /* sunrpc/xprt.c */
-+      .alloc_slot             = xprt_alloc_slot,
-       .release_request        = xprt_release_rqst_cong,       /* ditto */
-       .set_retrans_timeout    = xprt_set_retrans_timeout_def, /* ditto */
-       .rpcbind                = rpcb_getport_async,   /* sunrpc/rpcb_clnt.c */
---- a/net/sunrpc/xprtsock.c
-+++ b/net/sunrpc/xprtsock.c
-@@ -2433,6 +2433,7 @@ static void bc_destroy(struct rpc_xprt *
- static struct rpc_xprt_ops xs_local_ops = {
-       .reserve_xprt           = xprt_reserve_xprt,
-       .release_xprt           = xs_tcp_release_xprt,
-+      .alloc_slot             = xprt_alloc_slot,
-       .rpcbind                = xs_local_rpcbind,
-       .set_port               = xs_local_set_port,
-       .connect                = xs_connect,
-@@ -2449,6 +2450,7 @@ static struct rpc_xprt_ops xs_udp_ops =
-       .set_buffer_size        = xs_udp_set_buffer_size,
-       .reserve_xprt           = xprt_reserve_xprt_cong,
-       .release_xprt           = xprt_release_xprt_cong,
-+      .alloc_slot             = xprt_alloc_slot,
-       .rpcbind                = rpcb_getport_async,
-       .set_port               = xs_set_port,
-       .connect                = xs_connect,
-@@ -2466,6 +2468,7 @@ static struct rpc_xprt_ops xs_udp_ops =
- static struct rpc_xprt_ops xs_tcp_ops = {
-       .reserve_xprt           = xprt_reserve_xprt,
-       .release_xprt           = xs_tcp_release_xprt,
-+      .alloc_slot             = xprt_lock_and_alloc_slot,
-       .rpcbind                = rpcb_getport_async,
-       .set_port               = xs_set_port,
-       .connect                = xs_connect,
index 0500021f02773733d2cb42c8f6b9871176627e87..5196bb72a6c3cfa6c72f7f918234b052019d92b7 100644 (file)
@@ -86,7 +86,6 @@ kobject-fix-oops-with-input0-bad-kobj_uevent_env-content-in-show_uevent.patch
 dyndbg-fix-for-soh-in-logging-messages.patch
 redefine-atomic_init-and-atomic64_init-to-drop-the-casts.patch
 digsig-add-hash-size-comparision-on-signature-verification.patch
-sunrpc-fix-a-udp-transport-regression.patch
 md-don-t-truncate-size-at-4tb-for-raid0-and-linear.patch
 md-raid10-fix-problem-with-on-stack-allocation-of-r10bio-structure.patch
 md-make-sure-metadata-is-updated-when-spares-are-activated-or-removed.patch
diff --git a/queue-3.5/sunrpc-fix-a-udp-transport-regression.patch b/queue-3.5/sunrpc-fix-a-udp-transport-regression.patch
deleted file mode 100644 (file)
index e6ba96b..0000000
+++ /dev/null
@@ -1,155 +0,0 @@
-From f39c1bfb5a03e2d255451bff05be0d7255298fa4 Mon Sep 17 00:00:00 2001
-From: Trond Myklebust <Trond.Myklebust@netapp.com>
-Date: Fri, 7 Sep 2012 11:08:50 -0400
-Subject: SUNRPC: Fix a UDP transport regression
-
-From: Trond Myklebust <Trond.Myklebust@netapp.com>
-
-commit f39c1bfb5a03e2d255451bff05be0d7255298fa4 upstream.
-
-Commit 43cedbf0e8dfb9c5610eb7985d5f21263e313802 (SUNRPC: Ensure that
-we grab the XPRT_LOCK before calling xprt_alloc_slot) is causing
-hangs in the case of NFS over UDP mounts.
-
-Since neither the UDP or the RDMA transport mechanism use dynamic slot
-allocation, we can skip grabbing the socket lock for those transports.
-Add a new rpc_xprt_op to allow switching between the TCP and UDP/RDMA
-case.
-
-Note that the NFSv4.1 back channel assigns the slot directly
-through rpc_run_bc_task, so we can ignore that case.
-
-Reported-by: Dick Streefland <dick.streefland@altium.nl>
-Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-
----
- include/linux/sunrpc/xprt.h     |    3 +++
- net/sunrpc/xprt.c               |   34 ++++++++++++++++++++--------------
- net/sunrpc/xprtrdma/transport.c |    1 +
- net/sunrpc/xprtsock.c           |    3 +++
- 4 files changed, 27 insertions(+), 14 deletions(-)
-
---- a/include/linux/sunrpc/xprt.h
-+++ b/include/linux/sunrpc/xprt.h
-@@ -114,6 +114,7 @@ struct rpc_xprt_ops {
-       void            (*set_buffer_size)(struct rpc_xprt *xprt, size_t sndsize, size_t rcvsize);
-       int             (*reserve_xprt)(struct rpc_xprt *xprt, struct rpc_task *task);
-       void            (*release_xprt)(struct rpc_xprt *xprt, struct rpc_task *task);
-+      void            (*alloc_slot)(struct rpc_xprt *xprt, struct rpc_task *task);
-       void            (*rpcbind)(struct rpc_task *task);
-       void            (*set_port)(struct rpc_xprt *xprt, unsigned short port);
-       void            (*connect)(struct rpc_task *task);
-@@ -279,6 +280,8 @@ void                       xprt_connect(struct rpc_task *tas
- void                  xprt_reserve(struct rpc_task *task);
- int                   xprt_reserve_xprt(struct rpc_xprt *xprt, struct rpc_task *task);
- int                   xprt_reserve_xprt_cong(struct rpc_xprt *xprt, struct rpc_task *task);
-+void                  xprt_alloc_slot(struct rpc_xprt *xprt, struct rpc_task *task);
-+void                  xprt_lock_and_alloc_slot(struct rpc_xprt *xprt, struct rpc_task *task);
- int                   xprt_prepare_transmit(struct rpc_task *task);
- void                  xprt_transmit(struct rpc_task *task);
- void                  xprt_end_transmit(struct rpc_task *task);
---- a/net/sunrpc/xprt.c
-+++ b/net/sunrpc/xprt.c
-@@ -969,11 +969,11 @@ static bool xprt_dynamic_free_slot(struc
-       return false;
- }
--static void xprt_alloc_slot(struct rpc_task *task)
-+void xprt_alloc_slot(struct rpc_xprt *xprt, struct rpc_task *task)
- {
--      struct rpc_xprt *xprt = task->tk_xprt;
-       struct rpc_rqst *req;
-+      spin_lock(&xprt->reserve_lock);
-       if (!list_empty(&xprt->free)) {
-               req = list_entry(xprt->free.next, struct rpc_rqst, rq_list);
-               list_del(&req->rq_list);
-@@ -994,12 +994,29 @@ static void xprt_alloc_slot(struct rpc_t
-       default:
-               task->tk_status = -EAGAIN;
-       }
-+      spin_unlock(&xprt->reserve_lock);
-       return;
- out_init_req:
-       task->tk_status = 0;
-       task->tk_rqstp = req;
-       xprt_request_init(task, xprt);
-+      spin_unlock(&xprt->reserve_lock);
-+}
-+EXPORT_SYMBOL_GPL(xprt_alloc_slot);
-+
-+void xprt_lock_and_alloc_slot(struct rpc_xprt *xprt, struct rpc_task *task)
-+{
-+      /* Note: grabbing the xprt_lock_write() ensures that we throttle
-+       * new slot allocation if the transport is congested (i.e. when
-+       * reconnecting a stream transport or when out of socket write
-+       * buffer space).
-+       */
-+      if (xprt_lock_write(xprt, task)) {
-+              xprt_alloc_slot(xprt, task);
-+              xprt_release_write(xprt, task);
-+      }
- }
-+EXPORT_SYMBOL_GPL(xprt_lock_and_alloc_slot);
- static void xprt_free_slot(struct rpc_xprt *xprt, struct rpc_rqst *req)
- {
-@@ -1083,20 +1100,9 @@ void xprt_reserve(struct rpc_task *task)
-       if (task->tk_rqstp != NULL)
-               return;
--      /* Note: grabbing the xprt_lock_write() here is not strictly needed,
--       * but ensures that we throttle new slot allocation if the transport
--       * is congested (e.g. if reconnecting or if we're out of socket
--       * write buffer space).
--       */
-       task->tk_timeout = 0;
-       task->tk_status = -EAGAIN;
--      if (!xprt_lock_write(xprt, task))
--              return;
--
--      spin_lock(&xprt->reserve_lock);
--      xprt_alloc_slot(task);
--      spin_unlock(&xprt->reserve_lock);
--      xprt_release_write(xprt, task);
-+      xprt->ops->alloc_slot(xprt, task);
- }
- static inline __be32 xprt_alloc_xid(struct rpc_xprt *xprt)
---- a/net/sunrpc/xprtrdma/transport.c
-+++ b/net/sunrpc/xprtrdma/transport.c
-@@ -713,6 +713,7 @@ static void xprt_rdma_print_stats(struct
- static struct rpc_xprt_ops xprt_rdma_procs = {
-       .reserve_xprt           = xprt_rdma_reserve_xprt,
-       .release_xprt           = xprt_release_xprt_cong, /* sunrpc/xprt.c */
-+      .alloc_slot             = xprt_alloc_slot,
-       .release_request        = xprt_release_rqst_cong,       /* ditto */
-       .set_retrans_timeout    = xprt_set_retrans_timeout_def, /* ditto */
-       .rpcbind                = rpcb_getport_async,   /* sunrpc/rpcb_clnt.c */
---- a/net/sunrpc/xprtsock.c
-+++ b/net/sunrpc/xprtsock.c
-@@ -2433,6 +2433,7 @@ static void bc_destroy(struct rpc_xprt *
- static struct rpc_xprt_ops xs_local_ops = {
-       .reserve_xprt           = xprt_reserve_xprt,
-       .release_xprt           = xs_tcp_release_xprt,
-+      .alloc_slot             = xprt_alloc_slot,
-       .rpcbind                = xs_local_rpcbind,
-       .set_port               = xs_local_set_port,
-       .connect                = xs_connect,
-@@ -2449,6 +2450,7 @@ static struct rpc_xprt_ops xs_udp_ops =
-       .set_buffer_size        = xs_udp_set_buffer_size,
-       .reserve_xprt           = xprt_reserve_xprt_cong,
-       .release_xprt           = xprt_release_xprt_cong,
-+      .alloc_slot             = xprt_alloc_slot,
-       .rpcbind                = rpcb_getport_async,
-       .set_port               = xs_set_port,
-       .connect                = xs_connect,
-@@ -2466,6 +2468,7 @@ static struct rpc_xprt_ops xs_udp_ops =
- static struct rpc_xprt_ops xs_tcp_ops = {
-       .reserve_xprt           = xprt_reserve_xprt,
-       .release_xprt           = xs_tcp_release_xprt,
-+      .alloc_slot             = xprt_lock_and_alloc_slot,
-       .rpcbind                = rpcb_getport_async,
-       .set_port               = xs_set_port,
-       .connect                = xs_connect,