Up to [Development] / xfs-linux-nodel
Request diff between arbitrary revisions
Default branch: MAIN
Revision 1.36 / (download) - annotate - [select for diffs], Fri Oct 17 02:58:35 2008 UTC (8 years, 11 months ago) by lachlan.longdrop.melbourne.sgi.com
Branch: MAIN
CVS Tags: HEAD
Changes since 1.35: +9 -6
lines
Diff to previous 1.35 (colored)
Finish removing the mount pointer from the AIL API Change all the remaining AIL API functions that are passed struct xfs_mount pointers to pass pointers directly to the struct xfs_ail being used. With this conversion, all external access to the AIL is via the struct xfs_ail. Hence the operation and referencing of the AIL is almost entirely independent of the xfs_mount that is using it - it is now much more tightly tied to the log and the items it is tracking in the log than it is tied to the xfs_mount. Signed-off-by: Dave Chinner <david@fromorbit.com> Merge of xfs-linux-melb:xfs-kern:32353a by kenmcd. Finish removing the mount pointer from the AIL API
Revision 1.35 / (download) - annotate - [select for diffs], Thu Oct 16 05:23:50 2008 UTC (8 years, 11 months ago) by lachlan.longdrop.melbourne.sgi.com
Branch: MAIN
Changes since 1.34: +3 -2
lines
Diff to previous 1.34 (colored)
Move the AIL lock into the struct xfs_ail Bring the ail lock inside the struct xfs_ail. This means the AIL can be entirely manipulated via the struct xfs_ail rather than needing both the struct xfs_mount and the struct xfs_ail. Signed-off-by: Dave Chinner <david@fromorbit.com> Merge of xfs-linux-melb:xfs-kern:32350a by kenmcd. Move the AIL lock into the struct xfs_ail
Revision 1.34 / (download) - annotate - [select for diffs], Thu Oct 16 05:22:47 2008 UTC (8 years, 11 months ago) by lachlan.longdrop.melbourne.sgi.com
Branch: MAIN
Changes since 1.33: +23 -0
lines
Diff to previous 1.33 (colored)
Allow 64 bit machines to avoid the AIL lock during flushes When copying lsn's from the log item to the inode or dquot flush lsn, we currently grab the AIL lock. We do this because the LSN is a 64 bit quantity and it needs to be read atomically. The lock is used to guarantee atomicity for 32 bit platforms. Make the LSN copying a small function, and make the function used conditional on BITS_PER_LONG so that 64 bit machines don't need to take the AIL lock in these places. Signed-off-by: Dave Chinner <david@fromorbit.com> Merge of xfs-linux-melb:xfs-kern:32349a by kenmcd. Allow 64 bit machines to avoid the AIL lock during flushes
Revision 1.33 / (download) - annotate - [select for diffs], Thu Oct 16 05:21:47 2008 UTC (8 years, 11 months ago) by lachlan.longdrop.melbourne.sgi.com
Branch: MAIN
Changes since 1.32: +7 -6
lines
Diff to previous 1.32 (colored)
move the AIl traversal over to a consistent interface With the new cursor interface, it makes sense to make all the traversing code use the cursor interface and make the old one go away. This means more of the AIL interfacing is done by passing struct xfs_ail pointers around the place instead of struct xfs_mount pointers. We can replace the use of xfs_trans_first_ail() in xfs_log_need_covered() as it is only checking if the AIL is empty. We can do that with a call to xfs_trans_ail_tail() instead, where a zero LSN returned indicates and empty AIL... Signed-off-by: Dave Chinner <david@fromorbit.com> Merge of xfs-linux-melb:xfs-kern:32348a by kenmcd. move the AIl traversal over to a consistent interface
Revision 1.32 / (download) - annotate - [select for diffs], Thu Oct 16 05:20:53 2008 UTC (8 years, 11 months ago) by lachlan.longdrop.melbourne.sgi.com
Branch: MAIN
Changes since 1.31: +44 -11
lines
Diff to previous 1.31 (colored)
Use a cursor for AIL traversal. To replace the current generation number ensuring sanity of the AIL traversal, replace it with an external cursor that is linked to the AIL. Basically, we store the next item in the cursor whenever we want to drop the AIL lock to do something to the current item. When we regain the lock. the current item may already be free, so we can't reference it, but the next item in the traversal is already held in the cursor. When we move or delete an object, we search all the active cursors and if there is an item match we clear the cursor(s) that point to the object. This forces the traversal to restart transparently. We don't invalidate the cursor on insert because the cursor still points to a valid item. If the intem is inserted between the current item and the cursor it does not matter; the traversal is considered to be past the insertion point so it will be picked up in the next traversal. Hence traversal restarts pretty much disappear altogether with this method of traversal, which should substantially reduce the overhead of pushing on a busy AIL. Version 2 o add restart logic o comment cursor interface o minor cleanups Signed-off-by: Dave Chinner <david@fromorbit.com> Merge of xfs-linux-melb:xfs-kern:32347a by kenmcd. Use a cursor for AIL traversal.
Revision 1.31 / (download) - annotate - [select for diffs], Thu Oct 16 05:20:00 2008 UTC (8 years, 11 months ago) by lachlan.longdrop.melbourne.sgi.com
Branch: MAIN
Changes since 1.30: +12 -5
lines
Diff to previous 1.30 (colored)
Allocate the struct xfs_ail Rather than embedding the struct xfs_ail in the struct xfs_mount, allocate it during AIL initialisation. Add a back pointer to the struct xfs_ail so that we can pass around the xfs_ail and still be able to access the xfs_mount if need be. This is th first step involved in isolating the AIL implementation from the surrounding filesystem code. Signed-off-by: Dave Chinner <david@fromorbit.com> Merge of xfs-linux-melb:xfs-kern:32346a by kenmcd. Allocate the struct xfs_ail
Revision 1.30 / (download) - annotate - [select for diffs], Fri Jan 18 15:06:09 2008 UTC (9 years, 8 months ago) by dgc.longdrop.melbourne.sgi.com
Branch: MAIN
Changes since 1.29: +8 -0
lines
Diff to previous 1.29 (colored)
Move AIL pushing into it's own thread When many hundreds to thousands of threads all try to do simultaneous transactions and the log is in a tail-pushing situation (i.e. full), we can get multiple threads walking the AIL list and contending on the AIL lock. The AIL push is, in effect, a simple I/O dispatch algorithm complicated by the ordering constraints placed on it by the transaction subsystem. It really does not need multiple threads to push on it - even when only a single CPU is pushing the AIL, it can push the I/O out far faster that pretty much any disk subsystem can handle. So, to avoid contention problems stemming from multiple list walkers, move the list walk off into another thread and simply provide a "target" to push to. When a thread requires a push, it sets the target and wakes the push thread, then goes to sleep waiting for the required amount of space to become available in the log. This mechanism should also be a lot fairer under heavy load as the waiters will queue in arrival order, rather than queuing in "who completed a push first" order. Also, by moving the pushing to a separate thread we can do more effectively overload detection and prevention as we can keep context from loop iteration to loop iteration. That is, we can push only part of the list each loop and not have to loop back to the start of the list every time we run. This should also help by reducing the number of items we try to lock and/or push items that we cannot move. Note that this patch is not intended to solve the inefficiencies in the AIL structure and the associated issues with extremely large list contents. That needs to be addresses separately; parallel access would cause problems to any new structure as well, so I'm only aiming to isolate the structure from unbounded parallelism here. Merge of xfs-linux-melb:xfs-kern:30371a by kenmcd. Define private AIl threading interface functions.
Revision 1.29 / (download) - annotate - [select for diffs], Fri Sep 21 04:09:25 2007 UTC (10 years ago) by donaldd.longdrop.melbourne.sgi.com
Branch: MAIN
Changes since 1.28: +2 -3
lines
Diff to previous 1.28 (colored)
Unwrap AIL_LOCK Merge of xfs-linux-melb:xfs-kern:29739a by kenmcd.
Revision 1.28 / (download) - annotate - [select for diffs], Fri Aug 18 04:06:19 2006 UTC (11 years, 1 month ago) by nathans.longdrop.melbourne.sgi.com
Branch: MAIN
Changes since 1.27: +7 -5
lines
Diff to previous 1.27 (colored)
Add lock annotations to xfs_trans_update_ail and xfs_trans_delete_ail xfs_trans_update_ail and xfs_trans_delete_ail get called with the AIL lock held, and release it. Add lock annotations to these two functions so that sparse can check callers for lock pairing, and so that sparse will not complain about these functions since they intentionally use locks in this manner. Signed-off-by: Josh Triplett <josh@freedesktop.org> Merge of xfs-linux-melb:xfs-kern:26807a by kenmcd. Add lock annotations to xfs_trans_update_ail and xfs_trans_delete_ail
Revision 1.27 / (download) - annotate - [select for diffs], Fri Sep 23 03:51:28 2005 UTC (12 years ago) by nathans.longdrop.melbourne.sgi.com
Branch: MAIN
Changes since 1.26: +12 -26
lines
Diff to previous 1.26 (colored)
Update license/copyright notices to match the prefered SGI boilerplate. Merge of xfs-linux-melb:xfs-kern:23903a by kenmcd.
Revision 1.26 / (download) - annotate - [select for diffs], Fri Jun 27 18:04:26 2003 UTC (14 years, 3 months ago) by cattelan
Branch: MAIN
Changes since 1.25: +73 -0
lines
Diff to previous 1.25 (colored)
The Big Move linux/fs/xfs/xfs_trans_priv.h 1.24 Renamed to xfs_trans_priv.h
Revision 1.25 / (download) - annotate - [select for diffs], Fri Jun 27 17:57:21 2003 UTC (14 years, 3 months ago) by cattelan
Branch: MAIN
CVS Tags: DENUKE
Changes since 1.24: +0 -73
lines
Diff to previous 1.24 (colored)
Nuke
Revision 1.24 / (download) - annotate - [select for diffs], Tue Apr 15 23:16:46 2003 UTC (14 years, 6 months ago) by cattelan
Branch: MAIN
CVS Tags: XFS-1_3_0pre1
Changes since 1.23: +2 -2
lines
Diff to previous 1.23 (colored)
Whitespace cleanup Clean up some whitespace... revert some whitespace changes from previous whitespace cleanup (incorrect tabs)
Revision 1.23 / (download) - annotate - [select for diffs], Wed Jul 10 19:00:42 2002 UTC (15 years, 3 months ago) by sandeen
Branch: MAIN
Changes since 1.22: +12 -12
lines
Diff to previous 1.22 (colored)
whitespace cleanup
Revision 1.22 / (download) - annotate - [select for diffs], Tue Jun 4 16:30:46 2002 UTC (15 years, 4 months ago) by sandeen
Branch: MAIN
Changes since 1.21: +1 -1
lines
Diff to previous 1.21 (colored)
Update copyright dates
Revision 1.21 / (download) - annotate - [select for diffs], Thu Mar 28 03:30:43 2002 UTC (15 years, 6 months ago) by lord
Branch: MAIN
Changes since 1.20: +1 -1
lines
Diff to previous 1.20 (colored)
use unsigned long to hold irq state
Revision 1.20 / (download) - annotate - [select for diffs], Thu Mar 28 03:18:22 2002 UTC (15 years, 6 months ago) by lord
Branch: MAIN
Changes since 1.19: +2 -1
lines
Diff to previous 1.19 (colored)
ensure unsigned long used to store irq state
Revision 1.19 / (download) - annotate - [select for diffs], Wed Mar 6 20:12:43 2002 UTC (15 years, 7 months ago) by lord
Branch: MAIN
Changes since 1.18: +0 -11
lines
Diff to previous 1.18 (colored)
remove ancient INTERRUPT_LATENCY_TESTING code
Revision 1.18 / (download) - annotate - [select for diffs], Fri Feb 15 20:47:53 2002 UTC (15 years, 7 months ago) by lord
Branch: MAIN
Changes since 1.17: +4 -1
lines
Diff to previous 1.17 (colored)
Prototypes for busy list management.
Revision 1.17 / (download) - annotate - [select for diffs], Mon Sep 25 05:42:07 2000 UTC (17 years ago) by nathans
Branch: MAIN
CVS Tags: Release-1_0_0,
PreRelease-0_10,
Linux-2_4_5-merge
Changes since 1.16: +3 -5
lines
Diff to previous 1.16 (colored)
use xfs.h, remove all traces of SIM, push extern declarations into headers, dead code removal.
Revision 1.16 / (download) - annotate - [select for diffs], Fri Jun 9 02:50:02 2000 UTC (17 years, 4 months ago) by kenmcd
Branch: MAIN
CVS Tags: GPL-ENCUMBRANCE
Changes since 1.15: +26 -13
lines
Diff to previous 1.15 (colored)
Updated copyright and license notices, ready for open source release Merge of 2.3.99pre2-xfs:slinx:55821a by ananth.
Revision 1.15 / (download) - annotate - [select for diffs], Sun Jan 30 09:59:06 2000 UTC (17 years, 8 months ago) by kenmcd
Branch: MAIN
CVS Tags: DELETE
Changes since 1.14: +11 -16
lines
Diff to previous 1.14 (colored)
Encumbrance review done. Add copyright and license words consistent with GPL. Refer to http://fsg.melbourne.sgi.com/reviews/ for details. There is a slight change in the license terms and conditions words to go with the copyrights, so most of the files are not getting new GPL's, just updated versions ... but there are 20-30 more files here as well.
Revision 1.14 / (download) - annotate - [select for diffs], Mon Jan 3 21:41:53 2000 UTC (17 years, 9 months ago) by kenmcd
Branch: MAIN
Changes since 1.13: +24 -1
lines
Diff to previous 1.13 (colored)
Encumbrance review done. Add copyright and license words consistent with GPL.
Revision 1.13 / (download) - annotate - [select for diffs], Fri May 14 20:13:13 1999 UTC (18 years, 5 months ago) by lord
Branch: MAIN
Changes since 1.12: +3 -2
lines
Diff to previous 1.12 (colored)
Merge from irix/cxfs-f to irix/irix6.5f Merge of cxfs-f:irix:15011b created by lord on 05/11/99 Merge from irix/cxfs to irix/cxfs-f Merge of cxfs:irix:13423a created by lord on 04/19/99 CXFS infrastructure checkin
Revision 1.12 / (download) - annotate - [select for diffs], Sun Oct 12 08:07:13 1997 UTC (20 years ago) by nigel
Branch: MAIN
Changes since 1.11: +4 -4
lines
Diff to previous 1.11 (colored)
Remove ifdefs for INTR_KTHREADS and BASE_ITHREADS
Revision 1.11 / (download) - annotate - [select for diffs], Thu Aug 15 17:57:01 1996 UTC (21 years, 2 months ago) by alexp
Branch: MAIN
Changes since 1.10: +2 -2
lines
Diff to previous 1.10 (colored)
Change AIL_LOCK from mutex back to spinlock for AIM performance regression reasons. Left mutex code under "ifdef INTERRUPT_LATENCY_TESTING" so we can continue to find latency problems without hitting the AIL spinlock problem.
Revision 1.10 / (download) - annotate - [select for diffs], Fri Jul 26 21:20:08 1996 UTC (21 years, 2 months ago) by alexp
Branch: MAIN
Changes since 1.9: +13 -1
lines
Diff to previous 1.9 (colored)
Convert AIL_LOCK from mutex_spinlock to mutex under "ifdef INTR_KTHREADS"
Revision 1.9 / (download) - annotate - [select for diffs], Wed Apr 26 22:50:14 1995 UTC (22 years, 5 months ago) by ajs
Branch: MAIN
Changes since 1.8: +2 -9
lines
Diff to previous 1.8 (colored)
Fixing up recovery from disk errors.
Revision 1.8 / (download) - annotate - [select for diffs], Fri Mar 31 20:06:02 1995 UTC (22 years, 6 months ago) by doucette
Branch: MAIN
Changes since 1.7: +28 -23
lines
Diff to previous 1.7 (colored)
Add an #ident line. Use struct xxx * instead of xxx_t * in xfs header files to avoid unnecessary dependencies between header files.
Revision 1.7 / (download) - annotate - [select for diffs], Thu Mar 9 04:12:23 1995 UTC (22 years, 7 months ago) by ajs
Branch: MAIN
Changes since 1.6: +2 -2
lines
Diff to previous 1.6 (colored)
Change prototypes.
Revision 1.6 / (download) - annotate - [select for diffs], Thu Mar 17 00:39:01 1994 UTC (23 years, 7 months ago) by miken
Branch: MAIN
Changes since 1.5: +0 -1
lines
Diff to previous 1.5 (colored)
Move xfs_trans_push_ail() prototype
Revision 1.5 / (download) - annotate - [select for diffs], Thu Mar 10 19:08:12 1994 UTC (23 years, 7 months ago) by ajs
Branch: MAIN
Changes since 1.4: +3 -2
lines
Diff to previous 1.4 (colored)
Re-do the prototype for xfs_trans_push_ail().
Revision 1.4 / (download) - annotate - [select for diffs], Fri Dec 31 22:48:52 1993 UTC (23 years, 9 months ago) by ajs
Branch: MAIN
Changes since 1.3: +20 -21
lines
Diff to previous 1.3 (colored)
Fix up some prototypes.
Revision 1.3 / (download) - annotate - [select for diffs], Thu Nov 25 01:27:15 1993 UTC (23 years, 10 months ago) by ajs
Branch: MAIN
Changes since 1.2: +0 -6
lines
Diff to previous 1.2 (colored)
Clean up.
Revision 1.2 / (download) - annotate - [select for diffs], Wed Nov 17 02:18:07 1993 UTC (23 years, 11 months ago) by ajs
Branch: MAIN
Changes since 1.1: +9 -8
lines
Diff to previous 1.1 (colored)
Code cleanup.
Revision 1.1 / (download) - annotate - [select for diffs], Fri Oct 29 00:21:28 1993 UTC (23 years, 11 months ago) by ajs
Branch: MAIN
Initial revision