[lkml]   [2004]   [Jan]   [2]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
    SubjectRe: [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
    More majordomo info at
    Please read the FAQ at

     \ /
      Last update: 2005-03-22 13:59    [W:0.023 / U:5.596 seconds]
    ©2003-2017 Jasper Spaans. hosted at Digital OceanAdvertise on this site