Btrfs: Update and fix mount -o nodatacow
authorYan Zheng <zheng.yan@oracle.com>
Wed, 30 Jul 2008 13:26:11 +0000 (09:26 -0400)
committerChris Mason <chris.mason@oracle.com>
Thu, 25 Sep 2008 15:04:05 +0000 (11:04 -0400)
commitf321e4910398cf7922265d269fb17fd26f312571
tree8430f004991351e48a4b3f9441fe0cbbcf70eddb
parent3bf10418675cb424724b5cb9d7725b234defe1fd
Btrfs: Update and fix mount -o nodatacow

To check whether a given file extent is referenced by multiple snapshots, the
checker walks down the fs tree through dead root and checks all tree blocks in
the path.

We can easily detect whether a given tree block is directly referenced by other
snapshot. We can also detect any indirect reference from other snapshot by
checking reference's generation. The checker can always detect multiple
references, but can't reliably detect cases of single reference. So btrfs may
do file data cow even there is only one reference.

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