[DRBD-cvs] r1895 - trunk
www-data
www-data at linbit.com
Mon Jul 25 17:43:26 CEST 2005
Author: phil
Date: 2005-07-25 17:43:25 +0200 (Mon, 25 Jul 2005)
New Revision: 1895
Modified:
trunk/ROADMAP
Log:
More thoughts on that toppic...
Modified: trunk/ROADMAP
===================================================================
--- trunk/ROADMAP 2005-07-21 08:41:14 UTC (rev 1894)
+++ trunk/ROADMAP 2005-07-25 15:43:25 UTC (rev 1895)
@@ -579,20 +579,39 @@
How should we deal with our self generated barrier packets ?
- It looks like that if our backing device's queue properties are set to
- QUEUE_ORDERED_TAG I guess we might use the RIO_RW_BARRIER flag on BIOs
- instead of waiting untill all of our pending local write requests are
- done upon receiving a write barrier packet. This could give us a
- performance boost.
-
- In case our backing device only supports QUEUE_ORDERED_FLUSH it is
- probabely better to use the current code. That means, when we receive
- a write barrier packet we wait until all of our pending local write
- requests are done.
-
In case our backing device is of the QUEUE_ORDERED_NONE class, we
have to stay with the current code.
+ In case our backing device only supports QUEUE_ORDERED_FLUSH we
+ will to use the current code. That means, when we receive a write
+ barrier packet we wait until all of our pending local write
+ requests are done. (This potentially causes congestion on the TCP
+ socket...)
+
+ In cause our backing device's queue properties are set to
+ QUEUE_ORDERED_TAG we offload the complete barrier logic to the
+ backing storage device:
+
+ * When we receive a barrier packet
+ - If we have no local pending requests, we send the barrier ACK
+ immediately. (= current code)
+ - If the last_barrier_write member of mdev points to an epoch_entry
+ we set bit 31 of bnum.
+ - If we have local pending requests, we set a flag that the next
+ data packet has to be written with the BIO_RW_BARRIER flag.
+ (That flag should be called BARRIER_NEEDED)
+
+ * When receiving data packets we test_and_clear BARRIER_NEEDED,
+ and add set the BIO_RW_BARRIER on the write request. We also set
+ the last_barrier_write member of mdev.
+ [Normal writes clear the last_barrier_write member of mdev]
+
+ * When a write completes and it has the bnum set, send the barrier
+ ack before sending the ack for the write. In case the highest
+ bit of bnum is set as well, also send the barrier ack following
+ the write ack of the data packet.
+
+
plus-banches:
----------------------
More information about the drbd-cvs
mailing list