|
@@ -1033,11 +1033,12 @@ xlog_iodone(xfs_buf_t *bp)
|
|
|
l = iclog->ic_log;
|
|
|
|
|
|
/*
|
|
|
- * If the ordered flag has been removed by a lower
|
|
|
- * layer, it means the underlyin device no longer supports
|
|
|
+ * If the _XFS_BARRIER_FAILED flag was set by a lower
|
|
|
+ * layer, it means the underlying device no longer supports
|
|
|
* barrier I/O. Warn loudly and turn off barriers.
|
|
|
*/
|
|
|
- if ((l->l_mp->m_flags & XFS_MOUNT_BARRIER) && !XFS_BUF_ISORDERED(bp)) {
|
|
|
+ if (bp->b_flags & _XFS_BARRIER_FAILED) {
|
|
|
+ bp->b_flags &= ~_XFS_BARRIER_FAILED;
|
|
|
l->l_mp->m_flags &= ~XFS_MOUNT_BARRIER;
|
|
|
xfs_fs_cmn_err(CE_WARN, l->l_mp,
|
|
|
"xlog_iodone: Barriers are no longer supported"
|