aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--fs/bio.c30
-rw-r--r--include/linux/bio.h29
2 files changed, 31 insertions, 28 deletions
diff --git a/fs/bio.c b/fs/bio.c
index 78562574cb52..7a6598abc967 100644
--- a/fs/bio.c
+++ b/fs/bio.c
@@ -28,25 +28,10 @@
28#include <linux/blktrace_api.h> 28#include <linux/blktrace_api.h>
29#include <scsi/sg.h> /* for struct sg_iovec */ 29#include <scsi/sg.h> /* for struct sg_iovec */
30 30
31#define BIO_POOL_SIZE 2
32
33static struct kmem_cache *bio_slab __read_mostly; 31static struct kmem_cache *bio_slab __read_mostly;
34 32
35#define BIOVEC_NR_POOLS 6
36
37/*
38 * a small number of entries is fine, not going to be performance critical.
39 * basically we just need to survive
40 */
41#define BIO_SPLIT_ENTRIES 2
42mempool_t *bio_split_pool __read_mostly; 33mempool_t *bio_split_pool __read_mostly;
43 34
44struct biovec_slab {
45 int nr_vecs;
46 char *name;
47 struct kmem_cache *slab;
48};
49
50/* 35/*
51 * if you change this list, also change bvec_alloc or things will 36 * if you change this list, also change bvec_alloc or things will
52 * break badly! cannot be bigger than what you can fit into an 37 * break badly! cannot be bigger than what you can fit into an
@@ -60,23 +45,12 @@ static struct biovec_slab bvec_slabs[BIOVEC_NR_POOLS] __read_mostly = {
60#undef BV 45#undef BV
61 46
62/* 47/*
63 * bio_set is used to allow other portions of the IO system to
64 * allocate their own private memory pools for bio and iovec structures.
65 * These memory pools in turn all allocate from the bio_slab
66 * and the bvec_slabs[].
67 */
68struct bio_set {
69 mempool_t *bio_pool;
70 mempool_t *bvec_pools[BIOVEC_NR_POOLS];
71};
72
73/*
74 * fs_bio_set is the bio_set containing bio and iovec memory pools used by 48 * fs_bio_set is the bio_set containing bio and iovec memory pools used by
75 * IO code that does not need private memory pools. 49 * IO code that does not need private memory pools.
76 */ 50 */
77static struct bio_set *fs_bio_set; 51struct bio_set *fs_bio_set;
78 52
79static inline struct bio_vec *bvec_alloc_bs(gfp_t gfp_mask, int nr, unsigned long *idx, struct bio_set *bs) 53struct bio_vec *bvec_alloc_bs(gfp_t gfp_mask, int nr, unsigned long *idx, struct bio_set *bs)
80{ 54{
81 struct bio_vec *bvl; 55 struct bio_vec *bvl;
82 56
diff --git a/include/linux/bio.h b/include/linux/bio.h
index 61c15eaf3fb3..49dfb3cb7460 100644
--- a/include/linux/bio.h
+++ b/include/linux/bio.h
@@ -333,6 +333,35 @@ extern struct bio *bio_copy_user_iov(struct request_queue *, struct sg_iovec *,
333 int, int); 333 int, int);
334extern int bio_uncopy_user(struct bio *); 334extern int bio_uncopy_user(struct bio *);
335void zero_fill_bio(struct bio *bio); 335void zero_fill_bio(struct bio *bio);
336extern struct bio_vec *bvec_alloc_bs(gfp_t, int, unsigned long *, struct bio_set *);
337
338/*
339 * bio_set is used to allow other portions of the IO system to
340 * allocate their own private memory pools for bio and iovec structures.
341 * These memory pools in turn all allocate from the bio_slab
342 * and the bvec_slabs[].
343 */
344#define BIO_POOL_SIZE 2
345#define BIOVEC_NR_POOLS 6
346
347struct bio_set {
348 mempool_t *bio_pool;
349 mempool_t *bvec_pools[BIOVEC_NR_POOLS];
350};
351
352struct biovec_slab {
353 int nr_vecs;
354 char *name;
355 struct kmem_cache *slab;
356};
357
358extern struct bio_set *fs_bio_set;
359
360/*
361 * a small number of entries is fine, not going to be performance critical.
362 * basically we just need to survive
363 */
364#define BIO_SPLIT_ENTRIES 2
336 365
337#ifdef CONFIG_HIGHMEM 366#ifdef CONFIG_HIGHMEM
338/* 367/*