Merge branch 'for-linus' of git://oss.sgi.com/xfs/xfs
* 'for-linus' of git://oss.sgi.com/xfs/xfs: XFS: Free buffer pages array unconditionally xfs: kill xfs_bmbt_rec_32/64 types xfs: improve metadata I/O merging in the elevator xfs: check for not fully initialized inodes in xfs_ireclaim
这个提交包含在:
@@ -292,6 +292,7 @@ _xfs_buf_free_pages(
|
||||
{
|
||||
if (bp->b_pages != bp->b_page_array) {
|
||||
kmem_free(bp->b_pages);
|
||||
bp->b_pages = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -323,9 +324,8 @@ xfs_buf_free(
|
||||
ASSERT(!PagePrivate(page));
|
||||
page_cache_release(page);
|
||||
}
|
||||
_xfs_buf_free_pages(bp);
|
||||
}
|
||||
|
||||
_xfs_buf_free_pages(bp);
|
||||
xfs_buf_deallocate(bp);
|
||||
}
|
||||
|
||||
@@ -1149,10 +1149,14 @@ _xfs_buf_ioapply(
|
||||
if (bp->b_flags & XBF_ORDERED) {
|
||||
ASSERT(!(bp->b_flags & XBF_READ));
|
||||
rw = WRITE_BARRIER;
|
||||
} else if (bp->b_flags & _XBF_RUN_QUEUES) {
|
||||
} else if (bp->b_flags & XBF_LOG_BUFFER) {
|
||||
ASSERT(!(bp->b_flags & XBF_READ_AHEAD));
|
||||
bp->b_flags &= ~_XBF_RUN_QUEUES;
|
||||
rw = (bp->b_flags & XBF_WRITE) ? WRITE_SYNC : READ_SYNC;
|
||||
} else if (bp->b_flags & _XBF_RUN_QUEUES) {
|
||||
ASSERT(!(bp->b_flags & XBF_READ_AHEAD));
|
||||
bp->b_flags &= ~_XBF_RUN_QUEUES;
|
||||
rw = (bp->b_flags & XBF_WRITE) ? WRITE_META : READ_META;
|
||||
} else {
|
||||
rw = (bp->b_flags & XBF_WRITE) ? WRITE :
|
||||
(bp->b_flags & XBF_READ_AHEAD) ? READA : READ;
|
||||
|
@@ -55,6 +55,7 @@ typedef enum {
|
||||
XBF_FS_MANAGED = (1 << 8), /* filesystem controls freeing memory */
|
||||
XBF_ORDERED = (1 << 11), /* use ordered writes */
|
||||
XBF_READ_AHEAD = (1 << 12), /* asynchronous read-ahead */
|
||||
XBF_LOG_BUFFER = (1 << 13), /* this is a buffer used for the log */
|
||||
|
||||
/* flags used only as arguments to access routines */
|
||||
XBF_LOCK = (1 << 14), /* lock requested */
|
||||
|
在新工单中引用
屏蔽一个用户