projects
/
powerpc.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
NFS: remove user_addr, user_count, and pos from nfs_direct_req
[powerpc.git]
/
fs
/
bio.c
diff --git
a/fs/bio.c
b/fs/bio.c
index
73e664c
..
6a0b9ad
100644
(file)
--- a/
fs/bio.c
+++ b/
fs/bio.c
@@
-30,7
+30,7
@@
#define BIO_POOL_SIZE 256
#define BIO_POOL_SIZE 256
-static kmem_cache_t *bio_slab;
+static kmem_cache_t *bio_slab
__read_mostly
;
#define BIOVEC_NR_POOLS 6
#define BIOVEC_NR_POOLS 6
@@
-39,7
+39,7
@@
static kmem_cache_t *bio_slab;
* basically we just need to survive
*/
#define BIO_SPLIT_ENTRIES 8
* basically we just need to survive
*/
#define BIO_SPLIT_ENTRIES 8
-mempool_t *bio_split_pool;
+mempool_t *bio_split_pool
__read_mostly
;
struct biovec_slab {
int nr_vecs;
struct biovec_slab {
int nr_vecs;
@@
-654,9
+654,10
@@
static struct bio *__bio_map_user_iov(request_queue_t *q,
write_to_vm, 0, &pages[cur_page], NULL);
up_read(¤t->mm->mmap_sem);
write_to_vm, 0, &pages[cur_page], NULL);
up_read(¤t->mm->mmap_sem);
- if (ret < local_nr_pages)
+ if (ret < local_nr_pages) {
+ ret = -EFAULT;
goto out_unmap;
goto out_unmap;
-
+ }
offset = uaddr & ~PAGE_MASK;
for (j = cur_page; j < page_limit; j++) {
offset = uaddr & ~PAGE_MASK;
for (j = cur_page; j < page_limit; j++) {
@@
-1116,6
+1117,9
@@
struct bio_pair *bio_split(struct bio *bi, mempool_t *pool, int first_sectors)
bp->bio1.bi_io_vec = &bp->bv1;
bp->bio2.bi_io_vec = &bp->bv2;
bp->bio1.bi_io_vec = &bp->bv1;
bp->bio2.bi_io_vec = &bp->bv2;
+ bp->bio1.bi_max_vecs = 1;
+ bp->bio2.bi_max_vecs = 1;
+
bp->bio1.bi_end_io = bio_pair_end_1;
bp->bio2.bi_end_io = bio_pair_end_2;
bp->bio1.bi_end_io = bio_pair_end_1;
bp->bio2.bi_end_io = bio_pair_end_2;
@@
-1125,16
+1129,6
@@
struct bio_pair *bio_split(struct bio *bi, mempool_t *pool, int first_sectors)
return bp;
}
return bp;
}
-static void *bio_pair_alloc(gfp_t gfp_flags, void *data)
-{
- return kmalloc(sizeof(struct bio_pair), gfp_flags);
-}
-
-static void bio_pair_free(void *bp, void *data)
-{
- kfree(bp);
-}
-
/*
* create memory pools for biovec's in a bio_set.
/*
* create memory pools for biovec's in a bio_set.
@@
-1151,8
+1145,7
@@
static int biovec_create_pools(struct bio_set *bs, int pool_entries, int scale)
if (i >= scale)
pool_entries >>= 1;
if (i >= scale)
pool_entries >>= 1;
- *bvp = mempool_create(pool_entries, mempool_alloc_slab,
- mempool_free_slab, bp->slab);
+ *bvp = mempool_create_slab_pool(pool_entries, bp->slab);
if (!*bvp)
return -ENOMEM;
}
if (!*bvp)
return -ENOMEM;
}
@@
-1189,9
+1182,7
@@
struct bio_set *bioset_create(int bio_pool_size, int bvec_pool_size, int scale)
if (!bs)
return NULL;
if (!bs)
return NULL;
- bs->bio_pool = mempool_create(bio_pool_size, mempool_alloc_slab,
- mempool_free_slab, bio_slab);
-
+ bs->bio_pool = mempool_create_slab_pool(bio_pool_size, bio_slab);
if (!bs->bio_pool)
goto bad;
if (!bs->bio_pool)
goto bad;
@@
-1254,8
+1245,8
@@
static int __init init_bio(void)
if (!fs_bio_set)
panic("bio: can't allocate bios\n");
if (!fs_bio_set)
panic("bio: can't allocate bios\n");
- bio_split_pool = mempool_create(BIO_SPLIT_ENTRIES,
-
bio_pair_alloc, bio_pair_free, NULL
);
+ bio_split_pool = mempool_create
_kmalloc_pool
(BIO_SPLIT_ENTRIES,
+
sizeof(struct bio_pair)
);
if (!bio_split_pool)
panic("bio: can't create split pool\n");
if (!bio_split_pool)
panic("bio: can't create split pool\n");