/* The ring entry received from userspace and it is being processed */
FRRS_COMMIT,
/* The ring entry is waiting for new fuse requests */
FRRS_AVAILABLE,
/* The ring entry got assigned a fuse req */
FRRS_FUSE_REQ,
/* The ring entry is in or on the way to user space */
FRRS_USERSPACE,
/* The ring entry is in teardown */
FRRS_TEARDOWN,
/* The ring entry is released, but not freed yet */
FRRS_RELEASED,
};
/** A fuse ring entry, part of the ring queue */ struct fuse_ring_ent { /* userspace buffer */ struct fuse_uring_req_header __user *headers; void __user *payload;
/* the ring queue that owns the request */ struct fuse_ring_queue *queue;
/* fields below are protected by queue->lock */
struct io_uring_cmd *cmd;
struct list_head list;
enum fuse_ring_req_state state;
struct fuse_req *fuse_req;
};
struct fuse_ring_queue { /* * back pointer to the main fuse uring structure that holds this * queue
*/ struct fuse_ring *ring;
/* queue id, corresponds to the cpu core */ unsignedint qid;
/* * queue lock, taken when any value in the queue changes _and_ also * a ring entry state changes.
*/
spinlock_t lock;
/* available ring entries (struct fuse_ring_ent) */ struct list_head ent_avail_queue;
/* * entries in the process of being committed or in the process * to be sent to userspace
*/ struct list_head ent_w_req_queue; struct list_head ent_commit_queue;
/* entries in userspace */ struct list_head ent_in_userspace;
/* entries that are released */ struct list_head ent_released;
/* fuse requests waiting for an entry slot */ struct list_head fuse_req_queue;
/** * Describes if uring is for communication and holds alls the data needed * for uring communication
*/ struct fuse_ring { /* back pointer */ struct fuse_conn *fc;
/* number of ring queues */
size_t nr_queues;
/* maximum payload/arg size */
size_t max_payload_sz;
struct fuse_ring_queue **queues;
/* * Log ring entry states on stop when entries cannot be released
*/ unsignedint stop_debug_log : 1;
wait_queue_head_t stop_waitq;
/* async tear down */ struct delayed_work async_teardown_work;
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.