libfdisk: allow to start freespace for zero

This is necessary for disk labels like SUN where whole disk is possible
to address by partitions.

Signed-off-by: Karel Zak <kzak@redhat.com>
This commit is contained in:
Karel Zak 2018-01-11 15:18:00 +01:00
parent f7606d2d9f
commit 9c76f85f9a
3 changed files with 8 additions and 1 deletions

View File

@ -301,6 +301,8 @@ int __fdisk_switch_label(struct fdisk_context *cxt, struct fdisk_label *lb)
}
cxt->label = lb;
DBG(CXT, ul_debugobj(cxt, "--> switching context to %s!", lb->name));
fdisk_apply_label_device_properties(cxt);
return 0;
}

View File

@ -507,6 +507,8 @@ static int sun_add_partition(
size_t i;
unsigned int first, last;
DBG(LABEL, ul_debug("SUN adding partition"));
rc = fdisk_partition_next_partno(pa, cxt, &n);
if (rc)
return rc;
@ -704,6 +706,8 @@ static int sun_add_partition(
if (whole_disk)
sys = SUN_TAG_WHOLEDISK;
DBG(LABEL, ul_debug("SUN new partition #%zu: first=%u, last=%u, sys=%d", n, first, last, sys));
set_partition(cxt, n, first, last, sys);
cxt->label->nparts_cur = count_used_partitions(cxt);
if (partno)
@ -1088,6 +1092,7 @@ static int sun_set_partition(
static int sun_reset_alignment(struct fdisk_context *cxt __attribute__((__unused__)))
{
fdisk_set_first_lba(cxt, 0);
return 0;
}

View File

@ -411,7 +411,7 @@ static int new_freespace(struct fdisk_context *cxt,
if (start == end)
return 0;
assert(start);
assert(start >= cxt->first_lba);
assert(end);
assert(end > start);