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);
included in 21.4.4-10 and later.