mirror of
https://github.com/xen-project/xen.git
synced 2026-10-28 10:11:27 +01:00
Protocol changes: * There is a new operation (BLKIF_OP_WRITE_BARRIER) to pass on barrier requests. * There is a new state (BLKIF_RSP_EOPNOTSUPP) to indicate unsupported operations (barrier writes may fail depending on the underlying block device). * A new xenstore node named "feature-barrier" indicates the backend is able to handle barrier writes. The value can be 1 (all is fine) or 0 (underlying block device doesn't support barriers). blkback changes: Add "feature-barrier" node to indicate barrier support, pass incoming barrier requests to the block layer using submit_bio(WRITE_BARRIER, bio). Some error handling fixes to properly pass through barrier write failures, so the frontend can turn off barriers then. blkfront changes: Check if the backend sets "feature-barrier", if present switch to QUEUE_ORDERED_DRAIN mode. Send off barrier requests to the backend using the new BLKIF_OP_WRITE_BARRIER operation. Also some error handling for the EOPNOTSUPP case. Background: Barriers are needed to make journaling filesystems work reliable. For some requests they need order constrains to make the transactions work correctly. Barrier requests are used to pass that ordering information to the block layer and/or to the device, so the constrains are obeyed when reordering requests for better write performance. Signed-off-by: Gerd Hoffmann <kraxel@suse.de>