On 03/23/2015 02:02 PM, Vivek Goyal wrote:
On Thu, Mar 19, 2015 at 04:31:08PM -0400, Josef Bacik wrote:

[..]
+ * We log writes only after they have been flushed, this makes the log describe
+ * close to the order in which the data hits the actual disk, not its cache.  
So
+ * for example the following sequence (W means write, C means complete)
+ *
+ * Wa,Wb,Wc,Cc,Ca,FLUSH,FUAd,Cb,CFLUSH,CFUAd
+ *
+ * Would result in the log looking like this
+ *
+ * c,a,flush,fuad,b,<other writes>,<next flush>
+ *

A minor nit, Should this sequence be following.

c,a,b, flush,fuad,<other writes>,<next flush>

when flush completed by that time write of b has completed too. So it
should be written first?


So we want to catch file systems behaving badly by not waiting for the IO they care about to complete before issuing their flush, so we take the super pessimistic view that only IO that has completed by FLUSH issue time can truly be safe. For all we know the flush could have happened first and we just happen to get the endio called for b first instead of the flush, so to make it mostly likely that we catch fs bugs we enforce this idea that only completed IO can be sure to have been flushed at flush submit time. Thanks,

Josef

--
To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to