Re: [PATCH 03/11] block: add rq->resid_len

Boaz Harrosh
2009-05-12T15:54:20Z

On 05/12/2009 06:20 PM, Tejun Heo wrote:
> Boaz Harrosh wrote:
>
>> The solution to this, I think, is that the bouncing layer should
>> receive a residual count, and not bounce anything beyond what's
>> transferred. (On reads, writes does nothing), and zero-out the
>> rest. This of course means that all block drivers make sure residual
>> is properly set, the way it should as explained in this
>> thread. (SCSI does the right thing where it can, for example see
>> scsi_execute())
>
> Umm... shouldn't the request just be successfully finished with
> positive residue count and with sense data if necessary? Block layer
> request failure means, and has always meant, complete failure.
>

I see, however if so then bouncing must take into consideration the residual
count in the successful case, so not to copy garbage bytes. And drivers audited
to make sure residual is set accordingly.

I wish we would set resid_len to data_len at begining and let drivers
reset that on success properly, like SCSI does. I'll look at it farther
when I have a bit of time.

Finally I see a distinct separate usage for the request->error member?

> Thanks.
>

Thanks
Boaz