Lines Matching refs:gnt_list_entry
292 struct grant *gnt_list_entry, *n; in fill_grant_buffer() local
296 gnt_list_entry = kzalloc(sizeof(struct grant), GFP_NOIO); in fill_grant_buffer()
297 if (!gnt_list_entry) in fill_grant_buffer()
303 kfree(gnt_list_entry); in fill_grant_buffer()
306 gnt_list_entry->page = granted_page; in fill_grant_buffer()
309 gnt_list_entry->gref = GRANT_INVALID_REF; in fill_grant_buffer()
310 list_add(&gnt_list_entry->node, &rinfo->grants); in fill_grant_buffer()
317 list_for_each_entry_safe(gnt_list_entry, n, in fill_grant_buffer()
319 list_del(&gnt_list_entry->node); in fill_grant_buffer()
321 __free_page(gnt_list_entry->page); in fill_grant_buffer()
322 kfree(gnt_list_entry); in fill_grant_buffer()
331 struct grant *gnt_list_entry; in get_free_grant() local
334 gnt_list_entry = list_first_entry(&rinfo->grants, struct grant, in get_free_grant()
336 list_del(&gnt_list_entry->node); in get_free_grant()
338 if (gnt_list_entry->gref != GRANT_INVALID_REF) in get_free_grant()
341 return gnt_list_entry; in get_free_grant()
344 static inline void grant_foreign_access(const struct grant *gnt_list_entry, in grant_foreign_access() argument
347 gnttab_page_grant_foreign_access_ref_one(gnt_list_entry->gref, in grant_foreign_access()
349 gnt_list_entry->page, in grant_foreign_access()
357 struct grant *gnt_list_entry = get_free_grant(rinfo); in get_grant() local
360 if (gnt_list_entry->gref != GRANT_INVALID_REF) in get_grant()
361 return gnt_list_entry; in get_grant()
364 gnt_list_entry->gref = gnttab_claim_grant_reference(gref_head); in get_grant()
365 BUG_ON(gnt_list_entry->gref == -ENOSPC); in get_grant()
367 grant_foreign_access(gnt_list_entry, info); in get_grant()
370 gnttab_grant_foreign_access_ref(gnt_list_entry->gref, in get_grant()
375 return gnt_list_entry; in get_grant()
381 struct grant *gnt_list_entry = get_free_grant(rinfo); in get_indirect_grant() local
384 if (gnt_list_entry->gref != GRANT_INVALID_REF) in get_indirect_grant()
385 return gnt_list_entry; in get_indirect_grant()
388 gnt_list_entry->gref = gnttab_claim_grant_reference(gref_head); in get_indirect_grant()
389 BUG_ON(gnt_list_entry->gref == -ENOSPC); in get_indirect_grant()
398 gnt_list_entry->page = indirect_page; in get_indirect_grant()
400 grant_foreign_access(gnt_list_entry, info); in get_indirect_grant()
402 return gnt_list_entry; in get_indirect_grant()
588 struct grant *gnt_list_entry; in blkif_setup_rw_req_grant() local
618 gnt_list_entry = get_indirect_grant(&setup->gref_head, rinfo); in blkif_setup_rw_req_grant()
619 shadow->indirect_grants[n] = gnt_list_entry; in blkif_setup_rw_req_grant()
620 setup->segments = kmap_atomic(gnt_list_entry->page); in blkif_setup_rw_req_grant()
621 ring_req->u.indirect.indirect_grefs[n] = gnt_list_entry->gref; in blkif_setup_rw_req_grant()
624 gnt_list_entry = get_grant(&setup->gref_head, gfn, rinfo); in blkif_setup_rw_req_grant()
625 ref = gnt_list_entry->gref; in blkif_setup_rw_req_grant()
630 shadow->grants_used[setup->grant_idx] = gnt_list_entry; in blkif_setup_rw_req_grant()
635 shared_data = kmap_atomic(gnt_list_entry->page); in blkif_setup_rw_req_grant()
2655 struct grant *gnt_list_entry, *tmp; in purge_persistent_grants() local
2664 list_for_each_entry_safe(gnt_list_entry, tmp, &rinfo->grants, in purge_persistent_grants()
2666 if (gnt_list_entry->gref == GRANT_INVALID_REF || in purge_persistent_grants()
2667 gnttab_query_foreign_access(gnt_list_entry->gref)) in purge_persistent_grants()
2670 list_del(&gnt_list_entry->node); in purge_persistent_grants()
2671 gnttab_end_foreign_access(gnt_list_entry->gref, 0, 0UL); in purge_persistent_grants()
2673 gnt_list_entry->gref = GRANT_INVALID_REF; in purge_persistent_grants()
2674 list_add_tail(&gnt_list_entry->node, &rinfo->grants); in purge_persistent_grants()