Re: reusing bios

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Jens Axboe wrote:
On 2011-03-12 10:29, Arne Jansen wrote:
Hi,

I'm trying to re-use struct bio after completion, including the
allocated pages. Normally I re-initialize the fields bi_sector,
bi_size, bi_next, bi_flags, bi_comp_cpu and bi_bdev.
This works perfectly well, as long as no media errors are encountered.
After a media error, all subsequent reads with this bio fail. Are
there any more fields that need to get re-initialized? Or, better,
is there a function to reset the bio?

bio_init()? Sounds like you are not setting BIO_UPTODATE when resetting
it.


bio_init does way too much, as it discards the io_vec, refcnt, destructor,
private etc.
I set the flags to 1 << BIO_UPTODATE, but that proved to be fatal, too, as
it clobbers the POOL_FLAGS, which leads to an oops when the last reference
drops. These bio-beasts are just not made to be reused. One needs way too
much internal knowledge to reinitialize them properly.
Therefore, I'd really like to have a call like bio_reinit, which keeps the
io_vec and all the owners private information, but resets the parts that
get used by the stack like bi_next. Would that make sense?



--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [SCSI Target Devel]     [Linux SCSI Target Infrastructure]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Linux IIO]     [Samba]     [Device Mapper]
  Powered by Linux