9p: Replace the fidlist with an IDR
The p9_idpool being used to allocate the IDs uses an IDR to allocate the IDs ... which we then keep in a doubly-linked list, rather than in the IDR which allocated them. We can use an IDR directly which saves two pointers per p9_fid, and a tiny memory allocation per p9_client. Link: http://lkml.kernel.org/r/20180711210225.19730-4-willy@infradead.org Signed-off-by: Matthew Wilcox <willy@infradead.org> Cc: Eric Van Hensbergen <ericvh@gmail.com> Cc: Ron Minnich <rminnich@sandia.gov> Cc: Latchesar Ionkov <lucho@ionkov.net> Signed-off-by: Dominique Martinet <dominique.martinet@cea.fr>
This commit is contained in:

committed by
Dominique Martinet

parent
b5303be2be
commit
f28cdf0430
@@ -27,6 +27,7 @@
|
||||
#define NET_9P_CLIENT_H
|
||||
|
||||
#include <linux/utsname.h>
|
||||
#include <linux/idr.h>
|
||||
|
||||
/* Number of requests per row */
|
||||
#define P9_ROW_MAXTAG 255
|
||||
@@ -128,8 +129,7 @@ struct p9_req_t {
|
||||
* @proto_version: 9P protocol version to use
|
||||
* @trans_mod: module API instantiated with this client
|
||||
* @trans: tranport instance state and API
|
||||
* @fidpool: fid handle accounting for session
|
||||
* @fidlist: List of active fid handles
|
||||
* @fids: All active FID handles
|
||||
* @tagpool - transaction id accounting for session
|
||||
* @reqs - 2D array of requests
|
||||
* @max_tag - current maximum tag id allocated
|
||||
@@ -169,8 +169,7 @@ struct p9_client {
|
||||
} tcp;
|
||||
} trans_opts;
|
||||
|
||||
struct p9_idpool *fidpool;
|
||||
struct list_head fidlist;
|
||||
struct idr fids;
|
||||
|
||||
struct p9_idpool *tagpool;
|
||||
struct p9_req_t *reqs[P9_ROW_MAXTAG];
|
||||
@@ -188,7 +187,6 @@ struct p9_client {
|
||||
* @iounit: the server reported maximum transaction size for this file
|
||||
* @uid: the numeric uid of the local user who owns this handle
|
||||
* @rdir: readdir accounting structure (allocated on demand)
|
||||
* @flist: per-client-instance fid tracking
|
||||
* @dlist: per-dentry fid tracking
|
||||
*
|
||||
* TODO: This needs lots of explanation.
|
||||
@@ -204,7 +202,6 @@ struct p9_fid {
|
||||
|
||||
void *rdir;
|
||||
|
||||
struct list_head flist;
|
||||
struct hlist_node dlist; /* list of all fids attached to a dentry */
|
||||
};
|
||||
|
||||
|
Reference in New Issue
Block a user