[PATCH] fs/bio.c: tweaks
- Calculate a variable in bvec_alloc_bs() only once needed, not earlier (bio.o down from 18408 to 18376 Bytes, 32 Bytes saved, probably due to data locality improvements). - Init variable idx to silence a gcc warning which already existed in the unmodified original base file (bvec_alloc_bs() handles idx correctly, so there's no need for the warning): fs/bio.c: In function `bio_alloc_bioset': fs/bio.c:169: warning: `idx' may be used uninitialized in this function Signed-off-by: Andreas Mohr <andi@lisas.de> Acked-by: Jens Axboe <axboe@kernel.dk> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
Родитель
49a6cbe1cd
Коммит
bf02c082bf
9
fs/bio.c
9
fs/bio.c
|
@ -79,7 +79,6 @@ static struct bio_set *fs_bio_set;
|
|||
static inline struct bio_vec *bvec_alloc_bs(gfp_t gfp_mask, int nr, unsigned long *idx, struct bio_set *bs)
|
||||
{
|
||||
struct bio_vec *bvl;
|
||||
struct biovec_slab *bp;
|
||||
|
||||
/*
|
||||
* see comment near bvec_array define!
|
||||
|
@ -98,10 +97,12 @@ static inline struct bio_vec *bvec_alloc_bs(gfp_t gfp_mask, int nr, unsigned lon
|
|||
* idx now points to the pool we want to allocate from
|
||||
*/
|
||||
|
||||
bp = bvec_slabs + *idx;
|
||||
bvl = mempool_alloc(bs->bvec_pools[*idx], gfp_mask);
|
||||
if (bvl)
|
||||
if (bvl) {
|
||||
struct biovec_slab *bp = bvec_slabs + *idx;
|
||||
|
||||
memset(bvl, 0, bp->nr_vecs * sizeof(struct bio_vec));
|
||||
}
|
||||
|
||||
return bvl;
|
||||
}
|
||||
|
@ -166,7 +167,7 @@ struct bio *bio_alloc_bioset(gfp_t gfp_mask, int nr_iovecs, struct bio_set *bs)
|
|||
|
||||
bio_init(bio);
|
||||
if (likely(nr_iovecs)) {
|
||||
unsigned long idx;
|
||||
unsigned long idx = 0; /* shut up gcc */
|
||||
|
||||
bvl = bvec_alloc_bs(gfp_mask, nr_iovecs, &idx, bs);
|
||||
if (unlikely(!bvl)) {
|
||||
|
|
Загрузка…
Ссылка в новой задаче