Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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

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
Loading
Loading
Loading
Loading
+20 −28
Original line number Original line Diff line number Diff line
@@ -243,7 +243,6 @@ static void nfs_direct_read_completion(struct nfs_pgio_header *hdr)
		dreq->count += hdr->good_bytes;
		dreq->count += hdr->good_bytes;
	spin_unlock(&dreq->lock);
	spin_unlock(&dreq->lock);


	if (!test_bit(NFS_IOHDR_ERROR, &hdr->flags)) {
	while (!list_empty(&hdr->pages)) {
	while (!list_empty(&hdr->pages)) {
		struct nfs_page *req = nfs_list_entry(hdr->pages.next);
		struct nfs_page *req = nfs_list_entry(hdr->pages.next);
		struct page *page = req->wb_page;
		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,
					hdr->good_bytes & ~PAGE_MASK,
					PAGE_SIZE);
					PAGE_SIZE);
		}
		}
			bytes += req->wb_bytes;
		if (!PageCompound(page)) {
			nfs_list_remove_request(req);
			if (test_bit(NFS_IOHDR_ERROR, &hdr->flags)) {
			if (!PageCompound(page))
				if (bytes < hdr->good_bytes)
					set_page_dirty(page);
			} else
				set_page_dirty(page);
				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;
		bytes += req->wb_bytes;
		nfs_list_remove_request(req);
		nfs_list_remove_request(req);
		nfs_direct_readpage_release(req);
		nfs_direct_readpage_release(req);
	}
	}
	}
out_put:
out_put:
	if (put_dreq(dreq))
	if (put_dreq(dreq))
		nfs_direct_complete(dreq);
		nfs_direct_complete(dreq);
+18 −26
Original line number Original line Diff line number Diff line
@@ -179,7 +179,6 @@ static void nfs_read_completion(struct nfs_pgio_header *hdr)


	if (test_bit(NFS_IOHDR_REDO, &hdr->flags))
	if (test_bit(NFS_IOHDR_REDO, &hdr->flags))
		goto out;
		goto out;
	if (!test_bit(NFS_IOHDR_ERROR, &hdr->flags)) {
	while (!list_empty(&hdr->pages)) {
	while (!list_empty(&hdr->pages)) {
		struct nfs_page *req = nfs_list_entry(hdr->pages.next);
		struct nfs_page *req = nfs_list_entry(hdr->pages.next);
		struct page *page = req->wb_page;
		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,
					hdr->good_bytes & ~PAGE_MASK,
					PAGE_SIZE);
					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;
		bytes += req->wb_bytes;
		if (test_bit(NFS_IOHDR_ERROR, &hdr->flags)) {
			if (bytes <= hdr->good_bytes)
			if (bytes <= hdr->good_bytes)
				SetPageUptodate(req->wb_page);
				SetPageUptodate(page);
		} else
			SetPageUptodate(page);
		nfs_list_remove_request(req);
		nfs_list_remove_request(req);
		nfs_readpage_release(req);
		nfs_readpage_release(req);
	}
	}
	}
out:
out:
	hdr->release(hdr);
	hdr->release(hdr);
}
}