[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH] scsi: always call notifier on async cancellatio
From: |
Paolo Bonzini |
Subject: |
Re: [Qemu-devel] [PATCH] scsi: always call notifier on async cancellation |
Date: |
Thu, 17 Dec 2015 09:41:41 +0100 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.4.0 |
On 17/12/2015 02:15, Fam Zheng wrote:
>> > if (notifier) {
>> > notifier_list_add(&req->cancel_notifiers, notifier);
>> > }
>> > - if (req->io_canceled) {
>> > - return;
>> > - }
>> > scsi_req_ref(req);
>> > scsi_req_dequeue(req);
>> > req->io_canceled = true;
> if (req->aiocb) {
> blk_aio_cancel_async(req->aiocb);
> } else {
> scsi_req_cancel_complete(req);
> }
>
> A second TMF must be blk_aio_cancel_async case, otherwise the first one would
> have already completed the request synchronously in scsi_req_cancel_complete.
Good point.
> With that in mind, I think returning early is not a problem. But I suppose
> these are also idempotent so this change is not breaking anything, either.
Right, the issue is that all these calls are idempotent, but the
notifier may not; that is why I prefer to be safe and ensure that all
notifier additions are matched by a notify. But you explained well why
this should be safe, I'll add a note to the commit message.
Paolo