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
..
2009-04-02 19:05:08 -07:00
2009-04-02 19:05:08 -07:00
2009-04-09 10:41:19 -07:00
2009-04-01 08:59:23 -07:00
2009-04-08 10:21:43 -07:00
2009-01-22 13:15:57 +03:00
2009-03-31 23:00:26 -04:00
2009-04-01 08:59:23 -07:00
2009-04-02 19:05:09 -07:00
2009-03-31 19:44:38 +03:00
2009-01-22 13:15:58 +03:00
2009-04-09 17:37:53 +02:00
2009-04-13 15:04:29 -07:00
2009-04-13 15:04:32 -07:00
2009-03-31 23:00:26 -04:00
2009-03-27 14:44:05 -04:00
2009-04-02 19:05:10 -07:00
2009-04-02 19:04:48 -07:00
2009-04-02 19:05:10 -07:00
2009-04-02 19:05:10 -07:00
2009-03-27 14:44:03 -04:00
2008-12-31 18:07:43 -05:00
2009-01-03 11:45:54 -08:00
2009-03-31 23:00:27 -04:00
2009-03-31 23:00:28 -04:00
2009-04-02 19:04:48 -07:00
2009-03-31 23:00:26 -04:00
2009-03-16 08:34:35 -06:00
2009-04-07 08:31:16 -07:00
2009-04-07 08:31:16 -07:00
2009-02-18 15:37:53 -08:00