[lkml]   [2009]   [Mar]   [9]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
    SubjectRe: [PATCH] block: fix memory leak in bio_clone()
    On Mon, Mar 09 2009, Martin K. Petersen wrote:
    > Jens> The second bug is that it should be using its own bioset, as it is
    > Jens> illegal to do multiple __GFP_WAIT allocations on a single mempool
    > Jens> and always expect progress.
    > So how do you propose I go about this?
    > The original intent was to contain all the integrity blah inside the
    > bio_set to make it completely transparent to the caller. That's why the
    > bip mempool is hanging off of the bio_set. But obviously two bvecs are
    > needed per bio, one to describe data and to describe the integrity
    > buffer.
    > Having two bvec mempools per bio_set seems icky. I guess what you are
    > suggesting is that we could have a dedicated bio_integrity_set akin to
    > the bio_split_pool. That removes the caller's option of passing a
    > dedicated bio_set to the clone command, though. Will that have forward
    > progress implications for stacking drivers?

    I was just wondering why you wanted to pass the bio_set in to
    bio_integrity_clone(), why would the caller care?

    Even two mempools isn't that bad. You can reuse the slab of course, and
    the mempool should only have a single entry preallocated. But I agree,
    it should not be in the bio_set. A dedicated bio_set for the integrity
    stuff would be the way to go, and that should provide you all the
    forward progress guarantees you need.

    Jens Axboe

     \ /
      Last update: 2009-03-09 20:23    [W:0.022 / U:2.076 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site