diff options
Diffstat (limited to 'fs/xfs/linux-2.6/xfs_buf.c')
-rw-r--r-- | fs/xfs/linux-2.6/xfs_buf.c | 35 |
1 files changed, 15 insertions, 20 deletions
diff --git a/fs/xfs/linux-2.6/xfs_buf.c b/fs/xfs/linux-2.6/xfs_buf.c index 6ad5ae249bfb..a0d97c5a3f15 100644 --- a/fs/xfs/linux-2.6/xfs_buf.c +++ b/fs/xfs/linux-2.6/xfs_buf.c | |||
@@ -592,10 +592,8 @@ _xfs_buf_read( | |||
592 | ASSERT(!(flags & (XBF_DELWRI|XBF_WRITE))); | 592 | ASSERT(!(flags & (XBF_DELWRI|XBF_WRITE))); |
593 | ASSERT(bp->b_bn != XFS_BUF_DADDR_NULL); | 593 | ASSERT(bp->b_bn != XFS_BUF_DADDR_NULL); |
594 | 594 | ||
595 | bp->b_flags &= ~(XBF_WRITE | XBF_ASYNC | XBF_DELWRI | \ | 595 | bp->b_flags &= ~(XBF_WRITE | XBF_ASYNC | XBF_DELWRI | XBF_READ_AHEAD); |
596 | XBF_READ_AHEAD | _XBF_RUN_QUEUES); | 596 | bp->b_flags |= flags & (XBF_READ | XBF_ASYNC | XBF_READ_AHEAD); |
597 | bp->b_flags |= flags & (XBF_READ | XBF_ASYNC | \ | ||
598 | XBF_READ_AHEAD | _XBF_RUN_QUEUES); | ||
599 | 597 | ||
600 | status = xfs_buf_iorequest(bp); | 598 | status = xfs_buf_iorequest(bp); |
601 | if (status || XFS_BUF_ISERROR(bp) || (flags & XBF_ASYNC)) | 599 | if (status || XFS_BUF_ISERROR(bp) || (flags & XBF_ASYNC)) |
@@ -1211,23 +1209,21 @@ _xfs_buf_ioapply( | |||
1211 | total_nr_pages = bp->b_page_count; | 1209 | total_nr_pages = bp->b_page_count; |
1212 | map_i = 0; | 1210 | map_i = 0; |
1213 | 1211 | ||
1214 | if (bp->b_flags & XBF_ORDERED) { | 1212 | if (bp->b_flags & XBF_WRITE) { |
1215 | ASSERT(!(bp->b_flags & XBF_READ)); | 1213 | if (bp->b_flags & XBF_SYNCIO) |
1216 | rw = WRITE_FLUSH_FUA; | 1214 | rw = WRITE_SYNC; |
1217 | } else if (bp->b_flags & XBF_LOG_BUFFER) { | 1215 | else |
1218 | ASSERT(!(bp->b_flags & XBF_READ_AHEAD)); | 1216 | rw = WRITE; |
1219 | bp->b_flags &= ~_XBF_RUN_QUEUES; | 1217 | if (bp->b_flags & XBF_FUA) |
1220 | rw = (bp->b_flags & XBF_WRITE) ? WRITE_SYNC : READ_SYNC; | 1218 | rw |= REQ_FUA; |
1221 | } else if (bp->b_flags & _XBF_RUN_QUEUES) { | 1219 | if (bp->b_flags & XBF_FLUSH) |
1222 | ASSERT(!(bp->b_flags & XBF_READ_AHEAD)); | 1220 | rw |= REQ_FLUSH; |
1223 | bp->b_flags &= ~_XBF_RUN_QUEUES; | 1221 | } else if (bp->b_flags & XBF_READ_AHEAD) { |
1224 | rw = (bp->b_flags & XBF_WRITE) ? WRITE_META : READ_META; | 1222 | rw = READA; |
1225 | } else { | 1223 | } else { |
1226 | rw = (bp->b_flags & XBF_WRITE) ? WRITE : | 1224 | rw = READ; |
1227 | (bp->b_flags & XBF_READ_AHEAD) ? READA : READ; | ||
1228 | } | 1225 | } |
1229 | 1226 | ||
1230 | |||
1231 | next_chunk: | 1227 | next_chunk: |
1232 | atomic_inc(&bp->b_io_remaining); | 1228 | atomic_inc(&bp->b_io_remaining); |
1233 | nr_pages = BIO_MAX_SECTORS >> (PAGE_SHIFT - BBSHIFT); | 1229 | nr_pages = BIO_MAX_SECTORS >> (PAGE_SHIFT - BBSHIFT); |
@@ -1689,8 +1685,7 @@ xfs_buf_delwri_split( | |||
1689 | break; | 1685 | break; |
1690 | } | 1686 | } |
1691 | 1687 | ||
1692 | bp->b_flags &= ~(XBF_DELWRI|_XBF_DELWRI_Q| | 1688 | bp->b_flags &= ~(XBF_DELWRI | _XBF_DELWRI_Q); |
1693 | _XBF_RUN_QUEUES); | ||
1694 | bp->b_flags |= XBF_WRITE; | 1689 | bp->b_flags |= XBF_WRITE; |
1695 | list_move_tail(&bp->b_list, list); | 1690 | list_move_tail(&bp->b_list, list); |
1696 | trace_xfs_buf_delwri_split(bp, _RET_IP_); | 1691 | trace_xfs_buf_delwri_split(bp, _RET_IP_); |