Commit c549228f authored by Yan's avatar Yan Committed by Chris Mason
Browse files

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: default avatarChris Mason <chris.mason@oracle.com>
parent b293f02e
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -714,7 +714,7 @@ static int pin_down_bytes(struct btrfs_root *root, u64 bytenr, u32 num_bytes,
				    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 @@ static int __free_extent(struct btrfs_trans_handle *trans, struct btrfs_root

		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 */