void fuse_put_request(struct fuse_conn *fc, struct fuse_req *req) { if (atomic_dec_and_test(&req->count)) { if (req->waiting) atomic_dec(&fc->num_waiting); if (req->stolen_file) put_reserved_req(fc, req); else fuse_request_free(req); } }
void fuse_put_request(struct fuse_conn *fc, struct fuse_req *req) { if (atomic_dec_and_test(&req->count)) { if (unlikely(req->background)) { /* * We get here in the unlikely case that a background * request was allocated but not sent */ spin_lock(&fc->lock); if (!fc->blocked) wake_up(&fc->blocked_waitq); spin_unlock(&fc->lock); } if (req->waiting) atomic_dec(&fc->num_waiting); if (req->stolen_file) put_reserved_req(fc, req); else fuse_request_free(req); } }