/* * This describes a timeout strategy
*/ struct rpc_timeout { unsignedlong to_initval, /* initial timeout */
to_maxval, /* max timeout */
to_increment; /* if !exponential */ unsignedint to_retries; /* max # of retries */ unsignedchar to_exponential;
};
/* * This is the RPC task struct
*/ struct rpc_task {
atomic_t tk_count; /* Reference count */ int tk_status; /* result of last operation */ struct list_head tk_task; /* global list of tasks */
/* * callback to be executed after waking up * action next procedure for async tasks
*/ void (*tk_callback)(struct rpc_task *); void (*tk_action)(struct rpc_task *);
unsignedlong tk_timeout; /* timeout for rpc_sleep() */ unsignedlong tk_runstate; /* Task run status */
struct rpc_wait_queue *tk_waitqueue; /* RPC wait queue we're on */ union { struct work_struct tk_work; /* Async task work queue */ struct rpc_wait tk_wait; /* RPC wait */
} u;
/* * RPC call state
*/ struct rpc_message tk_msg; /* RPC call info */ void * tk_calldata; /* Caller private data */ conststruct rpc_call_ops *tk_ops; /* Caller callbacks */
struct rpc_clnt * tk_client; /* RPC client */ struct rpc_xprt * tk_xprt; /* Transport */ struct rpc_cred * tk_op_cred; /* cred being operated on */
struct rpc_rqst * tk_rqstp; /* RPC request */
struct workqueue_struct *tk_workqueue; /* Normally rpciod, but could * be any workqueue
*/
ktime_t tk_start; /* RPC task init timestamp */
pid_t tk_owner; /* Process id for batching tasks */
int tk_rpc_status; /* Result of last RPC operation */ unsignedshort tk_flags; /* misc flags */ unsignedshort tk_timeouts; /* maj timeouts */
/* * RPC synchronization objects
*/ struct rpc_wait_queue {
spinlock_t lock; struct list_head tasks[RPC_NR_PRIORITY]; /* task queue for each priority level */ unsignedchar maxpriority; /* maximum priority (0 if queue is not a priority queue) */ unsignedchar priority; /* current priority */ unsignedchar nr; /* # tasks remaining for cookie */ unsignedint qlen; /* total # tasks waiting in queue */ struct rpc_timer timer_list; #if IS_ENABLED(CONFIG_SUNRPC_DEBUG) || IS_ENABLED(CONFIG_TRACEPOINTS) constchar * name; #endif
};
/* * This is the # requests to send consecutively * from a single cookie. The aim is to improve * performance of NFS operations such as read/write.
*/ #define RPC_IS_PRIORITY(q) ((q)->maxpriority > 0)
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.