"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...
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:23:14 -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);