Skip to contentSkip to conversation

sd: Disable support for 256 byte/sector disks

PATCH In review Hannes Reinecke 3 participants 6 messages May 13, 2015 SCSI

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 sd: Disable support for 256 byte/sector disks

256 bytes per sector support has been broken since 2.6.X, and no-one stepped up to fix this.
So disable support for it.

---
 drivers/scsi/sd.c | 19 +++++--------------
 1 file changed, 5 insertions(+), 14 deletions(-)
drivers/scsi/sd.c +5 -14
index 79beebf..7f9d65f 100644
@@ -1600,6 +1600,7 @@ static unsigned int sd_completed_bytes(struct scsi_cmnd *scmd)
 {
 	u64 start_lba = blk_rq_pos(scmd->request);
 	u64 end_lba = blk_rq_pos(scmd->request) + (scsi_bufflen(scmd) / 512);
+	u64 factor = scmd->device->sector_size / 512;
 	u64 bad_lba;
 	int info_valid;
 	/*
@@ -1621,16 +1622,9 @@ static unsigned int sd_completed_bytes(struct scsi_cmnd *scmd)
 	if (scsi_bufflen(scmd) <= scmd->device->sector_size)
 		return 0;
 
-	if (scmd->device->sector_size < 512) {
-		/* only legitimate sector_size here is 256 */
-		start_lba <<= 1;
-		end_lba <<= 1;
-	} else {
-		/* be careful ... don't want any overflows */
-		unsigned int factor = scmd->device->sector_size / 512;
-		do_div(start_lba, factor);
-		do_div(end_lba, factor);
-	}
+	/* be careful ... don't want any overflows */
+	do_div(start_lba, factor);
+	do_div(end_lba, factor);
 
 	/* The bad lba was reported incorrectly, we have no idea where
 	 * the error is.
@@ -2188,8 +2182,7 @@ got_data:
 	if (sector_size != 512 &&
 	    sector_size != 1024 &&
 	    sector_size != 2048 &&
-	    sector_size != 4096 &&
-	    sector_size != 256) {
+	    sector_size != 4096) {
 		sd_printk(KERN_NOTICE, sdkp, "Unsupported sector size %d.\n",
 			  sector_size);
 		/*
@@ -2244,8 +2237,6 @@ got_data:
 		sdkp->capacity <<= 2;
 	else if (sector_size == 1024)
 		sdkp->capacity <<= 1;
-	else if (sector_size == 256)
-		sdkp->capacity >>= 1;
 
 	blk_queue_physical_block_size(sdp->request_queue,
 				      sdkp->physical_block_size);
Signature · 1 line
1.8.5.2
Tested-by on v1 1/1
#1 lore raw
Quoted 54 lines · Hannes Reinecke

256 bytes per sector support has been broken since 2.6.X, and no-one stepped up to fix this.
So disable support for it.

---
  drivers/scsi/sd.c | 19 +++++--------------
  1 file changed, 5 insertions(+), 14 deletions(-)
drivers/scsi/sd.c +5 -12
index 79beebf..7f9d65f 100644
@@ -1600,6 +1600,7 @@ static unsigned int sd_completed_bytes(struct scsi_cmnd *scmd)
  {
  	u64 start_lba = blk_rq_pos(scmd->request);
  	u64 end_lba = blk_rq_pos(scmd->request) + (scsi_bufflen(scmd) / 512);
+	u64 factor = scmd->device->sector_size / 512;
  	u64 bad_lba;
  	int info_valid;
  	/*
@@ -1621,16 +1622,9 @@ static unsigned int sd_completed_bytes(struct scsi_cmnd *scmd)
  	if (scsi_bufflen(scmd) <= scmd->device->sector_size)
  		return 0;
 
-	if (scmd->device->sector_size < 512) {
-		/* only legitimate sector_size here is 256 */
-		start_lba <<= 1;
-		end_lba <<= 1;
-	} else {
-		/* be careful ... don't want any overflows */
-		unsigned int factor = scmd->device->sector_size / 512;
-		do_div(start_lba, factor);
-		do_div(end_lba, factor);
-	}
+	/* be careful ... don't want any overflows */
+	do_div(start_lba, factor);
+	do_div(end_lba, factor);
 
  	/* The bad lba was reported incorrectly, we have no idea where
  	 * the error is.
@@ -2188,8 +2182,7 @@ got_data:
  	if (sector_size != 512 &&
  	    sector_size != 1024 &&
  	    sector_size != 2048 &&
-	    sector_size != 4096 &&
-	    sector_size != 256) {
+	    sector_size != 4096) {
  		sd_printk(KERN_NOTICE, sdkp, "Unsupported sector size %d.\n",
  			  sector_size);
  		/*

drivers/scsi/sd.c got_data: · line 2242

Quoted 8 lines
drivers/scsi/sd.c +0 -2
@@ -2244,8 +2237,6 @@ got_data:
  		sdkp->capacity <<= 2;
  	else if (sector_size == 1024)
  		sdkp->capacity <<= 1;
-	else if (sector_size == 256)
-		sdkp->capacity >>= 1;
 
  	blk_queue_physical_block_size(sdp->request_queue,
  				      sdkp->physical_block_size);

Mark

#3 lore raw
Quoted 5 lines · James Bottomley
Quoted 3 lines · Hannes Reinecke

256 bytes per sector support has been broken since 2.6.X, and no-one stepped up to fix this.
So disable support for it.

Quoted 8 lines

I assume this should have a

From: Mark Hounschell <[email protected]>

at the top?

James

I wasn't sure, as I've pulled the patch off bugzilla. But do whatever you see fit.

Cheers,

Hannes

Signature · 9 lines
Dr. Hannes Reinecke		               zSeries & Storage
[email protected]			               +49 911 74053 688
SUSE LINUX GmbH, Maxfeldstr. 5, 90409 Nürnberg
GF: F. Imendörffer, J. Smithard, J. Guild, D. Upmanyu, G. Norton
HRB 21284 (AG Nürnberg)
--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
maintainer
#4 lore raw
Quoted 8 lines · Hannes Reinecke
Quoted 7 lines · James Bottomley
Quoted 3 lines · Hannes Reinecke

256 bytes per sector support has been broken since 2.6.X, and no-one stepped up to fix this.
So disable support for it.

I assume this should have a

Quoted 8 lines
Quoted 6 lines

From: Mark Hounschell <[email protected]>

at the top?

James

I wasn't sure, as I've pulled the patch off bugzilla. But do whatever you see fit.

It needs authorship (From: field) of whoever wrote it and put it on bugzilla in the first place. According to the entry, it was him:

https://bugzilla.kernel.org/show_bug.cgi?id=16058#c18

James

#5 lore raw
Quoted 15 lines · James Bottomley
Quoted 14 lines · Hannes Reinecke
Quoted 13 lines · James Bottomley
Quoted 3 lines · Hannes Reinecke

256 bytes per sector support has been broken since 2.6.X, and no-one stepped up to fix this.
So disable support for it.

I assume this should have a

From: Mark Hounschell <[email protected]>

at the top?

James

Quoted 8 lines
Quoted 2 lines

I wasn't sure, as I've pulled the patch off bugzilla. But do whatever you see fit.

It needs authorship (From: field) of whoever wrote it and put it on bugzilla in the first place. According to the entry, it was him:

https://bugzilla.kernel.org/show_bug.cgi?id=16058#c18

I am the author of that patch. What would you like me to do? My home email address is what I used in bugzilla "[email protected]" years back when I originally submitted the bug. I'm sending this email from work.

I am Mark Hounschell and am the author of that patch and you can do with it whatever you see fit?

Regards
Mark