diff options
| author | Trond Myklebust <Trond.Myklebust@netapp.com> | 2012-05-01 12:49:58 -0400 | 
|---|---|---|
| committer | Trond Myklebust <Trond.Myklebust@netapp.com> | 2012-05-01 15:42:22 -0400 | 
| commit | 4bd8b010136afa0df9122a08bad361686bda0a1d (patch) | |
| tree | a23c23299e4468baa0927d44992d2bd9da59579c /fs/nfs/read.c | |
| parent | 25b11dcdbfcad69a5ec03265e2dce19e5eca936b (diff) | |
| download | linux-4bd8b010136afa0df9122a08bad361686bda0a1d.tar.bz2 | |
NFS: Simplify the nfs_read_completion functions
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
Cc: Fred Isaman <iisaman@netapp.com>
Diffstat (limited to 'fs/nfs/read.c')
| -rw-r--r-- | fs/nfs/read.c | 44 | 
1 files changed, 18 insertions, 26 deletions
| diff --git a/fs/nfs/read.c b/fs/nfs/read.c index 1961a192f1cb..37c9eb2930b0 100644 --- a/fs/nfs/read.c +++ b/fs/nfs/read.c @@ -179,34 +179,26 @@ 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; - -			if (test_bit(NFS_IOHDR_EOF, &hdr->flags)) { -				if (bytes > hdr->good_bytes) -					zero_user(page, 0, PAGE_SIZE); -				else if (hdr->good_bytes - bytes < PAGE_SIZE) -					zero_user_segment(page, -						hdr->good_bytes & ~PAGE_MASK, -						PAGE_SIZE); -			} -			SetPageUptodate(page); -			nfs_list_remove_request(req); -			nfs_readpage_release(req); -			bytes += PAGE_SIZE; +	while (!list_empty(&hdr->pages)) { +		struct nfs_page *req = nfs_list_entry(hdr->pages.next); +		struct page *page = req->wb_page; + +		if (test_bit(NFS_IOHDR_EOF, &hdr->flags)) { +			if (bytes > hdr->good_bytes) +				zero_user(page, 0, PAGE_SIZE); +			else if (hdr->good_bytes - bytes < PAGE_SIZE) +				zero_user_segment(page, +					hdr->good_bytes & ~PAGE_MASK, +					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) -				SetPageUptodate(req->wb_page); -			nfs_list_remove_request(req); -			nfs_readpage_release(req); -		} +				SetPageUptodate(page); +		} else +			SetPageUptodate(page); +		nfs_list_remove_request(req); +		nfs_readpage_release(req);  	}  out:  	hdr->release(hdr); |