"Dmitrij D. Czarkoff" <[email protected]> wrote:

>"Dmitrij D. Czarkoff" <[email protected]> wrote:
>
>>"Dmitrij D. Czarkoff" <[email protected]> wrote:
>>
>>>Claus Assmann <[email protected]> wrote:
>>>
>>>>AFAICT the "percentage of disk" is optional
>>>
>>>disklabel(8) says:
>>>
>>>| A template for the automatic allocation can be passed \
>>>| to disklabel using
>>>| the -T option.  The template consists of one line per partition, with
>>>| each line giving mountpoint, min-max size range, and percentage \
>>>| of disk,
>>>| space-separated.  Max can be unlimited by specifying '*'.  If only
>>>| mountpoint and min size are given, the partition is created with that
>>>| exact size.
>>>
>>>Which means that percentages are optional unless sizes are specified as
>>>min-max, which makes a lot of sense:  you either specify the amount of
>>>space you want to allocate for particular partition, or you specify the
>>>percentage of disk you want it to cover and provide minimum and maximum
>>>limits.
>>>
>>>>Index: editor.c
>>>>===================================================================
>>>>RCS file: cvs/src/sbin/disklabel/editor.c,v
>>>>retrieving revision 1.303
>>>>diff -u -r1.303 editor.c
>>>>--- editor.c   2 Sep 2016 10:47:17 -0000       1.303
>>>>+++ editor.c   3 Oct 2016 22:56:55 -0000
>>>>@@ -2388,6 +2388,7 @@
>>>>   sa = &(alloc_table[0].table[idx]);
>>>>   idx++;
>>>>
>>>>+              sa->rate = 0;
>>>
>>>So basically you set the partition size to 0% of disk, \
>>>forcing disklabel
>>>to pick the lower limit.  Why would you want to specify the upper limit
>>>then?
>>>
>>>It would probably make more sense to do something like this instead:
>>
>>Sorry, I somehow managed to remove part of the line in \
>>a diff.  Here is what it
>>is was supposed to be:
>
>Well, I should have checked parse_sizerange() first...

I shouldn't have started on sending patches at 3AM.  This one should do
what I intended it to do.  Sorry for noise.

Index: sbin/disklabel/editor.c
===================================================================
RCS file: /var/cvs/src/sbin/disklabel/editor.c,v
retrieving revision 1.303
diff -u -p -r1.303 editor.c
--- sbin/disklabel/editor.c     2 Sep 2016 10:47:17 -0000       1.303
+++ sbin/disklabel/editor.c     4 Oct 2016 01:28:06 -0000
@@ -2397,6 +2397,8 @@ parse_autotable(char *filename)
                if ((t = get_token(&buf, &len)) != NULL &&
                    parse_pct(t, &sa->rate) == -1)
                        errx(1, "%s: parse error on line %u", filename, idx);
+               else if (t == NULL && sa->minsz != sa->maxsz)
+                       errx(1, "%s: parse error on line %u", filename, idx);
                if (sa->minsz > sa->maxsz)
                        errx(1, "%s: min size > max size on line %u", filename,
                            idx);

Reply via email to