diff options
author | David Chinner <dgc@sgi.com> | 2006-04-11 15:11:12 +1000 |
---|---|---|
committer | Nathan Scott <nathans@sgi.com> | 2006-04-11 15:11:12 +1000 |
commit | 1fc5d959d88a5f77aa7e4435f6c9d0e2d2236704 (patch) | |
tree | 0a2d3fce6b4e296f2d2dfbfdd5a58c19624d754b /fs/xfs/xfs_inode.h | |
parent | 8272145c05c6d01a34f5114357c5e8093fb66472 (diff) | |
download | kernel-common-1fc5d959d88a5f77aa7e4435f6c9d0e2d2236704.tar.gz kernel-common-1fc5d959d88a5f77aa7e4435f6c9d0e2d2236704.tar.bz2 kernel-common-1fc5d959d88a5f77aa7e4435f6c9d0e2d2236704.zip |
[XFS] Fix inode reclaim scalability regression. When a filesystem has
millions of inodes cached and has sparse cluster population, removing
inodes from the cluster hash consumes excessive amounts of CPU time.
Reduce the CPU cost by making removal O(1) via use of a double linked list
for the hash chains.
SGI-PV: 951551
SGI-Modid: xfs-linux-melb:xfs-kern:25683a
Signed-off-by: David Chinner <dgc@sgi.com>
Signed-off-by: Nathan Scott <nathans@sgi.com>
Diffstat (limited to 'fs/xfs/xfs_inode.h')
-rw-r--r-- | fs/xfs/xfs_inode.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/fs/xfs/xfs_inode.h b/fs/xfs/xfs_inode.h index 39ef9c36ea55..3b544db1790b 100644 --- a/fs/xfs/xfs_inode.h +++ b/fs/xfs/xfs_inode.h @@ -189,6 +189,7 @@ typedef struct xfs_ihash { */ typedef struct xfs_chashlist { struct xfs_chashlist *chl_next; + struct xfs_chashlist *chl_prev; struct xfs_inode *chl_ip; xfs_daddr_t chl_blkno; /* starting block number of * the cluster */ |