diff options
Diffstat (limited to 'fs/partitions')
-rw-r--r-- | fs/partitions/Config.in | 27 | ||||
-rw-r--r-- | fs/partitions/check.c | 1 | ||||
-rw-r--r-- | fs/partitions/sgi.c | 8 | ||||
-rw-r--r-- | fs/partitions/sun.c | 6 | ||||
-rw-r--r-- | fs/partitions/ultrix.c | 27 | ||||
-rw-r--r-- | fs/partitions/ultrix.h | 10 |
6 files changed, 39 insertions, 40 deletions
diff --git a/fs/partitions/Config.in b/fs/partitions/Config.in index 57706a744..6974e1a2d 100644 --- a/fs/partitions/Config.in +++ b/fs/partitions/Config.in @@ -21,7 +21,9 @@ if [ "$CONFIG_PARTITION_ADVANCED" = "y" ]; then bool ' Solaris (x86) partition table support' CONFIG_SOLARIS_X86_PARTITION bool ' Unixware slices support' CONFIG_UNIXWARE_DISKLABEL fi - bool ' Ultrix partition table support' CONFIG_ULTRIX_PARTITION + bool 'SGI partition support' CONFIG_SGI_PARTITION + bool 'Ultrix partition table support' CONFIG_ULTRIX_PARTITION + bool 'Sun partition tables support' CONFIG_SUN_PARTITION else if [ "$ARCH" = "alpha" ]; then define_bool CONFIG_OSF_PARTITION y @@ -30,7 +32,8 @@ else define_bool CONFIG_MAC_PARTITION y fi if [ "$CONFIG_AMIGA" != "y" -a "$CONFIG_ATARI" != "y" -a \ - "$CONFIG_MAC" != "y" ]; then + "$CONFIG_MAC" != "y" -a "$CONFIG_SGI_IP22" != "y" -a \ + "$CONFIG_SGI_IP27" != "y" ]; then define_bool CONFIG_MSDOS_PARTITION y fi if [ "$CONFIG_AMIGA" = "y" ]; then @@ -47,15 +50,13 @@ else if [ "$CONFIG_ATARI" = "y" ]; then define_bool CONFIG_ATARI_PARTITION y fi - bool 'Ultrix partition table support' CONFIG_ULTRIX_PARTITION -fi -if [ "$CONFIG_SGI_IP22" != "y" -a "$CONFIG_SGI_IP27" != "y" ]; then - bool 'SGI partition support' CONFIG_SGI_PARTITION -else - define_bool CONFIG_SGI_PARTITION y -fi -if [ "$ARCH" != "sparc" -a "$ARCH" != "sparc64" ]; then - bool 'Sun partition tables support' CONFIG_SUN_PARTITION -else - define_bool CONFIG_SUN_PARTITION y + if [ "$CONFIG_SGI_IP22" = "y" -o "$CONFIG_SGI_IP27" = "y" ]; then + define_bool CONFIG_SGI_PARTITION y + fi + if [ "$CONFIG_DECSTATION" = "y" ]; then + define_bool CONFIG_ULTRIX_PARTITION y + fi + if [ "$ARCH" = "sparc" -o "$ARCH" = "sparc64" ]; then + define_bool CONFIG_SUN_PARTITION y + fi fi diff --git a/fs/partitions/check.c b/fs/partitions/check.c index ec0bd3a4b..d9c4c11de 100644 --- a/fs/partitions/check.c +++ b/fs/partitions/check.c @@ -277,7 +277,6 @@ static void check_partition(struct gendisk *hd, kdev_t dev, int first_part_minor void register_disk(struct gendisk *gdev, kdev_t dev, unsigned minors, struct block_device_operations *ops, long size) { - unsigned first = (unsigned)dev; if (!gdev) return; grok_partitions(gdev, MINOR(dev)>>gdev->minor_shift, minors, size); diff --git a/fs/partitions/sgi.c b/fs/partitions/sgi.c index 8ae97eca0..db9c1ae39 100644 --- a/fs/partitions/sgi.c +++ b/fs/partitions/sgi.c @@ -44,15 +44,15 @@ int sgi_partition(struct gendisk *hd, kdev_t dev, unsigned long first_sector, in struct sgi_partition *p; if(!(bh = bread(dev, 0, get_ptable_blocksize(dev)))) { - printk("Dev %s: unable to read partition table\n", kdevname(dev)); + printk(KERN_WARNING "Dev %s: unable to read partition table\n", kdevname(dev)); return -1; } label = (struct sgi_disklabel *) bh->b_data; p = &label->partitions[0]; magic = label->magic_mushroom; if(be32_to_cpu(magic) != SGI_LABEL_MAGIC) { - printk("Dev %s SGI disklabel: bad magic %08x\n", - kdevname(dev), magic); + /*printk("Dev %s SGI disklabel: bad magic %08x\n", + kdevname(dev), magic);*/ brelse(bh); return 0; } @@ -62,7 +62,7 @@ int sgi_partition(struct gendisk *hd, kdev_t dev, unsigned long first_sector, in csum += be32_to_cpu(cs); } if(csum) { - printk("Dev %s SGI disklabel: csum bad, label corrupted\n", + printk(KERN_WARNING "Dev %s SGI disklabel: csum bad, label corrupted\n", kdevname(dev)); brelse(bh); return 0; diff --git a/fs/partitions/sun.c b/fs/partitions/sun.c index 5d82a70c6..5f31cde4b 100644 --- a/fs/partitions/sun.c +++ b/fs/partitions/sun.c @@ -48,15 +48,15 @@ int sun_partition(struct gendisk *hd, kdev_t dev, unsigned long first_sector, in unsigned long spc; if(!(bh = bread(dev, 0, get_ptable_blocksize(dev)))) { - printk("Dev %s: unable to read partition table\n", + printk(KERN_WARNING "Dev %s: unable to read partition table\n", kdevname(dev)); return -1; } label = (struct sun_disklabel *) bh->b_data; p = label->partitions; if (be16_to_cpu(label->magic) != SUN_LABEL_MAGIC) { - printk("Dev %s Sun disklabel: bad magic %04x\n", - kdevname(dev), be16_to_cpu(label->magic)); +/* printk(KERN_INFO "Dev %s Sun disklabel: bad magic %04x\n", + kdevname(dev), be16_to_cpu(label->magic)); */ brelse(bh); return 0; } diff --git a/fs/partitions/ultrix.c b/fs/partitions/ultrix.c index 1de4d04b0..654a4fbd1 100644 --- a/fs/partitions/ultrix.c +++ b/fs/partitions/ultrix.c @@ -13,11 +13,11 @@ #include <linux/blk.h> #include "check.h" -#include "ultrix.h" -int ultrix_partition(struct gendisk *hd, kdev_t dev, unsigned long first_sector, int first_part_minor) +static int ultrix_partition(struct gendisk *hd, kdev_t dev, + unsigned long first_sector, int curren_minor) { - int i; + int i, minor = current_minor; struct buffer_head *bh; struct ultrix_disklabel { s32 pt_magic; /* magic no. indicating part. info exits */ @@ -28,6 +28,12 @@ int ultrix_partition(struct gendisk *hd, kdev_t dev, unsigned long first_sector, } pt_part[8]; } *label; +#define PT_MAGIC 0x032957 /* Partition magic number */ +#define PT_VALID 1 /* Indicates if struct is valid */ + +#define SBLOCK ((unsigned long)((16384 - sizeof(struct ultrix_disklabel)) \ + /get_ptable_blocksize(dev))) + bh = bread (dev, SBLOCK, get_ptable_blocksize(dev)); if (!bh) { printk (" unable to read block 0x%lx\n", SBLOCK); @@ -38,14 +44,12 @@ int ultrix_partition(struct gendisk *hd, kdev_t dev, unsigned long first_sector, + get_ptable_blocksize(dev) - sizeof(struct ultrix_disklabel)); - if (le32_to_cpu(label->pt_magic) == PT_MAGIC && - le32_to_cpu(label->pt_valid == PT_VALID)) { - for (i=0; i<8; i++, first_part_minor++) - if (le32_to_cpu(label->pt_part[i].pi_nblocks)) - add_gd_partition(hd, first_part_minor, - le32_to_cpu(label->pt_part[i].pi_blkoff), - le32_to_cpu(label->pt_part[i].pi_nblocks)); - + if (label->pt_magic == PT_MAGIC && label->pt_valid == PT_VALID) { + for (i=0; i<8; i++, minor++) + if (label->pt_part[i].pi_nblocks) + add_gd_partition(hd, minor, + label->pt_part[i].pi_blkoff, + label->pt_part[i].pi_nblocks); brelse(bh); printk ("\n"); return 1; @@ -54,4 +58,3 @@ int ultrix_partition(struct gendisk *hd, kdev_t dev, unsigned long first_sector, return 0; } } - diff --git a/fs/partitions/ultrix.h b/fs/partitions/ultrix.h index b2d24fdfd..385a32590 100644 --- a/fs/partitions/ultrix.h +++ b/fs/partitions/ultrix.h @@ -2,12 +2,8 @@ * fs/partitions/ultrix.h */ -#define PT_MAGIC 0x032957 /* Partition magic number */ -#define PT_VALID 1 /* Indicates if struct is valid */ +static int ultrix_partition(struct gendisk *hd, kdev_t dev, + unsigned long first_sector); -#define SBLOCK ((unsigned long)((16384 - sizeof(struct ultrix_disklabel)) \ - /get_ptable_blocksize(dev))) - -int ultrix_partition(struct gendisk *hd, kdev_t dev, - unsigned long first_sector, int first_part_minor); +#define SGI_LABEL_MAGIC 0x0be5a941 |