This series reduces AIL locking overhead by introducing bulk operations for insert and delete. With delayed logging, we can be doing insert operations on thousands of items at a time, so using a bulk operation to reduce AIL lock traffic is a major win in terms of reducing contention on the lock. Similarly, when we have inode buffer IO completion running on multiple CPUs at once, the AIl lock contention from each individual AIL removal is significant. By batching all the inodes on the buffer to be removed from the AIL in a single bulk operation, contention on the AIL is reduced by an order of magnitude. Finally, there is a modification to the xfsaild wakeup code to prevent too many wakeups when the xfsaild is pausing waiting for some work to complete. This prevents an excessive number of AIL scanning traversals by the xfsaild when tail pushing is backing off and waiting for some IO to complete. In combination, these modification reduce AIL lock contention sufficiently to drop the AIL lock out of the "top 10" contended locks on 8-way fs_mark and dbench workloads. Version 3: - split XFS_EFI_CANCELED fixup into separate patch - initialised efi_next_extent correctly - converted XFS_EFI_RECOVERED to use correct bit set/clear operations - removed unneeded clearing of XFS_EFI_COMMITTED in recovery. - added helper for freeing an EFI. - cleaned up log item array variable naming. - cleaned up bulk AIL operation comments. Version 2: - split out stale inode AIL insertion bug fix - split bulk AIL insertion into multiple patches - EFI/EFD handling changes - stale inode AIL insertion bug fix - simplify code calling xfs_ail_delete - bulk ail insertion modifications - use atomic_inc_return for extent recording in xfs_trans_log_efi_extent() - modified AIL sleep code to explicitly set task state as suggested by Christoph. - split AIL bulk deletion into two patches - buffer iodone callback modifications - bulk AIL deletion and inode iodone callback mods. - removed lip parameter from xfs_buf_do_callbacks() as the loop fetches it from the buffer anyway. - fixed unused variable warning in xfs_buf_do_callbacks(). - added two new patches to reduce code duplication - use AIL bulk insertion function to implement single updates - use AIL bulk delete function to implement single deletes _______________________________________________ xfs mailing list xfs@xxxxxxxxxxx http://oss.sgi.com/mailman/listinfo/xfs