Zach Brown d4e3991b99 btrfs: abort unlink trans in missed error case
__btrfs_unlink_inode() aborts its transaction when it sees errors after
it removes the directory item.  But it missed the case where
btrfs_del_dir_entries_in_log() returns an error.  If this happens then
the unlink appears to fail but the items have been removed without
updating the directory size.  The directory then has leaked bytes in
i_size and can never be removed.

Adding the missing transaction abort at least makes this failure
consistent with the other failure cases.

I noticed this while reading the code after someone on irc reported
having a directory with i_size but no entries.  I tested it by forcing
btrfs_del_dir_entries_in_log() to return -ENOMEM.

Signed-off-by: Zach Brown <zab@redhat.com>
Reviewed-by: Eric Sandeen <sandeen@redhat.com>
Signed-off-by: Josef Bacik <jbacik@fusionio.com>
2013-05-06 15:54:36 -04:00
..
2013-04-09 14:08:16 -04:00
2013-03-11 22:05:56 +01:00
2013-03-12 18:55:21 -07:00
2013-04-05 17:55:13 +01:00
2013-03-12 18:55:21 -07:00
2013-04-10 10:26:49 -07:00
2013-03-26 16:18:27 -04:00
2013-03-28 15:52:14 -07:00
2013-03-12 18:55:21 -07:00
2013-02-22 23:31:31 -05:00
2013-02-22 23:31:31 -05:00
2012-10-22 08:50:37 +03:00
2013-02-22 23:31:31 -05:00
2013-03-26 18:25:57 -04:00
2013-02-22 23:31:31 -05:00
2013-02-28 13:21:44 -08:00
2013-02-22 23:31:31 -05:00
2012-12-20 18:46:29 -05:00
2013-02-22 23:31:31 -05:00
2012-12-11 13:43:42 +09:00
2013-03-12 08:29:17 -07:00
2013-02-22 23:31:31 -05:00
2012-12-17 17:15:27 -08:00
2013-02-26 02:46:08 -05:00
2013-02-22 23:31:31 -05:00