From 1370b95f50279a9e470d8689b7d3beff46f68c5d Mon Sep 17 00:00:00 2001 From: Christoph Hellwig Date: Sat, 27 Aug 2011 05:57:44 +0000 Subject: [PATCH] --- yaml --- r: 263617 b: refs/heads/master c: 866e4ed77448a0c311e1b055eb72ea05423fd799 h: refs/heads/master i: 263615: 12199e5fd5601b1c752bdea65b76a54775496099 v: v3 --- [refs] | 2 +- trunk/fs/xfs/xfs_iops.c | 14 +++++++++++--- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/[refs] b/[refs] index 9159c388680b..58c29e485248 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 242d621964dd8641df53f7d51d4c6ead655cc5a6 +refs/heads/master: 866e4ed77448a0c311e1b055eb72ea05423fd799 diff --git a/trunk/fs/xfs/xfs_iops.c b/trunk/fs/xfs/xfs_iops.c index b9c172b3fbbe..673704fab748 100644 --- a/trunk/fs/xfs/xfs_iops.c +++ b/trunk/fs/xfs/xfs_iops.c @@ -70,9 +70,8 @@ xfs_synchronize_times( } /* - * If the linux inode is valid, mark it dirty. - * Used when committing a dirty inode into a transaction so that - * the inode will get written back by the linux code + * If the linux inode is valid, mark it dirty, else mark the dirty state + * in the XFS inode to make sure we pick it up when reclaiming the inode. */ void xfs_mark_inode_dirty_sync( @@ -82,6 +81,10 @@ xfs_mark_inode_dirty_sync( if (!(inode->i_state & (I_WILL_FREE|I_FREEING))) mark_inode_dirty_sync(inode); + else { + barrier(); + ip->i_update_core = 1; + } } void @@ -92,6 +95,11 @@ xfs_mark_inode_dirty( if (!(inode->i_state & (I_WILL_FREE|I_FREEING))) mark_inode_dirty(inode); + else { + barrier(); + ip->i_update_core = 1; + } + } /*