Hi Christoph,
> From: Christoph Hellwig, Sent: Thursday, June 13, 2019 4:34 PM
>
> > + if (max_sectors > 0) {
> > + struct device *dev = us->pusb_dev->bus->sysdev;
> > + size_t max_dma_sectors = dma_max_mapping_size(dev) >>
> > + SECTOR_SHIFT;
> > +
> > + max_sectors = min_t(size_t, max_sectors, max_dma_sectors);
> > + blk_queue_max_hw_sectors(sdev->request_queue, max_sectors);
>
> I think we need to do this unconditionally for the rare (or maybe even
> theoretical case) of a dma max mapping size smaller than the default
> max_sectos.
>
> So something like this:
>
> blk_queue_max_hw_sectors(sdev->request_queue,
> min_t(unsigned long,
> queue_max_hw_sectors(sdev->request_queue),
> dma_max_mapping_size(dev) >> SECTOR_SHIFT));
I believe this patch I sent has already covered it. What do you think?
For examples (all value units are "sectors"):
default mapping size max_sectors
case 1 240 MAX 2048 --> we use 2048
case 2 240 512 2048 --> we use 512
case 3 240 128 2048 --> we use 128
case 4 240 128 64 --> we use 64
Best regards,
Yoshihiro Shimoda