diff options
Diffstat (limited to 'fs/nfs/write.c')
-rw-r--r-- | fs/nfs/write.c | 16 |
1 files changed, 2 insertions, 14 deletions
diff --git a/fs/nfs/write.c b/fs/nfs/write.c index 84495ef90728..30513029c00c 100644 --- a/fs/nfs/write.c +++ b/fs/nfs/write.c | |||
@@ -58,19 +58,13 @@ struct nfs_write_data *nfs_commit_alloc(void) | |||
58 | return p; | 58 | return p; |
59 | } | 59 | } |
60 | 60 | ||
61 | static void nfs_commit_rcu_free(struct rcu_head *head) | 61 | void nfs_commit_free(struct nfs_write_data *p) |
62 | { | 62 | { |
63 | struct nfs_write_data *p = container_of(head, struct nfs_write_data, task.u.tk_rcu); | ||
64 | if (p && (p->pagevec != &p->page_array[0])) | 63 | if (p && (p->pagevec != &p->page_array[0])) |
65 | kfree(p->pagevec); | 64 | kfree(p->pagevec); |
66 | mempool_free(p, nfs_commit_mempool); | 65 | mempool_free(p, nfs_commit_mempool); |
67 | } | 66 | } |
68 | 67 | ||
69 | void nfs_commit_free(struct nfs_write_data *wdata) | ||
70 | { | ||
71 | call_rcu_bh(&wdata->task.u.tk_rcu, nfs_commit_rcu_free); | ||
72 | } | ||
73 | |||
74 | struct nfs_write_data *nfs_writedata_alloc(unsigned int pagecount) | 68 | struct nfs_write_data *nfs_writedata_alloc(unsigned int pagecount) |
75 | { | 69 | { |
76 | struct nfs_write_data *p = mempool_alloc(nfs_wdata_mempool, GFP_NOFS); | 70 | struct nfs_write_data *p = mempool_alloc(nfs_wdata_mempool, GFP_NOFS); |
@@ -92,19 +86,13 @@ struct nfs_write_data *nfs_writedata_alloc(unsigned int pagecount) | |||
92 | return p; | 86 | return p; |
93 | } | 87 | } |
94 | 88 | ||
95 | static void nfs_writedata_rcu_free(struct rcu_head *head) | 89 | static void nfs_writedata_free(struct nfs_write_data *p) |
96 | { | 90 | { |
97 | struct nfs_write_data *p = container_of(head, struct nfs_write_data, task.u.tk_rcu); | ||
98 | if (p && (p->pagevec != &p->page_array[0])) | 91 | if (p && (p->pagevec != &p->page_array[0])) |
99 | kfree(p->pagevec); | 92 | kfree(p->pagevec); |
100 | mempool_free(p, nfs_wdata_mempool); | 93 | mempool_free(p, nfs_wdata_mempool); |
101 | } | 94 | } |
102 | 95 | ||
103 | static void nfs_writedata_free(struct nfs_write_data *wdata) | ||
104 | { | ||
105 | call_rcu_bh(&wdata->task.u.tk_rcu, nfs_writedata_rcu_free); | ||
106 | } | ||
107 | |||
108 | void nfs_writedata_release(void *data) | 96 | void nfs_writedata_release(void *data) |
109 | { | 97 | { |
110 | struct nfs_write_data *wdata = data; | 98 | struct nfs_write_data *wdata = data; |