I have more information on the problem with bio requests. I am seeing the bi_size
value return through bi_end_io early with an odd size if the interface is passed
an unaligned 4K write. What's busted here is that bio_add_page accepts the
4K unaligned write request, then the callback from the SCSI layer calls back
with a partial compleation with the bi_size field set to the value of 0x1FE (????)
and no other callback is received. What's busted here is if you use the
recommended logic of
if (bio->bi_size)
return 1;
then you never get the completed callback and the IO request just sits off in left
field and the driver never returns any error status through the callback interface.
I am also still seeing the disappearing pages and after tracking through the code,
I am certain they are related since I am not getting any callbacks from the driver
layer after I receive the first end_io callback with bi_size set.
Also, my drdos.com address is blocked from posting to the list again, so I am using
comcast.net. What's up with this?
Jeff
(please wrap your out going emails, the lines are way too long)
On Fri, Oct 01 2004, [email protected] wrote:
>
> I have more information on the problem with bio requests. I am seeing
> the bi_size value return through bi_end_io early with an odd size if
> the interface is passed an unaligned 4K write. What's busted here is
> that bio_add_page accepts the 4K unaligned write request, then the
> callback from the SCSI layer calls back with a partial compleation
> with the bi_size field set to the value of 0x1FE (????) and no other
> callback is received. What's busted here is if you use the
> recommended logic of
>
> if (bio->bi_size) return 1;
>
> then you never get the completed callback and the IO request just sits
> off in left field and the driver never returns any error status
> through the callback interface. I am also still seeing the
> disappearing pages and after tracking through the code, I am certain
> they are related since I am not getting any callbacks from the driver
> layer after I receive the first end_io callback with bi_size set.
Please send a test case, thanks.
--
Jens Axboe