Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 267229
b: refs/heads/master
c: b6ee8cd
h: refs/heads/master
i:
  267227: 3fb144e
v: v3
  • Loading branch information
Trond Myklebust authored and Trond Myklebust committed Oct 19, 2011
1 parent 153e581 commit d43c636
Show file tree
Hide file tree
Showing 2 changed files with 5 additions and 14 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: fba730050d1246d0e6ef44e026e0b584732fec2b
refs/heads/master: b6ee8cd2642f6d822dd1a4ba62298b65ff99b72e
17 changes: 4 additions & 13 deletions trunk/fs/nfs/read.c
Original file line number Diff line number Diff line change
Expand Up @@ -35,24 +35,21 @@ static const struct rpc_call_ops nfs_read_partial_ops;
static const struct rpc_call_ops nfs_read_full_ops;

static struct kmem_cache *nfs_rdata_cachep;
static mempool_t *nfs_rdata_mempool;

#define MIN_POOL_READ (32)

struct nfs_read_data *nfs_readdata_alloc(unsigned int pagecount)
{
struct nfs_read_data *p = mempool_alloc(nfs_rdata_mempool, GFP_KERNEL);
struct nfs_read_data *p;

p = kmem_cache_zalloc(nfs_rdata_cachep, GFP_KERNEL);
if (p) {
memset(p, 0, sizeof(*p));
INIT_LIST_HEAD(&p->pages);
p->npages = pagecount;
if (pagecount <= ARRAY_SIZE(p->page_array))
p->pagevec = p->page_array;
else {
p->pagevec = kcalloc(pagecount, sizeof(struct page *), GFP_KERNEL);
if (!p->pagevec) {
mempool_free(p, nfs_rdata_mempool);
kmem_cache_free(nfs_rdata_cachep, p);
p = NULL;
}
}
Expand All @@ -64,7 +61,7 @@ void nfs_readdata_free(struct nfs_read_data *p)
{
if (p && (p->pagevec != &p->page_array[0]))
kfree(p->pagevec);
mempool_free(p, nfs_rdata_mempool);
kmem_cache_free(nfs_rdata_cachep, p);
}

void nfs_readdata_release(struct nfs_read_data *rdata)
Expand Down Expand Up @@ -716,16 +713,10 @@ int __init nfs_init_readpagecache(void)
if (nfs_rdata_cachep == NULL)
return -ENOMEM;

nfs_rdata_mempool = mempool_create_slab_pool(MIN_POOL_READ,
nfs_rdata_cachep);
if (nfs_rdata_mempool == NULL)
return -ENOMEM;

return 0;
}

void nfs_destroy_readpagecache(void)
{
mempool_destroy(nfs_rdata_mempool);
kmem_cache_destroy(nfs_rdata_cachep);
}

0 comments on commit d43c636

Please sign in to comment.