linux_old1/fs/xfs
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
..
linux-2.6 xfs: simplify log item descriptor tracking 2010-07-26 13:16:34 -05:00
quota xfs: simplify log item descriptor tracking 2010-07-26 13:16:34 -05:00
support xfs: drop dmapi hooks 2010-07-26 13:16:33 -05:00
Kconfig xfs: use generic Posix ACL code 2009-06-10 17:07:47 +02:00
Makefile xfs: simplify log item descriptor tracking 2010-07-26 13:16:34 -05:00
xfs.h xfs: event tracing support 2009-12-14 23:08:16 -06:00
xfs_acl.h xfs: constify xattr_handler 2010-05-21 18:31:19 -04:00
xfs_ag.h xfs: fix access to upper inodes without inode64 2010-05-28 15:19:56 -05:00
xfs_alloc.c xfs: remove unneeded #include statements 2010-07-26 13:16:33 -05:00
xfs_alloc.h xfs: Improve scalability of busy extent tracking 2010-05-24 10:34:00 -05:00
xfs_alloc_btree.c xfs: remove unneeded #include statements 2010-07-26 13:16:33 -05:00
xfs_alloc_btree.h
xfs_arch.h xfs: use generic Posix ACL code 2009-06-10 17:07:47 +02:00
xfs_attr.c xfs: remove unneeded #include statements 2010-07-26 13:16:33 -05:00
xfs_attr.h xfs: convert attr to use unsigned names 2010-01-20 10:47:48 +11:00
xfs_attr_leaf.c xfs: remove unneeded #include statements 2010-07-26 13:16:33 -05:00
xfs_attr_leaf.h
xfs_attr_sf.h xfs: convert attr to use unsigned names 2010-01-20 10:47:48 +11:00
xfs_bit.c
xfs_bit.h
xfs_bmap.c xfs: simplify log item descriptor tracking 2010-07-26 13:16:34 -05:00
xfs_bmap.h xfs: event tracing support 2009-12-14 23:08:16 -06:00
xfs_bmap_btree.c xfs: remove unneeded #include statements 2010-07-26 13:16:33 -05:00
xfs_bmap_btree.h xfs: make several more functions static 2010-01-15 15:31:38 -06:00
xfs_btree.c xfs: remove unneeded #include statements 2010-07-26 13:16:33 -05:00
xfs_btree.h xfs: add more statics & drop some unused functions 2009-08-31 14:46:20 -05:00
xfs_btree_trace.c
xfs_btree_trace.h xfs: event tracing support 2009-12-14 23:08:16 -06:00
xfs_buf_item.c xfs: simplify log item descriptor tracking 2010-07-26 13:16:34 -05:00
xfs_buf_item.h xfs: Ensure inode allocation buffers are fully replayed 2010-05-24 10:41:22 -05:00
xfs_da_btree.c xfs: remove unneeded #include statements 2010-07-26 13:16:33 -05:00
xfs_da_btree.h xfs: convert dirnameops to unsigned char names 2010-01-20 10:47:17 +11:00
xfs_dfrag.c xfs: remove unneeded #include statements 2010-07-26 13:16:33 -05:00
xfs_dfrag.h xfs: clean up inconsistent variable naming in xfs_swap_extent 2010-01-15 15:31:23 -06:00
xfs_dinode.h
xfs_dir2.c xfs: remove unneeded #include statements 2010-07-26 13:16:33 -05:00
xfs_dir2.h xfs: make xfs_dir_cilookup_result use unsigned char 2010-01-20 10:47:25 +11:00
xfs_dir2_block.c xfs: remove unneeded #include statements 2010-07-26 13:16:33 -05:00
xfs_dir2_block.h
xfs_dir2_data.c xfs: remove unneeded #include statements 2010-07-26 13:16:33 -05:00
xfs_dir2_data.h
xfs_dir2_leaf.c xfs: remove unneeded #include statements 2010-07-26 13:16:33 -05:00
xfs_dir2_leaf.h
xfs_dir2_node.c xfs: remove unneeded #include statements 2010-07-26 13:16:33 -05:00
xfs_dir2_node.h xfs: make several more functions static 2010-01-15 15:31:38 -06:00
xfs_dir2_sf.c xfs: remove unneeded #include statements 2010-07-26 13:16:33 -05:00
xfs_dir2_sf.h
xfs_error.c xfs: remove unneeded #include statements 2010-07-26 13:16:33 -05:00
xfs_error.h xfs: add const qualifiers to xfs error function args 2010-05-19 09:58:11 -05:00
xfs_extfree_item.c xfs: simplify log item descriptor tracking 2010-07-26 13:16:34 -05:00
xfs_extfree_item.h
xfs_filestream.c xfs: remove unneeded #include statements 2010-07-26 13:16:33 -05:00
xfs_filestream.h xfs: Kill filestreams cache flush 2010-01-15 15:34:22 -06:00
xfs_fs.h xfs: return inode fork offset in bulkstat for fsr 2010-03-05 11:02:07 -06:00
xfs_fsops.c xfs: remove unneeded #include statements 2010-07-26 13:16:33 -05:00
xfs_fsops.h
xfs_ialloc.c xfs: remove unneeded #include statements 2010-07-26 13:16:33 -05:00
xfs_ialloc.h xfs: rationalize xfs_inobt_lookup* 2009-09-01 12:45:39 -05:00
xfs_ialloc_btree.c xfs: remove unneeded #include statements 2010-07-26 13:16:33 -05:00
xfs_ialloc_btree.h
xfs_iget.c xfs: remove unneeded #include statements 2010-07-26 13:16:33 -05:00
xfs_inode.c xfs: remove unneeded #include statements 2010-07-26 13:16:33 -05:00
xfs_inode.h xfs: remove block number from inode lookup code 2010-06-24 11:35:17 +10:00
xfs_inode_item.c xfs: remove unneeded #include statements 2010-07-26 13:16:33 -05:00
xfs_inode_item.h xfs: Don't issue buffer IO direct from AIL push V2 2010-02-02 10:13:42 +11:00
xfs_inum.h xfs: remove XFS_INO64_OFFSET 2009-08-31 14:46:22 -05:00
xfs_iomap.c xfs: remove unneeded #include statements 2010-07-26 13:16:33 -05:00
xfs_iomap.h xfs: mark xfs_iomap_write_ helpers static 2010-05-19 09:58:20 -05:00
xfs_itable.c xfs: remove unneeded #include statements 2010-07-26 13:16:33 -05:00
xfs_itable.h xfs: remove block number from inode lookup code 2010-06-24 11:35:17 +10:00
xfs_log.c xfs: remove unneeded #include statements 2010-07-26 13:16:33 -05:00
xfs_log.h xfs: Ensure inode allocation buffers are fully replayed 2010-05-24 10:41:22 -05:00
xfs_log_cil.c xfs: remove unneeded #include statements 2010-07-26 13:16:33 -05:00
xfs_log_priv.h xfs: enable background pushing of the CIL 2010-05-24 10:38:20 -05:00
xfs_log_recover.c xfs: remove unneeded #include statements 2010-07-26 13:16:33 -05:00
xfs_log_recover.h xfs: Clean up XFS_BLI_* flag namespace 2010-05-24 10:33:39 -05:00
xfs_mount.c xfs: remove unneeded #include statements 2010-07-26 13:16:33 -05:00
xfs_mount.h xfs: drop dmapi hooks 2010-07-26 13:16:33 -05:00
xfs_mru_cache.c xfs: Kill filestreams cache flush 2010-01-15 15:34:22 -06:00
xfs_mru_cache.h xfs: Kill filestreams cache flush 2010-01-15 15:34:22 -06:00
xfs_quota.h xfs: removed unused XFS_QMOPT_ flags 2010-05-19 09:58:15 -05:00
xfs_refcache.h
xfs_rename.c xfs: remove unneeded #include statements 2010-07-26 13:16:33 -05:00
xfs_rtalloc.c xfs: remove unneeded #include statements 2010-07-26 13:16:33 -05:00
xfs_rtalloc.h xfs: be more explicit if RT mount fails due to config 2010-05-28 14:58:24 -05:00
xfs_rw.c xfs: remove unneeded #include statements 2010-07-26 13:16:33 -05:00
xfs_rw.h xfs: only clear the suid bit once in xfs_write 2010-02-12 13:43:57 -06:00
xfs_sb.h
xfs_trans.c xfs: simplify log item descriptor tracking 2010-07-26 13:16:34 -05:00
xfs_trans.h xfs: simplify log item descriptor tracking 2010-07-26 13:16:34 -05:00
xfs_trans_ail.c xfs: drop dmapi hooks 2010-07-26 13:16:33 -05:00
xfs_trans_buf.c xfs: simplify log item descriptor tracking 2010-07-26 13:16:34 -05:00
xfs_trans_extfree.c xfs: simplify log item descriptor tracking 2010-07-26 13:16:34 -05:00
xfs_trans_inode.c xfs: simplify log item descriptor tracking 2010-07-26 13:16:34 -05:00
xfs_trans_priv.h xfs: simplify log item descriptor tracking 2010-07-26 13:16:34 -05:00
xfs_trans_space.h
xfs_types.h xfs: make the log ticket ID available outside the log infrastructure 2010-05-24 10:33:52 -05:00
xfs_utils.c xfs: remove unneeded #include statements 2010-07-26 13:16:33 -05:00
xfs_utils.h
xfs_vnodeops.c xfs: remove unneeded #include statements 2010-07-26 13:16:33 -05:00
xfs_vnodeops.h xfs: kill xfs_lrw.h 2010-03-01 16:35:44 -06:00