Btrfs: update backrefs while dropping snapshot
authorYan Zheng <zheng.yan@oracle.com>
Sun, 28 Jun 2009 01:07:35 +0000 (21:07 -0400)
committerChris Mason <chris.mason@oracle.com>
Thu, 2 Jul 2009 17:41:17 +0000 (13:41 -0400)
commit2c47e605a91dde6b0514f689645e7ab336c8592a
treed541e61440f06f37d17e2d14cbaa78fc0cd41ff2
parenta970b0a16cc416a509d5ae8b1d70978664e6f4fe
Btrfs: update backrefs while dropping snapshot

The new backref format has restriction on type of backref item.  If a tree
block isn't referenced by its owner tree, full backrefs must be used for the
pointers in it. When a tree block loses its owner tree's reference, backrefs
for the pointers in it should be updated to full backrefs. Current
btrfs_drop_snapshot misses the code that updates backrefs, so it's unsafe for
general use.

This patch adds backrefs update code to btrfs_drop_snapshot.  It isn't a
problem in the restricted form btrfs_drop_snapshot is used today, but for
general snapshot deletion this update is required.

Signed-off-by: Yan Zheng <zheng.yan@oracle.com>
Signed-off-by: Chris Mason <chris.mason@oracle.com>
fs/btrfs/ctree.h
fs/btrfs/extent-tree.c
fs/btrfs/relocation.c
fs/btrfs/transaction.c