Commit 4bd8b010 authored by Trond Myklebust's avatar Trond Myklebust

NFS: Simplify the nfs_read_completion functions

Signed-off-by: default avatarTrond Myklebust <Trond.Myklebust@netapp.com>
Cc: Fred Isaman <iisaman@netapp.com>
parent 25b11dcd
......@@ -243,7 +243,6 @@ static void nfs_direct_read_completion(struct nfs_pgio_header *hdr)
dreq->count += hdr->good_bytes;
spin_unlock(&dreq->lock);
if (!test_bit(NFS_IOHDR_ERROR, &hdr->flags)) {
while (!list_empty(&hdr->pages)) {
struct nfs_page *req = nfs_list_entry(hdr->pages.next);
struct page *page = req->wb_page;
......@@ -256,24 +255,17 @@ static void nfs_direct_read_completion(struct nfs_pgio_header *hdr)
hdr->good_bytes & ~PAGE_MASK,
PAGE_SIZE);
}
bytes += req->wb_bytes;
nfs_list_remove_request(req);
if (!PageCompound(page))
if (!PageCompound(page)) {
if (test_bit(NFS_IOHDR_ERROR, &hdr->flags)) {
if (bytes < hdr->good_bytes)
set_page_dirty(page);
} else
set_page_dirty(page);
nfs_direct_readpage_release(req);
}
} else {
while (!list_empty(&hdr->pages)) {
struct nfs_page *req = nfs_list_entry(hdr->pages.next);
if (bytes < hdr->good_bytes)
if (!PageCompound(req->wb_page))
set_page_dirty(req->wb_page);
bytes += req->wb_bytes;
nfs_list_remove_request(req);
nfs_direct_readpage_release(req);
}
}
out_put:
if (put_dreq(dreq))
nfs_direct_complete(dreq);
......
......@@ -179,7 +179,6 @@ static void nfs_read_completion(struct nfs_pgio_header *hdr)
if (test_bit(NFS_IOHDR_REDO, &hdr->flags))
goto out;
if (!test_bit(NFS_IOHDR_ERROR, &hdr->flags)) {
while (!list_empty(&hdr->pages)) {
struct nfs_page *req = nfs_list_entry(hdr->pages.next);
struct page *page = req->wb_page;
......@@ -192,22 +191,15 @@ static void nfs_read_completion(struct nfs_pgio_header *hdr)
hdr->good_bytes & ~PAGE_MASK,
PAGE_SIZE);
}
SetPageUptodate(page);
nfs_list_remove_request(req);
nfs_readpage_release(req);
bytes += PAGE_SIZE;
}
} else {
while (!list_empty(&hdr->pages)) {
struct nfs_page *req = nfs_list_entry(hdr->pages.next);
bytes += req->wb_bytes;
if (test_bit(NFS_IOHDR_ERROR, &hdr->flags)) {
if (bytes <= hdr->good_bytes)
SetPageUptodate(req->wb_page);
SetPageUptodate(page);
} else
SetPageUptodate(page);
nfs_list_remove_request(req);
nfs_readpage_release(req);
}
}
out:
hdr->release(hdr);
}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment