-/* $OpenBSD: disklabel.h,v 1.5 2007/06/20 18:15:45 deraadt Exp $ */
+/* $OpenBSD: disklabel.h,v 1.6 2008/08/08 16:07:41 jsing Exp $ */
/*
* Copyright (c) 1994 Christopher G. Demetriou
#define LABELOFFSET 0
#define MAXPARTITIONS 16 /* number of partitions */
-/* SGI */
+/*
+ * SGI Volume Header.
+ */
+
+#define SGILABEL_MAGIC 0xbe5a941
+#define SGI_SIZE_VOLDIR 15
+
+/* Partition types. */
+#define SGI_PTYPE_VOLHDR 0
+#define SGI_PTYPE_RAW 3
+#define SGI_PTYPE_BSD 4
+#define SGI_PTYPE_VOLUME 6
+#define SGI_PTYPE_EFS 7
+#define SGI_PTYPE_LVOL 8
+#define SGI_PTYPE_RLVOL 9
+#define SGI_PTYPE_XFS 10
+#define SGI_PTYPE_XFSLOG 11
+#define SGI_PTYPE_XLV 12
+#define SGI_PTYPE_XVM 13
+
+/* Device parameters. */
struct devparms {
u_int8_t dp_skew;
u_int8_t dp_gap1;
u_int16_t dp_xwcont;
} __packed;
+/* SGI volume header. */
struct sgilabel {
-#define SGILABEL_MAGIC 0xbe5a941
u_int32_t magic;
int16_t root;
int16_t swap;
char name[8];
int32_t block;
int32_t bytes;
- } voldir[15];
+ } voldir[SGI_SIZE_VOLDIR];
struct {
int32_t blocks;
int32_t first;
int32_t _pad;
} __packed;
-#define SGI_PTYPE_VOLHDR 0
-#define SGI_PTYPE_RAW 3
-#define SGI_PTYPE_BSD 4
-#define SGI_PTYPE_VOLUME 6
-#define SGI_PTYPE_EFS 7
-#define SGI_PTYPE_LVOL 8
-#define SGI_PTYPE_RLVOL 9
-#define SGI_PTYPE_XFS 10
-#define SGI_PTYPE_XFSLOG 11
-#define SGI_PTYPE_XLV 12
-#define SGI_PTYPE_XVM 13
-
#endif /* _MACHINE_DISKLABEL_H_ */
-/* $OpenBSD: sgivol.c,v 1.9 2008/06/26 05:42:12 ray Exp $ */
+/* $OpenBSD: sgivol.c,v 1.10 2008/08/08 16:07:41 jsing Exp $ */
/* $NetBSD: sgivol.c,v 1.8 2003/11/08 04:59:00 sekiya Exp $ */
/*-
* that "whole cylinder" multiples are not required.
*/
-#define SGILABEL_MAGIC 0xbe5a941
-
#define SGI_SIZE_VOLHDR 3135 /* Can be overridden via -h parameter. */
-#define SGI_SIZE_VOLDIR 15
-
-#define SGI_PTYPE_VOLHDR 0
-#define SGI_PTYPE_RAW 3
-#define SGI_PTYPE_BSD 4
-#define SGI_PTYPE_VOLUME 6
-#define SGI_PTYPE_EFS 7
-#define SGI_PTYPE_LVOL 8
-#define SGI_PTYPE_RLVOL 9
-#define SGI_PTYPE_XFS 10
-#define SGI_PTYPE_XFSLOG 11
-#define SGI_PTYPE_XLV 12
-#define SGI_PTYPE_XVM 13
-
-struct local_devparms {
- u_int8_t dp_skew;
- u_int8_t dp_gap1;
- u_int8_t dp_gap2;
- u_int8_t dp_spares_cyl;
- u_int16_t dp_cyls;
- u_int16_t dp_shd0;
- u_int16_t dp_trks0;
- u_int8_t dp_ctq_depth;
- u_int8_t dp_cylshi;
- u_int16_t dp_unused;
- u_int16_t dp_secs;
- u_int16_t dp_secbytes;
- u_int16_t dp_interleave;
- u_int32_t dp_flags;
- u_int32_t dp_datarate;
- u_int32_t dp_nretries;
- u_int32_t dp_mspw;
- u_int16_t dp_xgap1;
- u_int16_t dp_xsync;
- u_int16_t dp_xrdly;
- u_int16_t dp_xgap2;
- u_int16_t dp_xrgate;
- u_int16_t dp_xwcont;
-} __packed;
-
-struct local_sgilabel {
- u_int32_t magic;
- int16_t root;
- int16_t swap;
- char bootfile[16];
- struct local_devparms dp;
- struct {
- char name[8];
- int32_t block;
- int32_t bytes;
- } voldir[SGI_SIZE_VOLDIR];
- struct {
- int32_t blocks;
- int32_t first;
- int32_t type;
- } partitions[MAXPARTITIONS];
- int32_t checksum;
- int32_t _pad;
-} __packed;
/*
* Mode of operation can be one of:
int quiet;
int fd;
int partno, partfirst, partblocks, parttype;
-struct local_sgilabel *volhdr;
+struct sgilabel *volhdr;
int32_t checksum;
u_int32_t volhdr_size = SGI_SIZE_VOLHDR;
err(1, "read volhdr");
if (ioctl(fd, DIOCGDINFO, &lbl) == -1)
err(1, "ioctl DIOCGDINFO");
- volhdr = (struct local_sgilabel *)buf;
+ volhdr = (struct sgilabel *)buf;
if (mode == 'i') {
init_volhdr();