diff options
author | Fred Isaman <iisaman@netapp.com> | 2012-04-20 14:47:45 -0400 |
---|---|---|
committer | Trond Myklebust <Trond.Myklebust@netapp.com> | 2012-04-27 14:10:37 -0400 |
commit | 30dd374f6fc1b202db3a1b57b61afff1326bad92 (patch) | |
tree | 7d3b631be897dd79a916ee8d410fd2bb92da4890 /fs/nfs/pagelist.c | |
parent | cd841605f7a721878d8a2d1362484723d8abf569 (diff) |
NFS: create struct nfs_page_array
Both nfs_read_data and nfs_write_data devote several fields which
can be combined into a single shared struct.
Signed-off-by: Fred Isaman <iisaman@netapp.com>
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
Diffstat (limited to 'fs/nfs/pagelist.c')
-rw-r--r-- | fs/nfs/pagelist.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/fs/nfs/pagelist.c b/fs/nfs/pagelist.c index d21fceaa9f62..d349bd4c48db 100644 --- a/fs/nfs/pagelist.c +++ b/fs/nfs/pagelist.c | |||
@@ -26,6 +26,19 @@ | |||
26 | 26 | ||
27 | static struct kmem_cache *nfs_page_cachep; | 27 | static struct kmem_cache *nfs_page_cachep; |
28 | 28 | ||
29 | bool nfs_pgarray_set(struct nfs_page_array *p, unsigned int pagecount) | ||
30 | { | ||
31 | p->npages = pagecount; | ||
32 | if (pagecount <= ARRAY_SIZE(p->page_array)) | ||
33 | p->pagevec = p->page_array; | ||
34 | else { | ||
35 | p->pagevec = kcalloc(pagecount, sizeof(struct page *), GFP_KERNEL); | ||
36 | if (!p->pagevec) | ||
37 | p->npages = 0; | ||
38 | } | ||
39 | return p->pagevec != NULL; | ||
40 | } | ||
41 | |||
29 | static inline struct nfs_page * | 42 | static inline struct nfs_page * |
30 | nfs_page_alloc(void) | 43 | nfs_page_alloc(void) |
31 | { | 44 | { |