diff -ur linux~/Documentation/Configure.help linux/Documentation/Configure.help --- linux~/Documentation/Configure.help Fri Jan 5 16:27:43 2001 +++ linux/Documentation/Configure.help Sat Jan 13 14:46:10 2001 @@ -1,7 +1,7 @@ # Maintained by Axel Boldt (axel@uni-paderborn.de) # # This version of the Linux kernel configuration help texts -# corresponds to the kernel versions 2.3.x. +# corresponds to the kernel versions 2.4.x. # # Translations of this file available on the WWW: # @@ -11469,6 +11469,17 @@ CONFIG_MSDOS_PARTITION Say Y here if you would like to use hard disks under Linux which were partitioned on an x86 PC (not necessarily by DOS). + +Plan9 partition table support (EXPERIMENTAL) +CONFIG_PLAN9_PARTITION + Plan9 uses its own hard disk partition scheme on your PC. It + requires only one entry in the primary partition table of your disk + and manages it similarly to DOS extended partitions. Saying Y + here allows you to read the existing partitions, and mount FAT16 + partitions from within Linux, if you have also said Y to "MSDOS fs + support" or "VFAT (Windows-95) fs support". You can mount the first + FAT16 partition (9fat) directly without this. If you don't know what + all this is about, say N. BSD disklabel (FreeBSD partition tables) support CONFIG_BSD_DISKLABEL diff -ur linux~/fs/partitions/Config.in linux/fs/partitions/Config.in --- linux~/fs/partitions/Config.in Mon Jul 10 12:21:41 2000 +++ linux/fs/partitions/Config.in Sun Jan 7 18:37:27 2001 @@ -23,6 +23,7 @@ bool ' BSD disklabel (FreeBSD partition tables) support' CONFIG_BSD_DISKLABEL bool ' Solaris (x86) partition table support' CONFIG_SOLARIS_X86_PARTITION bool ' Unixware slices support' CONFIG_UNIXWARE_DISKLABEL + dep_bool ' Plan9 partition support (EXPERIMENTAL)' CONFIG_PLAN9_PARTITION $CONFIG_EXPERIMENTAL fi bool ' SGI partition support' CONFIG_SGI_PARTITION bool ' Ultrix partition table support' CONFIG_ULTRIX_PARTITION diff -ur linux~/fs/partitions/msdos.c linux/fs/partitions/msdos.c --- linux~/fs/partitions/msdos.c Fri Nov 17 17:18:46 2000 +++ linux/fs/partitions/msdos.c Sun Jan 7 18:46:34 2001 @@ -17,6 +17,8 @@ * Check partition table on IDE disks for common CHS translations * * Re-organised Feb 1998 Russell King + * + * plan9 partition hack 2001 Jan, imel96@trustix.com */ #include @@ -228,6 +230,55 @@ } #endif +#ifdef CONFIG_PLAN9_PARTITION + +static void add_plan9_partition(struct gendisk *hd, struct plan9_partition + *plan9_p, int minor) +{ + add_gd_partition(hd, current_minor, plan9_p->p_offset, plan9_p->p_size); + current_minor++; +} + +/* + * Create devices for plan9 partitions listed in a disklabel, under a + * dos-like partition. See bsd code for more information. + */ +static void plan9_disklabel_partition(struct gendisk *hd, int minor, int st_sec) +{ + struct buffer_head *bh; + struct plan9_partition p; + char * ptr; + char buf[40]; + + if (!(bh = get_partition_table_block(hd, minor, 0))) + return; + + printk(" %s: b_data + 0x200; + + while (!strncmp(ptr, "part", 4)) { + + /* locate offset number (which is two spaces away) */ + while (*ptr++ != ' '); + while (*ptr++ != ' '); + p.p_offset = simple_strtoul(ptr, NULL, 10); + + /* find end sector number (next number) */ + while (*ptr++ != ' '); + p.p_size = simple_strtoul(ptr, NULL, 10) - p.p_offset; + p.p_offset += st_sec; + + add_plan9_partition(hd, &p, minor); + + /* go on to next partition */ + while (*ptr++ != '\n'); + } + bforget(bh); + printk(" >\n"); +} + +#endif + #ifdef CONFIG_BSD_DISKLABEL static void check_and_add_bsd_partition(struct gendisk *hd, @@ -499,6 +550,10 @@ SYS_IND(p) == NETBSD_PARTITION || SYS_IND(p) == OPENBSD_PARTITION) bsd_disklabel_partition(hd, minor, SYS_IND(p)); +#endif +#ifdef CONFIG_PLAN9_PARTITION + if (SYS_IND(p) == PLAN9_PARTITION) + plan9_disklabel_partition(hd, minor, START_SECT(p)); #endif #ifdef CONFIG_UNIXWARE_DISKLABEL if (SYS_IND(p) == UNIXWARE_PARTITION) diff -ur linux~/include/linux/genhd.h linux/include/linux/genhd.h --- linux~/include/linux/genhd.h Fri Nov 17 17:23:56 2000 +++ linux/include/linux/genhd.h Sat Jan 13 14:49:17 2001 @@ -103,6 +103,17 @@ #endif /* CONFIG_SOLARIS_X86_PARTITION */ +#ifdef CONFIG_PLAN9_PARTITION + +#define PLAN9_PARTITION 0x39 + +struct plan9_partition { /* the partition table */ + unsigned long p_size; /* number of sectors in partition */ + unsigned long p_offset; /* starting sector */ +}; + +#endif + #ifdef CONFIG_BSD_DISKLABEL /* * BSD disklabel support by Yossi Gottlieb