• Jens Axboe's avatar
    mm: add support for async page locking · dd3e6d50
    Jens Axboe authored
    Normally waiting for a page to become unlocked, or locking the page,
    requires waiting for IO to complete. Add support for lock_page_async()
    and wait_on_page_locked_async(), which are callback based instead. This
    allows a caller to get notified when a page becomes unlocked, rather
    than wait for it.
    
    We add a new iocb field, ki_waitq, to pass in the necessary data for this
    to happen. We can unionize this with ki_cookie, since that is only used
    for polled IO. Polled IO can never co-exist with async callbacks, as it is
    (by definition) polled completions. struct wait_page_key is made public,
    and we define struct wait_page_async as the interface between the caller
    and the core.
    Acked-by: default avatarJohannes Weiner <hannes@cmpxchg.org>
    Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
    dd3e6d50
filemap.c 96.9 KB