• Xin Zhao's avatar
    Detect remote completion by FLUSH / FLUSH_ACK messages. · 6578785d
    Xin Zhao authored
    When the origin wants to do a FLUSH sync, if there are
    active-message operations that are going to be issued,
    we piggback the FLUSH message with the last operation;
    if no such operations, we just send a single FLUSH packet.
    If the last operation is a write op (PUT, ACC) or only
    a single FLUSH packet is sent, after target recieves it,
    target will send back a single FLUSH_ACK packet;
    if the last operation contains a read action (GET, GACC, FOP,
    CAS), after target receiveds it, target will piggback a
    FLUSH_ACK flag with the response packet.
    After origin receives the FLUSH_ACK packet or response packet
    with FLUSH_ACK flag, it will decrement the counter which
    indicates number of outgoing sync messages (FLUSH / UNLOCK).
    When that counter reaches zero, origin can know that remote
    completion is achieved.
    Signed-off-by: Pavan Balaji's avatarPavan Balaji <balaji@anl.gov>