sheepdog: Convert sd_aiocb_info.cancel to .cancel_async
Also drop the now unused SheepdogAIOCB.finished field. Note that this aio is internal to sheepdog driver and has NULL cb and opaque, and should be unused at all. Signed-off-by: Fam Zheng <famz@redhat.com> Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
This commit is contained in:
		
							parent
							
								
									7691e24dbe
								
							
						
					
					
						commit
						6d24b4df38
					
				@ -315,7 +315,6 @@ struct SheepdogAIOCB {
 | 
				
			|||||||
    void (*aio_done_func)(SheepdogAIOCB *);
 | 
					    void (*aio_done_func)(SheepdogAIOCB *);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    bool cancelable;
 | 
					    bool cancelable;
 | 
				
			||||||
    bool *finished;
 | 
					 | 
				
			||||||
    int nr_pending;
 | 
					    int nr_pending;
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -446,9 +445,6 @@ static inline void free_aio_req(BDRVSheepdogState *s, AIOReq *aio_req)
 | 
				
			|||||||
static void coroutine_fn sd_finish_aiocb(SheepdogAIOCB *acb)
 | 
					static void coroutine_fn sd_finish_aiocb(SheepdogAIOCB *acb)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    qemu_coroutine_enter(acb->coroutine, NULL);
 | 
					    qemu_coroutine_enter(acb->coroutine, NULL);
 | 
				
			||||||
    if (acb->finished) {
 | 
					 | 
				
			||||||
        *acb->finished = true;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    qemu_aio_release(acb);
 | 
					    qemu_aio_release(acb);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -482,10 +478,7 @@ static void sd_aio_cancel(BlockDriverAIOCB *blockacb)
 | 
				
			|||||||
    SheepdogAIOCB *acb = (SheepdogAIOCB *)blockacb;
 | 
					    SheepdogAIOCB *acb = (SheepdogAIOCB *)blockacb;
 | 
				
			||||||
    BDRVSheepdogState *s = acb->common.bs->opaque;
 | 
					    BDRVSheepdogState *s = acb->common.bs->opaque;
 | 
				
			||||||
    AIOReq *aioreq, *next;
 | 
					    AIOReq *aioreq, *next;
 | 
				
			||||||
    bool finished = false;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    acb->finished = &finished;
 | 
					 | 
				
			||||||
    while (!finished) {
 | 
					 | 
				
			||||||
    if (sd_acb_cancelable(acb)) {
 | 
					    if (sd_acb_cancelable(acb)) {
 | 
				
			||||||
        /* Remove outstanding requests from pending and failed queues.  */
 | 
					        /* Remove outstanding requests from pending and failed queues.  */
 | 
				
			||||||
        QLIST_FOREACH_SAFE(aioreq, &s->pending_aio_head, aio_siblings,
 | 
					        QLIST_FOREACH_SAFE(aioreq, &s->pending_aio_head, aio_siblings,
 | 
				
			||||||
@ -502,16 +495,16 @@ static void sd_aio_cancel(BlockDriverAIOCB *blockacb)
 | 
				
			|||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        assert(acb->nr_pending == 0);
 | 
					        assert(acb->nr_pending == 0);
 | 
				
			||||||
            sd_finish_aiocb(acb);
 | 
					        if (acb->common.cb) {
 | 
				
			||||||
            return;
 | 
					            acb->common.cb(acb->common.opaque, -ECANCELED);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        aio_poll(s->aio_context, true);
 | 
					        sd_finish_aiocb(acb);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static const AIOCBInfo sd_aiocb_info = {
 | 
					static const AIOCBInfo sd_aiocb_info = {
 | 
				
			||||||
    .aiocb_size     = sizeof(SheepdogAIOCB),
 | 
					    .aiocb_size     = sizeof(SheepdogAIOCB),
 | 
				
			||||||
    .cancel = sd_aio_cancel,
 | 
					    .cancel_async   = sd_aio_cancel,
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static SheepdogAIOCB *sd_aio_setup(BlockDriverState *bs, QEMUIOVector *qiov,
 | 
					static SheepdogAIOCB *sd_aio_setup(BlockDriverState *bs, QEMUIOVector *qiov,
 | 
				
			||||||
@ -528,7 +521,6 @@ static SheepdogAIOCB *sd_aio_setup(BlockDriverState *bs, QEMUIOVector *qiov,
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    acb->aio_done_func = NULL;
 | 
					    acb->aio_done_func = NULL;
 | 
				
			||||||
    acb->cancelable = true;
 | 
					    acb->cancelable = true;
 | 
				
			||||||
    acb->finished = NULL;
 | 
					 | 
				
			||||||
    acb->coroutine = qemu_coroutine_self();
 | 
					    acb->coroutine = qemu_coroutine_self();
 | 
				
			||||||
    acb->ret = 0;
 | 
					    acb->ret = 0;
 | 
				
			||||||
    acb->nr_pending = 0;
 | 
					    acb->nr_pending = 0;
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user