• Ilya Dryomov's avatar
    rbd: don't assume rbd_is_lock_owner() for exclusive mappings · 3ceccb14
    Ilya Dryomov authored
    Expanding on the previous commit, assuming that rbd_is_lock_owner()
    always returns true (i.e. that we are either in RBD_LOCK_STATE_LOCKED
    or RBD_LOCK_STATE_QUIESCING) if the mapping is exclusive is wrong too.
    In case ceph_cls_set_cookie() fails, the lock would be temporarily
    released even if the mapping is exclusive, meaning that we can end up
    even in RBD_LOCK_STATE_UNLOCKED.
    
    IOW, exclusive mappings are really "just" about disabling automatic
    lock transitions (as documented in the man page), not about grabbing
    the lock and holding on to it whatever it takes.
    
    Cc: stable@vger.kernel.org
    Fixes: 637cd060 ("rbd: new exclusive lock wait/wake code")
    Signed-off-by: default avatarIlya Dryomov <idryomov@gmail.com>
    Reviewed-by: default avatarDongsheng Yang <dongsheng.yang@easystack.cn>
    3ceccb14
rbd.c 187 KB