• S
    libceph: resubmit linger ops when pg mapping changes · 6194ea89
    Sage Weil 提交于
    The linger op registration (i.e., watch) modifies the object state.  As
    such, the OSD will reply with success if it has already applied without
    doing the associated side-effects (setting up the watch session state).
    If we lose the ACK and resubmit, we will see success but the watch will not
    be correctly registered and we won't get notifies.
    
    To fix this, always resubmit the linger op with a new tid.  We accomplish
    this by re-registering as a linger (i.e., 'registered') if we are not yet
    registered.  Then the second loop will treat this just like a normal
    case of re-registering.
    
    This mirrors a similar fix on the userland ceph.git, commit 5dd68b95, and
    ceph bug #2796.
    Signed-off-by: NSage Weil <sage@inktank.com>
    Reviewed-by: NAlex Elder <elder@inktank.com>
    Reviewed-by: NYehuda Sadeh <yehuda@inktank.com>
    6194ea89
osd_client.c 56.5 KB