1
linux/fs/xfs/linux-2.6
David Chinner 455486b9cc [XFS] avoid all reclaimable inodes in xfs_sync_inodes_ag
If we are syncing data in xfs_sync_inodes_ag(), the VFS inode must still
be referencable as the dirty data state is carried on the VFS inode. hence
if we can't get a reference via igrab(), the inode must be in reclaim
which implies that it has no dirty data attached.

Leave such inodes to the reclaim code to flush the dirty inode state to
disk and so avoid attempting to access the VFS inode when it may not exist
in xfs_sync_inodes_ag().

Version 4:
o don't reference linux inode until after igrab() succeeds

Version 3:
o converted unlock/rele to an xfs_iput() call.

Version 2:
o change igrab logic to be more linear
o remove initial reclaimable inode check now that we are using
  igrab() failure to find reclaimable inodes
o assert that igrab failure occurs only on reclaimable inodes
o clean up inode locking - only grab the iolock if we are doing
  a SYNC_DELWRI call and we have a dirty inode.

SGI-PV: 987246

SGI-Modid: xfs-linux-melb:xfs-kern:32391a

Signed-off-by: David Chinner <david@fromorbit.com>
Signed-off-by: Christoph Hellwig <hch@infradead.org>
Signed-off-by: Peter Leckie <pleckie@sgi.com>
Signed-off-by: Lachlan McIlroy <lachlan@sgi.com>
2008-10-30 18:03:14 +11:00
..
kmem.c
kmem.h
mrlock.h
mutex.h
sv.h
time.h
xfs_aops.c [XFS] Never call mark_inode_dirty_sync() directly 2008-10-30 17:21:30 +11:00
xfs_aops.h
xfs_buf.c Fix barrier fail detection in XFS 2008-10-10 11:08:07 -07:00
xfs_buf.h Fix barrier fail detection in XFS 2008-10-10 11:08:07 -07:00
xfs_cred.h
xfs_dmapi_priv.h
xfs_export.c [PATCH] switch all filesystems over to d_obtain_alias 2008-10-23 05:13:01 -04:00
xfs_export.h
xfs_file.c [PATCH] Remove XFS buffered readdir hack 2008-10-23 05:13:06 -04:00
xfs_fs_subr.c
xfs_fs_subr.h
xfs_globals.c
xfs_globals.h
xfs_ioctl32.c
xfs_ioctl32.h
xfs_ioctl.c [PATCH] switch all filesystems over to d_obtain_alias 2008-10-23 05:13:01 -04:00
xfs_iops.c [XFS] Combine the XFS and Linux inodes 2008-10-30 17:36:14 +11:00
xfs_iops.h
xfs_linux.h
xfs_lrw.c
xfs_lrw.h
xfs_stats.c [XFS] add new btree statistics 2008-10-30 16:55:03 +11:00
xfs_stats.h [XFS] add new btree statistics 2008-10-30 16:55:03 +11:00
xfs_super.c [XFS] fix biosize option 2008-10-30 17:55:08 +11:00
xfs_super.h [XFS] move xfssyncd code to xfs_sync.c 2008-10-30 17:06:18 +11:00
xfs_sync.c [XFS] avoid all reclaimable inodes in xfs_sync_inodes_ag 2008-10-30 18:03:14 +11:00
xfs_sync.h [XFS] mark inodes for reclaim via a tag in the inode radix tree 2008-10-30 17:37:26 +11:00
xfs_sysctl.c
xfs_sysctl.h
xfs_version.h
xfs_vfs.h [XFS] move xfssyncd code to xfs_sync.c 2008-10-30 17:06:18 +11:00
xfs_vnode.c [XFS] Combine the XFS and Linux inodes 2008-10-30 17:36:14 +11:00
xfs_vnode.h [XFS] Use struct inodes instead of vnodes to kill vn_grab 2008-10-30 17:15:03 +11:00
xfs_xattr.c