diff options
author | Christoph Hellwig <hch@lst.de> | 2011-11-29 12:06:14 -0600 |
---|---|---|
committer | Ben Myers <bpm@sgi.com> | 2011-11-29 12:06:14 -0600 |
commit | 4dd2cb4a28b7ab1f37163a4eba280926a13a8749 (patch) | |
tree | f48cbb282ad4d52649b594657f00c1c8be753a47 /fs/xfs/xfs_inode.h | |
parent | fa8b18edd752a8b4e9d1ee2cd615b82c93cf8bba (diff) | |
download | linux-4dd2cb4a28b7ab1f37163a4eba280926a13a8749.tar.gz linux-4dd2cb4a28b7ab1f37163a4eba280926a13a8749.tar.bz2 linux-4dd2cb4a28b7ab1f37163a4eba280926a13a8749.zip |
xfs: force buffer writeback before blocking on the ilock in inode reclaim
If we are doing synchronous inode reclaim we block the VM from making
progress in memory reclaim. So if we encouter a flush locked inode
promote it in the delwri list and wake up xfsbufd to write it out now.
Without this we can get hangs of up to 30 seconds during workloads hitting
synchronous inode reclaim.
The scheme is copied from what we do for dquot reclaims.
Reported-by: Simon Kirby <sim@hostway.ca>
Signed-off-by: Christoph Hellwig <hch@lst.de>
Tested-by: Simon Kirby <sim@hostway.ca>
Signed-off-by: Ben Myers <bpm@sgi.com>
Diffstat (limited to 'fs/xfs/xfs_inode.h')
-rw-r--r-- | fs/xfs/xfs_inode.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/fs/xfs/xfs_inode.h b/fs/xfs/xfs_inode.h index 760140d1dd66..b4cd4739f98e 100644 --- a/fs/xfs/xfs_inode.h +++ b/fs/xfs/xfs_inode.h @@ -498,6 +498,7 @@ int xfs_iunlink(struct xfs_trans *, xfs_inode_t *); void xfs_iext_realloc(xfs_inode_t *, int, int); void xfs_iunpin_wait(xfs_inode_t *); int xfs_iflush(xfs_inode_t *, uint); +void xfs_promote_inode(struct xfs_inode *); void xfs_lock_inodes(xfs_inode_t **, int, uint); void xfs_lock_two_inodes(xfs_inode_t *, xfs_inode_t *, uint); |