void *rq_buffer; /* Call XDR encode buffer */
size_t rq_callsize; void *rq_rbuffer; /* Reply XDR decode buffer */
size_t rq_rcvsize;
size_t rq_xmit_bytes_sent; /* total bytes sent */
size_t rq_reply_bytes_recvd; /* total reply bytes */ /* received */
struct xdr_buf rq_private_buf; /* The receive buffer * used in the softirq.
*/ unsignedlong rq_majortimeo; /* major timeout alarm */ unsignedlong rq_minortimeo; /* minor timeout alarm */ unsignedlong rq_timeout; /* Current timeout value */
ktime_t rq_rtt; /* round-trip time */ unsignedint rq_retries; /* # of retries */ unsignedint rq_connect_cookie; /* A cookie used to track the state of the transport
connection */
atomic_t rq_pin;
/* * Partial send handling
*/
u32 rq_bytes_sent; /* Bytes we have sent */
ktime_t rq_xtime; /* transmit time stamp */ int rq_ntrans;
#ifdefined(CONFIG_SUNRPC_BACKCHANNEL) struct lwq_node rq_bc_list; /* Callback service list */ unsignedlong rq_bc_pa_state; /* Backchannel prealloc state */ struct list_head rq_bc_pa_list; /* Backchannel prealloc list */ #endif/* CONFIG_SUNRPC_BACKCHANEL */
}; #define rq_svec rq_snd_buf.head #define rq_slen rq_snd_buf.len
/* Shift array to make room for the newest element at the beginning */
memmove(&req->rq_seqnos[1], &req->rq_seqnos[0],
(RPC_GSS_SEQNO_ARRAY_SIZE - 1) * sizeof(req->rq_seqnos[0]));
req->rq_seqnos[0] = seqno; return 0;
}
/* * RPC transport identifiers * * To preserve compatibility with the historical use of raw IP protocol * id's for transport selection, UDP and TCP identifiers are specified * with the previous values. No such restriction exists for new transports, * except that they may not collide with these values (17 and 6, * respectively).
*/ #define XPRT_TRANSPORT_BC (1 << 31) enum xprt_transports {
XPRT_TRANSPORT_UDP = IPPROTO_UDP,
XPRT_TRANSPORT_TCP = IPPROTO_TCP,
XPRT_TRANSPORT_BC_TCP = IPPROTO_TCP | XPRT_TRANSPORT_BC,
XPRT_TRANSPORT_RDMA = 256,
XPRT_TRANSPORT_BC_RDMA = XPRT_TRANSPORT_RDMA | XPRT_TRANSPORT_BC,
XPRT_TRANSPORT_LOCAL = 257,
XPRT_TRANSPORT_TCP_TLS = 258,
};
struct rpc_sysfs_xprt; struct rpc_xprt { struct kref kref; /* Reference count */ conststruct rpc_xprt_ops *ops; /* transport methods */ unsignedint id; /* transport id */
conststruct rpc_timeout *timeout; /* timeout parms */ struct sockaddr_storage addr; /* server address */
size_t addrlen; /* size of server address */ int prot; /* IP protocol */
size_t max_payload; /* largest RPC payload size,
in bytes */
struct rpc_wait_queue binding; /* requests waiting on rpcbind */ struct rpc_wait_queue sending; /* requests waiting to send */ struct rpc_wait_queue pending; /* requests in flight */ struct rpc_wait_queue backlog; /* waiting for slot */ struct list_head free; /* free slots */ unsignedint max_reqs; /* max number of slots */ unsignedint min_reqs; /* min number of slots */ unsignedint num_reqs; /* total slots */ unsignedlong state; /* transport state */ unsignedchar resvport : 1, /* use a reserved port */
reuseport : 1; /* reuse port on reconnect */
atomic_t swapper; /* we're swapping over this
transport */ unsignedint bind_index; /* bind function index */
/* * Multipath
*/ struct list_head xprt_switch;
/* * Connection of transports
*/ unsignedlong bind_timeout,
reestablish_timeout; struct xprtsec_parms xprtsec; unsignedint connect_cookie; /* A cookie that gets bumped every time the transport
is reconnected */
struct svc_xprt *bc_xprt; /* NFSv4.1 backchannel */ #ifdefined(CONFIG_SUNRPC_BACKCHANNEL) struct svc_serv *bc_serv; /* The RPC service which will */ /* process the callback */ unsignedint bc_alloc_max; unsignedint bc_alloc_count; /* Total number of preallocs */
atomic_t bc_slot_count; /* Number of allocated slots */
spinlock_t bc_pa_lock; /* Protects the preallocated
* items */ struct list_head bc_pa_list; /* List of preallocated
* backchannel rpc_rqst's */ #endif/* CONFIG_SUNRPC_BACKCHANNEL */
struct rb_root recv_queue; /* Receive queue */
struct { unsignedlong bind_count, /* total number of binds */
connect_count, /* total number of connects */
connect_start, /* connect start timestamp */
connect_time, /* jiffies waiting for connect */
sends, /* how many complete requests */
recvs, /* how many complete requests */
bad_xids, /* lookup_rqst didn't find XID */
max_slots; /* max rpc_slots used */
unsignedlonglong req_u, /* average requests on the wire */
bklog_u, /* backlog queue utilization */
sending_u, /* send q utilization */
pending_u; /* pend q utilization */
} stat;
struct net *xprt_net;
netns_tracker ns_tracker; constchar *servername; constchar *address_strings[RPC_DISPLAY_MAX]; #if IS_ENABLED(CONFIG_SUNRPC_DEBUG) struct dentry *debugfs; /* debugfs directory */ #endif struct rcu_head rcu; conststruct xprt_class *xprt_class; struct rpc_sysfs_xprt *xprt_sysfs; bool main; /*mark if this is the 1st transport */
};
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.