linux-bl808/fs/btrfs
Zhaolei 93314e3b64 btrfs: abort transaction on btrfs_reloc_cow_block()
When btrfs_reloc_cow_block() failed in __btrfs_cow_block(), current
code just return a err-value to caller, but leave new_created extent
buffer exist and locked.

Then subsequent code (in relocate) try to lock above eb again,
and caused deadlock without any dmesg.
(eb lock use wait_event(), so no lockdep message)

It is hard to do recover work in __btrfs_cow_block() at this error
point, but we can abort transaction to avoid deadlock and operate on
unstable state.a

It also helps developer to find wrong place quickly.
(better than a frozen fs without any dmesg before patch)

Signed-off-by: Zhao Lei <zhaolei@cn.fujitsu.com>
Signed-off-by: Chris Mason <clm@fb.com>
2015-08-09 07:07:14 -07:00
..
tests
acl.c
async-thread.c
async-thread.h
backref.c Btrfs: teach backref walking about backrefs with underflowed offset values 2015-08-09 06:17:00 -07:00
backref.h
btrfs_inode.h Btrfs: fix warning of bytes_may_use 2015-07-01 17:17:21 -07:00
check-integrity.c
check-integrity.h
compression.c
compression.h
ctree.c btrfs: abort transaction on btrfs_reloc_cow_block() 2015-08-09 07:07:14 -07:00
ctree.h btrfs: Remove unnecessary variants in relocation.c 2015-08-09 07:07:14 -07:00
delayed-inode.c
delayed-inode.h
delayed-ref.c btrfs: delayed-ref: double free in btrfs_add_delayed_tree_ref() 2015-06-24 12:28:03 -07:00
delayed-ref.h btrfs: qgroup: Add the ability to skip given qgroup for old/new_roots. 2015-06-10 09:26:23 -07:00
dev-replace.c btrfs: its btrfs_err() instead of btrfs_error() 2015-07-22 18:20:53 -07:00
dev-replace.h
dir-item.c
disk-io.c btrfs: Show detail information when mount failed on missing devices 2015-08-09 07:07:10 -07:00
disk-io.h
export.c
export.h
extent-tree.c btrfs: Use ref_cnt for set_block_group_ro() 2015-08-09 07:07:12 -07:00
extent-tree.h
extent_io.c Merge branch 'for-linus-4.2' of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs 2015-06-30 20:07:45 -07:00
extent_io.h
extent_map.c
extent_map.h
file-item.c
file.c Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs 2015-07-04 19:36:06 -07:00
free-space-cache.c
free-space-cache.h
hash.c
hash.h
inode-item.c
inode-map.c Btrfs: fix race between caching kthread and returning inode to inode cache 2015-06-30 14:36:46 -07:00
inode-map.h
inode.c Btrfs: fix stale dir entries after unlink, inode eviction and fsync 2015-08-09 06:16:58 -07:00
ioctl.c btrfs: fix search key advancing condition 2015-08-09 06:17:02 -07:00
Kconfig
locking.c
locking.h
lzo.c
Makefile
math.h
ordered-data.c Btrfs: fix memory corruption on failure to submit bio for direct IO 2015-07-01 17:17:18 -07:00
ordered-data.h
orphan.c
print-tree.c
print-tree.h
props.c
props.h
qgroup.c btrfs: qgroup: allow user to clear the limitation on qgroup 2015-06-30 13:20:00 -07:00
qgroup.h
raid56.c
raid56.h
rcu-string.h
reada.c
relocation.c btrfs: Remove unnecessary variants in relocation.c 2015-08-09 07:07:14 -07:00
root-tree.c
scrub.c btrfs: Fix data checksum error cause by replace with io-load. 2015-08-09 07:07:13 -07:00
send.c Btrfs: use received_uuid of parent during send 2015-06-12 13:20:38 -07:00
send.h
struct-funcs.c
super.c
sysfs.c Btrfs: Check if kobject is initialized before put 2015-06-22 14:43:31 +02:00
sysfs.h
transaction.c btrfs: Remove unnecessary variants in relocation.c 2015-08-09 07:07:14 -07:00
transaction.h btrfs: qgroup: Add the ability to skip given qgroup for old/new_roots. 2015-06-10 09:26:23 -07:00
tree-defrag.c
tree-log.c Btrfs: fix stale dir entries after removing a link and fsync 2015-08-09 06:17:04 -07:00
tree-log.h
ulist.c btrfs: ulist: Add ulist_del() function. 2015-06-10 09:26:17 -07:00
ulist.h btrfs: ulist: Add ulist_del() function. 2015-06-10 09:26:17 -07:00
uuid-tree.c
volumes.c btrfs: Cleanup: Remove chunk_objectid argument from btrfs_relocate_chunk() 2015-08-09 07:07:13 -07:00
volumes.h Merge branch 'for-linus-4.2' of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs 2015-06-30 20:07:45 -07:00
xattr.c
xattr.h
zlib.c