fdisk minlabel support for Linux/AXP

Erik Troan (ewt@redhat.com)
Wed, 1 Nov 1995 11:49:40 -0500 (EST)


Here's the patch against the fdisklabel.h found in util-linux 2.5 to
let it edit label's w/ minlabel compatibility. I had to change:

1) LABELSECTOR, LABELOFFSET, BBSIZE & SBSIZE which I guessed by
reading the kernel
2) There were lots of u_long which should be u_int on 64 bit machines
a u_32 would be better if there is such a beast
3) I changed label type 8 to ext2 from MSDOS

I'm also going to make 'fdisk -l' work on axp, but that's probably not
as interesting for most people.

Erik

--- fdisklabel.h.orig Sat Oct 7 01:31:50 1995
+++ fdisklabel.h Wed Nov 1 16:45:25 1995
@@ -41,17 +41,19 @@
#define BSD_BBSIZE 8192 /* size of boot area, with label */
#define BSD_SBSIZE 8192 /* max size of fs superblock */
#elif defined (__alpha__)
-#error LABELSECTOR, LABELOFFSET, BBSIZE & SBSIZE are undefined for __alpha__
#define BSD_LABELSECTOR 0
-#define BSD_LABELOFFSET 0
-#define BSD_BBSIZE 0
-#define BSD_SBSIZE 0
+#define BSD_LABELOFFSET 64
+#define BSD_BBSIZE 8192
+#define BSD_SBSIZE 8192
#else
#error unknown architecture
#endif

+/* there are lots of Alpha problems in here. I just got it to recognize
+ a disklabel... it's far from working :-( */
+
struct disklabel {
- u_long d_magic; /* the magic number */
+ unsigned int d_magic; /* the magic number */
short d_type; /* drive type */
short d_subtype; /* controller/d_type specific */
char d_typename[16]; /* type name, e.g. "eagle" */
@@ -78,12 +80,12 @@
#define d_boot1 d_un.un_b.un_d_boot1
#endif /* ! KERNEL or STANDALONE */
/* disk geometry: */
- u_long d_secsize; /* # of bytes per sector */
- u_long d_nsectors; /* # of data sectors per track */
- u_long d_ntracks; /* # of tracks per cylinder */
- u_long d_ncylinders; /* # of data cylinders per unit */
- u_long d_secpercyl; /* # of data sectors per cylinder */
- u_long d_secperunit; /* # of data sectors per unit */
+ unsigned int d_secsize; /* # of bytes per sector */
+ unsigned int d_nsectors; /* # of data sectors per track */
+ unsigned int d_ntracks; /* # of tracks per cylinder */
+ unsigned int d_ncylinders; /* # of data cylinders per unit */
+ unsigned int d_secpercyl; /* # of data sectors per cylinder */
+ unsigned int d_secperunit; /* # of data sectors per unit */
/*
* Spares (bad sector replacements) below
* are not counted in d_nsectors or d_secpercyl.
@@ -96,7 +98,7 @@
* Alternate cylinders include maintenance, replacement,
* configuration description areas, etc.
*/
- u_long d_acylinders; /* # of alt. cylinders per unit */
+ unsigned int d_acylinders; /* # of alt. cylinders per unit */

/* hardware characteristics: */
/*
@@ -119,23 +121,23 @@
u_short d_interleave; /* hardware sector interleave */
u_short d_trackskew; /* sector 0 skew, per track */
u_short d_cylskew; /* sector 0 skew, per cylinder */
- u_long d_headswitch; /* head switch time, usec */
- u_long d_trkseek; /* track-to-track seek, usec */
- u_long d_flags; /* generic flags */
+ unsigned int d_headswitch; /* head switch time, usec */
+ unsigned int d_trkseek; /* track-to-track seek, usec */
+ unsigned int d_flags; /* generic flags */
#define NDDATA 5
- u_long d_drivedata[NDDATA]; /* drive-type specific information */
+ unsigned int d_drivedata[NDDATA]; /* drive-type specific information */
#define NSPARE 5
- u_long d_spare[NSPARE]; /* reserved for future use */
- u_long d_magic2; /* the magic number (again) */
+ unsigned int d_spare[NSPARE]; /* reserved for future use */
+ unsigned int d_magic2; /* the magic number (again) */
u_short d_checksum; /* xor of data incl. partitions */
/* filesystem and partition information: */
u_short d_npartitions; /* number of partitions in following */
- u_long d_bbsize; /* size of boot area at sn0, bytes */
- u_long d_sbsize; /* max size of fs superblock, bytes */
+ unsigned int d_bbsize; /* size of boot area at sn0, bytes */
+ unsigned int d_sbsize; /* max size of fs superblock, bytes */
struct bsd_partition { /* the partition table */
- u_long p_size; /* number of sectors in partition */
- u_long p_offset; /* starting sector */
- u_long p_fsize; /* filesystem basic fragment size */
+ u_int p_size; /* number of sectors in partition */
+ u_int p_offset; /* starting sector */
+ u_int p_fsize; /* filesystem basic fragment size */
u_char p_fstype; /* filesystem type, see below */
u_char p_frag; /* filesystem fragments per block */
u_short p_cpg; /* filesystem cylinders per group */
@@ -189,7 +191,7 @@
#define BSD_FS_V71K 5 /* V7 with 1K blocks (4.1, 2.9) */
#define BSD_FS_V8 6 /* Eighth Edition, 4K blocks */
#define BSD_FS_BSDFFS 7 /* 4.2BSD fast file system */
-#define BSD_FS_MSDOS 8 /* MS-DOS file system */
+#define BSD_FS_EXT2 8 /* EXT2 file system */
#define BSD_FS_BSDLFS 9 /* 4.4BSD log-structured file system */
#define BSD_FS_OTHER 10 /* in use, but unknown/unsupported */
#define BSD_FS_HPFS 11 /* OS/2 high-performance file system */
@@ -209,7 +211,7 @@
{BSD_FS_V71K, "4.1BSD"},
{BSD_FS_V8, "Eighth Edition"},
{BSD_FS_BSDFFS, "4.2BSD"},
- {BSD_FS_MSDOS, "MS-DOS"},
+ {BSD_FS_EXT2, "ext2"},
{BSD_FS_BSDLFS, "4.4LFS"},
{BSD_FS_OTHER, "unknown"},
{BSD_FS_HPFS, "HPFS"},