I had the discussion with Jeremy in Boston before, but let's repeat it here:
- is there actually any pre-existing xen backend that does properly implement empty barries. Back then we couldn't find any. - if this is a new concept to Xen please do not define an empty barrier primitive, but a new flush cache primitive. That one maps natively to the qemu I/O layer, and with recent Linux, NetBSD, Windows, or Solaris guest will be a lot faster than a barrier which drains the queue. Note that what your patch implements actually is a rather inefficient implementation of the latter. You do none of the queue draining which the in-kernel blkback implementation does by submitting the old-style barrier bio. While most filesystem do not care you introduce a quite subtile chance of data corruption for reiserfs, or ext4 with asynchronous journal commits on pre-2.6.37 kernels.