Gerd Hoffmann wrote: > On 11/26/09 15:27, Hannes Reinecke wrote: >> Gerd Hoffmann wrote: >>> sd_done() tries to figure how many sectors it actually got for serious >>> errors. I don't feel signaling "medium error" for the first sector >>> behind our limit just because we'd like to have smaller requests. > >> scsi_end_request is being called with the number of bytes _actually >> processed_, >> which might be less than the number of bytes requested. >> And the remainder will be retried by the upper layers. > > The "number of bytes _actually processed_" must come from somewhere. And > that somewhere is sd_done() in case of scsi-disks. See my point now? > Ah. Now. I concur.
So indeed, this approach would only work if we signal some sense code back to the host. I, OTOH, don't have any qualms with returning HARDWARE_ERROR, 0x26/0x08(TOO MANY SEGMENT DESCRIPTORS) resp 0x26h/0x0B (INLINE DATA LENGTH EXCEEDED). Feels only fair to notify the guest it has done something wrong. The alternative would be to split the I/O into smaller sections. But this really feels a bit like an overkill. Cheers, Hannes -- Dr. Hannes Reinecke zSeries & Storage h...@suse.de +49 911 74053 688 SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg GF: Markus Rex, HRB 16746 (AG Nürnberg)