Lines Matching defs:fiq

195 u64 fuse_get_unique(struct fuse_iqueue *fiq)
197 fiq->reqctr += FUSE_REQ_ID_STEP;
198 return fiq->reqctr;
208 * A new request is available, wake fiq->waitq
210 static void fuse_dev_wake_and_unlock(struct fuse_iqueue *fiq)
211 __releases(fiq->lock)
213 wake_up(&fiq->waitq);
214 kill_fasync(&fiq->fasync, SIGIO, POLL_IN);
215 spin_unlock(&fiq->lock);
225 static void queue_request_and_unlock(struct fuse_iqueue *fiq,
227 __releases(fiq->lock)
232 list_add_tail(&req->list, &fiq->pending);
233 fiq->ops->wake_pending_and_unlock(fiq);
239 struct fuse_iqueue *fiq = &fc->iq;
244 spin_lock(&fiq->lock);
245 if (fiq->connected) {
246 fiq->forget_list_tail->next = forget;
247 fiq->forget_list_tail = forget;
248 fiq->ops->wake_forget_and_unlock(fiq);
251 spin_unlock(&fiq->lock);
257 struct fuse_iqueue *fiq = &fc->iq;
266 spin_lock(&fiq->lock);
267 req->in.h.unique = fuse_get_unique(fiq);
268 queue_request_and_unlock(fiq, req);
284 struct fuse_iqueue *fiq = &fc->iq;
295 spin_lock(&fiq->lock);
297 spin_unlock(&fiq->lock);
336 struct fuse_iqueue *fiq = &req->fm->fc->iq;
338 spin_lock(&fiq->lock);
341 spin_unlock(&fiq->lock);
346 list_add_tail(&req->intr_entry, &fiq->interrupts);
354 spin_unlock(&fiq->lock);
357 fiq->ops->wake_interrupt_and_unlock(fiq);
359 spin_unlock(&fiq->lock);
367 struct fuse_iqueue *fiq = &fc->iq;
391 spin_lock(&fiq->lock);
395 spin_unlock(&fiq->lock);
400 spin_unlock(&fiq->lock);
412 struct fuse_iqueue *fiq = &req->fm->fc->iq;
415 spin_lock(&fiq->lock);
416 if (!fiq->connected) {
417 spin_unlock(&fiq->lock);
420 req->in.h.unique = fuse_get_unique(fiq);
424 queue_request_and_unlock(fiq, req);
583 struct fuse_iqueue *fiq = &fm->fc->iq;
595 spin_lock(&fiq->lock);
596 if (fiq->connected) {
597 queue_request_and_unlock(fiq, req);
600 spin_unlock(&fiq->lock);
1030 static int forget_pending(struct fuse_iqueue *fiq)
1032 return fiq->forget_list_head.next != NULL;
1035 static int request_pending(struct fuse_iqueue *fiq)
1037 return !list_empty(&fiq->pending) || !list_empty(&fiq->interrupts) ||
1038 forget_pending(fiq);
1047 * Called with fiq->lock held, releases it
1049 static int fuse_read_interrupt(struct fuse_iqueue *fiq,
1052 __releases(fiq->lock)
1067 spin_unlock(&fiq->lock);
1079 struct fuse_forget_link *fuse_dequeue_forget(struct fuse_iqueue *fiq,
1083 struct fuse_forget_link *head = fiq->forget_list_head.next;
1090 fiq->forget_list_head.next = *newhead;
1092 if (fiq->forget_list_head.next == NULL)
1093 fiq->forget_list_tail = &fiq->forget_list_head;
1102 static int fuse_read_single_forget(struct fuse_iqueue *fiq,
1105 __releases(fiq->lock)
1108 struct fuse_forget_link *forget = fuse_dequeue_forget(fiq, 1, NULL);
1115 .unique = fuse_get_unique(fiq),
1119 spin_unlock(&fiq->lock);
1135 static int fuse_read_batch_forget(struct fuse_iqueue *fiq,
1137 __releases(fiq->lock)
1146 .unique = fuse_get_unique(fiq),
1151 spin_unlock(&fiq->lock);
1156 head = fuse_dequeue_forget(fiq, max_forgets, &count);
1157 spin_unlock(&fiq->lock);
1184 static int fuse_read_forget(struct fuse_conn *fc, struct fuse_iqueue *fiq,
1187 __releases(fiq->lock)
1189 if (fc->minor < 16 || fiq->forget_list_head.next->next == NULL)
1190 return fuse_read_single_forget(fiq, cs, nbytes);
1192 return fuse_read_batch_forget(fiq, cs, nbytes);
1209 struct fuse_iqueue *fiq = &fc->iq;
1236 spin_lock(&fiq->lock);
1237 if (!fiq->connected || request_pending(fiq))
1239 spin_unlock(&fiq->lock);
1243 err = wait_event_interruptible_exclusive(fiq->waitq,
1244 !fiq->connected || request_pending(fiq));
1249 if (!fiq->connected) {
1254 if (!list_empty(&fiq->interrupts)) {
1255 req = list_entry(fiq->interrupts.next, struct fuse_req,
1257 return fuse_read_interrupt(fiq, cs, nbytes, req);
1260 if (forget_pending(fiq)) {
1261 if (list_empty(&fiq->pending) || fiq->forget_batch-- > 0)
1262 return fuse_read_forget(fc, fiq, cs, nbytes);
1264 if (fiq->forget_batch <= -8)
1265 fiq->forget_batch = 16;
1268 req = list_entry(fiq->pending.next, struct fuse_req, list);
1271 spin_unlock(&fiq->lock);
1338 spin_unlock(&fiq->lock);
1795 struct fuse_iqueue *fiq = &fc->iq;
1821 spin_lock(&fiq->lock);
1823 list_splice(&to_queue, &fiq->pending);
1824 fiq->ops->wake_pending_and_unlock(fiq);
2118 struct fuse_iqueue *fiq;
2124 fiq = &fud->fc->iq;
2125 poll_wait(file, &fiq->waitq, wait);
2127 spin_lock(&fiq->lock);
2128 if (!fiq->connected)
2130 else if (request_pending(fiq))
2132 spin_unlock(&fiq->lock);
2185 struct fuse_iqueue *fiq = &fc->iq;
2227 spin_lock(&fiq->lock);
2228 fiq->connected = 0;
2229 list_for_each_entry(req, &fiq->pending, list)
2231 list_splice_tail_init(&fiq->pending, &to_end);
2232 while (forget_pending(fiq))
2233 kfree(fuse_dequeue_forget(fiq, 1, NULL));
2234 wake_up_all(&fiq->waitq);
2235 spin_unlock(&fiq->lock);
2236 kill_fasync(&fiq->fasync, SIGIO, POLL_IN);