xfs: speed up free inode search
Don't search too far - abort if it is outside a certain radius and simply do a linear search for the first free inode. In AGs with a million inodes this can speed up allocation speed by 3-4x. [hch: ported to the new xfs_ialloc.c world order] Signed-off-by: Dave Chinner <dgc@sgi.com> Signed-off-by: Christoph Hellwig <hch@lst.de> Reviewed-by: Alex Elder <aelder@sgi.com> Signed-off-by: Felix Blyakher <felixb@sgi.com>
This commit is contained in:

committed by
Felix Blyakher

parent
2187550525
commit
bd16956599
@@ -198,6 +198,15 @@ typedef struct xfs_perag
|
||||
xfs_agino_t pagi_count; /* number of allocated inodes */
|
||||
int pagb_count; /* pagb slots in use */
|
||||
xfs_perag_busy_t *pagb_list; /* unstable blocks */
|
||||
|
||||
/*
|
||||
* Inode allocation search lookup optimisation.
|
||||
* If the pagino matches, the search for new inodes
|
||||
* doesn't need to search the near ones again straight away
|
||||
*/
|
||||
xfs_agino_t pagl_pagino;
|
||||
xfs_agino_t pagl_leftrec;
|
||||
xfs_agino_t pagl_rightrec;
|
||||
#ifdef __KERNEL__
|
||||
spinlock_t pagb_lock; /* lock for pagb_list */
|
||||
|
||||
|
Reference in New Issue
Block a user