diff options
-rw-r--r-- | fs/bio.c | 30 | ||||
-rw-r--r-- | include/linux/bio.h | 29 |
2 files changed, 31 insertions, 28 deletions
@@ -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 | |||
33 | static struct kmem_cache *bio_slab __read_mostly; | 31 | static 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 | ||
42 | mempool_t *bio_split_pool __read_mostly; | 33 | mempool_t *bio_split_pool __read_mostly; |
43 | 34 | ||
44 | struct 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 | */ | ||
68 | struct 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 | */ |
77 | static struct bio_set *fs_bio_set; | 51 | struct bio_set *fs_bio_set; |
78 | 52 | ||
79 | static inline struct bio_vec *bvec_alloc_bs(gfp_t gfp_mask, int nr, unsigned long *idx, struct bio_set *bs) | 53 | struct 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); |
334 | extern int bio_uncopy_user(struct bio *); | 334 | extern int bio_uncopy_user(struct bio *); |
335 | void zero_fill_bio(struct bio *bio); | 335 | void zero_fill_bio(struct bio *bio); |
336 | extern 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 | |||
347 | struct bio_set { | ||
348 | mempool_t *bio_pool; | ||
349 | mempool_t *bvec_pools[BIOVEC_NR_POOLS]; | ||
350 | }; | ||
351 | |||
352 | struct biovec_slab { | ||
353 | int nr_vecs; | ||
354 | char *name; | ||
355 | struct kmem_cache *slab; | ||
356 | }; | ||
357 | |||
358 | extern 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 | /* |