Bug 16733 - I2O Block Device support in LILO
Summary: I2O Block Device support in LILO
Keywords:
Status: CLOSED RAWHIDE
Alias: None
Product: Red Hat Linux
Classification: Retired
Component: lilo
Version: 7.0
Hardware: i386
OS: Linux
medium
medium
Target Milestone: ---
Assignee: Michael K. Johnson
QA Contact:
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2000-08-22 17:14 UTC by Boji Tony Kannanthanam
Modified: 2008-05-01 15:37 UTC (History)
0 users

Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Clone Of:
Environment:
Last Closed: 2000-08-22 17:14:42 UTC
Embargoed:


Attachments (Terms of Use)

Description Boji Tony Kannanthanam 2000-08-22 17:14:40 UTC
Linux I2O Stack introduces a new type of Block device: I2O Block device. 
The following patch taken against LILO ver 21, adds support for such 
devices. Please include this in the LILO version which ships with 
Pinstripe.
Thanks
Boji

==========================================================

diff -u lilo/VERSION lilo-i2o/VERSION
--- lilo/VERSION	Fri Dec  4 13:20:12 1998
+++ lilo-i2o/VERSION	Thu Apr  6 13:19:17 2000
@@ -1 +1 @@
-21
+21-i2o
diff -u lilo/geometry.c lilo-i2o/geometry.c
--- lilo/geometry.c	Wed Oct 14 13:24:41 1998
+++ lilo-i2o/geometry.c	Thu Apr  6 13:23:09 2000
@@ -120,7 +120,8 @@
       MAJOR(dev) == MAJOR_IDE3 || MAJOR(dev) == MAJOR_IDE4 ||
       MAJOR(dev) == MAJOR_IDE5 || MAJOR(dev) == MAJOR_IDE6 ||
       MAJOR(dev) == MAJOR_XT || MAJOR(dev) == MAJOR_SD ||
-      MAJOR(dev) == MAJOR_ESDI || MAJOR(dev) == MAJOR_DAC960;
+      MAJOR(dev) == MAJOR_ESDI || MAJOR(dev) == MAJOR_DAC960 ||
+      MAJOR(dev) == MAJOR_I2O;
 }
 
 
@@ -342,6 +343,16 @@
 	    geo->sectors = hdprm.sectors;
 	    geo->start = hdprm.start;
 	    break;
+	case MAJOR_I2O:
+	     geo->device = 0x80+last_dev(MAJOR_HD,64)+(MINOR(device) >> 4);
+	    if (ioctl(fd,HDIO_GETGEO,&hdprm) < 0)
+		die("geo_query_dev HDIO_GETGEO (dev 0x%04x): %s",device,
+		  strerror(errno));
+	    geo->heads = hdprm.heads;
+	    geo->cylinders = hdprm.cylinders;
+	    geo->sectors = hdprm.sectors;
+	    geo->start = hdprm.start;
+	    break;
 	default:
 	    die("Sorry, don't know how to handle device 0x%04x",device);
     }
@@ -384,6 +395,8 @@
 	    return MINOR(device) >> 4 ? 0 : !last_dev(MAJOR_HD,64);
 	case MAJOR_DAC960:
 	    return MINOR(device) >> 3 ? 0 : !last_dev(MAJOR_HD,64);
+	case MAJOR_I2O:
+	    return MINOR(device) >> 4 ? 0 : !last_dev(MAJOR_HD,64);
 	default:
 	    return 1; /* user knows what (s)he's doing ... I hope */
     }
diff -u lilo/lilo.h lilo-i2o/lilo.h
--- lilo/lilo.h	Fri Dec  4 11:55:31 1998
+++ lilo-i2o/lilo.h	Mon Mar  6 16:08:06 2000
@@ -39,6 +39,7 @@
 #define MAJOR_DAC960	48 /* First Mylex DAC960 PCI RAID controller */
 #define MAJOR_IDE5	55 /* IDE on fifth interface */
 #define MAJOR_IDE6	57 /* IDE on sixth interface */
+#define MAJOR_I2O	80 /* I2O based controller */
 
 #define MAX_IMAGES      ((SECTOR_SIZE*2-2)/sizeof(IMAGE_DESCR))
 			  /* maximum number of images */
--- lilo/partition.c	Wed Oct 14 13:12:42 1998
+++ lilo-i2o/partition.c	Wed Apr  5 14:25:14 2000
@@ -46,7 +46,7 @@
        MAJOR(dev_nr) != MAJOR_SD && MAJOR(dev_nr) != MAJOR_IDE2 &&
        MAJOR(dev_nr) != MAJOR_IDE3 && MAJOR(dev_nr) != MAJOR_IDE4 &&
        MAJOR(dev_nr) != MAJOR_IDE5 && MAJOR(dev_nr) != MAJOR_IDE6 &&
-      MAJOR(dev_nr) != MAJOR_DAC960)) return;
+      MAJOR(dev_nr) != MAJOR_DAC960) || MAJOR(dev_nr) != MAJOR_I2O) 
return;
     geo_get(&geo,dev_nr & ~PART_MASK,-1,1);
     fd = dev_open(&dev,dev_nr & ~PART_MASK,cfg_get_flag(cf_options,"fix-
table")
       && !test ? O_RDWR : O_RDONLY);

Comment 1 Preston Brown 2000-08-23 15:16:45 UTC
included in 21.4.4-10 and later.


Note You need to log in before you can comment on or make changes to this bug.