lkml.org 
[lkml]   [2012]   [Aug]   [8]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH v5 11/12] block: Add bio_clone_bioset()
    On Wed, Aug 08, 2012 at 04:21:20PM -0700, Tejun Heo wrote:
    > On Mon, Aug 06, 2012 at 03:08:40PM -0700, Kent Overstreet wrote:
    > > This consolidates some code, and will help in a later patch changing how
    > > bio cloning works.
    >
    > I think it would be better to introduce bio_clone*() functions in a
    > separate patch and convert the users in a different one.
    >
    > > /**
    > > - * bio_clone - clone a bio
    > > + * bio_clone_bioset - clone a bio
    > > * @bio: bio to clone
    > > * @gfp_mask: allocation priority
    > > + * @bs: bio_set to allocate from
    > > *
    > > * Like __bio_clone, only also allocates the returned bio
    > > */
    > > -struct bio *bio_clone(struct bio *bio, gfp_t gfp_mask)
    > > +struct bio *bio_clone_bioset(struct bio *bio, gfp_t gfp_mask,
    > > + struct bio_set *bs)
    > > {
    > > - struct bio *b = bio_alloc(gfp_mask, bio->bi_max_vecs);
    > > + struct bio *b = bio_alloc_bioset(gfp_mask, bio->bi_max_vecs, bs);
    > >
    > > if (!b)
    > > return NULL;
    > > @@ -485,7 +487,7 @@ struct bio *bio_clone(struct bio *bio, gfp_t gfp_mask)
    > > if (bio_integrity(bio)) {
    > > int ret;
    > >
    > > - ret = bio_integrity_clone(b, bio, gfp_mask, fs_bio_set);
    > > + ret = bio_integrity_clone(b, bio, gfp_mask, bs);
    > >
    > > if (ret < 0) {
    > > bio_put(b);
    > > @@ -495,6 +497,12 @@ struct bio *bio_clone(struct bio *bio, gfp_t gfp_mask)
    > >
    > > return b;
    > > }
    > > +EXPORT_SYMBOL(bio_clone_bioset);
    > > +
    > > +struct bio *bio_clone(struct bio *bio, gfp_t gfp_mask)
    > > +{
    > > + return bio_clone_bioset(bio, gfp_mask, fs_bio_set);
    > > +}
    >
    > So, bio_clone() loses its function comment. Also, does it even make
    > sense to call bio_clone() from fs_bio_set?

    I'll re add the function comment if you want, just for a single line
    wrapper I don't know if it's worth the cost - comments get out of date,
    and they're more stuff to wade through.

    > Let's say it's so, then
    > what's the difference from using _kmalloc variant?

    bio_kmalloc() fails if nr_iovecs > 1024, bio_alloc_bioset() fails if
    nr_iovecs > 256

    and bio_alloc_bioset() is mempool backed, bio_kmalloc() is not.

    AFAICT that's it.


    \
     
     \ /
      Last update: 2012-08-09 05:41    [W:7.639 / U:0.232 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site