Messages in this thread | | | Date | Wed, 15 Sep 2004 04:36:44 -0700 | From | Andrew Morton <> | Subject | Re: Untangle code in bio.c |
| |
Pavel Machek <pavel@ucw.cz> wrote: > > Hi! > > bio.c uses quite ugly code with goto's, completely > unneccessarily. Please apply,
I wouldn't describe this as an improvement, really. Multiple return statements give me hysterics.
> > --- clean-mm/fs/bio.c 2004-09-15 12:58:10.000000000 +0200 > +++ linux-mm/fs/bio.c 2004-09-15 13:00:51.000000000 +0200 > @@ -143,7 +143,7 @@ > > bio = mempool_alloc(bio_pool, gfp_mask); > if (unlikely(!bio)) > - goto out; > + return NULL; > > bio_init(bio); > > @@ -157,13 +157,11 @@ > noiovec: > bio->bi_io_vec = bvl; > bio->bi_destructor = bio_destructor; > -out: > return bio; > } > > mempool_free(bio, bio_pool); > - bio = NULL; > - goto out; > + return NULL; > }
How's this look?
struct bio *bio_alloc(int gfp_mask, int nr_iovecs) { struct bio *bio = mempool_alloc(bio_pool, gfp_mask);
if (likely(bio)) { struct bio_vec *bvl = NULL;
bio_init(bio); if (likely(nr_iovecs)) { unsigned long idx;
bvl = bvec_alloc(gfp_mask, nr_iovecs, &idx); if (unlikely(!bvl)) { mempool_free(bio, bio_pool); bio = NULL; goto out; } bio->bi_flags |= idx << BIO_POOL_OFFSET; } bio->bi_io_vec = bvl; bio->bi_destructor = bio_destructor; } out: return bio; }
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |