Message ID | 1431506949-11398-1-git-send-email-hare@suse.de (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On 05/13/2015 04:49 AM, Hannes Reinecke wrote: > 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. > > Signed-off-by: Mark Hounschell <dmarkh@cfl.rr.com> > Signed-off-by: Hannes Reinecke <hare@suse.de> > --- > drivers/scsi/sd.c | 19 +++++-------------- > 1 file changed, 5 insertions(+), 14 deletions(-) > > diff --git a/drivers/scsi/sd.c b/drivers/scsi/sd.c > index 79beebf..7f9d65f 100644 > --- a/drivers/scsi/sd.c > +++ b/drivers/scsi/sd.c > @@ -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); > Tested-by: Mark Hounschell <dmarkh@cfl.rr.com> Mark -- To unsubscribe from this list: send the line "unsubscribe linux-scsi" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Wed, 2015-05-13 at 10:49 +0200, Hannes Reinecke wrote: > 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 <dmarkh@cfl.rr.com> at the top? James -- To unsubscribe from this list: send the line "unsubscribe linux-scsi" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On 05/13/2015 04:00 PM, James Bottomley wrote: > On Wed, 2015-05-13 at 10:49 +0200, Hannes Reinecke wrote: >> 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 <dmarkh@cfl.rr.com> > > at the top? > > James > I wasn't sure, as I've pulled the patch off bugzilla. But do whatever you see fit. Cheers, Hannes
On Wed, 2015-05-13 at 16:09 +0200, Hannes Reinecke wrote: > On 05/13/2015 04:00 PM, James Bottomley wrote: > > On Wed, 2015-05-13 at 10:49 +0200, Hannes Reinecke wrote: > >> 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 <dmarkh@cfl.rr.com> > > > > 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 -- To unsubscribe from this list: send the line "unsubscribe linux-scsi" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On 05/13/2015 10:17 AM, James Bottomley wrote: > On Wed, 2015-05-13 at 16:09 +0200, Hannes Reinecke wrote: >> On 05/13/2015 04:00 PM, James Bottomley wrote: >>> On Wed, 2015-05-13 at 10:49 +0200, Hannes Reinecke wrote: >>>> 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 <dmarkh@cfl.rr.com> >>> >>> 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 > I am the author of that patch. What would you like me to do? My home email address is what I used in bugzilla "dmarkh@cfl.rr.com" 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 -- To unsubscribe from this list: send the line "unsubscribe linux-scsi" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/drivers/scsi/sd.c b/drivers/scsi/sd.c index 79beebf..7f9d65f 100644 --- a/drivers/scsi/sd.c +++ b/drivers/scsi/sd.c @@ -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);