Page MenuHomeFreeBSD

D19262.id55409.diff
No OneTemporary

D19262.id55409.diff

Index: head/stand/common/disk.h
===================================================================
--- head/stand/common/disk.h
+++ head/stand/common/disk.h
@@ -32,33 +32,36 @@
*
* Whole disk access:
*
- * d_slice = -1
- * d_partition = -1
+ * d_slice = D_SLICENONE
+ * d_partition = <doesn't matter>
*
* Whole MBR slice:
*
* d_slice = MBR slice number (typically 1..4)
- * d_partition = -1
+ * d_partition = D_PARTNONE
*
* BSD disklabel partition within an MBR slice:
*
* d_slice = MBR slice number (typically 1..4)
- * d_partition = disklabel partition (typically 0..19)
+ * d_partition = disklabel partition (typically 0..19 or D_PARTWILD)
*
* BSD disklabel partition on the true dedicated disk:
*
- * d_slice = -1
- * d_partition = disklabel partition (typically 0..19)
+ * d_slice = D_SLICENONE
+ * d_partition = disklabel partition (typically 0..19 or D_PARTWILD)
*
* GPT partition:
*
* d_slice = GPT partition number (typically 1..N)
- * d_partition = 255
+ * d_partition = D_PARTISGPT
*
- * For both MBR and GPT, to automatically find the 'best' slice or partition,
- * set d_slice to zero. This uses the partition type to decide which partition
- * to use according to the following list of preferences:
+ * For MBR, setting d_partition to D_PARTWILD will automatically use the first
+ * partition within the slice.
*
+ * For both MBR and GPT, to automatically find the 'best' slice and partition,
+ * set d_slice to D_SLICEWILD. This uses the partition type to decide which
+ * partition to use according to the following list of preferences:
+ *
* FreeBSD (active)
* FreeBSD (inactive)
* Linux (active)
@@ -80,6 +83,12 @@
#ifndef _DISK_H
#define _DISK_H
+
+#define D_SLICENONE -1
+#define D_SLICEWILD 0
+#define D_PARTNONE -1
+#define D_PARTWILD -2
+#define D_PARTISGPT 255
struct disk_devdesc {
struct devdesc dd; /* Must be first. */
Index: head/stand/common/disk.c
===================================================================
--- head/stand/common/disk.c
+++ head/stand/common/disk.c
@@ -129,15 +129,8 @@
dev.dd.d_dev = pa->dev->dd.d_dev;
dev.dd.d_unit = pa->dev->dd.d_unit;
dev.d_slice = part->index;
- dev.d_partition = -1;
+ dev.d_partition = D_PARTNONE;
if (disk_open(&dev, partsize, sectsize) == 0) {
- /*
- * disk_open() for partition -1 on a bsd slice assumes
- * you want the first bsd partition. Reset things so
- * that we're looking at the start of the raw slice.
- */
- dev.d_partition = -1;
- dev.d_offset = part->start;
table = ptable_open(&dev, partsize, sectsize, ptblread);
if (table != NULL) {
sprintf(line, " %s%s", pa->prefix, pname);
@@ -244,8 +237,8 @@
*/
memcpy(&partdev, dev, sizeof(partdev));
partdev.d_offset = 0;
- partdev.d_slice = -1;
- partdev.d_partition = -1;
+ partdev.d_slice = D_SLICENONE;
+ partdev.d_partition = D_PARTNONE;
dev->d_offset = 0;
table = NULL;
@@ -373,9 +366,9 @@
char *cp;
cp = buf + sprintf(buf, "%s%d", dev->dd.d_dev->dv_name, dev->dd.d_unit);
- if (dev->d_slice >= 0) {
+ if (dev->d_slice > D_SLICENONE) {
#ifdef LOADER_GPT_SUPPORT
- if (dev->d_partition == 255) {
+ if (dev->d_partition == D_PARTISGPT) {
sprintf(cp, "p%d:", dev->d_slice);
return (buf);
} else
@@ -384,7 +377,7 @@
cp += sprintf(cp, "s%d", dev->d_slice);
#endif
}
- if (dev->d_partition >= 0)
+ if (dev->d_partition > D_PARTNONE)
cp += sprintf(cp, "%c", dev->d_partition + 'a');
strcat(cp, ":");
return (buf);
@@ -398,7 +391,9 @@
char *cp;
np = devspec;
- unit = slice = partition = -1;
+ unit = -1;
+ slice = D_SLICEWILD;
+ partition = D_PARTWILD;
if (*np != '\0' && *np != ':') {
unit = strtol(np, &cp, 10);
if (cp == np)
Index: head/stand/efi/libefi/efipart.c
===================================================================
--- head/stand/efi/libefi/efipart.c
+++ head/stand/efi/libefi/efipart.c
@@ -813,8 +813,8 @@
pd->pd_blkio = blkio;
pd_dev.dd.d_dev = dev;
pd_dev.dd.d_unit = pd->pd_unit;
- pd_dev.d_slice = -1;
- pd_dev.d_partition = -1;
+ pd_dev.d_slice = D_SLICENONE;
+ pd_dev.d_partition = D_PARTNONE;
ret = disk_open(&pd_dev, blkio->Media->BlockSize *
(blkio->Media->LastBlock + 1),
blkio->Media->BlockSize);
Index: head/stand/efi/loader/main.c
===================================================================
--- head/stand/efi/loader/main.c
+++ head/stand/efi/loader/main.c
@@ -217,12 +217,12 @@
currdev.dd.d_dev = dp->pd_devsw;
if (dp->pd_parent == NULL) {
currdev.dd.d_unit = dp->pd_unit;
- currdev.d_slice = -1;
- currdev.d_partition = -1;
+ currdev.d_slice = D_SLICENONE;
+ currdev.d_partition = D_PARTNONE;
} else {
currdev.dd.d_unit = dp->pd_parent->pd_unit;
currdev.d_slice = dp->pd_unit;
- currdev.d_partition = 255; /* Assumes GPT */
+ currdev.d_partition = D_PARTISGPT; /* XXX Assumes GPT */
}
set_currdev_devdesc((struct devdesc *)&currdev);
} else {
Index: head/stand/i386/libi386/biosdisk.c
===================================================================
--- head/stand/i386/libi386/biosdisk.c
+++ head/stand/i386/libi386/biosdisk.c
@@ -691,8 +691,8 @@
devd.dd.d_dev = dev;
devd.dd.d_unit = i;
- devd.d_slice = -1;
- devd.d_partition = -1;
+ devd.d_slice = D_SLICENONE;
+ devd.d_partition = D_PARTNONE;
if (disk_open(&devd,
bd->bd_sectorsize * bd->bd_sectors,
bd->bd_sectorsize) == 0) {
@@ -745,8 +745,8 @@
disk.dd.d_dev = dev->dd.d_dev;
disk.dd.d_unit = dev->dd.d_unit;
- disk.d_slice = -1;
- disk.d_partition = -1;
+ disk.d_slice = D_SLICENONE;
+ disk.d_partition = D_PARTNONE;
disk.d_offset = 0;
size = bd->bd_sectors * bd->bd_sectorsize;
Index: head/stand/libsa/zfs/zfs.c
===================================================================
--- head/stand/libsa/zfs/zfs.c
+++ head/stand/libsa/zfs/zfs.c
@@ -588,7 +588,7 @@
int slice = dev->d_slice;
free(dev);
- if (partition != -1 && slice != -1) {
+ if (partition != D_PARTNONE && slice != D_SLICENONE) {
ret = zfs_probe(pa.fd, pool_guid);
if (ret == 0)
return (0);
Index: head/stand/mips/beri/loader/beri_disk_cfi.c
===================================================================
--- head/stand/mips/beri/loader/beri_disk_cfi.c
+++ head/stand/mips/beri/loader/beri_disk_cfi.c
@@ -129,8 +129,8 @@
return (ret);
dev.dd.d_dev = &beri_cfi_disk;
dev.dd.d_unit = 0;
- dev.d_slice = -1;
- dev.d_partition = -1;
+ dev.d_slice = D_SLICENONE;
+ dev.d_partition = D_PARTNONE;
if (disk_open(&dev, cfi_get_mediasize(), cfi_get_sectorsize()) == 0) {
snprintf(line, sizeof(line), " cfi%d", 0);
ret = disk_print(&dev, line, verbose);
Index: head/stand/mips/beri/loader/beri_disk_sdcard.c
===================================================================
--- head/stand/mips/beri/loader/beri_disk_sdcard.c
+++ head/stand/mips/beri/loader/beri_disk_sdcard.c
@@ -135,8 +135,8 @@
return (ret);
dev.dd.d_dev = &beri_sdcard_disk;
dev.dd.d_unit = 0;
- dev.d_slice = -1;
- dev.d_partition = -1;
+ dev.d_slice = D_SLICENONE;
+ dev.d_partition = D_PARTNONE;
if (disk_open(&dev, altera_sdcard_get_mediasize(),
altera_sdcard_get_sectorsize()) == 0) {
snprintf(line, sizeof(line), " sdcard%d", 0);
Index: head/stand/uboot/common/main.c
===================================================================
--- head/stand/uboot/common/main.c
+++ head/stand/uboot/common/main.c
@@ -213,8 +213,8 @@
*type = DEV_TYP_NONE;
*unit = -1;
- *slice = 0;
- *partition = -1;
+ *slice = D_SLICEWILD;
+ *partition = D_PARTWILD;
devstr = ub_env_get("loaderdev");
if (devstr == NULL) {
@@ -295,7 +295,7 @@
if (p == endp) {
*type = DEV_TYP_NONE;
*unit = -1;
- *slice = 0;
+ *slice = D_SLICEWILD;
return;
}
@@ -309,7 +309,7 @@
if (*p != '.') {
*type = DEV_TYP_NONE;
*unit = -1;
- *slice = 0;
+ *slice = D_SLICEWILD;
return;
}
@@ -329,8 +329,8 @@
/* Junk beyond partition number. */
*type = DEV_TYP_NONE;
*unit = -1;
- *slice = 0;
- *partition = -1;
+ *slice = D_SLICEWILD;
+ *partition = D_PARTWILD;
}
static void
@@ -339,15 +339,20 @@
char slice[32];
char partition[32];
- if (currdev.d_disk.d_slice > 0)
- sprintf(slice, "%d", currdev.d_disk.d_slice);
+ if (currdev.d_disk.d_slice == D_SLICENONE)
+ strlcpy(slice, "<none>", sizeof(slice));
+ else if (currdev.d_disk.d_slice == D_SLICEWILD)
+ strlcpy(slice, "<auto>", sizeof(slice));
else
- strcpy(slice, "<auto>");
+ snprintf(slice, sizeof(slice), "%d", currdev.d_disk.d_slice);
- if (currdev.d_disk.d_partition >= 0)
- sprintf(partition, "%d", currdev.d_disk.d_partition);
+ if (currdev.d_disk.d_partition == D_PARTNONE)
+ strlcpy(partition, "<none>", sizeof(partition));
+ else if (currdev.d_disk.d_partition == D_PARTWILD)
+ strlcpy(partition, "<auto>", sizeof(partition));
else
- strcpy(partition, "<auto>");
+ snprintf(partition, sizeof(partition), "%d",
+ currdev.d_disk.d_partition);
printf(" Checking unit=%d slice=%s partition=%s...",
currdev.dd.d_unit, slice, partition);
Index: head/stand/uboot/lib/disk.c
===================================================================
--- head/stand/uboot/lib/disk.c
+++ head/stand/uboot/lib/disk.c
@@ -254,8 +254,8 @@
for (i = 0; i < stor_info_no; i++) {
dev.dd.d_dev = &uboot_storage;
dev.dd.d_unit = i;
- dev.d_slice = -1;
- dev.d_partition = -1;
+ dev.d_slice = D_SLICENONE;
+ dev.d_partition = D_PARTNONE;
snprintf(line, sizeof(line), "\tdisk%d (%s)\n", i,
ub_stor_type(SI(&dev).type));
if ((ret = pager_output(line)) != 0)
Index: head/stand/usb/storage/umass_loader.c
===================================================================
--- head/stand/usb/storage/umass_loader.c
+++ head/stand/usb/storage/umass_loader.c
@@ -196,8 +196,8 @@
return (ret);
dev.d_dev = &umass_disk;
dev.d_unit = 0;
- dev.d_slice = -1;
- dev.d_partition = -1;
+ dev.d_slice = D_SLICENONE;
+ dev.d_partition = D_PARTNONE;
if (umass_disk_open_sub(&dev) == 0) {
ret = disk_print(&dev, " umass0", verbose);
Index: head/stand/userboot/userboot/main.c
===================================================================
--- head/stand/userboot/userboot/main.c
+++ head/stand/userboot/userboot/main.c
@@ -240,15 +240,15 @@
if (userboot_disk_maxunit > 0) {
dev.dd.d_dev = &userboot_disk;
dev.dd.d_unit = 0;
- dev.d_slice = 0;
- dev.d_partition = 0;
+ dev.d_slice = D_SLICEWILD;
+ dev.d_partition = D_PARTWILD;
/*
* If we cannot auto-detect the partition type then
* access the disk as a raw device.
*/
if (dev.dd.d_dev->dv_open(NULL, &dev)) {
- dev.d_slice = -1;
- dev.d_partition = -1;
+ dev.d_slice = D_SLICENONE;
+ dev.d_partition = D_PARTNONE;
}
dd = &dev.dd;
} else {
Index: head/stand/userboot/userboot/userboot_disk.c
===================================================================
--- head/stand/userboot/userboot/userboot_disk.c
+++ head/stand/userboot/userboot/userboot_disk.c
@@ -137,8 +137,8 @@
break;
dev.dd.d_dev = &userboot_disk;
dev.dd.d_unit = i;
- dev.d_slice = -1;
- dev.d_partition = -1;
+ dev.d_slice = D_SLICENONE;
+ dev.d_partition = D_PARTNONE;
if (disk_open(&dev, ud_info[i].mediasize,
ud_info[i].sectorsize) == 0) {
snprintf(line, sizeof(line), " disk%d", i);

File Metadata

Mime Type
text/plain
Expires
Wed, Mar 18, 8:26 PM (13 h, 7 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
29924672
Default Alt Text
D19262.id55409.diff (11 KB)

Event Timeline