• Lars Ellenberg's avatar
    drbd: differentiate early and later "postponing" of requests · 70f17b6b
    Lars Ellenberg authored
    We use the RQ_POSTPONED flag to mark a request for several reasons.
    
    It may be a conflicting request in a dual-primary setup,
    where conflict detection and resolution on the peer decided that
    this request needs to be re-submitted, it needs to re-enter
    drbd_make_request() to fix the data divergence caused by these
    conflicting, partially overlapping, quasi-simultaneous requests.
    
    In this case we need to mark the corresponding area as out-of-sync,
    before we call drbd_al_complete_io().
    
    We also use the RQ_POSTPONED flag to just "push back" a request,
    before even processing it, if IO is suspended for some reason.
    In this case, as this request was neither submitted nor sent yet,
    we must not touch the bitmap.
    Signed-off-by: default avatarPhilipp Reisner <philipp.reisner@linbit.com>
    Signed-off-by: default avatarLars Ellenberg <lars.ellenberg@linbit.com>
    70f17b6b
drbd_req.c 37.3 KB