Fix xfs_ichgtime mainline breakage.
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); }
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_fastare 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.