[PATCH 06/17] xfs: simplify log item descriptor tracking

Dave Chinner david at fromorbit.com
Wed Jun 2 00:11:47 CDT 2010


On Mon, May 31, 2010 at 12:07:33PM -0400, Christoph Hellwig wrote:
> 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.
> 
> [the patch applies ontop of Dave's delayed-logging branch]
> 
> Signed-off-by: Christoph Hellwig <hch at lst.de>

Looks OK - nothing jumps out at me as being incorrect. I'm still
running QA on it, but it looks good so far.

Reviewed-by: Dave Chinner <dchinner at redhat.com>

-- 
Dave Chinner
david at fromorbit.com




More information about the xfs mailing list