1. Am Fr, 2003-07-25 um 16.55 schrieb Kevin Corry: > On Thursday 24 July 2003 18:49, Christophe Saout wrote: > > Am Fr, 2003-07-25 um 01.40 schrieb Christophe Saout: > > > Is it possible that someone calls bio_endio with done < bi_size and an > > > error set? If it is so, the error is ignored by clone_endio. > > > > > > "if (bio->bi_size) return 1;" gets executed before the error parameter > > > gets checked. > > > > > > When clone_endio is executed, say, two times and the first time it get's > > > called with an error and the second time without, device-mapper calls > > > bio_endio on the original bio without noticing the error. > > > > I just checked: The raid1 code checks the BIO_UPTODATE flag in the bio > > and returns an error if it got cleared. It can get cleared by bio_endio > > when an error is passed. > > The "if (bio->bi_size) return 1;" is the accepted convention for drivers that > don't care about partial bio completions (MD and DM certainly don't care). > IIRC, the original assumption is that if a driver sets an error when it > completes one part of a bio, it will set an error on completions of the > remaining parts. Ah, ok, that's what I wanted to know. I assumed it but was not sure. So I'll follow that assumption. Thanks for your response. -- Christophe Saout <christophe@xxxxxxxx> Please avoid sending me Word or PowerPoint attachments. See http://www.fsf.org/philosophy/no-word-attachments.html