libfdisk: (dos) accept start for log.partitions on template
Signed-off-by: Karel Zak <kzak@redhat.com>
This commit is contained in:
parent
c25a3ecaba
commit
167d7e9537
|
@ -1606,16 +1606,22 @@ static int dos_add_partition(struct fdisk_context *cxt,
|
||||||
rc = add_partition(cxt, res, pa);
|
rc = add_partition(cxt, res, pa);
|
||||||
goto done;
|
goto done;
|
||||||
|
|
||||||
/* D) template specifies default start, partno >= 4; add logical */
|
/* D) template specifies start (or default), partno >= 4; add logical */
|
||||||
} else if (pa && fdisk_partition_start_is_default(pa)
|
} else if (pa && (fdisk_partition_start_is_default(pa) || fdisk_partition_has_start(pa))
|
||||||
&& fdisk_partition_has_partno(pa)
|
&& fdisk_partition_has_partno(pa)
|
||||||
&& pa->partno >= 4) {
|
&& pa->partno >= 4) {
|
||||||
DBG(LABEL, ul_debug("DOS: pa template %p: add logical (by partno)", pa));
|
DBG(LABEL, ul_debug("DOS: pa template %p: add logical (by partno)", pa));
|
||||||
|
|
||||||
if (!ext_pe) {
|
if (!ext_pe) {
|
||||||
fdisk_warnx(cxt, _("Extended partition does not exists. Failed to add logical partition"));
|
fdisk_warnx(cxt, _("Extended partition does not exists. Failed to add logical partition."));
|
||||||
|
return -EINVAL;
|
||||||
|
} else if (fdisk_partition_has_start(pa)
|
||||||
|
&& pa->start < l->ext_offset
|
||||||
|
&& pa->start > get_abs_partition_end(ext_pe)) {
|
||||||
|
DBG(LABEL, ul_debug("DOS: pa template specifies partno>=4, but start out of extended"));
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
rc = add_logical(cxt, pa, &res);
|
rc = add_logical(cxt, pa, &res);
|
||||||
goto done;
|
goto done;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue