• Yan, Zheng's avatar
    ceph: fix cap revoke race · b1530f57
    Yan, Zheng authored
    If caps are been revoking by the auth MDS, don't consider them as
    issued even they are still issued by non-auth MDS. The non-auth
    MDS should also be revoking/exporting these caps, the client just
    hasn't received the cap revoke/export message.
    
    The race I encountered is: When caps are exporting to new MDS, the
    client receives cap import message and cap revoke message from the
    new MDS, then receives cap export message from the old MDS. When
    the client receives cap revoke message from the new MDS, the revoking
    caps are still issued by the old MDS, so the client does nothing.
    Later when the cap export message is received, the client removes
    the caps issued by the old MDS. (Another way to fix the race is
    calling ceph_check_caps() in handle_cap_export())
    Signed-off-by: default avatarYan, Zheng <zheng.z.yan@intel.com>
    Reviewed-by: default avatarSage Weil <sage@inktank.com>
    b1530f57
caps.c 85.9 KB