So md raid1 is happy to pass down any barrier writes that it sees, but
this bit in xfs_mountfs_check_barriers() at mount time:
if (mp->m_ddev_targp->bt_bdev->bd_disk->queue->ordered ==
QUEUE_ORDERED_NONE) {
xfs_fs_cmn_err(CE_NOTE, mp,
"Disabling barriers, not supported by the underlying
device");
mp->m_flags &= ~XFS_MOUNT_BARRIER;
return;
}
winds up with XFS disabling barriers on these devices. However, if this
is simply commented out, XFS happily tests barriers, finds that they
work, leaves them turned on and all subsequent barrier writes to the
device succeed.
Perhaps what we have here is a failure to communicate? :)
I'm not sure; *should* XFS be looking for a QUEUE_ORDERED tag? Should
MD be setting one? Maybe there should be a QUEUE_ORDERED_PASSTHRU flag?
Or should XFS just stick with the test write and ignore the flag? I'm
not sure of the queue->ordered flag details, but it seems that XFS & md
raid1 both try hard to keep barriers in force, and there's a disconnect
here somewhere.
Thanks,
-Eric
|