xfs: consume iodone callback items on buffers as they are processed
authorDave Chinner <dchinner@redhat.com>
Fri, 3 Dec 2010 06:00:52 +0000 (17:00 +1100)
committerDave Chinner <david@fromorbit.com>
Fri, 3 Dec 2010 06:00:52 +0000 (17:00 +1100)
commitc90821a26a8c90ad1e3116393b8a8260ab46bffb
tree1970fa2af39b277e375c059d0e5654e890c44511
parente677d0f9548e2245ee3c2977661ca8ca165af188
xfs: consume iodone callback items on buffers as they are processed

To allow buffer iodone callbacks to consume multiple items off the
callback list, first we need to convert the xfs_buf_do_callbacks()
to consume items and always pull the next item from the head of the
list.

The means the item list walk is never dependent on knowing the
next item on the list and hence allows callbacks to remove items
from the list as well. This allows callbacks to do bulk operations
by scanning the list for identical callbacks, consuming them all
and then processing them in bulk, negating the need for multiple
callbacks of that type.

Signed-off-by: Dave Chinner <dchinner@redhat.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
fs/xfs/xfs_buf_item.c