Skip to content

Commit

Permalink
NFS: Don't rely on PageError in nfs_readpage_release_partial
Browse files Browse the repository at this point in the history
Don't rely on the PageError flag to tell us if one of the partial reads of
the page failed. Instead, replace that with a dedicated flag in the
struct nfs_page.

Then clean out redundant uses of the PageError flag: the VM no longer
checks it for reads.

Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
  • Loading branch information
Trond Myklebust authored and Trond Myklebust committed Oct 19, 2011
1 parent fbb5a9a commit fba7300
Show file tree
Hide file tree
Showing 2 changed files with 3 additions and 5 deletions.
7 changes: 2 additions & 5 deletions fs/nfs/read.c
Original file line number Diff line number Diff line change
Expand Up @@ -276,7 +276,6 @@ nfs_async_read_error(struct list_head *head)
while (!list_empty(head)) {
req = nfs_list_entry(head->next);
nfs_list_remove_request(req);
SetPageError(req->wb_page);
nfs_readpage_release(req);
}
}
Expand Down Expand Up @@ -330,7 +329,6 @@ static int nfs_pagein_multi(struct nfs_pageio_descriptor *desc, struct list_head
list_del(&data->list);
nfs_readdata_free(data);
}
SetPageError(page);
nfs_readpage_release(req);
return -ENOMEM;
}
Expand Down Expand Up @@ -460,10 +458,10 @@ static void nfs_readpage_release_partial(void *calldata)
int status = data->task.tk_status;

if (status < 0)
SetPageError(page);
set_bit(PG_PARTIAL_READ_FAILED, &req->wb_flags);

if (atomic_dec_and_test(&req->wb_complete)) {
if (!PageError(page))
if (!test_bit(PG_PARTIAL_READ_FAILED, &req->wb_flags))
SetPageUptodate(page);
nfs_readpage_release(req);
}
Expand Down Expand Up @@ -656,7 +654,6 @@ readpage_async_filler(void *data, struct page *page)
return 0;
out_error:
error = PTR_ERR(new);
SetPageError(page);
out_unlock:
unlock_page(page);
return error;
Expand Down
1 change: 1 addition & 0 deletions include/linux/nfs_page.h
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ enum {
PG_NEED_COMMIT,
PG_NEED_RESCHED,
PG_PNFS_COMMIT,
PG_PARTIAL_READ_FAILED,
};

struct nfs_inode;
Expand Down

0 comments on commit fba7300

Please sign in to comment.