Skip to content

Commit 28e89fd

Browse files
committed
block: add bioset_init_from_src() helper
Add a helper that allows a caller to initialize a new bio_set, using the settings from an existing bio_set. Reported-by: Venkat R.B <[email protected]> Tested-by: Venkat R.B <[email protected]> Tested-by: Li Wang <[email protected]> Reviewed-by: Mike Snitzer <[email protected]> Signed-off-by: Jens Axboe <[email protected]>
1 parent c04fa44 commit 28e89fd

File tree

2 files changed

+19
-0
lines changed

2 files changed

+19
-0
lines changed

block/bio.c

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1967,6 +1967,24 @@ int bioset_init(struct bio_set *bs,
19671967
}
19681968
EXPORT_SYMBOL(bioset_init);
19691969

1970+
/*
1971+
* Initialize and setup a new bio_set, based on the settings from
1972+
* another bio_set.
1973+
*/
1974+
int bioset_init_from_src(struct bio_set *bs, struct bio_set *src)
1975+
{
1976+
int flags;
1977+
1978+
flags = 0;
1979+
if (src->bvec_pool.min_nr)
1980+
flags |= BIOSET_NEED_BVECS;
1981+
if (src->rescue_workqueue)
1982+
flags |= BIOSET_NEED_RESCUER;
1983+
1984+
return bioset_init(bs, src->bio_pool.min_nr, src->front_pad, flags);
1985+
}
1986+
EXPORT_SYMBOL(bioset_init_from_src);
1987+
19701988
#ifdef CONFIG_BLK_CGROUP
19711989

19721990
/**

include/linux/bio.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -417,6 +417,7 @@ enum {
417417
extern int bioset_init(struct bio_set *, unsigned int, unsigned int, int flags);
418418
extern void bioset_exit(struct bio_set *);
419419
extern int biovec_init_pool(mempool_t *pool, int pool_entries);
420+
extern int bioset_init_from_src(struct bio_set *bs, struct bio_set *src);
420421

421422
extern struct bio *bio_alloc_bioset(gfp_t, unsigned int, struct bio_set *);
422423
extern void bio_put(struct bio *);

0 commit comments

Comments
 (0)