Lines Matching refs:ent

29 	struct fuse_ring_ent *ent;  member
40 pdu->ent = ring_ent; in uring_cmd_set_ring_ent()
48 return pdu->ent; in uring_cmd_to_ring_ent()
79 static void fuse_uring_req_end(struct fuse_ring_ent *ent, struct fuse_req *req, in fuse_uring_req_end() argument
82 struct fuse_ring_queue *queue = ent->queue; in fuse_uring_req_end()
88 ent->fuse_req = NULL; in fuse_uring_req_end()
147 struct fuse_ring_ent *ent; in ent_list_request_expired() local
150 ent = list_first_entry_or_null(list, struct fuse_ring_ent, list); in ent_list_request_expired()
151 if (!ent) in ent_list_request_expired()
154 req = ent->fuse_req; in ent_list_request_expired()
198 struct fuse_ring_ent *ent, *next; in fuse_uring_destruct() local
208 list_for_each_entry_safe(ent, next, &queue->ent_released, in fuse_uring_destruct()
210 list_del_init(&ent->list); in fuse_uring_destruct()
211 kfree(ent); in fuse_uring_destruct()
328 static void fuse_uring_entry_teardown(struct fuse_ring_ent *ent) in fuse_uring_entry_teardown() argument
333 struct fuse_ring_queue *queue = ent->queue; in fuse_uring_entry_teardown()
336 cmd = ent->cmd; in fuse_uring_entry_teardown()
337 ent->cmd = NULL; in fuse_uring_entry_teardown()
338 req = ent->fuse_req; in fuse_uring_entry_teardown()
339 ent->fuse_req = NULL; in fuse_uring_entry_teardown()
351 list_move(&ent->list, &queue->ent_released); in fuse_uring_entry_teardown()
352 ent->state = FRRS_RELEASED; in fuse_uring_entry_teardown()
367 struct fuse_ring_ent *ent, *next; in fuse_uring_stop_list_entries() local
372 list_for_each_entry_safe(ent, next, head, list) { in fuse_uring_stop_list_entries()
373 if (ent->state != exp_state) { in fuse_uring_stop_list_entries()
375 queue->qid, ent->state, exp_state); in fuse_uring_stop_list_entries()
379 ent->state = FRRS_TEARDOWN; in fuse_uring_stop_list_entries()
380 list_move(&ent->list, &to_teardown); in fuse_uring_stop_list_entries()
385 list_for_each_entry_safe(ent, next, &to_teardown, list) { in fuse_uring_stop_list_entries()
386 fuse_uring_entry_teardown(ent); in fuse_uring_stop_list_entries()
406 struct fuse_ring_ent *ent; in fuse_uring_log_ent_state() local
419 list_for_each_entry(ent, &queue->ent_w_req_queue, list) { in fuse_uring_log_ent_state()
421 ring, qid, ent, ent->state); in fuse_uring_log_ent_state()
423 list_for_each_entry(ent, &queue->ent_commit_queue, list) { in fuse_uring_log_ent_state()
425 ring, qid, ent, ent->state); in fuse_uring_log_ent_state()
503 struct fuse_ring_ent *ent = uring_cmd_to_ring_ent(cmd); in fuse_uring_cancel() local
511 queue = ent->queue; in fuse_uring_cancel()
513 if (ent->state == FRRS_AVAILABLE) { in fuse_uring_cancel()
514 ent->state = FRRS_USERSPACE; in fuse_uring_cancel()
515 list_move_tail(&ent->list, &queue->ent_in_userspace); in fuse_uring_cancel()
517 ent->cmd = NULL; in fuse_uring_cancel()
580 struct fuse_ring_ent *ent) in fuse_uring_copy_from_ring() argument
588 err = copy_from_user(&ring_in_out, &ent->headers->ring_ent_in_out, in fuse_uring_copy_from_ring()
593 err = import_ubuf(ITER_SOURCE, ent->payload, ring->max_payload_sz, in fuse_uring_copy_from_ring()
611 struct fuse_ring_ent *ent) in fuse_uring_args_to_ring() argument
624 err = import_ubuf(ITER_DEST, ent->payload, ring->max_payload_sz, &iter); in fuse_uring_args_to_ring()
640 err = copy_to_user(&ent->headers->op_in, in_args->value, in fuse_uring_args_to_ring()
662 err = copy_to_user(&ent->headers->ring_ent_in_out, &ent_in_out, in fuse_uring_args_to_ring()
667 static int fuse_uring_copy_to_ring(struct fuse_ring_ent *ent, in fuse_uring_copy_to_ring() argument
670 struct fuse_ring_queue *queue = ent->queue; in fuse_uring_copy_to_ring()
675 if (WARN_ON(ent->state != FRRS_FUSE_REQ)) { in fuse_uring_copy_to_ring()
677 queue->qid, ent, ent->state); in fuse_uring_copy_to_ring()
686 err = fuse_uring_args_to_ring(ring, req, ent); in fuse_uring_copy_to_ring()
693 err = copy_to_user(&ent->headers->in_out, &req->in.h, in fuse_uring_copy_to_ring()
703 static int fuse_uring_prepare_send(struct fuse_ring_ent *ent, in fuse_uring_prepare_send() argument
708 err = fuse_uring_copy_to_ring(ent, req); in fuse_uring_prepare_send()
712 fuse_uring_req_end(ent, req, err); in fuse_uring_prepare_send()
722 static int fuse_uring_send_next_to_ring(struct fuse_ring_ent *ent, in fuse_uring_send_next_to_ring() argument
726 struct fuse_ring_queue *queue = ent->queue; in fuse_uring_send_next_to_ring()
730 err = fuse_uring_prepare_send(ent, req); in fuse_uring_send_next_to_ring()
735 cmd = ent->cmd; in fuse_uring_send_next_to_ring()
736 ent->cmd = NULL; in fuse_uring_send_next_to_ring()
737 ent->state = FRRS_USERSPACE; in fuse_uring_send_next_to_ring()
738 list_move_tail(&ent->list, &queue->ent_in_userspace); in fuse_uring_send_next_to_ring()
748 static void fuse_uring_ent_avail(struct fuse_ring_ent *ent, in fuse_uring_ent_avail() argument
751 WARN_ON_ONCE(!ent->cmd); in fuse_uring_ent_avail()
752 list_move(&ent->list, &queue->ent_avail_queue); in fuse_uring_ent_avail()
753 ent->state = FRRS_AVAILABLE; in fuse_uring_ent_avail()
757 static void fuse_uring_add_to_pq(struct fuse_ring_ent *ent, in fuse_uring_add_to_pq() argument
760 struct fuse_ring_queue *queue = ent->queue; in fuse_uring_add_to_pq()
764 req->ring_entry = ent; in fuse_uring_add_to_pq()
772 static void fuse_uring_add_req_to_ring_ent(struct fuse_ring_ent *ent, in fuse_uring_add_req_to_ring_ent() argument
775 struct fuse_ring_queue *queue = ent->queue; in fuse_uring_add_req_to_ring_ent()
779 if (WARN_ON_ONCE(ent->state != FRRS_AVAILABLE && in fuse_uring_add_req_to_ring_ent()
780 ent->state != FRRS_COMMIT)) { in fuse_uring_add_req_to_ring_ent()
781 pr_warn("%s qid=%d state=%d\n", __func__, ent->queue->qid, in fuse_uring_add_req_to_ring_ent()
782 ent->state); in fuse_uring_add_req_to_ring_ent()
786 ent->fuse_req = req; in fuse_uring_add_req_to_ring_ent()
787 ent->state = FRRS_FUSE_REQ; in fuse_uring_add_req_to_ring_ent()
788 list_move_tail(&ent->list, &queue->ent_w_req_queue); in fuse_uring_add_req_to_ring_ent()
789 fuse_uring_add_to_pq(ent, req); in fuse_uring_add_req_to_ring_ent()
793 static struct fuse_req *fuse_uring_ent_assign_req(struct fuse_ring_ent *ent) in fuse_uring_ent_assign_req() argument
797 struct fuse_ring_queue *queue = ent->queue; in fuse_uring_ent_assign_req()
805 fuse_uring_add_req_to_ring_ent(ent, req); in fuse_uring_ent_assign_req()
815 static void fuse_uring_commit(struct fuse_ring_ent *ent, struct fuse_req *req, in fuse_uring_commit() argument
818 struct fuse_ring *ring = ent->queue->ring; in fuse_uring_commit()
822 err = copy_from_user(&req->out.h, &ent->headers->in_out, in fuse_uring_commit()
835 err = fuse_uring_copy_from_ring(ring, req, ent); in fuse_uring_commit()
837 fuse_uring_req_end(ent, req, err); in fuse_uring_commit()
843 static void fuse_uring_next_fuse_req(struct fuse_ring_ent *ent, in fuse_uring_next_fuse_req() argument
852 fuse_uring_ent_avail(ent, queue); in fuse_uring_next_fuse_req()
853 req = fuse_uring_ent_assign_req(ent); in fuse_uring_next_fuse_req()
857 err = fuse_uring_send_next_to_ring(ent, req, issue_flags); in fuse_uring_next_fuse_req()
863 static int fuse_ring_ent_set_commit(struct fuse_ring_ent *ent) in fuse_ring_ent_set_commit() argument
865 struct fuse_ring_queue *queue = ent->queue; in fuse_ring_ent_set_commit()
869 if (WARN_ON_ONCE(ent->state != FRRS_USERSPACE)) in fuse_ring_ent_set_commit()
872 ent->state = FRRS_COMMIT; in fuse_ring_ent_set_commit()
873 list_move(&ent->list, &queue->ent_commit_queue); in fuse_ring_ent_set_commit()
883 struct fuse_ring_ent *ent; in fuse_uring_commit_fetch() local
922 ent = req->ring_entry; in fuse_uring_commit_fetch()
925 err = fuse_ring_ent_set_commit(ent); in fuse_uring_commit_fetch()
928 queue->qid, commit_id, ent->state); in fuse_uring_commit_fetch()
936 ent->cmd = cmd; in fuse_uring_commit_fetch()
940 fuse_uring_prepare_cancel(cmd, issue_flags, ent); in fuse_uring_commit_fetch()
941 fuse_uring_commit(ent, req, issue_flags); in fuse_uring_commit_fetch()
949 fuse_uring_next_fuse_req(ent, queue, issue_flags); in fuse_uring_commit_fetch()
981 static void fuse_uring_do_register(struct fuse_ring_ent *ent, in fuse_uring_do_register() argument
985 struct fuse_ring_queue *queue = ent->queue; in fuse_uring_do_register()
990 fuse_uring_prepare_cancel(cmd, issue_flags, ent); in fuse_uring_do_register()
993 ent->cmd = cmd; in fuse_uring_do_register()
994 fuse_uring_ent_avail(ent, queue); in fuse_uring_do_register()
1039 struct fuse_ring_ent *ent; in fuse_uring_create_ring_ent() local
1065 ent = kzalloc(sizeof(*ent), GFP_KERNEL_ACCOUNT); in fuse_uring_create_ring_ent()
1066 if (!ent) in fuse_uring_create_ring_ent()
1069 INIT_LIST_HEAD(&ent->list); in fuse_uring_create_ring_ent()
1071 ent->queue = queue; in fuse_uring_create_ring_ent()
1072 ent->headers = iov[0].iov_base; in fuse_uring_create_ring_ent()
1073 ent->payload = iov[1].iov_base; in fuse_uring_create_ring_ent()
1076 return ent; in fuse_uring_create_ring_ent()
1089 struct fuse_ring_ent *ent; in fuse_uring_register() local
1117 ent = fuse_uring_create_ring_ent(cmd, queue); in fuse_uring_register()
1118 if (IS_ERR(ent)) in fuse_uring_register()
1119 return PTR_ERR(ent); in fuse_uring_register()
1121 fuse_uring_do_register(ent, cmd, issue_flags); in fuse_uring_register()
1197 static void fuse_uring_send(struct fuse_ring_ent *ent, struct io_uring_cmd *cmd, in fuse_uring_send() argument
1200 struct fuse_ring_queue *queue = ent->queue; in fuse_uring_send()
1203 ent->state = FRRS_USERSPACE; in fuse_uring_send()
1204 list_move_tail(&ent->list, &queue->ent_in_userspace); in fuse_uring_send()
1205 ent->cmd = NULL; in fuse_uring_send()
1220 struct fuse_ring_ent *ent = uring_cmd_to_ring_ent(cmd); in fuse_uring_send_in_task() local
1221 struct fuse_ring_queue *queue = ent->queue; in fuse_uring_send_in_task()
1225 err = fuse_uring_prepare_send(ent, ent->fuse_req); in fuse_uring_send_in_task()
1227 fuse_uring_next_fuse_req(ent, queue, issue_flags); in fuse_uring_send_in_task()
1234 fuse_uring_send(ent, cmd, err, issue_flags); in fuse_uring_send_in_task()
1255 static void fuse_uring_dispatch_ent(struct fuse_ring_ent *ent) in fuse_uring_dispatch_ent() argument
1257 struct io_uring_cmd *cmd = ent->cmd; in fuse_uring_dispatch_ent()
1259 uring_cmd_set_ring_ent(cmd, ent); in fuse_uring_dispatch_ent()
1269 struct fuse_ring_ent *ent = NULL; in fuse_uring_queue_fuse_req() local
1286 ent = list_first_entry_or_null(&queue->ent_avail_queue, in fuse_uring_queue_fuse_req()
1288 if (ent) in fuse_uring_queue_fuse_req()
1289 fuse_uring_add_req_to_ring_ent(ent, req); in fuse_uring_queue_fuse_req()
1294 if (ent) in fuse_uring_queue_fuse_req()
1295 fuse_uring_dispatch_ent(ent); in fuse_uring_queue_fuse_req()
1312 struct fuse_ring_ent *ent = NULL; in fuse_uring_queue_bq_req() local
1328 ent = list_first_entry_or_null(&queue->ent_avail_queue, in fuse_uring_queue_bq_req()
1344 if (ent && req) { in fuse_uring_queue_bq_req()
1345 fuse_uring_add_req_to_ring_ent(ent, req); in fuse_uring_queue_bq_req()
1348 fuse_uring_dispatch_ent(ent); in fuse_uring_queue_bq_req()