linux-stable/fs/btrfs
Josef Bacik 3e04e7f10b Btrfs: handle errors in compression submission path
I noticed we would deadlock if we aborted a transaction while doing
compressed io.  This is because we don't unlock our pages if something goes
horribly wrong.  To fix this we need to make sure that we call
extent_clear_unlock_delalloc in order to unlock all the pages.  If we have
to cow in the async submission thread we need to make sure to unlock our
locked_page as the cow error path will not unlock the locked page as it
depends on the caller to unlock that page.  With this patch we no longer
deadlock on the page lock when we have an aborted transaction.  Thanks,

Signed-off-by: Josef Bacik <jbacik@fusionio.com>
2013-02-20 12:59:33 -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 Btrfs: call the ordered free operation without any locks held 2012-07-25 16:15:07 -04:00
async-thread.h btrfs: return void in functions without error conditions 2012-03-22 01:45:34 +01:00
backref.c Btrfs: merge inode_list in __merge_refs 2012-12-12 17:15:27 -05:00
backref.h Btrfs: move fs/btrfs/ioctl.h to include/uapi/linux/btrfs.h 2013-02-20 09:37:28 -05:00
btrfs_inode.h Btrfs: use the inode own lock to protect its delalloc_bytes 2013-02-20 12:59:06 -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 Btrfs: add optional integrity check code 2011-12-21 19:14:09 +01:00
compat.h
compression.c Btrfs: handle errors from btrfs_map_bio() everywhere 2012-12-12 17:15:40 -05:00
compression.h btrfs: return void in functions without error conditions 2012-03-22 01:45:34 +01:00
ctree.c btrfs: annotate intentional switch case fallthroughs 2013-02-20 12:59:19 -05:00
ctree.h btrfs: handle null fs_info in btrfs_panic() 2013-02-20 12:59:18 -05:00
delayed-inode.c btrfs: remove unused "item" in btrfs_insert_delayed_item() 2013-02-20 12:59:23 -05:00
delayed-inode.h Btrfs: fix lots of orphan inodes when the space is not enough 2013-02-20 09:36:39 -05:00
delayed-ref.c Btrfs: make delayed ref lock logic more readable 2013-02-20 09:36:41 -05:00
delayed-ref.h Btrfs: make delayed ref lock logic more readable 2013-02-20 09:36:41 -05:00
dev-replace.c Btrfs: check the return value of btrfs_start_delalloc_inodes() 2013-02-20 09:37:21 -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: fix how we discard outstanding ordered extents on abort 2013-02-20 12:59:28 -05:00
disk-io.h Btrfs: cleanup for btrfs_btree_balance_dirty 2012-12-12 17:15:28 -05:00
export.c ->encode_fh() API change 2012-05-29 23:28:33 -04:00
export.h
extent-tree.c Btrfs: rework the overcommit logic to be based on the total size 2013-02-20 12:59:32 -05:00
extent_io.c Btrfs: use percpu counter for dirty metadata count 2013-02-20 12:59:04 -05:00
extent_io.h Btrfs: pass fs_info to btrfs_map_block() instead of mapping_tree 2012-12-12 17:15:34 -05:00
extent_map.c Btrfs: do not merge logged extents if we've removed them from the tree 2013-02-05 16:09:03 -05:00
extent_map.h Btrfs: do not allow logged extents to be merged or removed 2013-01-24 12:49:48 -05:00
file-item.c Btrfs: put csums on the right ordered extent 2013-01-24 12:51:22 -05:00
file.c Btrfs: use bit operation for ->fs_state 2013-02-20 12:59:09 -05:00
free-space-cache.c Btrfs: fix panic when recovering tree log 2013-01-24 12:49:49 -05:00
free-space-cache.h
hash.h btrfs: extended inode refs 2012-10-09 09:14:45 -04:00
inode-item.c btrfs: extended inode refs 2012-10-09 09:14:45 -04:00
inode-map.c Btrfs: improve the noflush reservation 2012-12-11 13:31:31 -05:00
inode-map.h
inode.c Btrfs: handle errors in compression submission path 2013-02-20 12:59:33 -05:00
ioctl.c Btrfs: move fs/btrfs/ioctl.h to include/uapi/linux/btrfs.h 2013-02-20 09:37:28 -05:00
Kconfig Btrfs: add config option to enable btrfs integrity check 2011-12-21 19:14:16 +01:00
locking.c Btrfs: save us a read_lock 2013-02-20 09:37:17 -05:00
locking.h btrfs: return void in functions without error conditions 2012-03-22 01:45:34 +01:00
lzo.c btrfs: remove the second argument of k[un]map_atomic() 2012-03-20 21:48:21 +08:00
Makefile Btrfs: add new sources for device replace code 2012-12-12 17:15:41 -05:00
math.h Btrfs: cleanup duplicated division functions 2012-12-11 13:31:30 -05:00
ordered-data.c Btrfs: don't traverse the ordered operation list repeatedly 2013-02-20 09:37:24 -05:00
ordered-data.h Btrfs: wait on ordered extents at the last possible moment 2013-02-20 09:37:04 -05:00
orphan.c btrfs: replace many BUG_ONs with proper error handling 2012-03-22 11:52:54 +01:00
print-tree.c btrfs: add missing break in btrfs_print_leaf() 2013-02-20 12:59:20 -05:00
print-tree.h
qgroup.c Btrfs: move fs/btrfs/ioctl.h to include/uapi/linux/btrfs.h 2013-02-20 09:37:28 -05:00
rcu-string.h Btrfs: use rcu to protect device->name 2012-06-14 21:29:16 -04:00
reada.c Btrfs: introduce GET_READ_MIRRORS functionality for btrfs_map_block() 2012-12-12 17:15:43 -05:00
relocation.c Btrfs: use wrapper page_offset 2013-02-20 09:36:43 -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: use bit operation for ->fs_state 2013-02-20 12:59:09 -05:00
send.c btrfs: remove unused fd in btrfs_ioctl_send() 2013-02-20 12:59:14 -05:00
send.h Btrfs: write_buf is now callable outside send.c 2012-10-04 09:39:55 -04:00
struct-funcs.c Btrfs: rewrite BTRFS_SETGET_FUNCS 2012-07-23 16:28:06 -04:00
super.c btrfs: fix varargs in __btrfs_std_error 2013-02-20 12:59:22 -05:00
sysfs.c btrfs: Remove unused sysfs code 2011-06-17 14:54:18 -04:00
transaction.c Btrfs: use bit operation for ->fs_state 2013-02-20 12:59:09 -05:00
transaction.h Btrfs: don't re-enter when allocating a chunk 2013-02-20 09:37:09 -05:00
tree-defrag.c
tree-log.c Btrfs: kill unused argument of btrfs_pin_extent_for_log_replay 2013-02-20 09:37:14 -05:00
tree-log.h btrfs: return void in functions without error conditions 2012-03-22 01:45:34 +01:00
ulist.c Btrfs: make aux field of ulist 64 bit 2012-10-01 15:18:53 -04:00
ulist.h Btrfs: make aux field of ulist 64 bit 2012-10-01 15:18:53 -04:00
version.h
volumes.c btrfs: ensure we don't overrun devices_info[] in __btrfs_alloc_chunk 2013-02-20 12:59:26 -05:00
volumes.h Btrfs: move fs/btrfs/ioctl.h to include/uapi/linux/btrfs.h 2013-02-20 09:37:28 -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