Lines Matching full:fc

54 	struct fuse_conn *fc = ring->fc;  in fuse_uring_flush_bg()  local
57 lockdep_assert_held(&fc->bg_lock); in fuse_uring_flush_bg()
60 * Allow one bg request per queue, ignoring global fc limits. in fuse_uring_flush_bg()
65 while ((fc->active_background < fc->max_background || in fuse_uring_flush_bg()
72 fc->active_background++; in fuse_uring_flush_bg()
84 struct fuse_conn *fc = ring->fc; in fuse_uring_req_end() local
91 spin_lock(&fc->bg_lock); in fuse_uring_req_end()
93 spin_unlock(&fc->bg_lock); in fuse_uring_req_end()
125 struct fuse_conn *fc = ring->fc; in fuse_uring_abort_end_requests() local
134 WARN_ON_ONCE(ring->fc->max_background != UINT_MAX); in fuse_uring_abort_end_requests()
136 spin_lock(&fc->bg_lock); in fuse_uring_abort_end_requests()
138 spin_unlock(&fc->bg_lock); in fuse_uring_abort_end_requests()
144 static bool ent_list_request_expired(struct fuse_conn *fc, struct list_head *list) in ent_list_request_expired() argument
156 fc->timeout.req_timeout); in ent_list_request_expired()
159 bool fuse_uring_request_expired(struct fuse_conn *fc) in fuse_uring_request_expired() argument
161 struct fuse_ring *ring = fc->ring; in fuse_uring_request_expired()
174 if (fuse_request_expired(fc, &queue->fuse_req_queue) || in fuse_uring_request_expired()
175 fuse_request_expired(fc, &queue->fuse_req_bg_queue) || in fuse_uring_request_expired()
176 ent_list_request_expired(fc, &queue->ent_w_req_queue) || in fuse_uring_request_expired()
177 ent_list_request_expired(fc, &queue->ent_in_userspace)) { in fuse_uring_request_expired()
187 void fuse_uring_destruct(struct fuse_conn *fc) in fuse_uring_destruct() argument
189 struct fuse_ring *ring = fc->ring; in fuse_uring_destruct()
220 fc->ring = NULL; in fuse_uring_destruct()
226 static struct fuse_ring *fuse_uring_create(struct fuse_conn *fc) in fuse_uring_create() argument
233 ring = kzalloc(sizeof(*fc->ring), GFP_KERNEL_ACCOUNT); in fuse_uring_create()
242 max_payload_size = max(FUSE_MIN_READ_BUFFER, fc->max_write); in fuse_uring_create()
243 max_payload_size = max(max_payload_size, fc->max_pages * PAGE_SIZE); in fuse_uring_create()
245 spin_lock(&fc->lock); in fuse_uring_create()
246 if (fc->ring) { in fuse_uring_create()
248 spin_unlock(&fc->lock); in fuse_uring_create()
249 res = fc->ring; in fuse_uring_create()
256 ring->fc = fc; in fuse_uring_create()
258 smp_store_release(&fc->ring, ring); in fuse_uring_create()
260 spin_unlock(&fc->lock); in fuse_uring_create()
272 struct fuse_conn *fc = ring->fc; in fuse_uring_create_queue() local
300 spin_lock(&fc->lock); in fuse_uring_create_queue()
302 spin_unlock(&fc->lock); in fuse_uring_create_queue()
312 spin_unlock(&fc->lock); in fuse_uring_create_queue()
538 struct fuse_conn *fc) in fuse_uring_out_header_has_err() argument
815 struct fuse_conn *fc = ring->fc; in fuse_uring_commit() local
825 err = fuse_uring_out_header_has_err(&req->out.h, req, fc); in fuse_uring_commit()
876 struct fuse_conn *fc) in fuse_uring_commit_fetch() argument
881 struct fuse_ring *ring = fc->ring; in fuse_uring_commit_fetch()
900 if (!READ_ONCE(fc->connected) || READ_ONCE(queue->stopped)) in fuse_uring_commit_fetch()
983 struct fuse_conn *fc = ring->fc; in fuse_uring_do_register() local
984 struct fuse_iqueue *fiq = &fc->iq; in fuse_uring_do_register()
999 wake_up_all(&fc->blocked_waitq); in fuse_uring_do_register()
1080 unsigned int issue_flags, struct fuse_conn *fc) in fuse_uring_register() argument
1083 struct fuse_ring *ring = smp_load_acquire(&fc->ring); in fuse_uring_register()
1091 ring = fuse_uring_create(fc); in fuse_uring_register()
1129 struct fuse_conn *fc; in fuse_uring_cmd() local
1147 fc = fud->fc; in fuse_uring_cmd()
1150 if (!enable_uring && !fc->io_uring) { in fuse_uring_cmd()
1155 if (fc->aborted) in fuse_uring_cmd()
1157 if (!fc->connected) in fuse_uring_cmd()
1164 if (!fc->initialized) in fuse_uring_cmd()
1169 err = fuse_uring_register(cmd, issue_flags, fc); in fuse_uring_cmd()
1173 fc->io_uring = 0; in fuse_uring_cmd()
1174 wake_up_all(&fc->blocked_waitq); in fuse_uring_cmd()
1179 err = fuse_uring_commit_fetch(cmd, issue_flags, fc); in fuse_uring_cmd()
1261 struct fuse_conn *fc = req->fm->fc; in fuse_uring_queue_fuse_req() local
1262 struct fuse_ring *ring = fc->ring; in fuse_uring_queue_fuse_req()
1304 struct fuse_conn *fc = req->fm->fc; in fuse_uring_queue_bq_req() local
1305 struct fuse_ring *ring = fc->ring; in fuse_uring_queue_bq_req()
1325 spin_lock(&fc->bg_lock); in fuse_uring_queue_bq_req()
1326 fc->num_background++; in fuse_uring_queue_bq_req()
1327 if (fc->num_background == fc->max_background) in fuse_uring_queue_bq_req()
1328 fc->blocked = 1; in fuse_uring_queue_bq_req()
1330 spin_unlock(&fc->bg_lock); in fuse_uring_queue_bq_req()