From: mike.miller@hp.com

If no device is attached we now return -ENXIO instead of some bogus
numbers.  Prevents applications from trying to access non-existent disks. 
Also adds HDIO_GETGEO_BIG IOCTL that fdisk uses.


---

 25-akpm/drivers/block/cciss.c |    7 ++-----
 1 files changed, 2 insertions(+), 5 deletions(-)

diff -puN drivers/block/cciss.c~cciss-ENXIO-fix drivers/block/cciss.c
--- 25/drivers/block/cciss.c~cciss-ENXIO-fix	2004-03-26 10:12:33.961416352 -0800
+++ 25-akpm/drivers/block/cciss.c	2004-03-26 10:12:33.965415744 -0800
@@ -469,11 +469,8 @@ static int cciss_ioctl(struct inode *ino
                         driver_geo.heads = drv->heads;
                         driver_geo.sectors = drv->sectors;
                         driver_geo.cylinders = drv->cylinders;
-                } else {
-                        driver_geo.heads = 0xff;
-                        driver_geo.sectors = 0x3f;
-                        driver_geo.cylinders = (int)drv->nr_blocks / (0xff*0x3f);
-                }
+                } else
+			return -ENXIO;
                 driver_geo.start= get_start_sect(inode->i_bdev);
                 if (copy_to_user((void *) arg, &driver_geo,
                                 sizeof( struct hd_geometry)))

_