Matt, thanks for update. can we print feature=portable by: zpool get feature-portable <pool> ? probably we need pool property for it , because we need to know feature for upgrade.
-Igor >> >> >> On Wed, Dec 5, 2018 at 9:21 PM Josh Paetzel <[email protected] >> <mailto:[email protected]>> 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 <https://openzfs.topicbox.com/latest> / openzfs-developer / see > discussions <https://openzfs.topicbox.com/groups/developer> + participants > <https://openzfs.topicbox.com/groups/developer/members> + delivery options > <https://openzfs.topicbox.com/groups/developer/subscription>Permalink > <https://openzfs.topicbox.com/groups/developer/T562a2f6ecf883736-M9860ca063c98d9793c5434cc> ------------------------------------------ openzfs: openzfs-developer Permalink: https://openzfs.topicbox.com/groups/developer/T562a2f6ecf883736-Mbbbe2f06be7893b7c57fea62 Delivery options: https://openzfs.topicbox.com/groups/developer/subscription
