Lines Matching refs:req
67 struct fuse_req *req; in fuse_uring_flush_bg() local
69 req = list_first_entry(&queue->fuse_req_bg_queue, in fuse_uring_flush_bg()
74 list_move_tail(&req->list, &queue->fuse_req_queue); in fuse_uring_flush_bg()
78 static void fuse_uring_req_end(struct fuse_ring_ent *ent, struct fuse_req *req, in fuse_uring_req_end() argument
88 if (test_bit(FR_BACKGROUND, &req->flags)) { in fuse_uring_req_end()
98 req->out.h.error = error; in fuse_uring_req_end()
100 clear_bit(FR_SENT, &req->flags); in fuse_uring_req_end()
101 fuse_request_end(req); in fuse_uring_req_end()
107 struct fuse_req *req; in fuse_uring_abort_end_queue_requests() local
111 list_for_each_entry(req, &queue->fuse_req_queue, list) in fuse_uring_abort_end_queue_requests()
112 clear_bit(FR_PENDING, &req->flags); in fuse_uring_abort_end_queue_requests()
146 struct fuse_req *req; in ent_list_request_expired() local
152 req = ent->fuse_req; in ent_list_request_expired()
154 return time_is_before_jiffies(req->create_time + in ent_list_request_expired()
316 static void fuse_uring_stop_fuse_req_end(struct fuse_req *req) in fuse_uring_stop_fuse_req_end() argument
318 clear_bit(FR_SENT, &req->flags); in fuse_uring_stop_fuse_req_end()
319 req->out.h.error = -ECONNABORTED; in fuse_uring_stop_fuse_req_end()
320 fuse_request_end(req); in fuse_uring_stop_fuse_req_end()
328 struct fuse_req *req; in fuse_uring_entry_teardown() local
336 req = ent->fuse_req; in fuse_uring_entry_teardown()
338 if (req) { in fuse_uring_entry_teardown()
340 list_del_init(&req->list); in fuse_uring_entry_teardown()
356 if (req) in fuse_uring_entry_teardown()
357 fuse_uring_stop_fuse_req_end(req); in fuse_uring_entry_teardown()
536 struct fuse_req *req, in fuse_uring_out_header_has_err() argument
557 if ((oh->unique & ~FUSE_INT_REQ_BIT) != req->in.h.unique) { in fuse_uring_out_header_has_err()
559 req->in.h.unique, in fuse_uring_out_header_has_err()
577 struct fuse_req *req, in fuse_uring_copy_from_ring() argument
581 struct fuse_args *args = req->args; in fuse_uring_copy_from_ring()
598 cs.req = req; in fuse_uring_copy_from_ring()
606 static int fuse_uring_args_to_ring(struct fuse_ring *ring, struct fuse_req *req, in fuse_uring_args_to_ring() argument
610 struct fuse_args *args = req->args; in fuse_uring_args_to_ring()
617 .commit_id = req->in.h.unique, in fuse_uring_args_to_ring()
628 cs.req = req; in fuse_uring_args_to_ring()
663 struct fuse_req *req) in fuse_uring_copy_to_ring() argument
677 if (WARN_ON(req->in.h.unique == 0)) in fuse_uring_copy_to_ring()
681 err = fuse_uring_args_to_ring(ring, req, ent); in fuse_uring_copy_to_ring()
688 err = copy_to_user(&ent->headers->in_out, &req->in.h, in fuse_uring_copy_to_ring()
689 sizeof(req->in.h)); in fuse_uring_copy_to_ring()
699 struct fuse_req *req) in fuse_uring_prepare_send() argument
703 err = fuse_uring_copy_to_ring(ent, req); in fuse_uring_prepare_send()
705 set_bit(FR_SENT, &req->flags); in fuse_uring_prepare_send()
707 fuse_uring_req_end(ent, req, err); in fuse_uring_prepare_send()
718 struct fuse_req *req, in fuse_uring_send_next_to_ring() argument
725 err = fuse_uring_prepare_send(ent, req); in fuse_uring_send_next_to_ring()
753 struct fuse_req *req) in fuse_uring_add_to_pq() argument
759 req->ring_entry = ent; in fuse_uring_add_to_pq()
760 hash = fuse_req_hash(req->in.h.unique); in fuse_uring_add_to_pq()
761 list_move_tail(&req->list, &fpq->processing[hash]); in fuse_uring_add_to_pq()
768 struct fuse_req *req) in fuse_uring_add_req_to_ring_ent() argument
780 clear_bit(FR_PENDING, &req->flags); in fuse_uring_add_req_to_ring_ent()
781 ent->fuse_req = req; in fuse_uring_add_req_to_ring_ent()
784 fuse_uring_add_to_pq(ent, req); in fuse_uring_add_req_to_ring_ent()
791 struct fuse_req *req; in fuse_uring_ent_assign_req() local
798 req = list_first_entry_or_null(req_queue, struct fuse_req, list); in fuse_uring_ent_assign_req()
799 if (req) in fuse_uring_ent_assign_req()
800 fuse_uring_add_req_to_ring_ent(ent, req); in fuse_uring_ent_assign_req()
802 return req; in fuse_uring_ent_assign_req()
810 static void fuse_uring_commit(struct fuse_ring_ent *ent, struct fuse_req *req, in fuse_uring_commit() argument
817 err = copy_from_user(&req->out.h, &ent->headers->in_out, in fuse_uring_commit()
818 sizeof(req->out.h)); in fuse_uring_commit()
820 req->out.h.error = -EFAULT; in fuse_uring_commit()
824 err = fuse_uring_out_header_has_err(&req->out.h, req, fc); in fuse_uring_commit()
830 err = fuse_uring_copy_from_ring(ring, req, ent); in fuse_uring_commit()
832 fuse_uring_req_end(ent, req, err); in fuse_uring_commit()
843 struct fuse_req *req; in fuse_uring_next_fuse_req() local
848 req = fuse_uring_ent_assign_req(ent); in fuse_uring_next_fuse_req()
851 if (req) { in fuse_uring_next_fuse_req()
852 err = fuse_uring_send_next_to_ring(ent, req, issue_flags); in fuse_uring_next_fuse_req()
885 struct fuse_req *req; in fuse_uring_commit_fetch() local
908 req = fuse_request_find(fpq, commit_id); in fuse_uring_commit_fetch()
910 if (!req) { in fuse_uring_commit_fetch()
916 list_del_init(&req->list); in fuse_uring_commit_fetch()
917 ent = req->ring_entry; in fuse_uring_commit_fetch()
918 req->ring_entry = NULL; in fuse_uring_commit_fetch()
925 req->out.h.error = err; in fuse_uring_commit_fetch()
926 clear_bit(FR_SENT, &req->flags); in fuse_uring_commit_fetch()
927 fuse_request_end(req); in fuse_uring_commit_fetch()
936 fuse_uring_commit(ent, req, issue_flags); in fuse_uring_commit_fetch()
1258 void fuse_uring_queue_fuse_req(struct fuse_iqueue *fiq, struct fuse_req *req) in fuse_uring_queue_fuse_req() argument
1260 struct fuse_conn *fc = req->fm->fc; in fuse_uring_queue_fuse_req()
1271 if (req->in.h.opcode != FUSE_NOTIFY_REPLY) in fuse_uring_queue_fuse_req()
1272 req->in.h.unique = fuse_get_unique(fiq); in fuse_uring_queue_fuse_req()
1279 set_bit(FR_URING, &req->flags); in fuse_uring_queue_fuse_req()
1280 req->ring_queue = queue; in fuse_uring_queue_fuse_req()
1284 fuse_uring_add_req_to_ring_ent(ent, req); in fuse_uring_queue_fuse_req()
1286 list_add_tail(&req->list, &queue->fuse_req_queue); in fuse_uring_queue_fuse_req()
1297 req->out.h.error = err; in fuse_uring_queue_fuse_req()
1298 clear_bit(FR_PENDING, &req->flags); in fuse_uring_queue_fuse_req()
1299 fuse_request_end(req); in fuse_uring_queue_fuse_req()
1302 bool fuse_uring_queue_bq_req(struct fuse_req *req) in fuse_uring_queue_bq_req() argument
1304 struct fuse_conn *fc = req->fm->fc; in fuse_uring_queue_bq_req()
1319 set_bit(FR_URING, &req->flags); in fuse_uring_queue_bq_req()
1320 req->ring_queue = queue; in fuse_uring_queue_bq_req()
1321 list_add_tail(&req->list, &queue->fuse_req_bg_queue); in fuse_uring_queue_bq_req()
1337 req = list_first_entry_or_null(&queue->fuse_req_queue, struct fuse_req, in fuse_uring_queue_bq_req()
1339 if (ent && req) { in fuse_uring_queue_bq_req()
1340 fuse_uring_add_req_to_ring_ent(ent, req); in fuse_uring_queue_bq_req()
1351 bool fuse_uring_remove_pending_req(struct fuse_req *req) in fuse_uring_remove_pending_req() argument
1353 struct fuse_ring_queue *queue = req->ring_queue; in fuse_uring_remove_pending_req()
1355 return fuse_remove_pending_req(req, &queue->lock); in fuse_uring_remove_pending_req()