Restore the old behaviour. If requested partition is a BSD slice,

but d_partition isn't explicitly set, then try to open BSD label and its
first partition.
This commit is contained in:
ae 2012-08-13 13:33:21 +00:00
parent 258bfae1c8
commit d3ddd78f24

View File

@ -185,10 +185,18 @@ disk_open(struct disk_devdesc *dev, off_t mediasize, u_int sectorsize)
if (rc != 0) /* Partition doesn't exist */
goto out;
dev->d_offset = part.start;
if (dev->d_partition == -1 ||
dev->d_partition == 255)
if (dev->d_partition == 255)
goto out; /* Nothing more to do */
if (dev->d_partition == -1) {
/*
* If we are looking at a BSD slice, and the
* partition is < 0, assume the 'a' partition.
*/
if (part.type == PART_FREEBSD)
dev->d_partition = 0;
else
goto out;
}
/* Try to read BSD label */
table = ptable_open(dev, part.end - part.start + 1,
od->sectorsize, ptblread);