linux-kernel-test/fs/btrfs
Josef Bacik 115391d231 Btrfs: only use the existing eb if it's count isn't 0
We can run into a problem where we find an eb for our existing page already on
the radix tree but it has a ref count of 0.  It hasn't yet been removed by RCU
yet so this can cause issues where we will use the EB after free.  So do
atomic_inc_not_zero on the exists->refs and if it is zero just do
synchronize_rcu() and try again.  We won't have to worry about new allocators
coming in since they will block on the page lock at this point.  Thanks,

Signed-off-by: Josef Bacik <josef@redhat.com>
2012-03-26 16:51:08 -04:00
..
acl.c Btrfs: fix return value of btrfs_get_acl() 2011-10-20 18:10:47 +02:00
async-thread.c Merge branch 'pm-sleep' into pm-for-linus 2011-12-25 23:42:20 +01:00
async-thread.h Btrfs: fix num_workers_starting bug and other bugs in async thread 2011-12-15 11:04:21 -05:00
backref.c btrfs: fix locking issues in find_parent_nodes() 2012-03-03 07:41:15 -05:00
backref.h Btrfs: added btrfs_find_all_roots() 2012-01-04 16:26:38 +01:00
btrfs_inode.h Btrfs: add a delalloc mutex to inodes for delalloc reservations 2012-01-16 15:29:43 -05:00
check-integrity.c Btrfs: fix compiler warnings on 32 bit systems 2012-02-24 10:39:05 -05:00
check-integrity.h Btrfs: add optional integrity check code 2011-12-21 19:14:09 +01:00
compat.h
compression.c Btrfs: check return value of lookup_extent_mapping() correctly 2012-02-16 17:23:17 +01:00
compression.h
ctree.c Btrfs: mark delayed refs as for cow 2011-12-22 16:22:27 +01:00
ctree.h Btrfs: allow metadata blocks larger than the page size 2012-03-26 16:50:37 -04:00
delayed-inode.c Btrfs: space leak tracepoints 2012-01-16 15:29:43 -05:00
delayed-inode.h atomic: use <linux/atomic.h> 2011-07-26 16:49:47 -07:00
delayed-ref.c Btrfs: add waitqueue instead of doing busy waiting for more delayed refs 2012-01-04 16:12:48 +01:00
delayed-ref.h Btrfs: add waitqueue instead of doing busy waiting for more delayed refs 2012-01-04 16:12:48 +01:00
dir-item.c Btrfs: remove redundant code for dir item lookup 2011-08-01 14:30:48 -04:00
disk-io.c Btrfs: set page->private to the eb 2012-03-26 16:51:07 -04:00
disk-io.h btrfs: take allocation of ->tree_root into open_ctree() 2012-01-08 19:37:02 -05:00
export.c btrfs: let ->s_fs_info point to fs_info, not root... 2012-01-08 19:35:37 -05:00
export.h
extent_io.c Btrfs: only use the existing eb if it's count isn't 0 2012-03-26 16:51:08 -04:00
extent_io.h Btrfs: set page->private to the eb 2012-03-26 16:51:07 -04:00
extent_map.c Btrfs: clean up code for merging extent maps 2011-08-01 14:30:50 -04:00
extent_map.h btrfs: fix structs where bitfields and spinlock/atomic share 8B word 2012-02-15 16:40:25 +01:00
extent-tree.c Btrfs: remove search_start and search_end from find_free_extent and callers 2012-03-26 14:42:51 -04:00
file-item.c btrfs: separate superblock items out of fs_info 2011-11-06 03:04:01 -05:00
file.c Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs 2012-02-24 09:02:53 -08:00
free-space-cache.c Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs 2012-02-24 09:02:53 -08:00
free-space-cache.h
hash.h
inode-item.c Btrfs: allow metadata blocks larger than the page size 2012-03-26 16:50:37 -04:00
inode-map.c Btrfs: fix compiler warnings on 32 bit systems 2012-02-24 10:39:05 -05:00
inode-map.h
inode.c Btrfs: remove search_start and search_end from find_free_extent and callers 2012-03-26 14:42:51 -04:00
ioctl.c Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs 2012-02-24 09:02:53 -08:00
ioctl.h Btrfs: add balance progress reporting 2012-01-16 22:04:49 +02:00
Kconfig Btrfs: add config option to enable btrfs integrity check 2011-12-21 19:14:16 +01:00
locking.c Btrfs: add nested locking mode for paths 2012-01-04 16:12:29 +01:00
locking.h Btrfs: switch the btrfs tree locks to reader/writer 2011-07-27 12:46:46 -04:00
lzo.c
Makefile Merge branch 'integrity-check-patch-v2' of git://btrfs.giantdisaster.de/git/btrfs into integration 2012-01-16 15:27:58 -05:00
ordered-data.c
ordered-data.h
orphan.c
print-tree.c btrfs: fix oops on failure path 2011-10-20 18:10:50 +02:00
print-tree.h
reada.c Btrfs: fix casting error in scrub reada code 2012-03-03 07:42:35 -05:00
relocation.c Btrfs: add a delalloc mutex to inodes for delalloc reservations 2012-01-16 15:29:43 -05:00
root-tree.c btrfs: make btrfs_set_root_node void 2011-08-01 14:30:44 -04:00
scrub.c btrfs: don't check DUP chunks twice 2012-02-15 16:40:24 +01:00
struct-funcs.c Btrfs: stop using highmem for extent_buffers 2011-07-27 12:46:45 -04:00
super.c Merge branch 'btrfs' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs 2012-01-17 15:52:51 -08:00
sysfs.c btrfs: Remove unused sysfs code 2011-06-17 14:54:18 -04:00
transaction.c Btrfs: fix compiler warnings on 32 bit systems 2012-02-24 10:39:05 -05:00
transaction.h Merge branch 'for-chris' of 2011-05-28 07:00:39 -04:00
tree-defrag.c
tree-log.c btrfs: Fix busyloops in transaction waiting code 2012-01-26 15:01:11 -05:00
tree-log.h
ulist.c Btrfs: generic data structure to build unique lists 2011-12-22 16:22:24 +01:00
ulist.h Btrfs: generic data structure to build unique lists 2011-12-22 16:22:24 +01:00
version.h
volumes.c Btrfs: allow metadata blocks larger than the page size 2012-03-26 16:50:37 -04:00
volumes.h Merge branch 'for-chris' of git://repo.or.cz/linux-btrfs-devel into integration 2012-01-16 15:26:17 -05:00
xattr.c Btrfs: do not use btrfs_end_transaction_throttle everywhere 2012-01-16 15:28:54 -05:00
xattr.h
zlib.c