NFS: Ensure nfs_readpage returns promptly when internal error occurs
A previous refactoring of nfs_readpage() might end up calling wait_on_page_locked_killable() even if readpage_async_filler() failed with an internal error and pg_error was non-zero (for example, if nfs_create_request() failed). In the case of an internal error, skip over wait_on_page_locked_killable() as this is only needed when the read is sent and an error occurs during completion handling. Signed-off-by: Dave Wysochanski <dwysocha@redhat.com> Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
This commit is contained in:
		
							parent
							
								
									526fca3764
								
							
						
					
					
						commit
						e0340f16a0
					
				| @ -373,10 +373,10 @@ int nfs_readpage(struct file *file, struct page *page) | ||||
| 			     &nfs_async_read_completion_ops); | ||||
| 
 | ||||
| 	ret = readpage_async_filler(&desc, page); | ||||
| 	if (ret) | ||||
| 		goto out; | ||||
| 
 | ||||
| 	if (!ret) | ||||
| 		nfs_pageio_complete_read(&desc.pgio); | ||||
| 
 | ||||
| 	nfs_pageio_complete_read(&desc.pgio); | ||||
| 	ret = desc.pgio.pg_error < 0 ? desc.pgio.pg_error : 0; | ||||
| 	if (!ret) { | ||||
| 		ret = wait_on_page_locked_killable(page); | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user