Skip to contentSkip to conversation

Fix xfs_ichgtime mainline breakage.

DISCUSSION David Chinner 2 participants 2 messages Dec 3, 2007 – Dec 5, 2007

lore
Share & tools
lore
#0 lore raw

Folks,

Just noticed with the mainline merge (2.6.24-rc3) to xfs-dev that xfs_ichgtime + xfs_ichgtime_fast are broken.

        if (!(inode->i_state & I_SYNC))
		mark_inode_dirty_sync(inode);

that check used to be against I_LOCK, which was arguably broken, but this one will mean newly created files are not put on the dirty list and hence not written back by pdflush.

Patch to fix this attached.

Cheers,

Dave.

Signature · 29 lines
Dave Chinner
Principal Engineer
SGI Australian Software Group

---
 fs/xfs/linux-2.6/xfs_iops.c |    4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

Index: 2.6.x-xfs-new/fs/xfs/linux-2.6/xfs_iops.c
===================================================================
--- 2.6.x-xfs-new.orig/fs/xfs/linux-2.6/xfs_iops.c	2007-12-03 18:39:52.000000000 +1100
+++ 2.6.x-xfs-new/fs/xfs/linux-2.6/xfs_iops.c	2007-12-03 18:40:54.408998073 +1100
@@ -134,7 +134,7 @@ xfs_ichgtime(
 	 */
 	SYNCHRONIZE();
 	ip->i_update_core = 1;
-	if (!(inode->i_state & I_SYNC))
+	if (!(inode->i_state & I_NEW))
 		mark_inode_dirty_sync(inode);
 }
 
@@ -186,7 +186,7 @@ xfs_ichgtime_fast(
 	 */
 	SYNCHRONIZE();
 	ip->i_update_core = 1;
-	if (!(inode->i_state & I_SYNC))
+	if (!(inode->i_state & I_NEW))
 		mark_inode_dirty_sync(inode);
 }
#1 lore raw

Looks good Dave. Thanks for catching that.

Quoted 17 lines · David Chinner

Folks,

Just noticed with the mainline merge (2.6.24-rc3) to xfs-dev that xfs_ichgtime + xfs_ichgtime_fast are broken.

        if (!(inode->i_state & I_SYNC))
		mark_inode_dirty_sync(inode);

that check used to be against I_LOCK, which was arguably broken, but this one will mean newly created files are not put on the dirty list and hence not written back by pdflush.

Patch to fix this attached.

Cheers,

Dave.