kernel-ark/fs/xfs/linux-2.6
Christoph Hellwig e98c414f9a xfs: simplify log item descriptor tracking
Currently we track log item descriptor belonging to a transaction using a
complex opencoded chunk allocator.  This code has been there since day one
and seems to work around the lack of an efficient slab allocator.

This patch replaces it with dynamically allocated log item descriptors
from a dedicated slab pool, linked to the transaction by a linked list.

This allows to greatly simplify the log item descriptor tracking to the
point where it's just a couple hundred lines in xfs_trans.c instead of
a separate file.  The external API has also been simplified while we're
at it - the xfs_trans_add_item and xfs_trans_del_item functions to add/
delete items from a transaction have been simplified to the bare minium,
and the xfs_trans_find_item function is replaced with a direct dereference
of the li_desc field.  All debug code walking the list of log items in
a transaction is down to a simple list_for_each_entry.

Note that we could easily use a singly linked list here instead of the
double linked list from list.h as the fastpath only does deletion from
sequential traversal.  But given that we don't have one available as
a library function yet I use the list.h functions for simplicity.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
2010-07-26 13:16:34 -05:00
..
kmem.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
kmem.h xfs: replace KM_LARGE with explicit vmalloc use 2010-01-21 13:44:56 -06:00
mrlock.h
sv.h
time.h
xfs_acl.c xfs: constify xattr_handler 2010-05-21 18:31:19 -04:00
xfs_aops.c xfs: remove unneeded #include statements 2010-07-26 13:16:33 -05:00
xfs_aops.h xfs: event tracing support 2009-12-14 23:08:16 -06:00
xfs_buf.c xfs: drop dmapi hooks 2010-07-26 13:16:33 -05:00
xfs_buf.h xfs: add blockdev name to kthreads 2010-05-19 09:58:07 -05:00
xfs_cred.h
xfs_export.c xfs: drop dmapi hooks 2010-07-26 13:16:33 -05:00
xfs_export.h
xfs_file.c xfs: remove unneeded #include statements 2010-07-26 13:16:33 -05:00
xfs_fs_subr.c xfs: drop dmapi hooks 2010-07-26 13:16:33 -05:00
xfs_globals.c
xfs_globals.h
xfs_ioctl32.c xfs: remove unneeded #include statements 2010-07-26 13:16:33 -05:00
xfs_ioctl32.h
xfs_ioctl.c xfs: remove unneeded #include statements 2010-07-26 13:16:33 -05:00
xfs_ioctl.h xfs: convert attr to use unsigned names 2010-01-20 10:47:48 +11:00
xfs_iops.c xfs: remove unneeded #include statements 2010-07-26 13:16:33 -05:00
xfs_iops.h
xfs_linux.h xfs: drop dmapi hooks 2010-07-26 13:16:33 -05:00
xfs_quotaops.c xfs: drop dmapi hooks 2010-07-26 13:16:33 -05:00
xfs_stats.c
xfs_stats.h
xfs_super.c xfs: simplify log item descriptor tracking 2010-07-26 13:16:34 -05:00
xfs_super.h xfs: drop dmapi hooks 2010-07-26 13:16:33 -05:00
xfs_sync.c xfs: remove unneeded #include statements 2010-07-26 13:16:33 -05:00
xfs_sync.h xfs: convert inode shrinker to per-filesystem contexts 2010-07-20 08:07:02 +10:00
xfs_sysctl.c sysctl: Drop & in front of every proc_handler. 2009-11-18 08:37:40 -08:00
xfs_sysctl.h
xfs_trace.c xfs: remove unneeded #include statements 2010-07-26 13:16:33 -05:00
xfs_trace.h xfs: track AGs with reclaimable inodes in per-ag radix tree 2010-07-20 09:43:39 +10:00
xfs_version.h
xfs_vnode.h xfs: event tracing support 2009-12-14 23:08:16 -06:00
xfs_xattr.c xfs: constify xattr_handler 2010-05-21 18:31:19 -04:00