lkml.org 
[lkml]   [2004]   [Sep]   [15]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: 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/

\
 
 \ /
  Last update: 2005-03-22 14:06    [W:0.197 / U:0.192 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site