Lines Matching refs:subreq
96 struct netfs_io_subrequest *subreq;
103 subreq = list_first_entry(&stream->subrequests,
105 list_del(&subreq->rreq_link);
106 netfs_put_subrequest(subreq, netfs_sreq_trace_put_clear);
175 struct netfs_io_subrequest *subreq;
180 subreq = mempool_alloc(rreq->netfs_ops->subrequest_pool ?: &netfs_subrequest_pool,
182 if (subreq)
187 memset(subreq, 0, kmem_cache_size(cache));
188 INIT_WORK(&subreq->work, NULL);
189 INIT_LIST_HEAD(&subreq->rreq_link);
190 refcount_set(&subreq->ref, 2);
191 subreq->rreq = rreq;
192 subreq->debug_index = atomic_inc_return(&rreq->subreq_counter);
195 return subreq;
198 void netfs_get_subrequest(struct netfs_io_subrequest *subreq,
203 __refcount_inc(&subreq->ref, &r);
204 trace_netfs_sreq_ref(subreq->rreq->debug_id, subreq->debug_index, r + 1,
208 static void netfs_free_subrequest(struct netfs_io_subrequest *subreq)
210 struct netfs_io_request *rreq = subreq->rreq;
212 trace_netfs_sreq(subreq, netfs_sreq_trace_free);
214 rreq->netfs_ops->free_subrequest(subreq);
215 mempool_free(subreq, rreq->netfs_ops->subrequest_pool ?: &netfs_subrequest_pool);
220 void netfs_put_subrequest(struct netfs_io_subrequest *subreq,
223 unsigned int debug_index = subreq->debug_index;
224 unsigned int debug_id = subreq->rreq->debug_id;
228 dead = __refcount_dec_and_test(&subreq->ref, &r);
231 netfs_free_subrequest(subreq);