diff options
author | Roland McGrath <roland@gnu.org> | 1999-06-13 17:24:14 +0000 |
---|---|---|
committer | Roland McGrath <roland@gnu.org> | 1999-06-13 17:24:14 +0000 |
commit | a248d597ea1b6c032f566141242ea424d6848df9 (patch) | |
tree | 44fbeb6f0332c885f6f00c3bfa60d40303fc893e /linux/dev | |
parent | 13081aedc97b3a346d6808e7e7f58cf7f79d1dbf (diff) |
1999-06-07 OKUJI Yoshinori <okuji@kuicr.kyoto-u.ac.jp>
* linux/dev/drivers/block/genhd.c [MACH] (mach_minor): New variable.
(add_bsd_partition): New function.
(bsd_disklabel_partition) [MACH]: Call add_bsd_partition.
(msdos_partition) [MACH]: Set mach_minor to MINOR before
calling bsd_disklabel_partition.
Diffstat (limited to 'linux/dev')
-rw-r--r-- | linux/dev/drivers/block/genhd.c | 54 |
1 files changed, 22 insertions, 32 deletions
diff --git a/linux/dev/drivers/block/genhd.c b/linux/dev/drivers/block/genhd.c index a499698..d46fc67 100644 --- a/linux/dev/drivers/block/genhd.c +++ b/linux/dev/drivers/block/genhd.c @@ -111,6 +111,19 @@ static void add_partition (struct gendisk *hd, int minor, int start, int size) printk(" %s", disk_name(hd, minor, buf)); } +#ifdef MACH +static int mach_minor; +static void +add_bsd_partition (struct gendisk *hd, int minor, int slice, + int start, int size) +{ + char buf[16]; + hd->part[minor].start_sect = start; + hd->part[minor].nr_sects = size; + printk (" %s%c", disk_name (hd, mach_minor, buf), slice); +} +#endif + static inline int is_extended_partition(struct partition *p) { return (SYS_IND(p) == DOS_EXTENDED_PARTITION || @@ -240,46 +253,20 @@ static void bsd_disklabel_partition(struct gendisk *hd, kdev_t dev) p = &l->d_partitions[0]; while (p - &l->d_partitions[0] <= BSD_MAXPARTITIONS) { -#ifdef MACH - /* Print BSD slices like hd0s1a (Mach syntax) instead of hd0s5 - (Linux syntax), and do not add them into HD. In Mach, - the partitions of HD will not be used anyway. */ - if (p->p_fstype != BSD_FS_UNUSED) - { - unsigned int part = current_minor & mask; - const char *maj = hd->major_name; - char unit = (current_minor >> hd->minor_shift) + '0'; - char slice = p - &l->d_partitions[0] + 'a'; - -#ifdef CONFIG_BLK_DEV_IDE - switch (hd->major) - { - case IDE3_MAJOR: - unit += 2; - case IDE2_MAJOR: - unit += 2; - case IDE1_MAJOR: - unit += 2; - case IDE0_MAJOR: - maj = "hd"; - } -#endif - if (part) - printk (" %s%cs%d%c", maj, unit, part, slice); - else - printk (" %s%c%c", maj, unit, slice); - } - p++; -#else /* ! MACH */ if ((current_minor & mask) >= (4 + hd->max_p)) break; if (p->p_fstype != BSD_FS_UNUSED) { +#ifdef MACH + add_bsd_partition (hd, current_minor, + p - &l->d_partitions[0] + 'a', + p->p_offset, p->p_size); +#else add_partition(hd, current_minor, p->p_offset, p->p_size); +#endif current_minor++; } p++; -#endif /* ! MACH */ } brelse(bh); @@ -412,6 +399,9 @@ check_table: #ifdef CONFIG_BSD_DISKLABEL if (SYS_IND(p) == BSD_PARTITION) { printk(" <"); +#ifdef MACH + mach_minor = minor; +#endif bsd_disklabel_partition(hd, MKDEV(hd->major, minor)); printk(" >"); } |