linux-stable/fs/btrfs
Chris Mason 242e18c7c1 Btrfs: reduce lock contention on extent buffer locks
The extent buffers have a refs_lock which we use to make coordinate freeing
the extent buffer with operations on the radix tree.  On tree roots and
other extent buffers that very cache hot, this can be highly contended.

These are also the extent buffers that are basically pinned in memory.
This commit adds code to cmpxchg our way through the ref modifications,
and as long as the result of the reference change is still pinned in
ram, we skip the expensive spinlock.

Signed-off-by: Chris Mason <chris.mason@fusionio.com>
2013-02-01 14:24:25 -05:00
..
acl.c Btrfs: skip adding an acl attribute if we don't have to 2012-12-16 20:46:15 -05:00
async-thread.c
async-thread.h
backref.c Btrfs: merge inode_list in __merge_refs 2012-12-12 17:15:27 -05:00
backref.h Btrfs: extended inode refs support for send mechanism 2012-10-25 15:45:16 -04:00
btrfs_inode.h Btrfs: inline csums if we're fsyncing 2012-12-16 20:46:22 -05:00
check-integrity.c Btrfs: fix race in check-integrity caused by usage of bitfield 2012-12-16 20:46:13 -05:00
check-integrity.h
compat.h
compression.c Btrfs: add rw argument to merge_bio_hook() 2013-02-01 11:49:47 -05:00
compression.h
ctree.c Revert "Btrfs: reorder tree mod log operations in deleting a pointer" 2012-12-18 19:35:32 -05:00
ctree.h Btrfs: Add a stripe cache to raid56 2013-02-01 14:24:23 -05:00
delayed-inode.c Btrfs: cleanup for btrfs_btree_balance_dirty 2012-12-12 17:15:28 -05:00
delayed-inode.h
delayed-ref.c
delayed-ref.h
dev-replace.c Btrfs: add new sources for device replace code 2012-12-12 17:15:41 -05:00
dev-replace.h Btrfs: add new sources for device replace code 2012-12-12 17:15:41 -05:00
dir-item.c Btrfs: fix hash overflow handling 2012-12-17 14:48:21 -05:00
disk-io.c Btrfs: RAID5 and RAID6 2013-02-01 14:24:23 -05:00
disk-io.h Btrfs: RAID5 and RAID6 2013-02-01 14:24:23 -05:00
export.c
export.h
extent-tree.c Btrfs: fix cluster alignment for mount -o ssd 2013-02-01 14:24:24 -05:00
extent_io.c Btrfs: reduce lock contention on extent buffer locks 2013-02-01 14:24:25 -05:00
extent_io.h Btrfs: add rw argument to merge_bio_hook() 2013-02-01 11:49:47 -05:00
extent_map.c Btrfs: log changed inodes based on the extent map tree 2012-12-16 20:46:24 -05:00
extent_map.h Btrfs: do not mark ems as prealloc if we are writing to them 2012-12-16 20:46:23 -05:00
file-item.c Btrfs: fix wrong file extent length 2012-12-12 17:15:21 -05:00
file.c Btrfs: do not call file_update_time in aio_write 2012-12-16 20:46:27 -05:00
free-space-cache.c Btrfs: RAID5 and RAID6 2013-02-01 14:24:23 -05:00
free-space-cache.h
hash.h
inode-item.c
inode-map.c Btrfs: improve the noflush reservation 2012-12-11 13:31:31 -05:00
inode-map.h
inode.c Btrfs: RAID5 and RAID6 2013-02-01 14:24:23 -05:00
ioctl.c Btrfs: fix a bug of per-file nocow 2012-12-17 14:48:21 -05:00
ioctl.h Btrfs: add support for device replace ioctls 2012-12-16 20:46:06 -05:00
Kconfig Btrfs: RAID5 and RAID6 2013-02-01 14:24:23 -05:00
locking.c
locking.h
lzo.c
Makefile Btrfs: RAID5 and RAID6 2013-02-01 14:24:23 -05:00
math.h Btrfs: cleanup duplicated division functions 2012-12-11 13:31:30 -05:00
ordered-data.c Btrfs: cleanup for btrfs_wait_order_range 2012-12-12 17:15:19 -05:00
ordered-data.h Btrfs: make ordered extent be flushed by multi-task 2012-12-11 13:31:38 -05:00
orphan.c
print-tree.c Btrfs: introduce a btrfs_dev_replace_item type 2012-12-12 17:15:38 -05:00
print-tree.h
qgroup.c Btrfs: fix memory leak in btrfs_quota_enable() 2012-10-25 15:45:43 -04:00
raid56.c Btrfs: add a plugging callback to raid56 writes 2013-02-01 14:24:24 -05:00
raid56.h Btrfs: RAID5 and RAID6 2013-02-01 14:24:23 -05:00
rcu-string.h
reada.c Btrfs: introduce GET_READ_MIRRORS functionality for btrfs_map_block() 2012-12-12 17:15:43 -05:00
relocation.c Btrfs: cleanup for btrfs_btree_balance_dirty 2012-12-12 17:15:28 -05:00
root-tree.c Btrfs: rename root_times_lock to root_item_lock 2012-12-16 20:46:21 -05:00
scrub.c Btrfs: RAID5 and RAID6 2013-02-01 14:24:23 -05:00
send.c Btrfs: rename root_times_lock to root_item_lock 2012-12-16 20:46:21 -05:00
send.h
struct-funcs.c
super.c Btrfs: use slabs for auto defrag allocation 2012-12-16 20:46:11 -05:00
sysfs.c
transaction.c Btrfs: RAID5 and RAID6 2013-02-01 14:24:23 -05:00
transaction.h Btrfs: improve the noflush reservation 2012-12-11 13:31:31 -05:00
tree-defrag.c
tree-log.c Btrfs: use tokens where we can in the tree log 2012-12-16 20:46:26 -05:00
tree-log.h
ulist.c
ulist.h
version.h
volumes.c Btrfs: RAID5 and RAID6 2013-02-01 14:24:23 -05:00
volumes.h Btrfs: RAID5 and RAID6 2013-02-01 14:24:23 -05:00
xattr.c Btrfs: only log the inode item if we can get away with it 2012-12-16 20:46:21 -05:00
xattr.h
zlib.c btrfs: fix message printing 2012-10-09 09:19:57 -04:00