diff options
| -rw-r--r-- | fs/nfs/read.c | 5 | ||||
| -rw-r--r-- | fs/nfs/write.c | 8 |
2 files changed, 11 insertions, 2 deletions
diff --git a/fs/nfs/read.c b/fs/nfs/read.c index 3d7d9631e125..5a70be589bbe 100644 --- a/fs/nfs/read.c +++ b/fs/nfs/read.c | |||
| @@ -533,7 +533,10 @@ readpage_async_filler(void *data, struct page *page) | |||
| 533 | 533 | ||
| 534 | if (len < PAGE_CACHE_SIZE) | 534 | if (len < PAGE_CACHE_SIZE) |
| 535 | zero_user_segment(page, len, PAGE_CACHE_SIZE); | 535 | zero_user_segment(page, len, PAGE_CACHE_SIZE); |
| 536 | nfs_pageio_add_request(desc->pgio, new); | 536 | if (!nfs_pageio_add_request(desc->pgio, new)) { |
| 537 | error = desc->pgio->pg_error; | ||
| 538 | goto out_unlock; | ||
| 539 | } | ||
| 537 | return 0; | 540 | return 0; |
| 538 | out_error: | 541 | out_error: |
| 539 | error = PTR_ERR(new); | 542 | error = PTR_ERR(new); |
diff --git a/fs/nfs/write.c b/fs/nfs/write.c index 80c61fdb2720..bed63416a55b 100644 --- a/fs/nfs/write.c +++ b/fs/nfs/write.c | |||
| @@ -39,6 +39,7 @@ static struct nfs_page * nfs_update_request(struct nfs_open_context*, | |||
| 39 | unsigned int, unsigned int); | 39 | unsigned int, unsigned int); |
| 40 | static void nfs_pageio_init_write(struct nfs_pageio_descriptor *desc, | 40 | static void nfs_pageio_init_write(struct nfs_pageio_descriptor *desc, |
| 41 | struct inode *inode, int ioflags); | 41 | struct inode *inode, int ioflags); |
| 42 | static void nfs_redirty_request(struct nfs_page *req); | ||
| 42 | static const struct rpc_call_ops nfs_write_partial_ops; | 43 | static const struct rpc_call_ops nfs_write_partial_ops; |
| 43 | static const struct rpc_call_ops nfs_write_full_ops; | 44 | static const struct rpc_call_ops nfs_write_full_ops; |
| 44 | static const struct rpc_call_ops nfs_commit_ops; | 45 | static const struct rpc_call_ops nfs_commit_ops; |
| @@ -288,7 +289,12 @@ static int nfs_page_async_flush(struct nfs_pageio_descriptor *pgio, | |||
| 288 | BUG(); | 289 | BUG(); |
| 289 | } | 290 | } |
| 290 | spin_unlock(&inode->i_lock); | 291 | spin_unlock(&inode->i_lock); |
| 291 | nfs_pageio_add_request(pgio, req); | 292 | if (!nfs_pageio_add_request(pgio, req)) { |
| 293 | nfs_redirty_request(req); | ||
| 294 | nfs_end_page_writeback(page); | ||
| 295 | nfs_clear_page_tag_locked(req); | ||
| 296 | return pgio->pg_error; | ||
| 297 | } | ||
| 292 | return 0; | 298 | return 0; |
| 293 | } | 299 | } |
| 294 | 300 | ||
