Elaborating upon zfs and zpool enhancements to AI.  BE considerations - 
add name of BE to create.

As always, feedback is desired.  Also opinions as to the value of these 
features - how useful are they?

The concept of overwriting existing pools was reconsidered.  The 
question here is what to do with a pool if it has <zpool_create> and it 
already exists.  "Overwrite" is a misnomer and will not be used here.

There are a few different pool reuse cases:
1) the user wants to reuse the manifest and preserve the pool the 
created with the manifest
2) the user wants to remove contents from the pool and reuse it without 
having to know its options or vdevs
3) the user wants to redefine the pool, changing options or vdevs

For the first option, adding boolean attribute "preserve" will result in 
any associated manifest definitions of vdevs, mirrors, and options being 
ignored, and the zpool will be unchanged, except for BEs in the root 
pool (discussed below)

For the second, adding boolean attribute "destroy_all_datasets" will 
cause any datasets to be destroyed, including any BEs

For the third, the user must <zpool_destroy>, then <zpool_create> 
according to the new specifications.

For root pools, the preserve options become more interesting.  If the 
root pool exists, it could contain BEs that the user may want to 
preserve.  Propose for the zfs_root_pool section, add BE_name element.  
If named BE does not exist, just install OpenSolaris into that BE.  If 
it does exist, fail the install unless boolean attribute 
destroy_be_if_it_exists is true in which case the BE is first deleted, 
then recreated.  When a BE is not named, take the default behavior, 
which is to use 'opensolaris' BE, destroying it if it exists.

My original draft of the AI manifest schema allowed the user to create a 
filesystem in the context of a zpool:
<ai_manifest name="default">
    ...
    <ai_zfs_pool>
        <zpool_create name="zoolpool">
           <vdev>c0t0d0</vdev>
           <zfs_fs_create path="mynewzfs"/>   
        </zpool_create>
    </ai_zfs_pool>

would result in:
zpool create zoolpool /dev/dsk/c0t0d0
zfs create zpoolpool/mynewzfs

Added the ability to create a zfs file system without the pool context, 
at the top XML level:
<ai_manifest name="default">
    ...
    <zfs_fs_create path="poolname/fully_specified_path"/>
would result in:
zpool create poolname/fully_specified_path

Also added to the manifest the ability to create a zfs filesystem as a 
child of another zfs filesystem.
    <zfs_fs_create path="mynewzfs">
        <zfs_fs_create path="child_of_mynewzfs"/>   
    </zfs_fs_create> <!-- end mynewzfs -->

References:
http://www.opensolaris.org/os/project/caiman/auto_install/ai_design/
http://www.opensolaris.org/os/project/caiman/auto_install/ai_manifest_schema.xml
http://www.opensolaris.org/os/project/caiman/auto_install/ai_manifest_example.xml

Reply via email to