Btrfs: Properly update free space cache in __free_extent

When pin_down_bytes decides not to pin a block because it was from the
current transaction, make sure the in memory cache of free extents is updated

Signed-off-by: Chris Mason <chris.mason@oracle.com>
diff --git a/fs/btrfs/extent-tree.c b/fs/btrfs/extent-tree.c
index e7192ea..9eb2ee0 100644
--- a/fs/btrfs/extent-tree.c
+++ b/fs/btrfs/extent-tree.c
@@ -714,7 +714,7 @@
 				    root->fs_info->running_transaction->transid;
 				if (btrfs_header_generation(buf) == transid) {
 					free_extent_buffer(buf);
-					return 0;
+					return 1;
 				}
 			}
 			free_extent_buffer(buf);
@@ -774,7 +774,9 @@
 
 		if (pin) {
 			ret = pin_down_bytes(root, bytenr, num_bytes, 0);
-			BUG_ON(ret);
+			if (ret > 0)
+				mark_free = 1;
+			BUG_ON(ret < 0);
 		}
 
 		/* block accounting for super block */