diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2010-01-11 09:48:48 -0800 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2010-01-11 09:48:48 -0800 |
commit | 1b4d40a517e0657a081d5d63518c4badd31c60ea (patch) | |
tree | 37b3f593288fd9f8fd97f60a84bd57fef8c0d87a /fs/xfs/xfs_inode.c | |
parent | 79ecb043ea0ae046463f03dea46c5e13a9312205 (diff) | |
parent | fd45e4784164d1017521086524e3442318c67370 (diff) | |
download | kernel-crypto-1b4d40a517e0657a081d5d63518c4badd31c60ea.tar.gz kernel-crypto-1b4d40a517e0657a081d5d63518c4badd31c60ea.tar.xz kernel-crypto-1b4d40a517e0657a081d5d63518c4badd31c60ea.zip |
Merge branch 'for-linus' of git://oss.sgi.com/xfs/xfs
* 'for-linus' of git://oss.sgi.com/xfs/xfs:
xfs: Ensure we force all busy extents in range to disk
xfs: Don't flush stale inodes
xfs: fix timestamp handling in xfs_setattr
xfs: use DECLARE_EVENT_CLASS
Diffstat (limited to 'fs/xfs/xfs_inode.c')
-rw-r--r-- | fs/xfs/xfs_inode.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/fs/xfs/xfs_inode.c b/fs/xfs/xfs_inode.c index ce278b3ae7f..391d36b0e68 100644 --- a/fs/xfs/xfs_inode.c +++ b/fs/xfs/xfs_inode.c @@ -2841,10 +2841,14 @@ xfs_iflush( mp = ip->i_mount; /* - * If the inode isn't dirty, then just release the inode - * flush lock and do nothing. + * If the inode isn't dirty, then just release the inode flush lock and + * do nothing. Treat stale inodes the same; we cannot rely on the + * backing buffer remaining stale in cache for the remaining life of + * the stale inode and so xfs_itobp() below may give us a buffer that + * no longer contains inodes below. Doing this stale check here also + * avoids forcing the log on pinned, stale inodes. */ - if (xfs_inode_clean(ip)) { + if (xfs_inode_clean(ip) || xfs_iflags_test(ip, XFS_ISTALE)) { xfs_ifunlock(ip); return 0; } |