On Nov 20, 2007 5:33 PM, can you guess? <[EMAIL PROTECTED]> wrote:
> > But the whole point of snapshots is that they don't
> > take up extra space on the disk.  If a file (and
> > hence a block) is in every snapshot it doesn't mean
> > you've got multiple copies of it.  You only have one
> > copy of that block, it's just referenced by many
> > snapshots.
>
> I used the wording "copies of a parent" loosely to mean "previous
> states of the parent that also contain pointers to the current state of
> the child about to be updated in place".
But children are never updated in place.  When a new block is written
to a leaf, new blocks are used for all the ancestors back to the
superblock, and then the old ones are either freed or held on to by
the snapshot.

> And in every earlier version of the parent that was updated for some
> *other* reason and still contains a pointer to the current child that
> someone using that snapshot must be able to follow correctly.
The snapshot doesn't get the 'current' child - it gets the one that
was there when the snapshot was taken.

> No:  every version of the parent that points to the current version of
> the child must be updated.
Even with clones, the two 'parent' and the 'clone' are allowed to
diverge - they contain different data.

Perhaps I'm missing something.  Excluding ditto blocks, when in ZFS
would two parents point to the same child, and need to both be updated
when the child is updated?

Will
_______________________________________________
zfs-discuss mailing list
zfs-discuss@opensolaris.org
http://mail.opensolaris.org/mailman/listinfo/zfs-discuss

Reply via email to