Hi All What is the status of this integration? I have started looking at it myself and only then found this thread, webrev, etc.
Cheers, Andrzej On 19 April 2014 02:16, Matthew Ahrens <[email protected]> wrote: > > > > On Fri, Apr 18, 2014 at 2:29 PM, Alek Pinchuk <[email protected]> > wrote: > >> Hello, >> >> Matt, thanks for taking a look again. See response inline: >> >> On Fri, Apr 18, 2014 at 10:26 AM, Matthew Ahrens <[email protected]> >> wrote: >> >>> On Sat, Apr 5, 2014 at 4:22 PM, Matthew Ahrens <[email protected]> >>> wrote: >>> >>>> I just read the Oracle documentation. It sounds like they implemented >>>> it so that "-o prop=val" implements the option C that I described: set >>>> the property on the topmost filesystem, and "force inherit" it onto all >>>> descendants (doing the equivalent of a "zfs inherit" on each of the >>>> descendants). And I am guessing that they made "-x" do the equivalent of >>>> "zfs inherit" after receiving the property. These semantics seems >>>> reasonable, and I think *we should implement the same behavior*. >>>> >>>> >>> Do you have a response to the above comment? I would like to see a >>> strong argument for why we should implement a feature that on the surface >>> appears to be the same as an Oracle ZFS feature, but is actually subtly >>> different. >>> >> >> If I understand you correctly the patch already does this: >> >> root@alek401:/volumes# zfs get sharenfs test >> NAME PROPERTY VALUE SOURCE >> test sharenfs off default >> root@alek401:/volumes# zfs create test/ds >> root@alek401:/volumes# zfs create test/ds/child >> root@alek401:/volumes# zfs get sharenfs test/ds >> NAME PROPERTY VALUE SOURCE >> test/ds sharenfs off default >> root@alek401:/volumes# zfs get sharenfs test/ds/child >> NAME PROPERTY VALUE SOURCE >> test/ds/child sharenfs off default >> root@alek401:/volumes# zfs set sharenfs=on test/ds >> root@alek401:/volumes# zfs get sharenfs test/ds/child >> NAME PROPERTY VALUE SOURCE >> test/ds/child sharenfs on inherited from test/ds >> root@alek401:/volumes# zfs get sharenfs test/ds >> NAME PROPERTY VALUE SOURCE >> test/ds sharenfs on local >> root@alek401:/volumes# zfs snapshot -r test/ds@0 >> >> root@alek401:/volumes# zfs send -R test/ds@0 | zfs recv -o sharenfs=off >> test/ds2 >> root@alek401:/volumes# zfs get sharenfs test/ds2 >> NAME PROPERTY VALUE SOURCE >> test/ds2 sharenfs off received >> root@alek401:/volumes# zfs get sharenfs test/ds2/child >> NAME PROPERTY VALUE SOURCE >> test/ds2/child sharenfs off inherited from test/ds2 >> > > I don't see where you are treating the topmost filesystem differently from > the filesystems beneath it, though in practice it seems to be doing that in > the example above. What would happen if the property was also set on > test/ds/child? > > > >> root@alek401:/volumes# zfs send -R test/ds@0 | zfs recv -x sharenfs >> test/ds3 >> root@alek401:/volumes# zfs get sharenfs test/ds3 >> NAME PROPERTY VALUE SOURCE >> test/ds3 sharenfs off default >> root@alek401:/volumes# zfs get sharenfs test/ds3/child >> NAME PROPERTY VALUE SOURCE >> test/ds3/child sharenfs off default >> > >> Perhaps we can have a quick chat to establish what you would like to see >> done here? >> > > Really what I would like to see is a comparison of the behavior of these > changes and Oracle ZFS. It should cover things like: > > Incremental receive, where the property is set on child filesystems; does > -o prop=value set the property on all the filesystems? Does it set the > property on the top filesystem that is received and the children inherit > that prop? > > For example, if you do "zfs send -R test/ds@a | zfs recv -o sharenfs=rw > test/recvd", I think that Oracle ZFS would result in the following: > > # zfs get -o all -r sharenfs test > NAME PROPERTY VALUE RECEIVED SOURCE > test sharenfs off - default > test/ds sharenfs on - local > test/ds@0 sharenfs - - - > test/ds/child sharenfs off - local > test/ds/child@0 sharenfs - - - > test/recvd sharenfs rw on local > test/recvd@0 sharenfs - - - > test/recvd/child sharenfs rw off inherited from test/recvd > test/recvd/child@0 sharenfs - - - > > I.e. the result of doing "zfs set sharenfs=rw test/recvd; zfs inherit > sharenfs test/recvd/child". I don't see how the code under review would > accomplish this. It seems like it would do "zfs set sharenfs=rw > test/recvd; zfs set sharenfs=rw test/recvd/child". > > --matt > > >> >> >>> >>> On Thu, Apr 17, 2014 at 11:33 AM, Alek Pinchuk < >>> [email protected]> wrote: >>> >>>> Hello, >>>> >>>> I've updated the webrev a bit based on some review comments. >>>> >>>> Please see the updated webrev: http:// >>>> <http://alek_p.bitbucket.org/webrevs/2745/>alek_p.bitbucket.org >>>> <http://alek_p.bitbucket.org/webrevs/2745/>/ >>>> <http://alek_p.bitbucket.org/webrevs/2745/>webrevs >>>> <http://alek_p.bitbucket.org/webrevs/2745/>/2745/ >>>> <http://alek_p.bitbucket.org/webrevs/2745/> >>>> >>>> HTML version of the modified manpage: http:// >>>> <http://alek_p.bitbucket.org/webrevs/2745/zfs.1m.html> >>>> alek_p.bitbucket.org >>>> <http://alek_p.bitbucket.org/webrevs/2745/zfs.1m.html>/ >>>> <http://alek_p.bitbucket.org/webrevs/2745/zfs.1m.html>webrevs >>>> <http://alek_p.bitbucket.org/webrevs/2745/zfs.1m.html>/2745/ >>>> <http://alek_p.bitbucket.org/webrevs/2745/zfs.1m.html>zfs >>>> <http://alek_p.bitbucket.org/webrevs/2745/zfs.1m.html>.1m.html >>>> <http://alek_p.bitbucket.org/webrevs/2745/zfs.1m.html> >>>> >>>> >>>> The biggest change from the earlier webrevs is that now the >>>> add_unique_option() call doesn't return anything, and will ignore duplicate >>>> props instead of failing. >>>> >>>> Since the behavior is pretty obvious (the identical options are useless >>> but harmless, just like if I specify any other option multiple times, e.g. >>> -ee), how about not printing anything in this case? >>> >> >> Sure, I've update the webrev. >> >> Please see the updated webrev: http://alek_p.bitbucket.org/webrevs/2745/ >> HTML version of the modified manpage: >> http://alek_p.bitbucket.org/webrevs/2745/zfs.1m.html >> >> -Alek >> >> >>> >>> >>>> Again, this is Steven's FreeBSD patch with some slight modifications. >>>> >>>> >>>> -Alek >>>> >>>>> On Apr 8, 2014 2:03 PM, "Alek Pinchuk" <[email protected]> wrote: >>>>> >>>>>> Hello Matt, >>>>>> >>>>>> Thanks for taking a look. See response inline: >>>>>> >>>>>> >>>>>> On Sat, Apr 5, 2014 at 4:22 PM, Matthew Ahrens <[email protected]> >>>>>> wrote: >>>>>> >>>>>>> I just read the Oracle documentation. It sounds like they >>>>>>> implemented it so that "-o prop=val" implements the option C that I >>>>>>> described: set the property on the topmost filesystem, and "force >>>>>>> inherit" it onto all descendants (doing the equivalent of a "zfs >>>>>>> inherit" >>>>>>> on each of the descendants). And I am guessing that they made "-x" do >>>>>>> the >>>>>>> equivalent of "zfs inherit" after receiving the property. These >>>>>>> semantics >>>>>>> seems reasonable, and I think *we should implement the same >>>>>>> behavior*. I'm also fine with dropping the "dataset#prop" stuff. >>>>>>> >>>>>>> >>>>>> In the interest of time I've dropped the "dataset#prop" stuff from >>>>>> the patch. If someone needs this features in illumos please post a webrev >>>>>> that adds it. >>>>>> >>>>>> >>>>>> >>>>>>> --matt >>>>>>> >>>>>>> >>>>>>> On Sat, Apr 5, 2014 at 4:14 PM, Matthew Ahrens <[email protected]> >>>>>>> wrote: >>>>>>> >>>>>>>> Alek, thanks a lot for picking up these changes. I have a few >>>>>>>> comments / questions: >>>>>>>> >>>>>>>> ndmpd_zfs.c and be_create.c have Nexenta copyrights added to them. >>>>>>>> I just wanted to confirm that these changes were contributed by >>>>>>>> Nexenta. >>>>>>>> It's fine if so, it just stood out compared to the other files which >>>>>>>> have >>>>>>>> no copyright added (which is also fine). >>>>>>>> >>>>>>> >>>>>> Yes the changes in those two files are Nexenta sponsored work. I've >>>>>> made them while "on the clock". >>>>>> >>>>>> >>>>>>> >>>>>>>> zfs.1m: >>>>>>>> It looks like you've copied the documentation from the Oracle >>>>>>>> manpages. Are you sure that we are allowed to do that? I.e. what >>>>>>>> license >>>>>>>> grants us the right to reuse Oracle's documentation? >>>>>>>> >>>>>>>> >>>>>> I just ported what was in the FreeBSD patch. The manpage part was >>>>>> changing the FreeBSD markup to use the illumos manpage markup. Did not >>>>>> know >>>>>> that the manpage was lifted from Oracle. >>>>>> In light of this I "rewrote" the manpage for this patch. >>>>>> >>>>>> It is now probably too minimalistic but is not copied from Oracle. It >>>>>> would be great to get some feedback on what people would like to see in >>>>>> there. >>>>>> >>>>>> >>>>>>> I don't quite follow the documentation around the "-o" and "-x" >>>>>>>> flags: >>>>>>>> - if I specify "-o prop=value", it says it's as though I did "zfs >>>>>>>> set prop=value". So the property is marked as a "locally set" >>>>>>>> property, as >>>>>>>> opposed to a "received" property, right? >>>>>>>> - If I specify "-o prop=value", and it is an inheritable property >>>>>>>> and I am receiving a "-R" stream, is the behavior: >>>>>>>> - A. set the property on every filesystem (this seems bad) >>>>>>>> - B. set the property on the topmost filesystem that's part of >>>>>>>> the stream (descendants will inherit it or not depending on what their >>>>>>>> local settings are) >>>>>>>> - C. set the property on the topmost filesystem, and "force >>>>>>>> inherit" it onto all descendants (doing the equivalent of a "zfs >>>>>>>> inherit" >>>>>>>> on each of the descendants) >>>>>>>> - B or C seem OK, but you should document the behavior. >>>>>>>> Unfortunately, it looks like A is what was implemented. >>>>>>>> - if I specify "-x prop", it says it's as though the property was >>>>>>>> not present in the send stream. Given that, I don't understand the >>>>>>>> following sentences "If a received property needs to be overridden, the >>>>>>>> effective value will be set or inherited, depending on if the property >>>>>>>> is >>>>>>>> inheritable or not. In the case of an incremental update, -x leaves any >>>>>>>> existing local setting or explicit inheritance unchanged (since the >>>>>>>> received property is already overridden)." Why would a received >>>>>>>> property >>>>>>>> need to be overridden? The latter sentence implies that you're >>>>>>>> actually >>>>>>>> setting the property as a received property, and then overriding it >>>>>>>> with a >>>>>>>> "local inherit". Which is different from what would happen if the >>>>>>>> property >>>>>>>> was not present in the send stream. It sounds like it might be that >>>>>>>> "-x >>>>>>>> prop" for inheritable properties actually does the equivalent of "zfs >>>>>>>> inherit prop <every fs that's received>", unless there is already a >>>>>>>> local >>>>>>>> setting for that fs in which case it has no effect. It looks like >>>>>>>> what's >>>>>>>> implemented is that -x causes us to ignore that prop if it is in the >>>>>>>> stream. Please change the documentation to match. >>>>>>>> >>>>>>>> libzfs_sendrecv.c: >>>>>>>> 2043: should be "skipping receive of %s" >>>>>>>> >>>>>>> >>>>>> fixed >>>>>> >>>>>> 2935: can you explain the handling of has_exprops? It seems like (a) >>>>>>>> you could just inline nvlist_empty(exprops) where necessary, and (b) if >>>>>>>> (stream_wantsnewfs), has_exprops is uninitialized (dsname is also >>>>>>>> uninitialized) >>>>>>>> >>>>>>> >>>>>> fixed >>>>>> >>>>>> >>>>>>> 2567: I think that "props" is the properties from the send stream >>>>>>>> (not "current properties"), and "exprops" is the properties set on the >>>>>>>> command line (via -x and -o). I don't know what "external properties" >>>>>>>> means. >>>>>>>> >>>>>>> >>>>>> changed the comments, but the variable name is still exprops. I can >>>>>> change that (to cli_props?) if needed. >>>>>> >>>>>> Please see the updated webrev: >>>>>> http://alek_p.bitbucket.org/webrevs/2745/ >>>>>> HTML version of the modified manpage: >>>>>> http://alek_p.bitbucket.org/webrevs/2745/zfs.1m.html >>>>>> >>>>>> -Alek >>>>>> >>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> On Fri, Apr 4, 2014 at 9:11 PM, Alek Pinchuk < >>>>>>>> [email protected]> wrote: >>>>>>>> >>>>>>>>> Hello, >>>>>>>>> >>>>>>>>> I know members of the OpenZFS community (including my employer) >>>>>>>>> would really like to see this cross the goalline and be integrated. >>>>>>>>> >>>>>>>>> And since it looks like this effort has stalled (and I couldn't >>>>>>>>> get a hold of Steven) I've decided to port his FreeBSD patch to >>>>>>>>> illumos and >>>>>>>>> the webrev is available at >>>>>>>>> http://alek_p.bitbucket.org/webrevs/2745 >>>>>>>>> >>>>>>>>> I had to touch two files (ndmpd_zfs.c & be_create.c) that were not >>>>>>>>> part of the FreeBSD patch. >>>>>>>>> >>>>>>>>> The rest of the code is basically unchanged from Steven's. I think >>>>>>>>> I've addressed all of Matt's review comments from the previous email. >>>>>>>>> Please take a look at the webrev and let me know if there is anything >>>>>>>>> else >>>>>>>>> that needs to be changed. >>>>>>>>> >>>>>>>>> This is what the illumos ZFS manpage looks like after the patch: >>>>>>>>> http://alek_p.bitbucket.org/webrevs/2745/zfs.1m.html >>>>>>>>> >>>>>>>>> I'll make sure Steven Hartland is the author of the patch >>>>>>>>> submitted for RTI. >>>>>>>>> >>>>>>>>> -Alek >>>>>>>>> >>>>>>>>> P.S. >>>>>>>>> git pbchk will complain since I didn't add any copyright to the >>>>>>>>> files changed by the FreeBSD patch since it didn't have any copyright >>>>>>>>> additions in it. >>>>>>>>> Copyrights: >>>>>>>>> usr/src/lib/libzfs/common/libzfs_impl.h: no copyright claim for >>>>>>>>> current year found >>>>>>>>> usr/src/lib/libzfs/common/libzfs_dataset.c: no copyright claim for >>>>>>>>> current year found >>>>>>>>> usr/src/cmd/zfs/zfs_main.c: no copyright claim for current year >>>>>>>>> found >>>>>>>>> usr/src/lib/libzfs/common/libzfs.h: no copyright claim for current >>>>>>>>> year found >>>>>>>>> usr/src/lib/libzfs/common/libzfs_sendrecv.c: no copyright claim >>>>>>>>> for current year found >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> On Mon, Feb 25, 2013 at 1:02 PM, Matthew Ahrens < >>>>>>>>> [email protected]> wrote: >>>>>>>>> >>>>>>>>>> Steven, thanks for following up on this. >>>>>>>>>> >>>>>>>>>> It would be really great if you could integrate this into >>>>>>>>>> illumos. I think all you would need to do is convert the manpage >>>>>>>>>> changes >>>>>>>>>> (illumos uses a different markup language for manpages), apply your >>>>>>>>>> diffs, >>>>>>>>>> build and test on illumos, and post a webrev for review on >>>>>>>>>> [email protected]. >>>>>>>>>> >>>>>>>>>> It would also be great if you could work with John Kennedy to >>>>>>>>>> integrate test for the new features into the zfs test suite. >>>>>>>>>> >>>>>>>>>> I took another look at your diffs and noticed just a few small >>>>>>>>>> things that could be improved: >>>>>>>>>> >>>>>>>>>> zfs.8 line ~2383 misspells "receive" >>>>>>>>>> line ~2420: >>>>>>>>>> +If a received property needs to be overridden, the effective >>>>>>>>>> value can be >>>>>>>>>> +set or inherited, depending on the property. >>>>>>>>>> I think you mean "will be set or inherited" (the user doesn't >>>>>>>>>> choose). You could also mention what it depends on ("depending on >>>>>>>>>> if the >>>>>>>>>> property is inheritable or not"). >>>>>>>>>> >>>>>>>>>> We shoud clarify that the filesystem/volume names must be >>>>>>>>>> specified as they existed on the sending system (as opposed to the >>>>>>>>>> names >>>>>>>>>> that they will be received into). >>>>>>>>>> >>>>>>>>>> zfs_main.c: >>>>>>>>>> since parsepropname() is used not just for properties (e.g. for >>>>>>>>>> -l), you might call it something like "addonce" and not have its >>>>>>>>>> error >>>>>>>>>> message use the term "property". >>>>>>>>>> >>>>>>>>>> props_override(): >>>>>>>>>> >>>>>>>>>> Can your calls to nvlist_add_*() ever fail? (e.g. due to the >>>>>>>>>> name already existing)? I don't think so, in which case you should >>>>>>>>>> VERIFY0(nvlist_add_*()), or better yet use the fnvlist_* routines. >>>>>>>>>> >>>>>>>>>> + char *sepp = strchr(propname, sepp); >>>>>>>>>> I don't think this will compile; you probably want >>>>>>>>>> "strchr(propname, sep)". Be sure to test this out. >>>>>>>>>> >>>>>>>>>> zfs_receive_one(): "skip" should be a boolean_t. >>>>>>>>>> >>>>>>>>>> Again, thanks for doing this Steven. Looking forward to having >>>>>>>>>> it in illumos and FreeBSD! >>>>>>>>>> >>>>>>>>>> --matt >>>>>>>>>> >>>>>>>>>> On Sat, Feb 23, 2013 at 6:02 PM, Steven Hartland < >>>>>>>>>> [email protected]> wrote: >>>>>>>>>> >>>>>>>>>>> Sorry its taken so long to get round to this, just had a really >>>>>>>>>>> busy >>>>>>>>>>> number of months. Anyway all the changes have been made, see >>>>>>>>>>> below >>>>>>>>>>> for individual details, patches are attached. >>>>>>>>>>> >>>>>>>>>>> ----- Original Message ----- From: "Steven Hartland" >>>>>>>>>>> >>>>>>>>>>>> ----- Original Message ----- From: "Matthew Ahrens" < >>>>>>>>>>>> [email protected]> >>>>>>>>>>>> >>>>>>>>>>>>> Here are some code-specific notes: >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> parsepropname(): I see that you're following the bad example >>>>>>>>>>>>> set by >>>>>>>>>>>>> parseprop() and parse_depth() of operating on optarg. It >>>>>>>>>>>>> would be >>>>>>>>>>>>> better to explicitly pass the name of the property to parse, >>>>>>>>>>>>> rather >>>>>>>>>>>>> than operating on the global optarg. To isolate the uglyness >>>>>>>>>>>>> of this >>>>>>>>>>>>> global variable, optarg should only be used within the >>>>>>>>>>>>> function that >>>>>>>>>>>>> calls getopt(). It would be great if you wanted to fix all of >>>>>>>>>>>>> these, >>>>>>>>>>>>> but if not that's OK. >>>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> I'll look into this thanks, as you said following the example >>>>>>>>>>>> ;-) >>>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> Fixed this, and created a seperate patch for fixing the original >>>>>>>>>>> code too >>>>>>>>>>> see attached >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> zfs_receive() can't deal with an empty list of properties or >>>>>>>>>>>>> datasets? >>>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> Was just forward loading that logic at the time, will review >>>>>>>>>>>> and update >>>>>>>>>>>> if its doesn't make sense any more. >>>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> Minor changes needed to faciliated this which have been done. >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> props_overrride(): >>>>>>>>>>>>> >>>>>>>>>>>>> this function could use some comments explaining what is doing. >>>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> Will do. >>>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> Comment expanded to give more insite into what its doing >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> however I think that the following idiom for iterating over a >>>>>>>>>>>>> nvlist >>>>>>>>>>>>> is more easily understood, because it keeps all the iteration >>>>>>>>>>>>> logic in >>>>>>>>>>>>> one place, and handles "continue" statements: >>>>>>>>>>>>> >>>>>>>>>>>>> for (nvpair_t *pair = nvlist_next_nvpair(nvl, NULL); >>>>>>>>>>>>> pair != NULL; >>>>>>>>>>>>> pair = nvlist_next_nvpair(nvl, pair)) { >>>>>>>>>>>>> ... >>>>>>>>>>>>> } >>>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> Not a problem will change. >>>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> Changed >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> the variable you call "tods" would usually be named "atp" (the >>>>>>>>>>>>> pointer >>>>>>>>>>>>> to the "at" character). This is where you will have a bug when >>>>>>>>>>>>> someone does "-o userquota@username@pool/fsname=1g". >>>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> I wasn't aware that style of permissions existed, not sure they >>>>>>>>>>>> do >>>>>>>>>>>> in the version of FreeBSD I based this work on, but definitely >>>>>>>>>>>> something to get fixed. >>>>>>>>>>>> >>>>>>>>>>>> Any suggestions on an alternative syntax? >>>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> Separator changed to # and code changes to sepp (the pointer to >>>>>>>>>>> the >>>>>>>>>>> separator character) >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> It seems like the only way you could get a non-string, >>>>>>>>>>>>> non-boolean >>>>>>>>>>>>> nvpair would be a programming error (i.e. bad user input could >>>>>>>>>>>>> not >>>>>>>>>>>>> cause it). Therefore you should assert this is the case, >>>>>>>>>>>>> rather than >>>>>>>>>>>>> print an error message. >>>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> Yes I agree, will do. >>>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> These are now asserts >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> It seems like you could omit the "if (!nvlist_exists([gd]xprops)" >>>>>>>>>>>>> check, because the -x props will be removed after this anyway. >>>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> It would but didn't want it going through all the effort of >>>>>>>>>>>> adding it >>>>>>>>>>>> only to remove it later for performance was my thinking. Do you >>>>>>>>>>>> believe >>>>>>>>>>>> this wouldn't result in any performance loss if removed? >>>>>>>>>>>> >>>>>>>>>>>> Likewise the "!nvlist_exists(doprops" check, because the dx >>>>>>>>>>>>> props will >>>>>>>>>>>>> be added after this anyway. So you can simplify the logic to: >>>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>> Given there will be little performance difference either way >>>>>>>>>>> I've decided >>>>>>>>>>> to keep it as it was so that the output in verbose case is what >>>>>>>>>>> the user >>>>>>>>>>> would expect. >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> Regards >>>>>>>>>>> Steve >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> ================================================ >>>>>>>>>>> This e.mail is private and confidential between Multiplay (UK) >>>>>>>>>>> Ltd. and the person or entity to whom it is addressed. In the event >>>>>>>>>>> of >>>>>>>>>>> misdirection, the recipient is prohibited from using, copying, >>>>>>>>>>> printing or >>>>>>>>>>> otherwise disseminating it or any information contained in it. >>>>>>>>>>> In the event of misdirection, illegible or incomplete >>>>>>>>>>> transmission please telephone +44 845 868 1337 >>>>>>>>>>> or return the E.mail to [email protected]. >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> ------------------------------------------- >>>>>>>>>>> illumos-developer >>>>>>>>>>> Archives: https://www.listbox.com/member/archive/182179/=now >>>>>>>>>>> RSS Feed: https://www.listbox.com/member/archive/rss/182179/ >>>>>>>>>>> 21175174-cd73734d >>>>>>>>>>> Modify Your Subscription: https://www.listbox.com/member/?&id_ >>>>>>>>>>> secret=21175174-792643f6 <https://www.listbox.com/member/?&> >>>>>>>>>>> >>>>>>>>>>> Powered by Listbox: http://www.listbox.com >>>>>>>>>>> >>>>>>>>>> >>>>>>>>>> *illumos-zfs* | Archives >>>>>>>>>> <https://www.listbox.com/member/archive/182191/=now> >>>>>>>>>> <https://www.listbox.com/member/archive/rss/182191/23976944-8a53fa63> >>>>>>>>>> | Modify <https://www.listbox.com/member/?&> Your Subscription >>>>>>>>>> <http://www.listbox.com> >>>>>>>>>> >>>>>>>>> >>>>>>>>> *illumos-zfs* | Archives >>>>>>>>> <https://www.listbox.com/member/archive/182191/=now> >>>>>>>>> <https://www.listbox.com/member/archive/rss/182191/21635000-ebd1d460> >>>>>>>>> | Modify <https://www.listbox.com/member/?&> Your Subscription >>>>>>>>> <http://www.listbox.com> >>>>>>>>> >>>>>>>> >>>>>>>> >>>>>>> *illumos-zfs* | Archives >>>>>>> <https://www.listbox.com/member/archive/182191/=now> >>>>>>> <https://www.listbox.com/member/archive/rss/182191/23976944-8a53fa63> >>>>>>> | Modify <https://www.listbox.com/member/?&> Your Subscription >>>>>>> <http://www.listbox.com> >>>>>>> >>>>>> >>>>>> >>>> *illumos-developer* | Archives >>>> <https://www.listbox.com/member/archive/182179/=now> >>>> <https://www.listbox.com/member/archive/rss/182179/21175174-cd73734d> >>>> | Modify <https://www.listbox.com/member/?&> Your Subscription >>>> <http://www.listbox.com> >>>> >>> >>> >> > *illumos-developer* | Archives > <https://www.listbox.com/member/archive/182179/=now> > <https://www.listbox.com/member/archive/rss/182179/21174983-884d0c04> | > Modify > <https://www.listbox.com/member/?member_id=21174983&id_secret=21174983-e58407f8> > Your Subscription <http://www.listbox.com> >
_______________________________________________ developer mailing list [email protected] http://lists.open-zfs.org/mailman/listinfo/developer
