linux/fs/xfs
Hugh Dickins 4c21e2f244 [PATCH] mm: split page table lock
Christoph Lameter demonstrated very poor scalability on the SGI 512-way, with
a many-threaded application which concurrently initializes different parts of
a large anonymous area.

This patch corrects that, by using a separate spinlock per page table page, to
guard the page table entries in that page, instead of using the mm's single
page_table_lock.  (But even then, page_table_lock is still used to guard page
table allocation, and anon_vma allocation.)

In this implementation, the spinlock is tucked inside the struct page of the
page table page: with a BUILD_BUG_ON in case it overflows - which it would in
the case of 32-bit PA-RISC with spinlock debugging enabled.

Splitting the lock is not quite for free: another cacheline access.  Ideally,
I suppose we would use split ptlock only for multi-threaded processes on
multi-cpu machines; but deciding that dynamically would have its own costs.
So for now enable it by config, at some number of cpus - since the Kconfig
language doesn't support inequalities, let preprocessor compare that with
NR_CPUS.  But I don't think it's worth being user-configurable: for good
testing of both split and unsplit configs, split now at 4 cpus, and perhaps
change that to 8 later.

There is a benefit even for singly threaded processes: kswapd can be attacking
one part of the mm while another part is busy faulting.

Signed-off-by: Hugh Dickins <hugh@veritas.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-10-29 21:40:42 -07:00
..
linux-2.6 [PATCH] mm: split page table lock 2005-10-29 21:40:42 -07:00
quota [XFS] Fix modular XFS builds (Makefile botch). 2005-09-08 15:38:52 +10:00
support [PATCH] more SPIN_LOCK_UNLOCKED -> DEFINE_SPINLOCK conversions 2005-09-09 14:03:48 -07:00
Kconfig [XFS] Remove special Kconfig XFS menu, make XFS options "inline". 2005-09-08 15:34:58 +10:00
Makefile [XFS] Sort out some cosmetic differences between XFS trees. 2005-09-05 11:47:01 +10:00
Makefile-linux-2.6 [XFS] Revert recent quota Makefile change, not in a fit state for merging. 2005-09-09 11:38:09 +10:00
xfs_acl.c [XFS] remove struct vnode::v_type 2005-09-02 16:46:51 +10:00
xfs_acl.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
xfs_ag.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
xfs_alloc_btree.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
xfs_alloc_btree.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
xfs_alloc.c [XFS] mark various symbols static Patch from Adrian Bunk 2005-06-21 15:36:52 +10:00
xfs_alloc.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
xfs_arch.h [XFS] Cleanup some -Wundef flag warnings in the endian macros (thanks 2005-09-08 15:30:05 +10:00
xfs_attr_leaf.c [XFS] mark various symbols static Patch from Adrian Bunk 2005-06-21 15:36:52 +10:00
xfs_attr_leaf.h [XFS] mark various symbols static Patch from Adrian Bunk 2005-06-21 15:36:52 +10:00
xfs_attr_sf.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
xfs_attr.c [XFS] mark various symbols static Patch from Adrian Bunk 2005-06-21 15:36:52 +10:00
xfs_attr.h [XFS] mark various symbols static Patch from Adrian Bunk 2005-06-21 15:36:52 +10:00
xfs_behavior.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
xfs_behavior.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
xfs_bit.c [XFS] mark various symbols static Patch from Adrian Bunk 2005-06-21 15:36:52 +10:00
xfs_bit.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
xfs_bmap_btree.c [XFS] Cleanup some -Wundef flag warnings in the endian macros (thanks 2005-09-08 15:30:05 +10:00
xfs_bmap_btree.h [XFS] Cleanup some -Wundef flag warnings in the endian macros (thanks 2005-09-08 15:30:05 +10:00
xfs_bmap.c [XFS] Prevent the incore superblock sb_fdblocks count from leaking when we 2005-09-02 16:40:47 +10:00
xfs_bmap.h [XFS] mark various symbols static Patch from Adrian Bunk 2005-06-21 15:36:52 +10:00
xfs_btree.c [XFS] Fix up some warning fallout from functions made static 2005-06-21 15:39:44 +10:00
xfs_btree.h [XFS] mark various symbols static Patch from Adrian Bunk 2005-06-21 15:36:52 +10:00
xfs_buf_item.c [XFS] 929956 add log debugging and tracing info 2005-09-02 16:42:05 +10:00
xfs_buf_item.h [XFS] Add support for project quota, based on Dan Knappes earlier work. 2005-06-21 15:38:48 +10:00
xfs_cap.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
xfs_clnt.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
xfs_da_btree.c [XFS] mark various symbols static Patch from Adrian Bunk 2005-06-21 15:36:52 +10:00
xfs_da_btree.h [XFS] mark various symbols static Patch from Adrian Bunk 2005-06-21 15:36:52 +10:00
xfs_dfrag.c [XFS] (mostly) remove xfs_inval_cached_pages Since the last round of 2005-06-21 15:47:39 +10:00
xfs_dfrag.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
xfs_dinode.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
xfs_dir2_block.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
xfs_dir2_block.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
xfs_dir2_data.c [XFS] mark various symbols static Patch from Adrian Bunk 2005-06-21 15:36:52 +10:00
xfs_dir2_data.h [XFS] mark various symbols static Patch from Adrian Bunk 2005-06-21 15:36:52 +10:00
xfs_dir2_leaf.c [XFS] Fix up some warning fallout from functions made static 2005-06-21 15:39:44 +10:00
xfs_dir2_leaf.h [XFS] mark various symbols static Patch from Adrian Bunk 2005-06-21 15:36:52 +10:00
xfs_dir2_node.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
xfs_dir2_node.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
xfs_dir2_sf.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
xfs_dir2_sf.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
xfs_dir2_trace.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
xfs_dir2_trace.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
xfs_dir2.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
xfs_dir2.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
xfs_dir_leaf.c [XFS] mark various symbols static Patch from Adrian Bunk 2005-06-21 15:36:52 +10:00
xfs_dir_leaf.h [XFS] Cleanup some -Wundef flag warnings in the endian macros (thanks 2005-09-08 15:30:05 +10:00
xfs_dir_sf.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
xfs_dir.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
xfs_dir.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
xfs_dmapi.h [XFS] Update copyrights 2005-09-02 15:30:57 +10:00
xfs_dmops.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
xfs_error.c [XFS] mark various symbols static Patch from Adrian Bunk 2005-06-21 15:36:52 +10:00
xfs_error.h [XFS] mark various symbols static Patch from Adrian Bunk 2005-06-21 15:36:52 +10:00
xfs_extfree_item.c [XFS] 929956 add log debugging and tracing info 2005-09-02 16:42:05 +10:00
xfs_extfree_item.h [XFS] consolidate extent item freeing 2005-06-21 15:41:19 +10:00
xfs_fs.h [XFS] Makes more sense to use the fsxattr interface instead of adding new 2005-06-21 15:48:04 +10:00
xfs_fsops.c [XFS] Remove dead code. Patch from Adrian Bunk 2005-06-21 15:36:00 +10:00
xfs_fsops.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
xfs_ialloc_btree.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
xfs_ialloc_btree.h [XFS] add XFS_INOBT_IS_FREE_DISK 2005-06-21 15:40:20 +10:00
xfs_ialloc.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
xfs_ialloc.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
xfs_iget.c [XFS] Retry linux inode cacech lookup if we found a stale inode. This 2005-09-05 08:33:00 +10:00
xfs_imap.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
xfs_inode_item.c [XFS] Cleanup some -Wundef flag warnings in the endian macros (thanks 2005-09-08 15:30:05 +10:00
xfs_inode_item.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
xfs_inode.c [XFS] remove struct vnode::v_type 2005-09-02 16:46:51 +10:00
xfs_inode.h [XFS] rewrite xfs_iflush_all 2005-06-21 15:37:17 +10:00
xfs_inum.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
xfs_iocore.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
xfs_iomap.c [XFS] Fix incorrect use of BMAPI_READ in unwritten extent handling 2005-09-05 10:06:55 +10:00
xfs_iomap.h [XFS] Cleanup use of loff_t vs xfs_off_t in the core code. 2005-05-05 13:33:40 -07:00
xfs_itable.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
xfs_itable.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
xfs_log_priv.h [XFS] Cleanup some -Wundef flag warnings in the endian macros (thanks 2005-09-08 15:30:05 +10:00
xfs_log_recover.c [XFS] Fix sparse warnings in kmem_* functions Patch from Victor Fusco 2005-09-02 16:56:02 +10:00
xfs_log_recover.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
xfs_log.c [XFS] 929956 add log debugging and tracing info 2005-09-02 16:42:05 +10:00
xfs_log.h [XFS] 929956 add log debugging and tracing info 2005-09-02 16:42:05 +10:00
xfs_mac.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
xfs_macros.c [XFS] add XFS_INOBT_IS_FREE_DISK 2005-06-21 15:40:20 +10:00
xfs_macros.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
xfs_mount.c [XFS] remove xfs_incore_relse 2005-06-21 15:38:03 +10:00
xfs_mount.h [XFS] Add support for project quota, based on Dan Knappes earlier work. 2005-06-21 15:38:48 +10:00
xfs_qmops.c [XFS] Need to be able to reset sb_qflags if not mounting with quotas 2005-09-05 08:24:10 +10:00
xfs_quota.h [XFS] Need to be able to reset sb_qflags if not mounting with quotas 2005-09-05 08:24:10 +10:00
xfs_refcache.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
xfs_rename.c [XFS] Remove dead code. Patch from Adrian Bunk 2005-06-21 15:36:00 +10:00
xfs_rtalloc.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
xfs_rtalloc.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
xfs_rw.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
xfs_rw.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
xfs_sb.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
xfs_trans_ail.c [XFS] Need to unlock the AIL before calling xfs_force_shutdown() because 2005-09-02 16:52:55 +10:00
xfs_trans_buf.c [XFS] Fixes a bug in the quota code when allocating a new dquot record 2005-09-05 08:29:01 +10:00
xfs_trans_extfree.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
xfs_trans_inode.c [XFS] Remove dead code. Patch from Adrian Bunk 2005-06-21 15:36:00 +10:00
xfs_trans_item.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
xfs_trans_priv.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
xfs_trans_space.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
xfs_trans.c [XFS] 929956 add log debugging and tracing info 2005-09-02 16:42:05 +10:00
xfs_trans.h [XFS] Fixes a bug in the quota code when allocating a new dquot record 2005-09-05 08:29:01 +10:00
xfs_types.h [XFS] Add a get/set interface for XFS project identifiers. 2005-06-21 13:21:49 +10:00
xfs_utils.c [XFS] Add support for project quota, based on Dan Knappes earlier work. 2005-06-21 15:38:48 +10:00
xfs_utils.h [XFS] Fix up uses of nlink_t incorrectly restricting us to 2^16 links for some platforms 2005-05-05 13:25:00 -07:00
xfs_vfsops.c [XFS] Sort out some cosmetic differences between XFS trees. 2005-09-05 11:47:01 +10:00
xfs_vnodeops.c [XFS] add infrastructure for waiting on I/O completion at inode reclaim 2005-09-02 16:58:38 +10:00
xfs.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00