Oh right, that's what logical_to_sectors()'s for. Thanks! :-) On Fri, 25 Sep 2020 at 01:52, Bart Van Assche <bvanassche@xxxxxxx> wrote: > > On 2020-09-22 22:52, Tom Yan wrote: > > Logical block size was never / is no longer necessarily 512. > > > > Signed-off-by: Tom Yan <tom.ty89@xxxxxxxxx> > > --- > > drivers/scsi/sg.c | 5 +++-- > > 1 file changed, 3 insertions(+), 2 deletions(-) > > > > diff --git a/drivers/scsi/sg.c b/drivers/scsi/sg.c > > index 20472aaaf630..8a2cca71017f 100644 > > --- a/drivers/scsi/sg.c > > +++ b/drivers/scsi/sg.c > > @@ -848,10 +848,11 @@ static int srp_done(Sg_fd *sfp, Sg_request *srp) > > static int max_sectors_bytes(struct request_queue *q) > > { > > unsigned int max_sectors = queue_max_sectors(q); > > + max_sectors *= queue_logical_block_size(q); > > > > - max_sectors = min_t(unsigned int, max_sectors, INT_MAX >> 9); > > + max_sectors = min_t(unsigned int, max_sectors, INT_MAX); > > > > - return max_sectors << 9; > > + return max_sectors; > > } > > I think the above patch is wrong and also that it breaks code that is > correct. In the Linux kernel, "one sector" is by definition 512 bytes. > See also the definition of the SECTOR_SIZE and SECTOR_SHIFT constants. > > Bart.