diff options
| -rw-r--r-- | fs/nfs/read.c | 7 | ||||
| -rw-r--r-- | include/linux/nfs_page.h | 1 |
2 files changed, 3 insertions, 5 deletions
diff --git a/fs/nfs/read.c b/fs/nfs/read.c index 09829d96d207..fd58e909842b 100644 --- a/fs/nfs/read.c +++ b/fs/nfs/read.c | |||
| @@ -276,7 +276,6 @@ nfs_async_read_error(struct list_head *head) | |||
| 276 | while (!list_empty(head)) { | 276 | while (!list_empty(head)) { |
| 277 | req = nfs_list_entry(head->next); | 277 | req = nfs_list_entry(head->next); |
| 278 | nfs_list_remove_request(req); | 278 | nfs_list_remove_request(req); |
| 279 | SetPageError(req->wb_page); | ||
| 280 | nfs_readpage_release(req); | 279 | nfs_readpage_release(req); |
| 281 | } | 280 | } |
| 282 | } | 281 | } |
| @@ -330,7 +329,6 @@ out_bad: | |||
| 330 | list_del(&data->list); | 329 | list_del(&data->list); |
| 331 | nfs_readdata_free(data); | 330 | nfs_readdata_free(data); |
| 332 | } | 331 | } |
| 333 | SetPageError(page); | ||
| 334 | nfs_readpage_release(req); | 332 | nfs_readpage_release(req); |
| 335 | return -ENOMEM; | 333 | return -ENOMEM; |
| 336 | } | 334 | } |
| @@ -460,10 +458,10 @@ static void nfs_readpage_release_partial(void *calldata) | |||
| 460 | int status = data->task.tk_status; | 458 | int status = data->task.tk_status; |
| 461 | 459 | ||
| 462 | if (status < 0) | 460 | if (status < 0) |
| 463 | SetPageError(page); | 461 | set_bit(PG_PARTIAL_READ_FAILED, &req->wb_flags); |
| 464 | 462 | ||
| 465 | if (atomic_dec_and_test(&req->wb_complete)) { | 463 | if (atomic_dec_and_test(&req->wb_complete)) { |
| 466 | if (!PageError(page)) | 464 | if (!test_bit(PG_PARTIAL_READ_FAILED, &req->wb_flags)) |
| 467 | SetPageUptodate(page); | 465 | SetPageUptodate(page); |
| 468 | nfs_readpage_release(req); | 466 | nfs_readpage_release(req); |
| 469 | } | 467 | } |
| @@ -656,7 +654,6 @@ readpage_async_filler(void *data, struct page *page) | |||
| 656 | return 0; | 654 | return 0; |
| 657 | out_error: | 655 | out_error: |
| 658 | error = PTR_ERR(new); | 656 | error = PTR_ERR(new); |
| 659 | SetPageError(page); | ||
| 660 | out_unlock: | 657 | out_unlock: |
| 661 | unlock_page(page); | 658 | unlock_page(page); |
| 662 | return error; | 659 | return error; |
diff --git a/include/linux/nfs_page.h b/include/linux/nfs_page.h index e2791a27a901..ab465fe8c3d6 100644 --- a/include/linux/nfs_page.h +++ b/include/linux/nfs_page.h | |||
| @@ -34,6 +34,7 @@ enum { | |||
| 34 | PG_NEED_COMMIT, | 34 | PG_NEED_COMMIT, |
| 35 | PG_NEED_RESCHED, | 35 | PG_NEED_RESCHED, |
| 36 | PG_PNFS_COMMIT, | 36 | PG_PNFS_COMMIT, |
| 37 | PG_PARTIAL_READ_FAILED, | ||
| 37 | }; | 38 | }; |
| 38 | 39 | ||
| 39 | struct nfs_inode; | 40 | struct nfs_inode; |
