From 6d403070f28cd44860fdb3a53be5da0275c65cf4 Mon Sep 17 00:00:00 2001 From: Ralf Baechle Date: Mon, 19 Jun 2000 22:45:37 +0000 Subject: Merge with 2.4.0-test1-ac21 + pile of MIPS cleanups to make merging possible. Chainsawed RM200 kernel to compile again. Jazz machine status unknown. --- drivers/scsi/sd.c | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) (limited to 'drivers/scsi/sd.c') diff --git a/drivers/scsi/sd.c b/drivers/scsi/sd.c index 280cda345..bcdc4aab3 100644 --- a/drivers/scsi/sd.c +++ b/drivers/scsi/sd.c @@ -338,6 +338,15 @@ static int sd_init_command(Scsi_Cmnd * SCpnt) this_count = this_count >> 2; } } + if (dpnt->device->sector_size == 4096) { + if ((block & 7) || (SCpnt->request.nr_sectors & 7)) { + printk("sd.c:Bad block number requested"); + return 0; + } else { + block = block >> 3; + this_count = this_count >> 3; + } + } switch (SCpnt->request.cmd) { case WRITE: if (!dpnt->device->writeable) { @@ -588,6 +597,11 @@ static void rw_intr(Scsi_Cmnd * SCpnt) if (block_sectors < 4) block_sectors = 4; break; + case 4096: + error_sector <<=3; + if (block_sectors < 8) + block_sectors = 8; + break; case 256: error_sector >>= 1; break; @@ -889,7 +903,7 @@ static int sd_init_onedisk(int i) */ rscsi_disks[i].capacity = 0; } - if (sector_size == 2048) { + if (sector_size > 1024) { int m; /* @@ -899,7 +913,7 @@ static int sd_init_onedisk(int i) * of partial sectors. */ for (m = i << 4; m < ((i + 1) << 4); m++) { - sd_blocksizes[m] = 2048; + sd_blocksizes[m] = sector_size; } } { /* -- cgit v1.2.3