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

Re: [RFC][PATCH] Move bv_offset/bv_len update after bio_endio in __end_that_request_first


On Thu, Jan 01 2004, Christophe Saout wrote:
> Hi!
> 
> Can we move the update of bio_index(bio)->bv_offset and bv_len after the
> bio_endio call in __end_that_request_first please (if a bvec is partially
> completed)?
> 
> The bi_idx is currently also updated after the bio_endio call.
> 
> Currently the bi_end_io function cannot exactly determine whether a bvec
> was completed or not.
> 
> Think of the following situation:
> 
> bv_offset is 0 and bv_len is 4096, now the driver completes 2048 bytes of
> that bvec.
> 
> At the moment bv_offset and bv_len are set to 2048 first. The bi_end_io
> function can't distinguish between this situation and the situation where
> bv_offset and bv_len were 2048 before and that bvec was completed (because
> bi_idx is incremented afterwards).
> 
> This shouldn't break any user since most users are waiting for the whole
> bio to complete with if (bio->bi_size > 0) return 1;.
> 
> I need this because I want to release buffers as soon as possible. The
> incoming bio can get split by my driver due to problems allocating buffers.
> If the partial bio returns and can't release its buffers immediately the
> whole thing might deadlock.
> 
> That's why I need to know exactly how many and which  bvecs were completed
> in my bi_end_io function.
> 
> Or do you think it is safer to count backwards using bi_vcnt and bi_size?

I'm inclined to thinking that, indeed. Those two fields have a more well
established usage, so I think you'll be better off doing that in the
long run.

-- 
Jens Axboe

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo _at_ vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


この情報があなたの探していたものかどうか選択してください。
yes/まさにこれだ!   no/違うなぁ   part/一部見つかった   try/これで試してみる

あなたが探していた情報はどのようなことか、ご自由に記入下さい。特に「まさにこれだ!」と言う場合は記入をお願いします。
例:「複数のマシンからCATV経由でipmasqueradeを利用してWebを参照したい場合の設定について」
Follow-Ups: References: