On Fri, Dec 7, 2018, at 11:50 AM, Matthew Ahrens wrote:
> 
> 
> On Thu, Dec 6, 2018 at 11:17 AM Matthew Ahrens
> <mahr...@delphix.com> wrote:>> 
>> 
>> On Thu, Dec 6, 2018 at 10:06 AM Josh Paetzel <j...@tcbug.org> wrote:>>> __
>>> 
>>> 
>>> 
>>> On Thu, Dec 6, 2018, at 11:40 AM, Matthew Ahrens wrote:
>>>> 
>>>> 
>>>> On Wed, Dec 5, 2018 at 9:21 PM Josh Paetzel <j...@tcbug.org> wrote:
>>>>> There was a proposal on this mailing list a week or so ago that
>>>>> sparked some good discussion regarding setting feature flags at
>>>>> pool creation.  We discussed this proposal on the last OpenZFS
>>>>> call and while we all agreed it was a good idea, we felt the UI
>>>>> could use a little workshopping.>>>> 
>>>> Thanks for leading this discussion, Josh!
>>>>  
>>>>> 
>>>>> This proposal is simply a starting point for a discussion.
>>>>> 
>>>>> The proposal is to add an optional flag at zpool create time.  -o
>>>>> features=>>>>> 
>>>>> which can be set to one of the following 4 settings:
>>>>> 
>>>>> all:  The default and the current behavior of zpool create.  This
>>>>> setting enables all features supported by the in use OpenZFS
>>>>> version.>>>>> 
>>>>> compat: Enable async_destroy, empty_bpobj, filesystem_limits,
>>>>> lz4_compress, spacemap_histogram, extensible_dataset, bookmarks,
>>>>> enabled_txg, and hole_birth. This set of features is supported by
>>>>> FreeBSD/FreeNAS 9.3 (July of 2014), ZoL 0.6.4 ( 0.6.5.6 was used
>>>>> in Ubuntu 16.04 LTS), and Illumos in the early to mid 2014 era.>>>> 
>>>> I think the term "portable" is more specific than "compat[ible]",
>>>> so "-o features=portable" is probably a better name.  Thanks to
>>>> whoever suggested that at the meeting Tuesday.>>> 
>>> +1
>>> 
>>>> I think that the definition of "-o features=portable" needs to
>>>> change over time, as features become more widely available.  Do you
>>>> have thoughts on how specifically we should do that?>>> 
>>> One thought would be:  As a delivery vehicle drops out of support we
>>> can remove it from the list.  So say we have -o features=portable
>>> include Ubuntu 16.04 LTS.  When support for Ubuntu 16.04 LTS expires
>>> we remove it from the portable list.  Now, that directly contradicts
>>> the first pass at this.  For instance FreeBSD (and FreeNAS) 9.3-R
>>> have long been out of support by the "vendor">> 
>> I think that's a very conservative way to define it - essentially:
>> you "portable means you can take this pool to any FreeBSD or Ubuntu
>> that's supported by the vendor".  I would suggest we look at it from
>> the other direction: "portable means that there's some version of
>> FreeBSD, ZoL, and illumos that you can take your pool to".  More
>> specifically we could say "it's in a released version of FreeBSD
>> (e.g. FreeBSD 11.1), a released version of ZoL (e.g. Zol 0.7.2), and
>> in the illumos master branch" (since there's no "releases" of
>> illumos).  That said, I'm open to variations on this (e.g. should we
>> say it's in a SmartOS release rather than illumos master?  Or it's in
>> FreeBSD-STABLE vs a numbered release?)
> Here's a more detailed proposal:
> 
> Add new options to "zpool create", "zpool upgrade", and "zpool set":
>  - zpool create -o features=portable-20XX (yearly values)
>  - zpool create -o features=portable
>  - zpool upgrade -o features=portable-20XX
>  - zpool upgrade -o features=portable
>  - zpool set feature@portable=20XX
>  - zpool set feature@portable=enabled
> 
> "-o features=portable-2016" means features that were supported by all
> tier-1 platforms at the beginning of 2016.  This definition will not
> change over time.  Specifically, on January 1, 2016, the following all
> supported the features:>  - a numbered release of FreeBSD (specifically 
> FreeBSD 10.2 for portable-
>    2016)>  - a numbered release of ZFSonLinux (specifically ZoL 0.6.5.3 for 
> portable-
>    2016)>  - the code in illumos-gate as of 1 year prior (specifically Jan 1
>    2015 for portable-2016).> 
> Similar yearly portable values will be created at the beginning of
> each year.> 
> "-o features=portable" means that features that are currently
> supported by all tier-1 platforms.  This definition will change over
> time.  Specifically, as of the current date, the following all
> supported the features:>  - a numbered release of FreeBSD (currently FreeBSD 
> 11.2)
>  - a numbered release of ZFSonLinux (currently ZoL 0.7.12)
>  - the code in illumos-gate as of 1 year prior (currently December 7,
>    2017, commit b8e5ecd6 for bug 8895).> 
> From these definitions, users can make the following conclusions:
>  - I upgraded this machine sometime in 2017, therefore if I want to
>    bring a pool to it, I can use "-o features=portable-2017" or
>    earlier.>  - I case of an emergency or change in strategy, I want to be 
> able to
>    bring this pool to another operating system.  I can upgrade or
>    install the other OS when I need to.  Therefore I can use "-o
>    features=portable".> 
> I think a reasonable addition to this would be to remember the last
> "features=" value that was used with "zpool create" or "zpool
> upgrade".  If it's a static value (portable-20XX), "zpool upgrade"
> would not do anything unless you give a force flag.  If it's the
> dynamic value ("features=portable") then "zpool upgrade" would require
> a force flag unless we're enabling a feature that's allowed by the
> current definition of "portable".  So running "zpool upgrade <pool>"
> or "zpool upgrade -a" would always be "safe" in that it respects the
> "features=portable*" setting last made.> 
> For now, I would be most comfortable with the default behavior of
> "zpool create" remaining the same.  If we find something that we think
> works well then I'd consider making "zpool create" imply "-o
> features=portable" by default, and "zpool upgrade <pool>|-a" imply "-o
> features=portable" by default.> 
> --matt
> 
> *openzfs[1]* / openzfs-developer / see discussions[2] +
> participants[3] + delivery options[4] Permalink[5]
I support this proposal.

--

Thanks,

Josh Paetzel



Links:

  1. https://openzfs.topicbox.com/latest
  2. https://openzfs.topicbox.com/groups/developer
  3. https://openzfs.topicbox.com/groups/developer/members
  4. https://openzfs.topicbox.com/groups/developer/subscription
  5. 
https://openzfs.topicbox.com/groups/developer/T562a2f6ecf883736-M9860ca063c98d9793c5434cc

------------------------------------------
openzfs: openzfs-developer
Permalink: 
https://openzfs.topicbox.com/groups/developer/T562a2f6ecf883736-M92e289421f76a2b00a0fae30
Delivery options: https://openzfs.topicbox.com/groups/developer/subscription

Reply via email to