MCPcopy Create free account
hub / github.com/F-Stack/f-stack / swp_pager_xfer_source

Function swp_pager_xfer_source

freebsd/vm/swap_pager.c:992–1017  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

990}
991
992static bool
993swp_pager_xfer_source(vm_object_t srcobject, vm_object_t dstobject,
994 vm_pindex_t pindex, daddr_t addr)
995{
996 daddr_t dstaddr;
997
998 KASSERT(srcobject->type == OBJT_SWAP,
999 ("%s: Srcobject not swappable", __func__));
1000 if (dstobject->type == OBJT_SWAP &&
1001 swp_pager_meta_lookup(dstobject, pindex) != SWAPBLK_NONE) {
1002 /* Caller should destroy the source block. */
1003 return (false);
1004 }
1005
1006 /*
1007 * Destination has no swapblk and is not resident, transfer source.
1008 * swp_pager_meta_build() can sleep.
1009 */
1010 VM_OBJECT_WUNLOCK(srcobject);
1011 dstaddr = swp_pager_meta_build(dstobject, pindex, addr);
1012 KASSERT(dstaddr == SWAPBLK_NONE,
1013 ("Unexpected destination swapblk"));
1014 VM_OBJECT_WLOCK(srcobject);
1015
1016 return (true);
1017}
1018
1019/*
1020 * SWAP_PAGER_COPY() - copy blocks from source pager to destination pager

Callers 1

swp_pager_meta_transferFunction · 0.85

Calls 2

swp_pager_meta_lookupFunction · 0.85
swp_pager_meta_buildFunction · 0.85

Tested by

no test coverage detected