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: Sun, 7 Jan 2001 19:44:38 +0700 (JAVT)	[thread overview]
Message-ID: <Pine.LNX.4.30.0101071943310.27014-200000@asmuni.trustix.co.id> (raw)

[-- Attachment #1: Type: TEXT/PLAIN, Size: 681 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.

	plan9 puts its boot loader in the 9fat partition.
	with this patch i can locate the 9fat partition so
	lilo could boot plan9.

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

	i can't find anyone with plan9 to test, but it works for
	me, so... i'm not on the list anymore, so please cc.


		imel

[-- Attachment #2: Type: TEXT/PLAIN, Size: 4615 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	Sun Jan  7 18:22:25 2001
@@ -11470,6 +11470,17 @@
   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. Plan9 has FAT16
+  filesystem as the first partition to put its boot loader. Saying Y
+  here allows you to read the existing partition, and mount the FAT
+  partition from within Linux (if you have also said Y to "MSDOS file
+  system support"), which gives you the ability to make LILO work with
+  Plan9. If you don't know what all this is about, say N.
+
 BSD disklabel (FreeBSD partition tables) support
 CONFIG_BSD_DISKLABEL
   FreeBSD uses its own hard disk partition scheme on your PC. It
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	Sun Jan  7 17:55:15 2001
@@ -103,6 +103,17 @@
 
 #endif /* CONFIG_SOLARIS_X86_PARTITION */
 
+#ifdef CONFIG_PLAN9_PARTITION
+
+#define PLAN9_PARTITION	0x39
+
+struct	plan9_partition {	/* the partition table */
+	__u32	p_size;		/* number of sectors in partition */
+	__u32	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-07 12:45 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2001-01-07 12:44 imel96 [this message]
2001-01-13  9:50 [PATCH] plan9 partition support imel96
2001-01-14  1:26 Andries.Brouwer
2001-01-16  9:35 ` 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.0101071943310.27014-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).