linux-aio: Handle io_submit() failure gracefully
It is generally not expected that io_submit() fails other than with -EAGAIN, but corner cases like SELinux refusing I/O when permissions are revoked are still possible. In this case, we shouldn't abort, but just return an I/O error for the request. Signed-off-by: Kevin Wolf <kwolf@redhat.com> Message-id: 1470741619-23231-1-git-send-email-kwolf@redhat.com Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
This commit is contained in:
		
				
					committed by
					
						 Stefan Hajnoczi
						Stefan Hajnoczi
					
				
			
			
				
	
			
			
			
						parent
						
							d08306dc42
						
					
				
				
					commit
					44713c9e85
				
			| @@ -221,7 +221,13 @@ static void ioq_submit(LinuxAioState *s) | |||||||
|             break; |             break; | ||||||
|         } |         } | ||||||
|         if (ret < 0) { |         if (ret < 0) { | ||||||
|             abort(); |             /* Fail the first request, retry the rest */ | ||||||
|  |             aiocb = QSIMPLEQ_FIRST(&s->io_q.pending); | ||||||
|  |             QSIMPLEQ_REMOVE_HEAD(&s->io_q.pending, next); | ||||||
|  |             s->io_q.in_queue--; | ||||||
|  |             aiocb->ret = ret; | ||||||
|  |             qemu_laio_process_completion(aiocb); | ||||||
|  |             continue; | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         s->io_q.in_flight += ret; |         s->io_q.in_flight += ret; | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user