Re: Algorithm for nodatacow is broken

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, 2008-07-16 at 13:15 +0000, Chris Mason wrote:
> On Wed, 2008-07-16 at 15:41 +0800, Yan Zheng wrote:
> > Hello,
> > 
> > Yesterday, I realized the algorithm for nodatacow is broken, it can't
> > reliably detect whether a given extent is referenced by only one
> > snapshot.
> 
> I had to change around nodatacow back in May because it was definitely
> broken in the way you describe.  I agree the special case I added to
> allow nodatacow when one of the references comes from the running
> transaction is broken.
> 
> But, we should be able to fix it by extending the reference count checks
> up the tree.  Any reference > 1 not held by the running transaction on
> any block should force a cow.

Actually the existing code assumes any reference held by a different
generation of the current root is safe.  As Yan's picture shows that
isn't quite true.  So, we can make it safe by walking down that root and
checking for snapshots as well.

-chris


--
To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Filesystem Development]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux