drbd: Improve how conflicting writes are handled
authorAndreas Gruenbacher <agruen@linbit.com>
Tue, 22 Feb 2011 01:15:32 +0000 (02:15 +0100)
committerPhilipp Reisner <philipp.reisner@linbit.com>
Fri, 14 Oct 2011 14:47:51 +0000 (16:47 +0200)
commit7be8da0798f08fb9564d4f64fe4a7d6fb4fab20b
treecdcc85b5152562bd40065cecec7f571098851881
parent71b1c1eb9c544141e743c4d14b3c576fd4c31a5a
drbd: Improve how conflicting writes are handled

The previous algorithm for dealing with overlapping concurrent writes
was generating unnecessary warnings for scenarios which could be
legitimate, and did not always handle partially overlapping requests
correctly.  Improve it algorithm as follows:

* While local or remote write requests are in progress, conflicting new
  local write requests will be delayed (commit 82172f7).

* When a conflict between a local and remote write request is detected,
  the node with the discard flag decides how to resolve the conflict: It
  will ask its peer to discard conflicting requests which are fully
  contained in the local request and retry requests which overlap only
  partially.  This involves a protocol change.

Signed-off-by: Philipp Reisner <philipp.reisner@linbit.com>
Signed-off-by: Lars Ellenberg <lars.ellenberg@linbit.com>
drivers/block/drbd/drbd_int.h
drivers/block/drbd/drbd_main.c
drivers/block/drbd/drbd_receiver.c
drivers/block/drbd/drbd_req.c
drivers/block/drbd/drbd_req.h
This page took 0.027321 seconds and 5 git commands to generate.