SUNRPC: Fix a livelock problem in the xprt->backlog queue
authorTrond Myklebust <Trond.Myklebust@netapp.com>
Sun, 14 Apr 2013 14:49:37 +0000 (10:49 -0400)
committerTrond Myklebust <Trond.Myklebust@netapp.com>
Sun, 14 Apr 2013 16:26:02 +0000 (12:26 -0400)
commitba60eb25ff6be6f8e60488cdfd454e5c612bce60
treeee5ebe0a500e5926cf52af808096d8c56eae8657
parentb570a975ed276335dc7d148658c1f880ac0a507f
SUNRPC: Fix a livelock problem in the xprt->backlog queue

This patch ensures that we throttle new RPC requests if there are
requests already waiting in the xprt->backlog queue. The reason for
doing this is to fix livelock issues that can occur when an existing
(high priority) task is waiting in the backlog queue, gets woken up
by xprt_free_slot(), but a new task then steals the slot.

Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
include/linux/sunrpc/xprt.h
net/sunrpc/clnt.c
net/sunrpc/xprt.c