Lines Matching refs:gnt_list_entry
305 struct grant *gnt_list_entry, *n; in fill_grant_buffer() local
309 gnt_list_entry = kzalloc(sizeof(struct grant), GFP_NOIO); in fill_grant_buffer()
310 if (!gnt_list_entry) in fill_grant_buffer()
316 kfree(gnt_list_entry); in fill_grant_buffer()
319 gnt_list_entry->page = granted_page; in fill_grant_buffer()
322 gnt_list_entry->gref = GRANT_INVALID_REF; in fill_grant_buffer()
323 list_add(&gnt_list_entry->node, &rinfo->grants); in fill_grant_buffer()
330 list_for_each_entry_safe(gnt_list_entry, n, in fill_grant_buffer()
332 list_del(&gnt_list_entry->node); in fill_grant_buffer()
334 __free_page(gnt_list_entry->page); in fill_grant_buffer()
335 kfree(gnt_list_entry); in fill_grant_buffer()
344 struct grant *gnt_list_entry; in get_free_grant() local
347 gnt_list_entry = list_first_entry(&rinfo->grants, struct grant, in get_free_grant()
349 list_del(&gnt_list_entry->node); in get_free_grant()
351 if (gnt_list_entry->gref != GRANT_INVALID_REF) in get_free_grant()
354 return gnt_list_entry; in get_free_grant()
357 static inline void grant_foreign_access(const struct grant *gnt_list_entry, in grant_foreign_access() argument
360 gnttab_page_grant_foreign_access_ref_one(gnt_list_entry->gref, in grant_foreign_access()
362 gnt_list_entry->page, in grant_foreign_access()
370 struct grant *gnt_list_entry = get_free_grant(rinfo); in get_grant() local
373 if (gnt_list_entry->gref != GRANT_INVALID_REF) in get_grant()
374 return gnt_list_entry; in get_grant()
377 gnt_list_entry->gref = gnttab_claim_grant_reference(gref_head); in get_grant()
378 BUG_ON(gnt_list_entry->gref == -ENOSPC); in get_grant()
380 grant_foreign_access(gnt_list_entry, info); in get_grant()
383 gnttab_grant_foreign_access_ref(gnt_list_entry->gref, in get_grant()
388 return gnt_list_entry; in get_grant()
394 struct grant *gnt_list_entry = get_free_grant(rinfo); in get_indirect_grant() local
397 if (gnt_list_entry->gref != GRANT_INVALID_REF) in get_indirect_grant()
398 return gnt_list_entry; in get_indirect_grant()
401 gnt_list_entry->gref = gnttab_claim_grant_reference(gref_head); in get_indirect_grant()
402 BUG_ON(gnt_list_entry->gref == -ENOSPC); in get_indirect_grant()
411 gnt_list_entry->page = indirect_page; in get_indirect_grant()
413 grant_foreign_access(gnt_list_entry, info); in get_indirect_grant()
415 return gnt_list_entry; in get_indirect_grant()
590 struct grant *gnt_list_entry; in blkif_setup_rw_req_grant() local
620 gnt_list_entry = get_indirect_grant(&setup->gref_head, rinfo); in blkif_setup_rw_req_grant()
621 shadow->indirect_grants[n] = gnt_list_entry; in blkif_setup_rw_req_grant()
622 setup->segments = kmap_atomic(gnt_list_entry->page); in blkif_setup_rw_req_grant()
623 ring_req->u.indirect.indirect_grefs[n] = gnt_list_entry->gref; in blkif_setup_rw_req_grant()
626 gnt_list_entry = get_grant(&setup->gref_head, gfn, rinfo); in blkif_setup_rw_req_grant()
627 ref = gnt_list_entry->gref; in blkif_setup_rw_req_grant()
632 shadow->grants_used[setup->grant_idx] = gnt_list_entry; in blkif_setup_rw_req_grant()
637 shared_data = kmap_atomic(gnt_list_entry->page); in blkif_setup_rw_req_grant()
2511 struct grant *gnt_list_entry, *tmp; in purge_persistent_grants() local
2520 list_for_each_entry_safe(gnt_list_entry, tmp, &rinfo->grants, in purge_persistent_grants()
2522 if (gnt_list_entry->gref == GRANT_INVALID_REF || in purge_persistent_grants()
2523 gnttab_query_foreign_access(gnt_list_entry->gref)) in purge_persistent_grants()
2526 list_del(&gnt_list_entry->node); in purge_persistent_grants()
2527 gnttab_end_foreign_access(gnt_list_entry->gref, 0, 0UL); in purge_persistent_grants()
2529 gnt_list_entry->gref = GRANT_INVALID_REF; in purge_persistent_grants()
2530 list_add_tail(&gnt_list_entry->node, &rinfo->grants); in purge_persistent_grants()