CVS log for xfs-linux-nodel/linux-2.6/xfs_sync.c

[BACK] Up to [Development] / xfs-linux-nodel / linux-2.6

Request diff between arbitrary revisions


Default branch: MAIN
Current tag: MAIN


Revision 1.24 / (download) - annotate - [select for diffs], Thu Oct 23 15:01:39 2008 UTC (9 years ago) by pleckie.longdrop.melbourne.sgi.com
Branch: MAIN
CVS Tags: HEAD
Changes since 1.23: +18 -57 lines
Diff to previous 1.23 (colored)

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 liinux inode untiil 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.
Merge of xfs-linux-melb:xfs-kern:32391a by kenmcd.

  avoid all reclaimable inodes in xfs_sync_inodes_ag

Revision 1.23 / (download) - annotate - [select for diffs], Wed Oct 15 15:36:41 2008 UTC (9 years ago) by lachlan.longdrop.melbourne.sgi.com
Branch: MAIN
Changes since 1.22: +22 -4 lines
Diff to previous 1.22 (colored)

Prevent looping in xfs_sync_inodes_ag

If the last  block of the AG has inodes in it and the AG is an
exactly power-of-2 size then the last inode in the AG points
to the last block in the AG. If we try to find the next inode
in the AG by adding one to the inode number, we increment the
inode number past the size of the AG. The result is that the
macro XFS_INO_TO_AGINO() will strip the AG portion of the inode
number and return an inode number of zero.

That is, instead of terminating the lookup loop because we hit the
inode number went outside the valid range for the AG, the search
index returns to zero and we start traversing the radix tree from
the start again. This results in an endless loop in
xfs_sync_inodes_ag().

Fix it be detecting if the new search index decreases as a result of
incrementing the current inode number. That indicate an overflow and
hence that we have finished processing the AG so we can terminate
the loop.

Signed-off-by: Dave Chinner <david@fromorbit.com>
Merge of xfs-linux-melb:xfs-kern:32335a by kenmcd.

  Prevent looping in xfs_sync_inodes_ag

Revision 1.22 / (download) - annotate - [select for diffs], Wed Oct 15 15:35:50 2008 UTC (9 years ago) by lachlan.longdrop.melbourne.sgi.com
Branch: MAIN
Changes since 1.21: +6 -0 lines
Diff to previous 1.21 (colored)

kill deleted inodes list

Now that the deleted inodes list is unused, kill it. This
also removes the i_reclaim list head from the xfs_inode, shrinking
it by two pointers.

Signed-off-by: Dave Chinner <david@fromorbit.com>
Merge of xfs-linux-melb:xfs-kern:32334a by kenmcd.

  kill deleted inodes list

Revision 1.21 / (download) - annotate - [select for diffs], Wed Oct 15 15:34:55 2008 UTC (9 years ago) by lachlan.longdrop.melbourne.sgi.com
Branch: MAIN
Changes since 1.20: +71 -10 lines
Diff to previous 1.20 (colored)

use the inode radix tree for reclaiming inodes

Use the reclaim tag to walk the radix tree and find
the inodes under reclaim. This was the only user of the
deleted inode list.

Signed-off-by: Dave Chinner <david@fromorbit.com>
Merge of xfs-linux-melb:xfs-kern:32333a by kenmcd.

  use the inode radix tree for reclaiming inodes

Revision 1.20 / (download) - annotate - [select for diffs], Wed Oct 15 15:34:05 2008 UTC (9 years ago) by lachlan.longdrop.melbourne.sgi.com
Branch: MAIN
Changes since 1.19: +41 -0 lines
Diff to previous 1.19 (colored)

mark inodes for reclaim via a tag in the inode radix tree

Prepare for removing the deleted inode list by marking inodes
for reclaim in the inode radix trees so that we can use the
radix trees to find reclaimable inodes.

Signed-off-by: Dave Chinner <david@fromorbit.com>
Merge of xfs-linux-melb:xfs-kern:32331a by kenmcd.

  mark inodes for reclaim via a tag in the inode radix tree

Revision 1.19 / (download) - annotate - [select for diffs], Wed Oct 15 15:33:13 2008 UTC (9 years ago) by lachlan.longdrop.melbourne.sgi.com
Branch: MAIN
Changes since 1.18: +5 -5 lines
Diff to previous 1.18 (colored)

rename inode reclaim functions

The function names xfs_finish_reclaim and xfs_finish_reclaim_all
are not very descriptive of what they are reclaiming. Rename to
xfs_reclaim_inode[s] to match the xfs_sync_inodes() function.

Signed-off-by: Dave Chinner <david@fromorbit.com>
Merge of xfs-linux-melb:xfs-kern:32330a by kenmcd.

  rename inode reclaim functions

Revision 1.18 / (download) - annotate - [select for diffs], Wed Oct 15 15:32:20 2008 UTC (9 years ago) by lachlan.longdrop.melbourne.sgi.com
Branch: MAIN
Changes since 1.17: +91 -0 lines
Diff to previous 1.17 (colored)

move inode reclaim functions to xfs_sync.c

Background inode reclaim is run by the xfssyncd. Move the
reclaim worker functions to be close to the sync code as
the are very similar in structure and are both run from
the same background thread.

Signed-off-by: Dave Chinner <david@fromorbit.com>
Merge of xfs-linux-melb:xfs-kern:32329a by kenmcd.

  move inode reclaim functions to xfs_sync.c

Revision 1.17 / (download) - annotate - [select for diffs], Mon Oct 13 15:14:06 2008 UTC (9 years ago) by lachlan.longdrop.melbourne.sgi.com
Branch: MAIN
Changes since 1.16: +55 -0 lines
Diff to previous 1.16 (colored)

Move remaining quiesce code.

With all the other filesystem sync code it in xfs_sync.c
including the data quiesce code, it makes sense to move
the remaining quiesce code to the same place.

Signed-off-by: Dave Chinner <david@fromorbit.com>
Merge of xfs-linux-melb:xfs-kern:32312a by kenmcd.

  Move remaining quiesce code.

Revision 1.16 / (download) - annotate - [select for diffs], Mon Oct 13 15:13:12 2008 UTC (9 years ago) by lachlan.longdrop.melbourne.sgi.com
Branch: MAIN
Changes since 1.15: +15 -117 lines
Diff to previous 1.15 (colored)

Kill xfs_sync()

There are no more callers to xfs_sync() now, so remove the
function altogther.

Signed-off-by: Dave Chinner <david@fromorbit.com>
Merge of xfs-linux-melb:xfs-kern:32311a by kenmcd.

  Kill xfs_sync()

Revision 1.15 / (download) - annotate - [select for diffs], Mon Oct 13 15:12:05 2008 UTC (9 years ago) by lachlan.longdrop.melbourne.sgi.com
Branch: MAIN
Changes since 1.14: +2 -29 lines
Diff to previous 1.14 (colored)

Kill SYNC_CLOSE

SYNC_CLOSE is only ever used and checked in conjunction with
SYNC_WAIT, and this only done in one spot. The only thing
this does is make XFS_bflush() calls to the data buftargs.

This will happen very shortly afterwards the xfs_sync() call
anyway in the unmount path via the xfs_close_devices(), so this
code is redundant and can be removed. That only user of SYNC_CLOSE
is now gone, so kill the flag completely.

Signed-off-by: Dave Chinner <david@fromorbit.com>
Merge of xfs-linux-melb:xfs-kern:32310a by kenmcd.

  Kill SYNC_CLOSE

Revision 1.14 / (download) - annotate - [select for diffs], Mon Oct 13 15:10:48 2008 UTC (9 years ago) by lachlan.longdrop.melbourne.sgi.com
Branch: MAIN
Changes since 1.13: +41 -1 lines
Diff to previous 1.13 (colored)

make SYNC_DELWRI no longer use xfs_sync

Continue to de-multiplex xfs_sync be replacing all SYNC_DELWRI
callers with direct calls functions that do the work. Isolate the
data quiesce case to a function in xfs_sync.c. Isolate the
FSDATA case with explicit calls to xfs_sync_fsdata().

Version 2:
o Push delwri related log forces into xfs_sync_inodes().

Signed-off-by: Dave Chinner <david@fromorbit.com>
Merge of xfs-linux-melb:xfs-kern:32309a by kenmcd.

  make SYNC_DELWRI no longer use xfs_sync

Revision 1.13 / (download) - annotate - [select for diffs], Mon Oct 13 15:09:55 2008 UTC (9 years ago) by lachlan.longdrop.melbourne.sgi.com
Branch: MAIN
Changes since 1.12: +11 -12 lines
Diff to previous 1.12 (colored)

make SYNC_ATTR no longer use xfs_sync

Continue to de-multiplex xfs_sync be replacing all SYNC_ATTR
callers with direct calls xfs_sync_inodes(). Add an assert
into xfs_sync() to ensure we caught all the SYNC_ATTR callers.

Signed-off-by: Dave Chinner <david@fromorbit.com>
Merge of xfs-linux-melb:xfs-kern:32308a by kenmcd.

  make SYNC_ATTR no longer use xfs_sync

Revision 1.12 / (download) - annotate - [select for diffs], Mon Oct 13 15:09:05 2008 UTC (9 years ago) by lachlan.longdrop.melbourne.sgi.com
Branch: MAIN
Changes since 1.11: +14 -2 lines
Diff to previous 1.11 (colored)

xfssyncd: don't call xfs_sync

Start de-multiplexing xfs_sync() by making xfs_sync_worker()
call the specific sync functions it needs. This is only a small,
unique subset of the entire xfs_sync() code so is easier to
follow.

Signed-off-by: Dave Chinner <david@fromorbit.com>
Merge of xfs-linux-melb:xfs-kern:32307a by kenmcd.

  xfssyncd: don't call xfs_sync

Revision 1.11 / (download) - annotate - [select for diffs], Mon Oct 13 15:08:14 2008 UTC (9 years ago) by lachlan.longdrop.melbourne.sgi.com
Branch: MAIN
Changes since 1.10: +62 -79 lines
Diff to previous 1.10 (colored)

kill xfs_syncsub

Now that the only caller is xfs_sync(), merge the two
together as it makes no sense to keep them separate.

Signed-off-by: Dave Chinner <david@fromorbit.com>
Merge of xfs-linux-melb:xfs-kern:32306a by kenmcd.

  kill xfs_syncsub

Revision 1.10 / (download) - annotate - [select for diffs], Mon Oct 13 15:07:23 2008 UTC (9 years ago) by lachlan.longdrop.melbourne.sgi.com
Branch: MAIN
Changes since 1.9: +7 -14 lines
Diff to previous 1.9 (colored)

use xfs_sync_inodes rather than xfs_syncsub

Kill the unused arg in xfs_syncsub() and xfs_sync_inodes().  For
callers of xfs_syncsub() that only want to flush inodes, replace
xfs_syncsub() with direct calls to xfs_sync_inodes() as that is all
that is being done with the specific flags being passed in.

Signed-off-by: Dave Chinner <david@fromorbit.com>
Merge of xfs-linux-melb:xfs-kern:32305a by kenmcd.

  use xfs_sync_inodes rather than xfs_syncsub

Revision 1.9 / (download) - annotate - [select for diffs], Mon Oct 13 15:06:28 2008 UTC (9 years ago) by lachlan.longdrop.melbourne.sgi.com
Branch: MAIN
Changes since 1.8: +26 -27 lines
Diff to previous 1.8 (colored)

Use struct inodes instead of vnodes to kill vn_grab

With the sync code relocated to the linux-2.6 directory we can use
struct inodes directly. If we do the same thing for the quota
release code, we can remove vn_grab altogether.  While here, convert
the VN_BAD() checks to is_bad_inode() so we can remove vnodes
entirely from this code.

Signed-off-by: Dave Chinner <david@fromorbit.com>
Merge of xfs-linux-melb:xfs-kern:32304a by kenmcd.

  Use struct inodes instead of vnodes to kill vn_grab

Revision 1.8 / (download) - annotate - [select for diffs], Mon Oct 13 15:05:36 2008 UTC (9 years ago) by lachlan.longdrop.melbourne.sgi.com
Branch: MAIN
Changes since 1.7: +93 -69 lines
Diff to previous 1.7 (colored)

split out two helpers from xfs_syncsub

Split out two helpers from xfs_syncsub for the dummy log commit
and the superblock writeout.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Dave Chinner <david@fromorbit.com>
Merge of xfs-linux-melb:xfs-kern:32303a by kenmcd.

  split out two helpers from xfs_syncsub

Revision 1.7 / (download) - annotate - [select for diffs], Fri Oct 10 15:19:49 2008 UTC (9 years ago) by lachlan.longdrop.melbourne.sgi.com
Branch: MAIN
Changes since 1.6: +101 -260 lines
Diff to previous 1.6 (colored)

Use the inode tree for finding dirty inodes

Update xfs_sync_inodes to walk the inode radix tree cache to find
dirty inodes. This removes a huge bunch of nasty, messy code for
traversing the mount inode list safely and removes another user of
the mount inode list.

Version 3
o rediff against new linux-2.6/xfs_sync.c code

Version 2
o add comment explaining use of gang lookups for a single inode
o use IRELE, not VN_RELE
o move check for ag initialisation to caller.

Signed-off-by: Dave Chinner <david@fromorbit.com>
Merge of xfs-linux-melb:xfs-kern:32290a by kenmcd.

  Use the inode tree for finding dirty inodes

Revision 1.6 / (download) - annotate - [select for diffs], Fri Oct 10 05:36:06 2008 UTC (9 years ago) by lachlan.longdrop.melbourne.sgi.com
Branch: MAIN
Changes since 1.5: +260 -101 lines
Diff to previous 1.5 (colored)

Undoes mod:     xfs-linux-melb:xfs-kern:32286a
Reverting mod xfs-linux-melb:xfs-kern:32286a which got checked in with wrong take message.
Merge of xfs-linux-melb:xfs-kern:32288a by kenmcd.

Revision 1.5 / (download) - annotate - [select for diffs], Fri Oct 10 05:34:25 2008 UTC (9 years ago) by lachlan.longdrop.melbourne.sgi.com
Branch: MAIN
Changes since 1.4: +101 -260 lines
Diff to previous 1.4 (colored)

Traverse inode trees when releasing dquots

Make releasing all inode dquots traverse the per-ag
inode radix trees rather than the mount inode list.
This removes another user of the mount inode list.

Version 3
o fix comment relating to avoiding trying to release the
  quota inodes and those in reclaim.

Version 2
o add comment explaining use of gang lookups for a single inode
o use IRELE, not VN_RELE
o move check for ag initialisation to caller.

Signed-off-by: Dave Chinner <david@fromorbit.com>
Merge of xfs-linux-melb:xfs-kern:32286a by kenmcd.

  Traverse inode trees when releasing dquots

Revision 1.4 / (download) - annotate - [select for diffs], Fri Oct 10 05:33:34 2008 UTC (9 years ago) by lachlan.longdrop.melbourne.sgi.com
Branch: MAIN
Changes since 1.3: +0 -0 lines
Diff to previous 1.3 (colored)

Use the inode tree for finding dirty inodes

Update xfs_sync_inodes to walk the inode radix tree cache to find
dirty inodes. This removes a huge bunch of nasty, messy code for
traversing the mount inode list safely and removes another user of
the mount inode list.

Version 3
o rediff against new linux-2.6/xfs_sync.c code

Version 2
o add comment explaining use of gang lookups for a single inode
o use IRELE, not VN_RELE
o move check for ag initialisation to caller.

Signed-off-by: Dave Chinner <david@fromorbit.com>
Merge of xfs-linux-melb:xfs-kern:32285a by kenmcd.

  Use the inode tree for finding dirty inodes

Revision 1.3 / (download) - annotate - [select for diffs], Fri Oct 10 05:32:41 2008 UTC (9 years ago) by lachlan.longdrop.melbourne.sgi.com
Branch: MAIN
Changes since 1.2: +1 -1 lines
Diff to previous 1.2 (colored)

Remove xfs_iflush_all and clean up xfs_finish_reclaim_all()

xfs_iflush_all() walks the m_inodes list to find inodes that
need reclaiming. We already have such a list - the m_del_inodes
list. Replace xfs_iflush_all() with a call to xfs_finish_reclaim_all()
and clean up xfs_finish_reclaim_all() to handle the different flush
modes now needed.

Originally based on a patch from Christoph Hellwig.

Version 3
o rediff against new linux-2.6/xfs_sync.c code

Version 2
o revert xfs_syncsub() inode reclaim behaviour back to original
  code
o xfs_quiesce_fs() should use XFS_IFLUSH_DELWRI_ELSE_ASYNC, not
  XFS_IFLUSH_ASYNC, to prevent change of behaviour.

Signed-off-by: Dave Chinner <david@fromorbit.com>
Merge of xfs-linux-melb:xfs-kern:32284a by kenmcd.

  Remove xfs_iflush_all and clean up xfs_finish_reclaim_all()

Revision 1.2 / (download) - annotate - [select for diffs], Fri Oct 10 05:31:47 2008 UTC (9 years ago) by lachlan.longdrop.melbourne.sgi.com
Branch: MAIN
Changes since 1.1: +163 -0 lines
Diff to previous 1.1 (colored)

move xfssyncd code to xfs_sync.c

Move all the xfssyncd code to the new xfs_sync.c file.
This places it closer to the actual code that it interacts
with, rather than just being associated with high level
VFS code.

Signed-off-by: Dave Chinner <david@fromorbit.com>
Merge of xfs-linux-melb:xfs-kern:32283a by kenmcd.

  move xfssyncd code to xfs_sync.c

Revision 1.1 / (download) - annotate - [select for diffs], Fri Oct 10 05:30:53 2008 UTC (9 years ago) by lachlan.longdrop.melbourne.sgi.com
Branch: MAIN

move sync code to its own file

The sync code in XFS is spread around several files.
While it used to make sense to have such a distribution,
the code is about to be cleaned up and so centralising it
in one spot as the first step makes sense.

Signed-off-by: Dave Chinner <david@fromorbit.com>
Merge of xfs-linux-melb:xfs-kern:32282a by kenmcd.

  move sync code to its own file

This form allows you to request diff's between any two revisions of a file. You may select a symbolic revision name using the selection box or you may type in a numeric name using the type-in text box.




FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>