On Wed, May 10, 2006 at 09:10:10AM -0700, Edward Pilatowicz wrote:
> out of curiousity, how are properties handled?

I think you're confusing[*] the "clone origin filesystem" and the
"parent filesystem".  The parent filesystem is the one that is above it
in the filesystem namespace, from which it inherits properties.  The
clone origin is the snapshot from which the clone was created, and its
primary influence is that the clone origin can't be destroyed.  The
"clone origin filesystem" is the filesystem that contains the clone
origin, which also can not be destroyed.

Let's take an example:

        # zfs create pool/project/production
        # zfs snapshot pool/project/[EMAIL PROTECTED]
        # zfs clone pool/project/[EMAIL PROTECTED] pool/project/beta
        # zfs clone pool/project/[EMAIL PROTECTED] pool/test/foo/clone

FS                              PARENT          CLONE ORIGIN FS (snap)
pool/project/production         pool/project    -none-
pool/project/beta               pool/project    pool/project/production (@today)
pool/test/foo/clone             pool/test/foo   pool/project/production (@today)

So, pool/project/production and pool/project/beta inherit their
properties from pool/project, and pool/test/foo/clone inherits its
properties from pool/test/foo.  pool/project/[EMAIL PROTECTED] (and thus
pool/project/production) can't be destroyed.

        # zfs promote pool/project/beta

FS                              PARENT          CLONE ORIGIN FS
pool/project/production         pool/project    pool/project/beta (@today)
pool/project/beta               pool/project    -none-
pool/test/foo/clone             pool/test/foo   pool/project/beta (@today)

Now, the inheritance is still the same:  So, pool/project/production and
pool/project/beta inherit their properties from pool/project, and
pool/test/foo/clone inherits its properties from pool/test/foo.
pool/project/[EMAIL PROTECTED] (and thus pool/project/beta) can't be destroyed,
but pool/project/production can be destroyed.

And to answer your questions directly:

> for example if you have a fs with compression disabled, you snapshot
> it, you clone it, and you enable compression on the clone, and then
> you promote the clone.  will compressions be enabled on the new parent?

The properties on the clone do not change when it is promoted.  (At
least, not the editable ones; the space accounting will change since
some of the clone origin's snapshots are moved to the promoted fs.)

> and what about other clones that have properties that are inherited from
> the parent?  will they all now have compression enabled as well?

Any other clones will inherit their properties from their *parent*, not
their clone origin, so 'zfs promote' will not change that either.

Note that any snapshots that are moved to the promoted filesystem *will*
inherit their properties from their new filesystem.  However, the only
inheritable properties which affect snapshots are 'devices', 'exec', and
'setuid' (see 6420135, "zfs(1m) should display properties of snapshots
that affect their behavior").

Also, note that you can change a filesystem's parent, and thus where it
inherits properties from, by using the 'zfs rename' subcommand.

--matt

[*] I may be the cause of some of this confusion, since there are really
two trees here and sometimes I'll call the clone origin the "parent" or
"clone parent".  But the documentation at least should be consistent,
let me know if this is not the case.
_______________________________________________
zfs-discuss mailing list
zfs-discuss@opensolaris.org
http://mail.opensolaris.org/mailman/listinfo/zfs-discuss

Reply via email to