OpenCloudOS-Kernel/fs/btrfs
Chris Mason 546888da82 Btrfs: fix btrfs fallocate oops and deadlock
Btrfs fallocate was incorrectly starting a transaction with a lock held
on the extent_io tree for the file, which could deadlock.  Strictly
speaking it was using join_transaction which would be safe, but it is better
to move the transaction outside of the lock.

When preallocated extents are overwritten, btrfs_mark_buffer_dirty was
being called on an unlocked buffer.  This was triggering an assertion and
oops because the lock is supposed to be held.

The bug was calling btrfs_mark_buffer_dirty on a leaf after btrfs_del_item had
been run.  btrfs_del_item takes care of dirtying things, so the solution is a
to skip the btrfs_mark_buffer_dirty call in this case.

Signed-off-by: Chris Mason <chris.mason@oracle.com>
2009-04-21 12:45:12 -04:00
..
Kconfig Btrfs: make btrfs acls selectable 2009-02-04 09:28:28 -05:00
Makefile Btrfs: do extent allocation and reference count updates in the background 2009-03-24 16:14:25 -04:00
acl.c New helper - current_umask() 2009-03-31 23:00:26 -04:00
async-thread.c Btrfs: add a priority queue to the async thread helpers 2009-04-20 15:53:08 -04:00
async-thread.h Btrfs: add a priority queue to the async thread helpers 2009-04-20 15:53:08 -04:00
btrfs_inode.h Btrfs: add extra flushing for renames and truncates 2009-03-31 14:27:58 -04:00
compat.h Btrfs: drop remaining LINUX_KERNEL_VERSION checks and compat code 2009-01-06 09:38:55 -05:00
compression.c Btrfs: removed unused #include <version.h>'s 2009-01-21 10:49:16 -05:00
compression.h Btrfs: Add zlib compression support 2008-10-29 14:49:59 -04:00
crc32c.h Btrfs: Drop the hardware crc32c asm code 2009-01-07 19:56:59 -05:00
ctree.c Btrfs: use the right node in reada_for_balance 2009-04-20 15:53:09 -04:00
ctree.h Merge git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable 2009-04-03 15:14:44 -07:00
delayed-ref.c Btrfs: remove unused ftrace include 2009-04-02 17:02:55 -04:00
delayed-ref.h Btrfs: make sure btrfs_update_delayed_ref doesn't increase ref_mod 2009-03-25 09:55:11 -04:00
dir-item.c Btrfs: leave btree locks spinning more often 2009-03-24 16:14:28 -04:00
disk-io.c Btrfs: add a priority queue to the async thread helpers 2009-04-20 15:53:08 -04:00
disk-io.h Btrfs: leave btree locks spinning more often 2009-03-24 16:14:28 -04:00
export.c Btrfs: Fix checkpatch.pl warnings 2009-01-05 21:25:51 -05:00
export.h NFS support for btrfs - v3 2008-09-25 11:04:06 -04:00
extent-tree.c Btrfs: rework allocation clustering 2009-04-03 09:47:43 -04:00
extent_io.c Btrfs: fix oops on page->mapping->host during writepage 2009-04-20 15:53:09 -04:00
extent_io.h Btrfs: leave btree locks spinning more often 2009-03-24 16:14:28 -04:00
extent_map.c Btrfs: remove dead code 2009-04-02 16:46:06 -04:00
extent_map.h Btrfs: Fix csum error for compressed data 2008-11-10 07:34:43 -05:00
file-item.c Btrfs: leave btree locks spinning more often 2009-03-24 16:14:28 -04:00
file.c Btrfs: fix btrfs fallocate oops and deadlock 2009-04-21 12:45:12 -04:00
free-space-cache.c Btrfs: BUG to BUG_ON changes 2009-04-02 17:05:11 -04:00
free-space-cache.h Btrfs: rework allocation clustering 2009-04-03 09:47:43 -04:00
hash.h Switch btrfs_name_hash() to crc32c 2008-09-25 11:04:06 -04:00
inode-item.c Btrfs: leave btree locks spinning more often 2009-03-24 16:14:28 -04:00
inode-map.c Btrfs: remove btrfs_init_path 2009-02-12 14:11:25 -05:00
inode.c Btrfs: fix btrfs fallocate oops and deadlock 2009-04-21 12:45:12 -04:00
ioctl.c New helper - current_umask() 2009-03-31 23:00:26 -04:00
ioctl.h Btrfs: fix ioctl arg size (userland incompatible change!) 2009-01-16 11:59:08 -05:00
locking.c Btrfs: fix typos in comments 2009-04-02 16:46:06 -04:00
locking.h Btrfs: fix spinlock assertions on UP systems 2009-03-09 11:45:38 -04:00
ordered-data.c Btrfs: use WRITE_SYNC for synchronous writes 2009-04-20 15:53:08 -04:00
ordered-data.h Btrfs: add extra flushing for renames and truncates 2009-03-31 14:27:58 -04:00
orphan.c Btrfs: Create orphan inode records to prevent lost files after a crash 2008-09-25 11:04:05 -04:00
print-tree.c Btrfs: Fix checkpatch.pl warnings 2009-01-05 21:25:51 -05:00
print-tree.h Btrfs: Create extent_buffer interface for large blocksizes 2008-09-25 11:03:56 -04:00
ref-cache.c Btrfs: Make btrfs_drop_snapshot work in larger and more efficient chunks 2009-02-04 09:27:02 -05:00
ref-cache.h Btrfs: Make btrfs_drop_snapshot work in larger and more efficient chunks 2009-02-04 09:27:02 -05:00
root-tree.c Btrfs: Fix checkpatch.pl warnings 2009-01-05 21:25:51 -05:00
struct-funcs.c Btrfs: Fix checkpatch.pl warnings 2009-01-05 21:25:51 -05:00
super.c Btrfs: add flushoncommit mount option 2009-04-02 16:59:01 -04:00
sysfs.c Btrfs: Fix checkpatch.pl warnings 2009-01-05 21:25:51 -05:00
transaction.c Btrfs: add flushoncommit mount option 2009-04-02 16:59:01 -04:00
transaction.h Btrfs: reduce stalls during transaction commit 2009-03-24 16:14:26 -04:00
tree-defrag.c Btrfs: do extent allocation and reference count updates in the background 2009-03-24 16:14:25 -04:00
tree-log.c Btrfs: BUG to BUG_ON changes 2009-04-02 17:05:11 -04:00
tree-log.h Btrfs: tree logging unlink/rename fixes 2009-03-24 16:14:52 -04:00
version.h Update Btrfs files for in-kernel usage 2008-09-25 15:41:59 -04:00
version.sh Btrfs: Fixes for 2.6.28-rc API changes 2008-11-19 21:17:22 -05:00
volumes.c Btrfs: use WRITE_SYNC for synchronous writes 2009-04-20 15:53:08 -04:00
volumes.h Btrfs: use WRITE_SYNC for synchronous writes 2009-04-20 15:53:08 -04:00
xattr.c Btrfs: selinux support 2009-02-04 09:29:13 -05:00
xattr.h Btrfs: selinux support 2009-02-04 09:29:13 -05:00
zlib.c Btrfs: Fix checkpatch.pl warnings 2009-01-05 21:25:51 -05:00