Btrfs: Don't allow written blocks from this transaction to be reallocated
authorChris Mason <chris.mason@oracle.com>
Fri, 4 Apr 2008 19:40:00 +0000 (15:40 -0400)
committerChris Mason <chris.mason@oracle.com>
Thu, 25 Sep 2008 15:04:01 +0000 (11:04 -0400)
commit6bc34676c0b5836655ec1c7998e2647cabb933ec
tree5d470dbde4b209cc6e78b112d886fa704769ece6
parent611f0e00a27fe0e5a571194a12443ecdc99a43ef
Btrfs: Don't allow written blocks from this transaction to be reallocated

When a block is freed, it can be immediately reused if it is from
the current transaction.  But, an extra check is required to make sure
the block had not been written yet.  If it were reused after being written,
the transid in the block header might match the transid of the
next time the block was allocated.

The parent node records the transaction ID of the block it is pointing to,
and this is used as part of validating the block on reads.  So, there
can only be one version of a block per transaction.

Signed-off-by: Chris Mason <chris.mason@oracle.com>
fs/btrfs/extent-tree.c