--- /dev/null
+From 2adcac1a7331d93a17285804819caa96070b231f Mon Sep 17 00:00:00 2001
+From: Josef Bacik <josef@redhat.com>
+Date: Wed, 23 May 2012 16:10:14 -0400
+Subject: Btrfs: fall back to non-inline if we don't have enough space
+
+From: Josef Bacik <josef@redhat.com>
+
+commit 2adcac1a7331d93a17285804819caa96070b231f upstream.
+
+If cow_file_range_inline fails with ENOSPC we abort the transaction which
+isn't very nice. This really shouldn't be happening anyways but there's no
+sense in making it a horrible error when we can easily just go allocate
+normal data space for this stuff. Thanks,
+
+Signed-off-by: Josef Bacik <josef@redhat.com>
+Acked-by: Chris Mason <chris.mason@fusionio.com>
+Cc: Alexandre Oliva <oliva@lsd.ic.unicamp.br>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ fs/btrfs/inode.c | 5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
+
+--- a/fs/btrfs/inode.c
++++ b/fs/btrfs/inode.c
+@@ -257,10 +257,13 @@ static noinline int cow_file_range_inlin
+ ret = insert_inline_extent(trans, root, inode, start,
+ inline_len, compressed_size,
+ compress_type, compressed_pages);
+- if (ret) {
++ if (ret && ret != -ENOSPC) {
+ btrfs_abort_transaction(trans, root, ret);
+ return ret;
++ } else if (ret == -ENOSPC) {
++ return 1;
+ }
++
+ btrfs_delalloc_release_metadata(inode, end + 1 - start);
+ btrfs_drop_extent_cache(inode, start, aligned_end - 1, 0);
+ return 0;