Lines Matching refs:pcache_req
22 static void defer_req(struct pcache_request *pcache_req) in defer_req() argument
24 struct dm_pcache *pcache = pcache_req->pcache; in defer_req()
26 BUG_ON(!list_empty(&pcache_req->list_node)); in defer_req()
29 list_add(&pcache_req->list_node, &pcache->defered_req_list); in defer_req()
37 struct pcache_request *pcache_req; in defered_req_fn() local
49 pcache_req = list_first_entry(&tmp_list, in defered_req_fn()
51 list_del_init(&pcache_req->list_node); in defered_req_fn()
52 pcache_req->ret = 0; in defered_req_fn()
53 ret = pcache_cache_handle_req(&pcache->cache, pcache_req); in defered_req_fn()
55 defer_req(pcache_req); in defered_req_fn()
57 pcache_req_put(pcache_req, ret); in defered_req_fn()
61 void pcache_req_get(struct pcache_request *pcache_req) in pcache_req_get() argument
63 kref_get(&pcache_req->ref); in pcache_req_get()
68 struct pcache_request *pcache_req = container_of(ref, struct pcache_request, ref); in end_req() local
69 struct dm_pcache *pcache = pcache_req->pcache; in end_req()
70 struct bio *bio = pcache_req->bio; in end_req()
71 int ret = pcache_req->ret; in end_req()
74 pcache_req_get(pcache_req); in end_req()
75 defer_req(pcache_req); in end_req()
85 void pcache_req_put(struct pcache_request *pcache_req, int ret) in pcache_req_put() argument
88 if (ret && !pcache_req->ret) in pcache_req_put()
89 pcache_req->ret = ret; in pcache_req_put()
91 kref_put(&pcache_req->ref, end_req); in pcache_req_put()
329 struct pcache_request *pcache_req; in defer_req_stop() local
339 pcache_req = list_first_entry(&tmp_list, in defer_req_stop()
341 list_del_init(&pcache_req->list_node); in defer_req_stop()
342 pcache_req_put(pcache_req, -EIO); in defer_req_stop()
370 struct pcache_request *pcache_req = dm_per_bio_data(bio, sizeof(struct pcache_request)); in dm_pcache_map_bio() local
374 pcache_req->pcache = pcache; in dm_pcache_map_bio()
375 kref_init(&pcache_req->ref); in dm_pcache_map_bio()
376 pcache_req->ret = 0; in dm_pcache_map_bio()
377 pcache_req->bio = bio; in dm_pcache_map_bio()
378 pcache_req->off = (u64)bio->bi_iter.bi_sector << SECTOR_SHIFT; in dm_pcache_map_bio()
379 pcache_req->data_len = bio->bi_iter.bi_size; in dm_pcache_map_bio()
380 INIT_LIST_HEAD(&pcache_req->list_node); in dm_pcache_map_bio()
383 ret = pcache_cache_handle_req(&pcache->cache, pcache_req); in dm_pcache_map_bio()
385 defer_req(pcache_req); in dm_pcache_map_bio()
387 pcache_req_put(pcache_req, ret); in dm_pcache_map_bio()