aboutsummaryrefslogtreecommitdiffstats
path: root/fs/nfs/pagelist.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/nfs/pagelist.c')
-rw-r--r--fs/nfs/pagelist.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/fs/nfs/pagelist.c b/fs/nfs/pagelist.c
index ed0db61f8543..2b5e769beb16 100644
--- a/fs/nfs/pagelist.c
+++ b/fs/nfs/pagelist.c
@@ -258,6 +258,7 @@ bool nfs_page_group_sync_on_bit(struct nfs_page *req, unsigned int bit)
258static inline void 258static inline void
259nfs_page_group_init(struct nfs_page *req, struct nfs_page *prev) 259nfs_page_group_init(struct nfs_page *req, struct nfs_page *prev)
260{ 260{
261 struct inode *inode;
261 WARN_ON_ONCE(prev == req); 262 WARN_ON_ONCE(prev == req);
262 263
263 if (!prev) { 264 if (!prev) {
@@ -276,12 +277,16 @@ nfs_page_group_init(struct nfs_page *req, struct nfs_page *prev)
276 * nfs_page_group_destroy is called */ 277 * nfs_page_group_destroy is called */
277 kref_get(&req->wb_head->wb_kref); 278 kref_get(&req->wb_head->wb_kref);
278 279
279 /* grab extra ref if head request has extra ref from 280 /* grab extra ref and bump the request count if head request
280 * the write/commit path to handle handoff between write 281 * has extra ref from the write/commit path to handle handoff
281 * and commit lists */ 282 * between write and commit lists. */
282 if (test_bit(PG_INODE_REF, &prev->wb_head->wb_flags)) { 283 if (test_bit(PG_INODE_REF, &prev->wb_head->wb_flags)) {
284 inode = page_file_mapping(req->wb_page)->host;
283 set_bit(PG_INODE_REF, &req->wb_flags); 285 set_bit(PG_INODE_REF, &req->wb_flags);
284 kref_get(&req->wb_kref); 286 kref_get(&req->wb_kref);
287 spin_lock(&inode->i_lock);
288 NFS_I(inode)->nrequests++;
289 spin_unlock(&inode->i_lock);
285 } 290 }
286 } 291 }
287} 292}