io: Remove redundant read/write_coroutine assignments
qio_channel_yield() now updates ioc->read_write/coroutine and calls qio_channel_set_aio_fd_handlers(), so the code in the handlers has become redundant and can be removed. This does not make a difference in intermediate states because aio_co_wake() really enters the coroutine immediately here: These handlers are never run in coroutine context, and we're in the right AioContext because qio_channel_attach_aio_context() asserts that the handlers are inactive. To make these conditions more obvious, assert the right AioContext. Suggested-by: Paolo Bonzini <pbonzini@redhat.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
This commit is contained in:
		
							parent
							
								
									6886ceaf61
								
							
						
					
					
						commit
						2a239e6e03
					
				
							
								
								
									
										12
									
								
								io/channel.c
									
									
									
									
									
								
							
							
						
						
									
										12
									
								
								io/channel.c
									
									
									
									
									
								
							@ -400,15 +400,14 @@ off_t qio_channel_io_seek(QIOChannel *ioc,
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static void qio_channel_set_aio_fd_handlers(QIOChannel *ioc);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
static void qio_channel_restart_read(void *opaque)
 | 
					static void qio_channel_restart_read(void *opaque)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    QIOChannel *ioc = opaque;
 | 
					    QIOChannel *ioc = opaque;
 | 
				
			||||||
    Coroutine *co = ioc->read_coroutine;
 | 
					    Coroutine *co = ioc->read_coroutine;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    ioc->read_coroutine = NULL;
 | 
					    /* Assert that aio_co_wake() reenters the coroutine directly */
 | 
				
			||||||
    qio_channel_set_aio_fd_handlers(ioc);
 | 
					    assert(qemu_get_current_aio_context() ==
 | 
				
			||||||
 | 
					           qemu_coroutine_get_aio_context(co));
 | 
				
			||||||
    aio_co_wake(co);
 | 
					    aio_co_wake(co);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -417,8 +416,9 @@ static void qio_channel_restart_write(void *opaque)
 | 
				
			|||||||
    QIOChannel *ioc = opaque;
 | 
					    QIOChannel *ioc = opaque;
 | 
				
			||||||
    Coroutine *co = ioc->write_coroutine;
 | 
					    Coroutine *co = ioc->write_coroutine;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    ioc->write_coroutine = NULL;
 | 
					    /* Assert that aio_co_wake() reenters the coroutine directly */
 | 
				
			||||||
    qio_channel_set_aio_fd_handlers(ioc);
 | 
					    assert(qemu_get_current_aio_context() ==
 | 
				
			||||||
 | 
					           qemu_coroutine_get_aio_context(co));
 | 
				
			||||||
    aio_co_wake(co);
 | 
					    aio_co_wake(co);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user