Hi,

Answering large requests with "Illegal request, Invalid field in CDB"
doesn't makes linux try smaller requests, instead it reports I/O errors
to the syslog.

Hmm.

Can't we just put residuals to good use here?
Ie finish up the request up to the size we can handle, and return the
original request with the transfer size set correctly.

I'll try.

Should be straightforward to implement, one would assume.

The infrastructure and the HBAs have to handle that already. It frequently happens with MODE SENSE for example (guest passing a 256 byte buffer and we have less data to fill in). So it should be easy.

And we could probably encapsulate it entirely within the bdrv
as don't actually need to expose those limits when the block
driver layer is handling it correctly.

Hmm, I don't think so.  SG_IO just returns EINVAL.

cheers,
  Gerd



Reply via email to