Linus, please pull the following XFS changes for Linux 3.1.
In trying to track down the source of an XFS hang related to active
item pushing Christoph Hellwig identified three contributing
problems, addressed in the commits below.
- The first was that a "last pushed log sequence number" value was
being updated when it should not have been.
- The second is that it is possible for a buffer containing inodes
to be found pinned at the time it gets pushed, and that could
cause pushing to stall.
- The third is related to the switch to using a workqueue for AIL
pushing, which made it possible for pushing to get starved behind
syncing activity. At this late point in the cycle, the best
course of action was to revert to using a kernel thread as was
The last change is simply adding tracepoints; feel free to exclude
it if you see fit.
These changes have not been through a linux-next build; portions of
them are incompatible with the XFS code that's being included there.
I have done builds and repeated tests with them however and expect
The following changes since commit 65112dccf8a113737684366349d7f9ec373ddc47:
Merge git://git.samba.org/sfrench/cifs-2.6 (2011-10-10 14:53:11 +1200)
are available in the git repository at:
Christoph Hellwig (4):
xfs: do not update xa_last_pushed_lsn for locked items
xfs: force the log if we encounter pinned buffers in .iop_pushbuf
xfs: revert to using a kthread for AIL pushing
xfs: add AIL pushing tracepoints
fs/xfs/xfs_buf_item.c | 3 +-
fs/xfs/xfs_dquot_item.c | 10 ++++--
fs/xfs/xfs_inode_item.c | 10 ++++--
fs/xfs/xfs_linux.h | 2 +
fs/xfs/xfs_super.c | 13 +------
fs/xfs/xfs_trace.h | 37 +++++++++++++++++++
fs/xfs/xfs_trans.h | 2 +-
fs/xfs/xfs_trans_ail.c | 91 +++++++++++++++++++++++++++++------------------
fs/xfs/xfs_trans_priv.h | 8 +----
9 files changed, 114 insertions(+), 62 deletions(-)