• Nathan Huckleberry's avatar
    dm bufio: Add DM_BUFIO_CLIENT_NO_SLEEP flag · b32d4582
    Nathan Huckleberry authored
    
    
    Add an optional flag that ensures dm_bufio_client does not sleep
    (primary focus is to service dm_bufio_get without sleeping). This
    allows the dm-bufio cache to be queried from interrupt context.
    
    To ensure that dm-bufio does not sleep, dm-bufio must use a spinlock
    instead of a mutex. Additionally, to avoid deadlocks, special care
    must be taken so that dm-bufio does not sleep while holding the
    spinlock.
    
    But again: the scope of this no_sleep is initially confined to
    dm_bufio_get, so __alloc_buffer_wait_no_callback is _not_ changed to
    avoid sleeping because __bufio_new avoids allocation for NF_GET.
    Signed-off-by: default avatarNathan Huckleberry <nhuck@google.com>
    Signed-off-by: default avatarMike Snitzer <snitzer@kernel.org>
    b32d4582
dm-bufio.c 51.4 KB