Messages in this thread Patch in this message | | | Date | Tue, 28 Apr 1998 17:10:45 -0700 | From | Brion Vibber <> | Subject | Re: "Where has 2.0.34pre12 gone ?" FAQ |
| |
Alan Cox wrote: > > Ok I've had enough people bug me about this ... the current status is this > > 2.0.34pre11b appears to be basically solid. The bugs it is meant to fix it > seems to fix, the driver stuff is almost all shaken down (some tweaks > to come nothing big)
I've made a tiny patch that I'd like to see in 2.0.34. It changes exactly 3 lines of the kernel source code (one of them a comment), adding support for Win95OSR2/Win98 LBA extended partitions (partition type 0xf). I actually added the support to 2.0.33 myself, and then noticed that it was already in 2.1.96 and changed my patch a tad to have the constant name match, so if you're wondering that's why it looks exactly like the 2.1.96 code. (Can't be too creative with only three lines of code! ;)
It's been verified to work in at least one case as a patch to 2.0.33. I was surprised to find that, although this support is already in the development kernels, it's not in 2.0.34 (as of pre11b). It's a very small change, and quite a few people have run into problems with accessing logical partitions inside type 0xf extended partitions. While it's possible for them to change the partition type to 5 in fdisk, it's not an obvious thing, and many people are (rightfully) reluctant to wantonly change partition types unless they're very sure what they're doing. It would be much simpler for them to have this handled by the kernel, as it is in 2.1.x.
So if it's not too much trouble, could you please integrate this patch (made against 2.0.33, and patches successfully against 2.0.34pre11b) into 2.0.34pre12? Thanks in advance!
-- brion vibber (brion@pobox.com)diff -ur linux-2.0.33/drivers/block/genhd.c linux-2.0.33.new/drivers/block/genhd.c --- linux-2.0.33/drivers/block/genhd.c Mon Aug 4 11:45:55 1997 +++ linux-2.0.33.new/drivers/block/genhd.c Tue Apr 28 16:34:35 1998 @@ -102,6 +102,7 @@ static inline int is_extended_partition(struct partition *p) { return (SYS_IND(p) == DOS_EXTENDED_PARTITION || + SYS_IND(p) == WIN98_EXTENDED_PARTITION || SYS_IND(p) == LINUX_EXTENDED_PARTITION); } diff -ur linux-2.0.33/include/linux/genhd.h linux-2.0.33.new/include/linux/genhd.h --- linux-2.0.33/include/linux/genhd.h Tue Dec 2 14:18:11 1997 +++ linux-2.0.33.new/include/linux/genhd.h Tue Apr 28 16:34:55 1998 @@ -21,10 +21,11 @@ #define CONFIG_SUN_PARTITION 1 #endif -/* These two have identical behaviour; use the second one if DOS fdisk gets +/* These three have identical behaviour; use the second one if DOS fdisk gets confused about extended/logical partitions starting past cylinder 1023. */ #define DOS_EXTENDED_PARTITION 5 #define LINUX_EXTENDED_PARTITION 0x85 +#define WIN98_EXTENDED_PARTITION 0x0f #define DM6_PARTITION 0x54 /* has DDO: use xlated geom & offset */ #define EZD_PARTITION 0x55 /* EZ-DRIVE: same as DM6 (we think) */ | |