Lines Matching refs:persistent_gnt

195 			       struct persistent_gnt *persistent_gnt)  in add_persistent_gnt()  argument
198 struct persistent_gnt *this; in add_persistent_gnt()
208 this = container_of(*new, struct persistent_gnt, node); in add_persistent_gnt()
211 if (persistent_gnt->gnt < this->gnt) in add_persistent_gnt()
213 else if (persistent_gnt->gnt > this->gnt) in add_persistent_gnt()
221 bitmap_zero(persistent_gnt->flags, PERSISTENT_GNT_FLAGS_SIZE); in add_persistent_gnt()
222 set_bit(PERSISTENT_GNT_ACTIVE, persistent_gnt->flags); in add_persistent_gnt()
224 rb_link_node(&(persistent_gnt->node), parent, new); in add_persistent_gnt()
225 rb_insert_color(&(persistent_gnt->node), &blkif->persistent_gnts); in add_persistent_gnt()
231 static struct persistent_gnt *get_persistent_gnt(struct xen_blkif *blkif, in get_persistent_gnt()
234 struct persistent_gnt *data; in get_persistent_gnt()
239 data = container_of(node, struct persistent_gnt, node); in get_persistent_gnt()
259 struct persistent_gnt *persistent_gnt) in put_persistent_gnt() argument
261 if(!test_bit(PERSISTENT_GNT_ACTIVE, persistent_gnt->flags)) in put_persistent_gnt()
263 set_bit(PERSISTENT_GNT_WAS_ACTIVE, persistent_gnt->flags); in put_persistent_gnt()
264 clear_bit(PERSISTENT_GNT_ACTIVE, persistent_gnt->flags); in put_persistent_gnt()
273 struct persistent_gnt *persistent_gnt; in free_persistent_gnts() local
282 foreach_grant_safe(persistent_gnt, n, root, node) { in free_persistent_gnts()
283 BUG_ON(persistent_gnt->handle == in free_persistent_gnts()
287 persistent_gnt->page)), in free_persistent_gnts()
289 persistent_gnt->handle); in free_persistent_gnts()
291 pages[segs_to_unmap] = persistent_gnt->page; in free_persistent_gnts()
294 !rb_next(&persistent_gnt->node)) { in free_persistent_gnts()
303 rb_erase(&persistent_gnt->node, root); in free_persistent_gnts()
304 kfree(persistent_gnt); in free_persistent_gnts()
314 struct persistent_gnt *persistent_gnt; in xen_blkbk_unmap_purged_grants() local
324 persistent_gnt = list_first_entry(&blkif->persistent_purge_list, in xen_blkbk_unmap_purged_grants()
325 struct persistent_gnt, in xen_blkbk_unmap_purged_grants()
327 list_del(&persistent_gnt->remove_node); in xen_blkbk_unmap_purged_grants()
330 vaddr(persistent_gnt->page), in xen_blkbk_unmap_purged_grants()
332 persistent_gnt->handle); in xen_blkbk_unmap_purged_grants()
334 pages[segs_to_unmap] = persistent_gnt->page; in xen_blkbk_unmap_purged_grants()
342 kfree(persistent_gnt); in xen_blkbk_unmap_purged_grants()
353 struct persistent_gnt *persistent_gnt; in purge_persistent_gnt() local
393 foreach_grant_safe(persistent_gnt, n, root, node) { in purge_persistent_gnt()
394 BUG_ON(persistent_gnt->handle == in purge_persistent_gnt()
398 clear_bit(PERSISTENT_GNT_WAS_ACTIVE, persistent_gnt->flags); in purge_persistent_gnt()
402 if (test_bit(PERSISTENT_GNT_ACTIVE, persistent_gnt->flags)) in purge_persistent_gnt()
405 (test_bit(PERSISTENT_GNT_WAS_ACTIVE, persistent_gnt->flags))) in purge_persistent_gnt()
408 rb_erase(&persistent_gnt->node, root); in purge_persistent_gnt()
409 list_add(&persistent_gnt->remove_node, in purge_persistent_gnt()
678 if (pages[i]->persistent_gnt != NULL) { in xen_blkbk_unmap_prepare()
679 put_persistent_gnt(blkif, pages[i]->persistent_gnt); in xen_blkbk_unmap_prepare()
783 struct persistent_gnt *persistent_gnt = NULL; in xen_blkbk_map() local
803 persistent_gnt = get_persistent_gnt( in xen_blkbk_map()
807 if (persistent_gnt) { in xen_blkbk_map()
812 pages[i]->page = persistent_gnt->page; in xen_blkbk_map()
813 pages[i]->persistent_gnt = persistent_gnt; in xen_blkbk_map()
819 pages[i]->persistent_gnt = NULL; in xen_blkbk_map()
843 if (!pages[seg_idx]->persistent_gnt) { in xen_blkbk_map()
863 persistent_gnt = kmalloc(sizeof(struct persistent_gnt), in xen_blkbk_map()
865 if (!persistent_gnt) { in xen_blkbk_map()
873 persistent_gnt->gnt = map[new_map_idx].ref; in xen_blkbk_map()
874 persistent_gnt->handle = map[new_map_idx].handle; in xen_blkbk_map()
875 persistent_gnt->page = pages[seg_idx]->page; in xen_blkbk_map()
877 persistent_gnt)) { in xen_blkbk_map()
878 kfree(persistent_gnt); in xen_blkbk_map()
879 persistent_gnt = NULL; in xen_blkbk_map()
882 pages[seg_idx]->persistent_gnt = persistent_gnt; in xen_blkbk_map()
884 persistent_gnt->gnt, blkif->persistent_gnt_c, in xen_blkbk_map()