drbd: application writes may set-in-sync in protocol != C
If "dirty" blocks are written to during resync, that brings them in-sync. By explicitly requesting write-acks during resync even in protocol != C, we now can actually respect this. Signed-off-by: Philipp Reisner <philipp.reisner@linbit.com> Signed-off-by: Lars Ellenberg <lars.ellenberg@linbit.com>
This commit is contained in:
committed by
Philipp Reisner
parent
5d0b17f1a2
commit
08d0dabf48
@@ -1639,7 +1639,10 @@ int drbd_send_dblock(struct drbd_peer_device *peer_device, struct drbd_request *
|
||||
if (peer_device->connection->agreed_pro_version >= 100) {
|
||||
if (req->rq_state & RQ_EXP_RECEIVE_ACK)
|
||||
dp_flags |= DP_SEND_RECEIVE_ACK;
|
||||
if (req->rq_state & RQ_EXP_WRITE_ACK)
|
||||
/* During resync, request an explicit write ack,
|
||||
* even in protocol != C */
|
||||
if (req->rq_state & RQ_EXP_WRITE_ACK
|
||||
|| (dp_flags & DP_MAY_SET_IN_SYNC))
|
||||
dp_flags |= DP_SEND_WRITE_ACK;
|
||||
}
|
||||
p->dp_flags = cpu_to_be32(dp_flags);
|
||||
|
||||
Reference in New Issue
Block a user