• Jennifer Herbert's avatar
    xen/grant-table: add a mechanism to safely unmap pages that are in use · 3f9f1c67
    Jennifer Herbert authored
    Introduce gnttab_unmap_refs_async() that can be used to safely unmap
    pages that may be in use (ref count > 1).  If the pages are in use the
    unmap is deferred and retried later.  This polling is not very clever
    but it should be good enough if the cases where the delay is necessary
    are rare.
    
    The initial delay is 5 ms and is increased linearly on each subsequent
    retry (to reduce load if the page is in use for a long time).
    
    This is needed to allow block backends using grant mapping to safely
    use network storage (block or filesystem based such as iSCSI or NFS).
    
    The network storage driver may complete a block request whilst there
    is a queued network packet retry (because the ack from the remote end
    races with deciding to queue the retry).  The pages for the retried
    packet would be grant unmapped and the network driver (or hardware)
    would access the unmapped page.
    Signed-off-by: default avatarJennifer Herbert <jennifer.herbert@citrix.com>
    Acked-by: default avatarStefano Stabellini <stefano.stabellini@eu.citrix.com>
    Signed-off-by: default avatarDavid Vrabel <david.vrabel@citrix.com>
    3f9f1c67
grant-table.c 28.4 KB