aboutsummaryrefslogtreecommitdiffstats
path: root/fs/xfs/xfs_super.c
diff options
context:
space:
mode:
authorChristoph Hellwig <hch@infradead.org>2011-12-18 10:49:55 -0500
committerBen Myers <bpm@sgi.com>2011-12-23 17:41:47 -0500
commit0b8fd3033c308e4088760aa1d38ce77197b4e074 (patch)
tree534cfbf7315e4ea6363792be9acf83029cf034a2 /fs/xfs/xfs_super.c
parent9f9c19ec1a59422c7687b11847ed3408128aa0d6 (diff)
xfs: log the inode in ->write_inode calls for kupdate
If the writeback code writes back an inode because it has expired we currently use the non-blockin ->write_inode path. This means any inode that is pinned is skipped. With delayed logging and a workload that has very little log traffic otherwise it is very likely that an inode that gets constantly written to is always pinned, and thus we keep refusing to write it. The VM writeback code at that point redirties it and doesn't try to write it again for another 30 seconds. This means under certain scenarious time based metadata writeback never happens. Fix this by calling into xfs_log_inode for kupdate in addition to data integrity syncs, and thus transfer the inode to the log ASAP. Signed-off-by: Christoph Hellwig <hch@lst.de> Reviewed-by: Dave Chinner <dchinner@redhat.com> Tested-by: Mark Tinguely <tinguely@sgi.com> Reviewed-by: Mark Tinguely <tinguely@sgi.com> Signed-off-by: Ben Myers <bpm@sgi.com>
Diffstat (limited to 'fs/xfs/xfs_super.c')
-rw-r--r--fs/xfs/xfs_super.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/fs/xfs/xfs_super.c b/fs/xfs/xfs_super.c
index 3eca58f51ae9..1add17ca3350 100644
--- a/fs/xfs/xfs_super.c
+++ b/fs/xfs/xfs_super.c
@@ -905,7 +905,7 @@ xfs_fs_write_inode(
905 if (!ip->i_update_core) 905 if (!ip->i_update_core)
906 return 0; 906 return 0;
907 907
908 if (wbc->sync_mode == WB_SYNC_ALL) { 908 if (wbc->sync_mode == WB_SYNC_ALL || wbc->for_kupdate) {
909 /* 909 /*
910 * Make sure the inode has made it it into the log. Instead 910 * Make sure the inode has made it it into the log. Instead
911 * of forcing it all the way to stable storage using a 911 * of forcing it all the way to stable storage using a