linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: <imel96@trustix.co.id>
To: <torvalds@transmeta.com>
Cc: <linux-kernel@vger.kernel.org>
Subject: [PATCH] plan9 partition support
Date: Sat, 13 Jan 2001 16:50:25 +0700 (JAVT)	[thread overview]
Message-ID: <Pine.LNX.4.30.0101131346570.32231-200000@asmuni.trustix.co.id> (raw)

[-- Attachment #1: Type: TEXT/PLAIN, Size: 541 bytes --]




	hi all,


	this one patch i believe is harmless as it only
	reads partition table, but who knows. the diff
	is against 2.4.0.

	the patch locates partitions inside the plan9
	partition table.

	as you may know, a plan9 partition table has three
	type of partitions inside (9fat, fs, and swap).
	9fat is fat16.

	with msdos file system, linux will mount 9fat partition,
	so you could use the 9fat and other fat16 partition inside
	plan9 from linux and plan9.

	i can't find anyone with plan9 to test, but it works for
	me, so...


		imel

[-- Attachment #2: Type: TEXT/PLAIN, Size: 4841 bytes --]

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 <linux/config.h>
@@ -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: <plan9:", disk_name(hd, minor, buf));
+	ptr = bh->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 <yogo@math.tau.ac.il>

             reply	other threads:[~2001-01-13  9:51 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2001-01-13  9:50 imel96 [this message]
  -- strict thread matches above, loose matches on Subject: below --
2001-01-14  1:26 [PATCH] plan9 partition support Andries.Brouwer
2001-01-16  9:35 ` imel96
2001-01-07 12:44 imel96

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=Pine.LNX.4.30.0101131346570.32231-200000@asmuni.trustix.co.id \
    --to=imel96@trustix.co.id \
    --cc=linux-kernel@vger.kernel.org \
    --cc=torvalds@transmeta.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).