• Alex Elder's avatar
    rbd: set removing flag while holding list lock · c4d00f5b
    Alex Elder authored
    commit 751cc0e3 upstream.
    
    When unmapping a device, its id is supplied, and that is used to
    look up which rbd device should be unmapped.  Looking up the
    device involves searching the rbd device list while holding
    a spinlock that protects access to that list.
    
    Currently all of this is done under protection of the control lock,
    but that protection is going away soon.  To ensure the rbd_dev is
    still valid (still on the list) while setting its REMOVING flag, do
    so while still holding the list lock.  To do so, get rid of
    __rbd_get_dev(), and open code what it did in the one place it
    was used.
    Signed-off-by: default avatarAlex Elder <elder@inktank.com>
    Reviewed-by: default avatarJosh Durgin <josh.durgin@inktank.com>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    c4d00f5b
rbd.c 135 KB