diff options
author | Trond Myklebust <trond.myklebust@hammerspace.com> | 2018-09-07 08:35:22 -0400 |
---|---|---|
committer | Trond Myklebust <trond.myklebust@hammerspace.com> | 2018-09-30 15:35:16 -0400 |
commit | 95f7691daa57bbd68caac2bdad79e0b08f4d46c1 (patch) | |
tree | 869abdba60f556d70cab5a6250bd373aaccfcb7a /include | |
parent | bd79bc579ca5cd35c08ab4f660085b0744bd5cfd (diff) | |
download | linux-stable-95f7691daa57bbd68caac2bdad79e0b08f4d46c1.tar.gz linux-stable-95f7691daa57bbd68caac2bdad79e0b08f4d46c1.tar.bz2 linux-stable-95f7691daa57bbd68caac2bdad79e0b08f4d46c1.zip |
SUNRPC: Convert xprt receive queue to use an rbtree
If the server is slow, we can find ourselves with quite a lot of entries
on the receive queue. Converting the search from an O(n) to O(log(n))
can make a significant difference, particularly since we have to hold
a number of locks while searching.
Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
Diffstat (limited to 'include')
-rw-r--r-- | include/linux/sunrpc/xprt.h | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/include/linux/sunrpc/xprt.h b/include/linux/sunrpc/xprt.h index 823860cce0bc..9be399020dab 100644 --- a/include/linux/sunrpc/xprt.h +++ b/include/linux/sunrpc/xprt.h @@ -85,7 +85,7 @@ struct rpc_rqst { union { struct list_head rq_list; /* Slot allocation list */ - struct list_head rq_recv; /* Receive queue */ + struct rb_node rq_recv; /* Receive queue */ }; struct list_head rq_xmit; /* Send queue */ @@ -260,7 +260,7 @@ struct rpc_xprt { * backchannel rpc_rqst's */ #endif /* CONFIG_SUNRPC_BACKCHANNEL */ - struct list_head recv_queue; /* Receive queue */ + struct rb_root recv_queue; /* Receive queue */ struct { unsigned long bind_count, /* total number of binds */ |