aboutsummaryrefslogtreecommitdiffstats
path: root/xenolinux-2.4.21-pre4-sparse/arch/xeno/drivers/block/xl_scsi.c
diff options
context:
space:
mode:
Diffstat (limited to 'xenolinux-2.4.21-pre4-sparse/arch/xeno/drivers/block/xl_scsi.c')
-rw-r--r--xenolinux-2.4.21-pre4-sparse/arch/xeno/drivers/block/xl_scsi.c22
1 files changed, 12 insertions, 10 deletions
diff --git a/xenolinux-2.4.21-pre4-sparse/arch/xeno/drivers/block/xl_scsi.c b/xenolinux-2.4.21-pre4-sparse/arch/xeno/drivers/block/xl_scsi.c
index 75e379f1ba..e4d1007575 100644
--- a/xenolinux-2.4.21-pre4-sparse/arch/xeno/drivers/block/xl_scsi.c
+++ b/xenolinux-2.4.21-pre4-sparse/arch/xeno/drivers/block/xl_scsi.c
@@ -42,6 +42,13 @@ int xlscsi_init(xen_disk_info_t *xdi)
int i, result, units, minors, disk;
struct gendisk *gd;
+ /* If we don't have any usable SCSI devices we may as well bail now. */
+ units = 0;
+ for ( i = 0; i < xdi->count; i++ )
+ if ( IS_SCSI_XENDEV(xdi->disks[i].device) &&
+ ((xdi->disks[i].device & XENDEV_IDX_MASK) < 16) ) units++;
+ if ( units == 0 ) return 0;
+
SET_MODULE_OWNER(&xlscsi_block_fops);
result = register_blkdev(XLSCSI_MAJOR, XLSCSI_MAJOR_NAME,
@@ -55,16 +62,16 @@ int xlscsi_init(xen_disk_info_t *xdi)
/* Initialize global arrays. */
for ( i = 0; i < XLSCSI_MAX; i++ )
{
- xlscsi_blksize_size[i] = 512;
+ xlscsi_blksize_size[i] = 1024; //XXX 512;
xlscsi_hardsect_size[i] = 512;
- xlscsi_max_sectors[i] = 128;
+ xlscsi_max_sectors[i] = 128*8; //XXX 128
}
blk_size[XLSCSI_MAJOR] = NULL;
blksize_size[XLSCSI_MAJOR] = xlscsi_blksize_size;
hardsect_size[XLSCSI_MAJOR] = xlscsi_hardsect_size;
max_sectors[XLSCSI_MAJOR] = xlscsi_max_sectors;
- read_ahead[XLSCSI_MAJOR] = 8;
+ read_ahead[XLSCSI_MAJOR] = NULL; //XXX8;
blk_init_queue(BLK_DEFAULT_QUEUE(XLSCSI_MAJOR), do_xlblk_request);
@@ -74,13 +81,6 @@ int xlscsi_init(xen_disk_info_t *xdi)
*/
blk_queue_headactive(BLK_DEFAULT_QUEUE(XLSCSI_MAJOR), 0);
- /* If we don't have any usable SCSI devices we may as well bail now. */
- units = 0;
- for ( i = 0; i < xdi->count; i++ )
- if ( IS_SCSI_XENDEV(xdi->disks[i].device) &&
- ((xdi->disks[i].device & XENDEV_IDX_MASK) < 16) ) units++;
- if ( units == 0 ) return 0;
-
/* We may register up to 16 devices in a sparse identifier space. */
units = 16;
@@ -134,6 +134,8 @@ int xlscsi_init(xen_disk_info_t *xdi)
void xlscsi_cleanup(void)
{
+ if ( xlscsi_gendisk == NULL ) return;
+
blk_cleanup_queue(BLK_DEFAULT_QUEUE(XLSCSI_MAJOR));
xlscsi_gendisk = NULL;