[developer] Re: [openzfs/openzfs] 7584 Improve 'zpool labelclear' command (#424)

2017-07-13 Thread Yuri Pankov
yuripv commented on this pull request.



> @@ -198,6 +198,7 @@ SYMBOL_VERSION SUNW_1.1 {
nvlist_alloc;
nvlist_dup;
nvlist_free;
+   nvlist_invalidate;

You can't add the symbols to already existing public version, either move it to 
SUNWprivate_1.1, or provide new public version.

>   return (-1);
 
-   for (l = 0; l < VDEV_LABELS; l++) {
-   if (pwrite64(fd, label, sizeof (vdev_label_t),
-   label_offset(size, l)) != sizeof (vdev_label_t)) {
-   free(label);
-   return (-1);
+   for (l = start; l < end; l++) {
+   if ((check == B_TRUE) || (cherry == B_TRUE)) {

treat these as booleans that they are, i.e., ```if (check || cherry)```.

>   switch (c) {
+   case 'b':
+   start = 0;
+   n = VDEV_LABELS / 2;
+   break;
+   case 'e':
+   start = VDEV_LABELS / 2;
+   n = VDEV_LABELS / 2;
+   break;
+   case 'i':
+   index = strtoll(optarg, &end, 10);

how about using our new friend, ```strtonum()``, here? :-)

> @@ -105,6 +105,9 @@
 .Op Ar interval Op Ar count
 .Nm
 .Cm labelclear
+.Op Fl b | Fl e | Fl i Ar index

can we please make it (here, usage, description) ```zfs labelclear [-cfm] 
[-b|-e|-i index] device```?

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/openzfs/openzfs/pull/424#pullrequestreview-49740365
--
openzfs-developer
Archives: 
https://openzfs.topicbox.com/groups/developer/discussions/T92ce69bb6bd4a9c6-Mb1f31cd3e6b5baa1ce303894
Powered by Topicbox: https://topicbox.com


[developer] Re: [openzfs/openzfs] 7584 Improve 'zpool labelclear' command (#424)

2017-07-13 Thread Robert Mustacchi
rmustacc commented on this pull request.



> @@ -2355,6 +2355,18 @@ nvlist_common(nvlist_t *nvl, char *buf, size_t 
> *buflen, int encoding,
 }
 
 int
+nvlist_invalidate(char *buf)

Shouldn't this function be taking the size of the buffer in question that we're 
modifying? I realize that we're only modifying the first byte at this time 
which in theory should always be valid for a char *, but seems like if this 
ever changes, that'll be helpful as the function is making an implicit 
assumption about the size.

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/openzfs/openzfs/pull/424#pullrequestreview-49803070
--
openzfs-developer
Archives: 
https://openzfs.topicbox.com/groups/developer/discussions/T92ce69bb6bd4a9c6-M5aed2960c23eae7ddd81cff6
Powered by Topicbox: https://topicbox.com


[developer] Re: [openzfs/openzfs] 7584 Improve 'zpool labelclear' command (#424)

2017-07-15 Thread Ganael Laplanche
@martymac pushed 6 commits.

ccdede9  Use strtonum() instead of strtoll()
31452fc  Add buflen check to nvlist_invalidate()
c876bde  Move nvlist_invalidate symbol to SUNWprivate_1.1
1561da9  Simplify boolean check syntax
72b508c  Avoid compilation warning related to ignored return value of memset()
c94b7fd  Reformat zpool labelclear man page section


-- 
You are receiving this because you are subscribed to this thread.
View it on GitHub:
https://github.com/openzfs/openzfs/pull/424/files/4e55a80a5b7a0a9521dfbf5b5a75d1e261027006..c94b7fd8fef2a1d5ff20f540e5b0c7e338a53d3d

--
openzfs-developer
Archives: 
https://openzfs.topicbox.com/groups/developer/discussions/T92ce69bb6bd4a9c6-M32b68b93eae0ef9814c93d90
Powered by Topicbox: https://topicbox.com


[developer] Re: [openzfs/openzfs] 7584 Improve 'zpool labelclear' command (#424)

2017-07-15 Thread Ganael Laplanche
Thanks for your feedback! I've just committed changes. Can you check them out ?

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/openzfs/openzfs/pull/424#issuecomment-315520516
--
openzfs-developer
Archives: 
https://openzfs.topicbox.com/groups/developer/discussions/T92ce69bb6bd4a9c6-Mcfdaf219348fb4bf0e09b407
Powered by Topicbox: https://topicbox.com


[developer] Re: [openzfs/openzfs] 7584 Improve 'zpool labelclear' command (#424)

2017-07-22 Thread Yuri Pankov
yuripv approved this pull request.

This looks good to me except for the small nit in the Makefile, thanks!

>  INCS += -I../../common/zfs -I$(STATCOMMONDIR)
 
+C99MODE=   -xc99=%all

Please use the $(C99_ENABLE) macro instead for both.

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/openzfs/openzfs/pull/424#pullrequestreview-51618787
--
openzfs-developer
Archives: 
https://openzfs.topicbox.com/groups/developer/discussions/T92ce69bb6bd4a9c6-M1a0c96d64427cdec95c6d272
Powered by Topicbox: https://topicbox.com


[developer] Re: [openzfs/openzfs] 7584 Improve 'zpool labelclear' command (#424)

2017-07-22 Thread Ganael Laplanche
@martymac pushed 1 commit.

22fe1ea  Use C99_ENABLE macro


-- 
You are receiving this because you are subscribed to this thread.
View it on GitHub:
https://github.com/openzfs/openzfs/pull/424/files/c94b7fd8fef2a1d5ff20f540e5b0c7e338a53d3d..22fe1ea7d7b816181336970f6ba242d89bdda9ba

--
openzfs-developer
Archives: 
https://openzfs.topicbox.com/groups/developer/discussions/T92ce69bb6bd4a9c6-Mcff2dc73073b66060745d70a
Powered by Topicbox: https://topicbox.com


[developer] Re: [openzfs/openzfs] 7584 Improve 'zpool labelclear' command (#424)

2017-07-22 Thread Ganael Laplanche
Hi,

Thanks for your feedback.

C99LMODE seems to be derived from C99MODE (see Makefile.master) so setting 
C99MODE only should be enough ? I've modified the Makefile accordingly.

Regards,

Ganael.

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/openzfs/openzfs/pull/424#issuecomment-317183892
--
openzfs-developer
Archives: 
https://openzfs.topicbox.com/groups/developer/discussions/T92ce69bb6bd4a9c6-Me11e3e6b297fcf1c50ddbc35
Powered by Topicbox: https://topicbox.com


[developer] Re: [openzfs/openzfs] 7584 Improve 'zpool labelclear' command (#424)

2017-07-24 Thread Matthew Ahrens
This adds quite a lot of flexibility to an already obscure subcommand, making 
it even harder to know how to use correctly.  Is there any reason you wouldn't 
always want the `-cm` behavior?  What would you think about changing `zpool 
labelclear` (without any flags) to always make the minimal modification, and 
only to labels which we detect are actual ZFS labels?  That way it would always 
behave like your `-cm`, without the need for 2 additional options. 

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/openzfs/openzfs/pull/424#issuecomment-317623358
--
openzfs-developer
Archives: 
https://openzfs.topicbox.com/groups/developer/discussions/T92ce69bb6bd4a9c6-M7dddb3accd941cbb17483fab
Powered by Topicbox: https://topicbox.com


[developer] Re: [openzfs/openzfs] 7584 Improve 'zpool labelclear' command (#424)

2017-07-25 Thread Ganael Laplanche
Hi Matthew,

Thanks for your feedback.

My original idea was to extend the command while keeping its default behaviour. 
The reason is simple : that command is quite new in OpenZFS world but has 
already existed on FreeBSD for about 6 years now, see :

https://svnweb.freebsd.org/base?view=revision&revision=224171

People are already used to it and changing its default behaviour will probably 
break things (scripts, brains, ...).

That's just my 2 cents by I would personally prefer keeping it that way to 
avoid -more- confusion :)

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/openzfs/openzfs/pull/424#issuecomment-317696729
--
openzfs-developer
Archives: 
https://openzfs.topicbox.com/groups/developer/discussions/T92ce69bb6bd4a9c6-M41e3c1feeb996f862885d165
Powered by Topicbox: https://topicbox.com


[developer] Re: [openzfs/openzfs] 7584 Improve 'zpool labelclear' command (#424)

2017-07-25 Thread Matthew Ahrens
@martymac What could break if we change the default behavior?  It seems like it 
would still have the same semantic of leaving the disk without any valid labels.

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/openzfs/openzfs/pull/424#issuecomment-317867356
--
openzfs-developer
Archives: 
https://openzfs.topicbox.com/groups/developer/discussions/T92ce69bb6bd4a9c6-Me194c97617e347a6fef8aabb
Powered by Topicbox: https://topicbox.com


[developer] Re: [openzfs/openzfs] 7584 Improve 'zpool labelclear' command (#424)

2017-07-26 Thread Ganael Laplanche
What I mean is that people are probably used to the fact that this command 
blindly zeroes 512KiB at the beginning and the end of the disk and may (ab)use 
that property in a way or another (e.g. in an install script to wipe other 
kinds of metadata - shame on me, I remember having done that myself).

Also, if you make -cm the default (and only) available methods, there will be 
no easy way of "full cleaning" labels. Yes, this can always be replaced by a dd 
pass but the end of the disk is trickier to reach than a simple labelclear. We 
could revert options meaning : i.e. make -cm the default and provide 2 options, 
one for '*not* checking before erasing' and another for the 'full mode', but 
that will leave the same complexity while changing users habits.

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/openzfs/openzfs/pull/424#issuecomment-318011439
--
openzfs-developer
Archives: 
https://openzfs.topicbox.com/groups/developer/discussions/T92ce69bb6bd4a9c6-M4f86a97af743e9dae3b7807d
Powered by Topicbox: https://topicbox.com


[developer] Re: [openzfs/openzfs] 7584 Improve 'zpool labelclear' command (#424)

2017-08-23 Thread Ganael Laplanche
@ahrens Hi Matthew, what do you think about my previous comments ? Can we leave 
the default options as they are ?

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/openzfs/openzfs/pull/424#issuecomment-324284867
--
openzfs-developer
Archives: 
https://openzfs.topicbox.com/groups/developer/discussions/T92ce69bb6bd4a9c6-M6044f2c2055304c13214bf79
Powered by Topicbox: https://topicbox.com


[developer] Re: [openzfs/openzfs] 7584 Improve 'zpool labelclear' command (#424)

2017-08-23 Thread Matthew Ahrens
I'm not convinced that people are "used to the fact that this command blindly 
zeroes 512KiB at the beginning and the end of the disk".  I think that this 
command is seldom-used, and when it's used it's for the documented purpose: 
"Removes ZFS label information."  That said, I'm open to evidence to the 
contrary.

I agree that with my suggestion,  "there will be no easy way of "full cleaning" 
labels", but I don't know of the use case for that.  I don't consider "abusing 
... to wipe other kinds of metadata" a legitimate use case.

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/openzfs/openzfs/pull/424#issuecomment-324471369
--
openzfs-developer
Archives: 
https://openzfs.topicbox.com/groups/developer/discussions/T92ce69bb6bd4a9c6-M3640d8d8f37a86c59a4860fc
Powered by Topicbox: https://topicbox.com


[developer] Re: [openzfs/openzfs] 7584 Improve 'zpool labelclear' command (#424)

2017-08-29 Thread Ganael Laplanche
@martymac pushed 4 commits.

dc767f1  Check label validity by default and remove option '-c'
81bb4c6  Invalidate labels the minimal way by default
8c9eeb3  Rewrite boolean test for more readability
e0dbeda  Specify -f twice to treat invalid labels as valid


-- 
You are receiving this because you are subscribed to this thread.
View it on GitHub:
https://github.com/openzfs/openzfs/pull/424/files/22fe1ea7d7b816181336970f6ba242d89bdda9ba..e0dbedafea472876343fc49402990c0930896712

--
openzfs-developer
Archives: 
https://openzfs.topicbox.com/groups/developer/discussions/T92ce69bb6bd4a9c6-M887cd1621e46f4dce5a5f82b
Powered by Topicbox: https://topicbox.com


[developer] Re: [openzfs/openzfs] 7584 Improve 'zpool labelclear' command (#424)

2017-08-29 Thread Ganael Laplanche
@ahrens Hi Matthew,

Well, I have modified the patch to try to keep simplicity as well as 
flexibility :

- As you suggest, always check label validity by default (but one can use the 
-f flag twice to override that behaviour)
- Use the minimal mode by default but provide an option (-w) to wipe (zero) 
labels entirely as was done before
- To maintain ZFS library compatible, zpool_clear_label() still wipes the full 
labels and does not check for label validity

I think it is better that way : the base command remains simple but one can 
always bypass checks and wipe labels if necessary. What do you think ?

Best regards,

Ganael.

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/openzfs/openzfs/pull/424#issuecomment-325647528
--
openzfs-developer
Archives: 
https://openzfs.topicbox.com/groups/developer/discussions/T92ce69bb6bd4a9c6-M331d0ad744f5d5e4c38cddb8
Powered by Topicbox: https://topicbox.com


[developer] Re: [openzfs/openzfs] 7584 Improve 'zpool labelclear' command (#424)

2017-09-01 Thread Ganael Laplanche
@ahrens Any thoughts on that new patch ?

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/openzfs/openzfs/pull/424#issuecomment-326551259
--
openzfs-developer
Archives: 
https://openzfs.topicbox.com/groups/developer/discussions/T92ce69bb6bd4a9c6-M2748ef86c95601c9cacced2e
Powered by Topicbox: https://topicbox.com


[developer] Re: [openzfs/openzfs] 7584 Improve 'zpool labelclear' command (#424)

2017-09-06 Thread Matthew Ahrens
Sorry for the latency, I was on vacation last week.

That design sounds OK to me.  I (or someone else familiar with this code) still 
need to review the code.  @yuripv do you want to take another look?

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/openzfs/openzfs/pull/424#issuecomment-327633621
--
openzfs-developer
Archives: 
https://openzfs.topicbox.com/groups/developer/discussions/T92ce69bb6bd4a9c6-M42e75ee272e14e07c0b209e0
Powered by Topicbox: https://topicbox.com


[developer] Re: [openzfs/openzfs] 7584 Improve 'zpool labelclear' command (#424)

2017-09-06 Thread Matthew Ahrens
ahrens commented on this pull request.



> @@ -47,6 +48,7 @@
 #include 
 #include 
 #include 
+#include 

It's possible that this is causing the compilation (lint) error (see 
http://jenkins.open-zfs.org/blue/organizations/jenkins/openzfs%2Fopenzfs/detail/PR-424/4/pipeline).
  Is this needed just for `VDEV_LABELS`?  Maybe we should move that to a 
different header file (e.g. zfs.h)

>   *
- * Verifies that the vdev is not active and zeros out the label information
+ * -e  Only work on labels located at the end of the device.
+ *
+ * -i indexOnly work on labels located at specified index.
+ *
+ * -w  Wipe label area entirely and replace it with zeroes.
+ *
+ * -f  Force clearing the label for the vdevs which are
+ * members of the exported or foreign pools. Also consider
+ * seemingly invalid labels as valid ones.

should this now say, "if specified twice, clear even seemingly invalid labels"?

>   switch (c) {
+   case 'b':
+   start = 0;
+   n = VDEV_LABELS / 2;
+   break;
+   case 'e':
+   start = VDEV_LABELS / 2;
+   n = VDEV_LABELS / 2;
+   break;
+   case 'i':
+   index = strtonum(optarg, 0, VDEV_LABELS - 1, &errstr);
+   if(errstr) {

cstyle: add space after `if`, and add explicit `!= NULL`:
`if (strerr != NULL) {`

>   case 'f':
+   if(force)

add space after `if`, and add braces for multi-line body (even if only one 
statement)

>  .Bl -tag -width Ds
 .It Fl f
-Treat exported or foreign devices as inactive.
+Force mode: treat exported or foreign devices as inactive.
+Specify twice to treat invalid labels as valid ones.

How about, `Specify twice to clear even seemingly-invalid labels.`

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/openzfs/openzfs/pull/424#pullrequestreview-61073830
--
openzfs-developer
Archives: 
https://openzfs.topicbox.com/groups/developer/discussions/T92ce69bb6bd4a9c6-M7670a84d321b47c1bae929fa
Powered by Topicbox: https://topicbox.com


[developer] Re: [openzfs/openzfs] 7584 Improve 'zpool labelclear' command (#424)

2017-09-07 Thread Ganael Laplanche
Hi Matthew,

I've pushed fixes following your recommendations, thanks :)

Only remains warnings about abd stuff. Any hint ?

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/openzfs/openzfs/pull/424#issuecomment-327757235
--
openzfs-developer
Archives: 
https://openzfs.topicbox.com/groups/developer/discussions/T92ce69bb6bd4a9c6-M76a27d61f16e62cb3b0fb458
Powered by Topicbox: https://topicbox.com


[developer] Re: [openzfs/openzfs] 7584 Improve 'zpool labelclear' command (#424)

2017-09-07 Thread Ganael Laplanche
martymac commented on this pull request.



> @@ -47,6 +48,7 @@
 #include 
 #include 
 #include 
+#include 

Yes, this is needed just for VDEV_LABELS. You mean moving VDEV_LABELS 
definition to sys/fs/zfs.h ? I don't know what that would imply for other parts 
of the code :/ Help would be welcome here :)

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/openzfs/openzfs/pull/424#discussion_r137500550
--
openzfs-developer
Archives: 
https://openzfs.topicbox.com/groups/developer/discussions/T92ce69bb6bd4a9c6-M4fe57a2f20c29e2d371687f3
Powered by Topicbox: https://topicbox.com


[developer] Re: [openzfs/openzfs] 7584 Improve 'zpool labelclear' command (#424)

2017-09-07 Thread Ganael Laplanche
@martymac pushed 1 commit.

7485b1b  Follow Matthew Ahrens' recommendations


-- 
You are receiving this because you are subscribed to this thread.
View it on GitHub:
https://github.com/openzfs/openzfs/pull/424/files/e0dbedafea472876343fc49402990c0930896712..7485b1b72227ba2c14464c9a8f37b96c338388ca

--
openzfs-developer
Archives: 
https://openzfs.topicbox.com/groups/developer/discussions/T92ce69bb6bd4a9c6-Mb0a1987ec4be746e9c6624c4
Powered by Topicbox: https://topicbox.com


[developer] Re: [openzfs/openzfs] 7584 Improve 'zpool labelclear' command (#424)

2017-09-07 Thread Matthew Ahrens
> You mean moving VDEV_LABELS definition to sys/fs/zfs.h ?

Yes.

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/openzfs/openzfs/pull/424#issuecomment-327854271
--
openzfs-developer
Archives: 
https://openzfs.topicbox.com/groups/developer/discussions/T92ce69bb6bd4a9c6-M253d768b2b440d6d8222a575
Powered by Topicbox: https://topicbox.com


[developer] Re: [openzfs/openzfs] 7584 Improve 'zpool labelclear' command (#424)

2017-09-08 Thread Ganael Laplanche
@martymac pushed 1 commit.

7be4c74  Move VDEV_LABELS definition to sys/fs/zfs.h


-- 
You are receiving this because you are subscribed to this thread.
View it on GitHub:
https://github.com/openzfs/openzfs/pull/424/files/7485b1b72227ba2c14464c9a8f37b96c338388ca..7be4c748e5b99478657b945bbe10dc54936af5d5

--
openzfs-developer
Archives: 
https://openzfs.topicbox.com/groups/developer/discussions/T92ce69bb6bd4a9c6-M569edc4bcf4377d30daa6901
Powered by Topicbox: https://topicbox.com


[developer] Re: [openzfs/openzfs] 7584 Improve 'zpool labelclear' command (#424)

2017-09-08 Thread Ganael Laplanche
@ahrens My last commit should fix compilation warnings.

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/openzfs/openzfs/pull/424#issuecomment-328064611
--
openzfs-developer
Archives: 
https://openzfs.topicbox.com/groups/developer/discussions/T92ce69bb6bd4a9c6-M2c3258e58d4fbbd0ecd04be5
Powered by Topicbox: https://topicbox.com


[developer] Re: [openzfs/openzfs] 7584 Improve 'zpool labelclear' command (#424)

2017-09-11 Thread Ganael Laplanche
Compilation warnings have been fixed and all checks have passed.

@ahrens @rmustacc @yuripv Do you have additional comments regarding that PR ?

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/openzfs/openzfs/pull/424#issuecomment-328590236
--
openzfs-developer
Archives: 
https://openzfs.topicbox.com/groups/developer/discussions/T92ce69bb6bd4a9c6-M74b3b1f51d81e1899e3e35a4
Powered by Topicbox: https://topicbox.com


[developer] Re: [openzfs/openzfs] 7584 Improve 'zpool labelclear' command (#424)

2017-09-11 Thread Matthew Ahrens
@martymac I'll take a look at your latest changes.

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/openzfs/openzfs/pull/424#issuecomment-328663255
--
openzfs-developer
Archives: 
https://openzfs.topicbox.com/groups/developer/discussions/T92ce69bb6bd4a9c6-Ma79dc925b8fd451a39f4ff98
Powered by Topicbox: https://topicbox.com


[developer] Re: [openzfs/openzfs] 7584 Improve 'zpool labelclear' command (#424)

2017-10-17 Thread Ganael Laplanche
@ahrens Have you had time to take a deeper look at latest changes ?

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/openzfs/openzfs/pull/424#issuecomment-337288816
--
openzfs-developer
Archives: 
https://openzfs.topicbox.com/groups/developer/discussions/Tb5209b6a4a580249-M24d3428b4131095b774ef766
Powered by Topicbox: https://topicbox.com


[developer] Re: [openzfs/openzfs] 7584 Improve 'zpool labelclear' command (#424)

2018-01-08 Thread Ganael Laplanche
@martymac pushed 1 commit.

29d743b  Merge branch 'master' of https://github.com/openzfs/openzfs into 
zpool-labelclear-improvements


-- 
You are receiving this because you are subscribed to this thread.
View it on GitHub:
https://github.com/openzfs/openzfs/pull/424/files/7be4c748e5b99478657b945bbe10dc54936af5d5..29d743b2bb55917c72c4ac9d0a957091fe9e6511

--
openzfs-developer
Archives: 
https://openzfs.topicbox.com/groups/developer/discussions/Tb5209b6a4a580249-Mfa2f92526c45ad6c9e11a5d6
Powered by Topicbox: https://topicbox.com


[developer] Re: [openzfs/openzfs] 7584 Improve 'zpool labelclear' command (#424)

2018-01-08 Thread Ganael Laplanche
Hi and happy new year :)

I've updated the patch with latest changes from master. If there are no more 
comments, can it be merged upstream ?

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/openzfs/openzfs/pull/424#issuecomment-356023274
--
openzfs-developer
Archives: 
https://openzfs.topicbox.com/groups/developer/discussions/Tb5209b6a4a580249-M49de3cb80cbfb6b39d1f2732
Powered by Topicbox: https://topicbox.com


[developer] Re: [openzfs/openzfs] 7584 Improve 'zpool labelclear' command (#424)

2018-02-01 Thread Matthew Ahrens
ahrens approved this pull request.





-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/openzfs/openzfs/pull/424#pullrequestreview-93366574
--
openzfs-developer
Archives: 
https://openzfs.topicbox.com/groups/developer/discussions/T59e810f5492df392-Mc81bc9144244f8805ec8ad91
Powered by Topicbox: https://topicbox.com


[developer] Re: [openzfs/openzfs] 7584 Improve 'zpool labelclear' command (#424)

2018-02-07 Thread George Wilson
grwilson commented on this pull request.

I have concerns about the ultimate goal for this command. It's unclear if we 
really want to "wipe" or just "forget" about this device.

> @@ -709,8 +751,12 @@ zpool_do_labelclear(int argc, char **argv)
}
 
if (zpool_read_label(fd, &config) != 0) {
-   (void) fprintf(stderr,
-   gettext("failed to read label from %s\n"), vdev);
+   if (force)

Shouldn't this check force_invalid since it's possible for zpool_read_label to 
return -1 for reasons other than the inability to read the label. If just force 
is used then we could wipe out the label of a legit pool.

> + if (pread64(fd, &label, sizeof (vdev_label_t),
+   label_offset(size, l)) != sizeof (vdev_label_t))
+   return (-1);
+
+   if (!force) {
+   nvlist_t *config = NULL;
+   if (nvlist_unpack(buf, buflen, &config, 0) != 0)
+   return (-1);
+   nvlist_free(config);
+   }
+   }
+
+   if (wipe) {
+   (void) memset(&label, 0, sizeof (vdev_label_t));
+   } else {
+   if (nvlist_invalidate(buf, buflen) != 0)

If the goal is to prevent zpool import from showing the pool, then we should 
set the TXG value to 0 which is how ZFS clears a label while still leaving some 
information around for debugging.

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/openzfs/openzfs/pull/424#pullrequestreview-94746416
--
openzfs-developer
Archives: 
https://openzfs.topicbox.com/groups/developer/discussions/T59e810f5492df392-Mb71b9d84a4c53f6d4b400daf
Powered by Topicbox: https://topicbox.com


[developer] Re: [openzfs/openzfs] 7584 Improve 'zpool labelclear' command (#424)

2018-02-07 Thread Ganael Laplanche
martymac commented on this pull request.



> @@ -709,8 +751,12 @@ zpool_do_labelclear(int argc, char **argv)
}
 
if (zpool_read_label(fd, &config) != 0) {
-   (void) fprintf(stderr,
-   gettext("failed to read label from %s\n"), vdev);
+   if (force)

Hi George,

The original version of FreeBSD's labelclear command allowed to forcibly wipe a 
label in any case (except when a pool is in use), see :
 
https://svnweb.freebsd.org/base?view=revision&revision=224171

but that "feature" disappeared when the labelclear command was imported from 
upstream :

https://svnweb.freebsd.org/base?view=revision&revision=297760

So this is just a fix to re-add that possibility : if we really want to force a 
wipe out, I think the command should not prevent us from doing so ; and that 
becomes even more useful when working with individual labels, as that patch now 
allows.

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/openzfs/openzfs/pull/424#discussion_r166851668
--
openzfs-developer
Archives: 
https://openzfs.topicbox.com/groups/developer/discussions/T59e810f5492df392-M96bfa58c87dac44031872719
Powered by Topicbox: https://topicbox.com


[developer] Re: [openzfs/openzfs] 7584 Improve 'zpool labelclear' command (#424)

2018-02-07 Thread Ganael Laplanche
martymac commented on this pull request.



> + if (pread64(fd, &label, sizeof (vdev_label_t),
+   label_offset(size, l)) != sizeof (vdev_label_t))
+   return (-1);
+
+   if (!force) {
+   nvlist_t *config = NULL;
+   if (nvlist_unpack(buf, buflen, &config, 0) != 0)
+   return (-1);
+   nvlist_free(config);
+   }
+   }
+
+   if (wipe) {
+   (void) memset(&label, 0, sizeof (vdev_label_t));
+   } else {
+   if (nvlist_invalidate(buf, buflen) != 0)

The main goal of the patch is to allow wiping a single label with *minimal* 
changes.

Acting on nvs encoding type (introducing a new type "invalid") allows touching 
a single byte, which is great because it minimizes the risks of damaging 
another FS that would have been created over the label. Acting on txg would 
touch 8 bytes and greatly improve the chances to break something. Also, as a 
side effect, acting on nvs encoding type keeps last txg value available for 
debugging.

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/openzfs/openzfs/pull/424#discussion_r166851737
--
openzfs-developer
Archives: 
https://openzfs.topicbox.com/groups/developer/discussions/T59e810f5492df392-Mead329a69c4ddfb84cbab979
Powered by Topicbox: https://topicbox.com


[developer] Re: [openzfs/openzfs] 7584 Improve 'zpool labelclear' command (#424)

2018-02-09 Thread George Wilson
One of the guiding principles for zfs is simple administration and it seems 
like we're exposing way too many knobs to the administrator. These knobs expose 
the internals of the product. For example, if I want to clear the labels, why 
wouldn't I just run `zpool labelclear` and have the command figure out if we 
need to clear label 2 and 3 or 0-3 or any combination? In other words if the 
user wants to clear the labels then clear whatever valid labels we find. If the 
user specifies -f then clear them all. I like that this change is trying to 
protect the user but it seems like we can accomplish this without having to 
make the user figure out the internal details of the product.

This is less of a concern but one that I want to make sure we can discuss -- I 
still struggle with invalidating the nvlist encoding vs setting txg = 0. Yes, 
it's 1 byte vs 8 bytes so we have a smaller chance of impacting any software 
that is using that disk but the chance is not 0% in either case. I would argue 
that setting the value of txg=0 at least provides some diagnostics with 
existing tools and possibly some recovery opportunities that are not available 
with the nvlist invalidate case. For example,  if invalidating the nvlist 
impacts the software running on that disk, how would you ever know that the 
disk was once used by zfs and has been invalidated? You would end up with 
corruption with no way of diagnosing what caused it. We could enhance the tools 
to look for the invalid encoding making this less of an issue. I recognize this 
is not a new problem since the current implementation "wipes" the labels. This 
is why I wonder if we ever need to "wipe" the labels or do we just want zfs to 
forget about this device? Do we know of cases where we have needed to "wipe" 
the label?

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/openzfs/openzfs/pull/424#issuecomment-364462555
--
openzfs-developer
Archives: 
https://openzfs.topicbox.com/groups/developer/discussions/T59e810f5492df392-Mdb7922ecbe8217cb2bbd1d04
Powered by Topicbox: https://topicbox.com


[developer] Re: [openzfs/openzfs] 7584 Improve 'zpool labelclear' command (#424)

2018-02-09 Thread Josh Paetzel
I'll chime in here.

There have been a number of cases in the past where I have wanted the moral 
equivalent to dd if=/dev/zero of=/dev/da0 bs=1M

Typically, and this may be FreeBSD specific, it's a case of ZFS thinks the 
device is unused, then geom attaches to the device, then ZFS magically sees 
that oh yes, there is a label there.

An example might be where you GPT partition and put a UFS filesystem on a disk 
that used to have ZFS on it.

>From a ZFS user perspective:

I'd like it if there was a ZF safe and friendly "forget about this device" as 
well as a "nuke it from orbit" option that was faster than dd. (Yes, you can 
avoid running dd on the whole disk if you calculate the number of sectors on 
the disk and use the appropriate seek argument, but sometimes that takes enough 
time to figure out that I just let the dd run and go do something else for a 
while)

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/openzfs/openzfs/pull/424#issuecomment-364468308
--
openzfs-developer
Archives: 
https://openzfs.topicbox.com/groups/developer/discussions/T59e810f5492df392-Mdf28cd67aecf404323daeeb2
Powered by Topicbox: https://topicbox.com


[developer] Re: [openzfs/openzfs] 7584 Improve 'zpool labelclear' command (#424)

2018-02-11 Thread Ganael Laplanche
Hi @grwilson, 

As a recall, the original problem that led to the patch is described here :

https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=204622

> These knobs expose the internals of the product.

Yes, but I don't think exposing the internals of the product is a problem here 
because it does not make the command more complex : for the average user, its 
default action is still the same (invalidating all four labels). We just 
provide an administrator the possibility to go *beyond* and avoid the hassle of 
using dd plus a seek argument (this *is* a kind of simplification, but for the 
administrator) as @jpaetzel explains.

> why wouldn't I just run zpool labelclear and have the command figure out if 
> we need to clear label 2 and 3 or 0-3 or any combination?

I do not always want to let ZFS choose the labels for me because I may want to 
minimally invalidate them at the beginning of a device (to avoid issues 
described at the link above) and totally wipe (zeroe) them at the end (e.g. to 
produce a clean disk image). The current implementation simply does not provide 
enough flexibility for that.

> I still struggle with invalidating the nvlist encoding vs setting txg = 0
> [...] I wonder if we ever need to "wipe" the labels or do we just want zfs to 
> forget about this device?

As @jpaetzel wrote, I think we want to be able to do both. The default 
behaviour is to minimally invalidate labels, but an option is provided to wipe 
them entirely if one needs it.

Regarding the idea of invalidating a label using its encoding style, you're 
right, touching 1 byte can break another FS too, but it's always better than 
modifying 8 bytes (and even better than what is done currently : zeroing 4 * 
256 KiB). Also, as you noticed, debugging tools could be expanded to handle 
that kind of invalid encoding.

Best regards,

Ganael.

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/openzfs/openzfs/pull/424#issuecomment-364754358
--
openzfs-developer
Archives: 
https://openzfs.topicbox.com/groups/developer/discussions/T59e810f5492df392-M83a3610d9da5a374f4d9e3c2
Powered by Topicbox: https://topicbox.com


[developer] Re: [openzfs/openzfs] 7584 Improve 'zpool labelclear' command (#424)

2018-03-13 Thread Ganael Laplanche
Hi @grwilson,
Do you have any other concerns / comments about that patch ?

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/openzfs/openzfs/pull/424#issuecomment-372652991
--
openzfs: openzfs-developer
Permalink: 
https://openzfs.topicbox.com/groups/developer/discussions/T59e810f5492df392-Md20d60417fd24c53e3999857
Delivery options: https://openzfs.topicbox.com/groups


[developer] Re: [openzfs/openzfs] 7584 Improve 'zpool labelclear' command (#424)

2018-05-30 Thread Ganael Laplanche
Hi @ahrens, @grwilson,

Are there news about that patch ?

Best regards,
Ganael.

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/openzfs/openzfs/pull/424#issuecomment-393063362
--
openzfs: openzfs-developer
Permalink: 
https://openzfs.topicbox.com/groups/developer/discussions/Ta70e14786d4a9936-M36fdcd9966239224fddf33dc
Delivery options: https://openzfs.topicbox.com/groups