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:
		
							parent
							
								
									d08306dc42
								
							
						
					
					
						commit
						44713c9e85
					
				| 
						 | 
				
			
			@ -221,7 +221,13 @@ static void ioq_submit(LinuxAioState *s)
 | 
			
		|||
            break;
 | 
			
		||||
        }
 | 
			
		||||
        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;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue