Message ID | 1409557394-11853-6-git-send-email-namei.unix@gmail.com |
---|---|
State | New |
Headers | show |
The Monday 01 Sep 2014 à 15:43:11 (+0800), Liu Yuan wrote : > For a fifo read pattern, we only have one running aio >(possible other cases that has less number than num_children in the future) I have trouble understanding this part of the commit message could you try to clarify it ? > , so we need to check if > .acb is NULL against bdrv_aio_cancel() to avoid segfault. > > Cc: Eric Blake <eblake@redhat.com> > Cc: Benoit Canet <benoit@irqsave.net> > Cc: Kevin Wolf <kwolf@redhat.com> > Cc: Stefan Hajnoczi <stefanha@redhat.com> > Signed-off-by: Liu Yuan <namei.unix@gmail.com> > --- > block/quorum.c | 4 +++- > 1 file changed, 3 insertions(+), 1 deletion(-) > > diff --git a/block/quorum.c b/block/quorum.c > index 9e056d6..b9eeda3 100644 > --- a/block/quorum.c > +++ b/block/quorum.c > @@ -144,7 +144,9 @@ static void quorum_aio_cancel(BlockDriverAIOCB *blockacb) > > /* cancel all callbacks */ > for (i = 0; i < s->num_children; i++) { > - bdrv_aio_cancel(acb->qcrs[i].aiocb); > + if (acb->qcrs[i].aiocb) { > + bdrv_aio_cancel(acb->qcrs[i].aiocb); > + } > } > > quorum_aio_release(acb); > -- > 1.9.1 >
On Mon, Sep 01, 2014 at 10:35:27AM +0200, Benoît Canet wrote: > The Monday 01 Sep 2014 à 15:43:11 (+0800), Liu Yuan wrote : > > For a fifo read pattern, we only have one running aio > > >(possible other cases that has less number than num_children in the future) > I have trouble understanding this part of the commit message could you try > to clarify it ? Until this patch, we have two cases, read single or read all. But later patch allow VMs to continue if some devices are down. So the discrete number 1 and N becomes a range [1, N], that is possible running requests are from 1 to N. Thanks Yuan
The Monday 01 Sep 2014 à 17:26:09 (+0800), Liu Yuan wrote : > On Mon, Sep 01, 2014 at 10:35:27AM +0200, Benoît Canet wrote: > > The Monday 01 Sep 2014 à 15:43:11 (+0800), Liu Yuan wrote : > > > For a fifo read pattern, we only have one running aio > > > > >(possible other cases that has less number than num_children in the future) > > I have trouble understanding this part of the commit message could you try > > to clarify it ? > > Until this patch, we have two cases, read single or read all. But later patch > allow VMs to continue if some devices are down. So the discrete number 1 and N > becomes a range [1, N], that is possible running requests are from 1 to N. Why not (In some other cases some children of the num_children BDS could be disabled reducing the number of requests needed) ? > > Thanks > Yuan
On Mon, Sep 01, 2014 at 11:32:04AM +0200, Benoît Canet wrote: > The Monday 01 Sep 2014 à 17:26:09 (+0800), Liu Yuan wrote : > > On Mon, Sep 01, 2014 at 10:35:27AM +0200, Benoît Canet wrote: > > > The Monday 01 Sep 2014 à 15:43:11 (+0800), Liu Yuan wrote : > > > > For a fifo read pattern, we only have one running aio > > > > > > >(possible other cases that has less number than num_children in the future) > > > I have trouble understanding this part of the commit message could you try > > > to clarify it ? > > > > Until this patch, we have two cases, read single or read all. But later patch > > allow VMs to continue if some devices are down. So the discrete number 1 and N > > becomes a range [1, N], that is possible running requests are from 1 to N. > > Why not > > (In some other cases some children of the num_children BDS could be disabled > reducing the number of requests needed) ? > Sounds better, I'll take yours, thanks! Yuan
diff --git a/block/quorum.c b/block/quorum.c index 9e056d6..b9eeda3 100644 --- a/block/quorum.c +++ b/block/quorum.c @@ -144,7 +144,9 @@ static void quorum_aio_cancel(BlockDriverAIOCB *blockacb) /* cancel all callbacks */ for (i = 0; i < s->num_children; i++) { - bdrv_aio_cancel(acb->qcrs[i].aiocb); + if (acb->qcrs[i].aiocb) { + bdrv_aio_cancel(acb->qcrs[i].aiocb); + } } quorum_aio_release(acb);
For a fifo read pattern, we only have one running aio (possible other cases that has less number than num_children in the future), so we need to check if .acb is NULL against bdrv_aio_cancel() to avoid segfault. Cc: Eric Blake <eblake@redhat.com> Cc: Benoit Canet <benoit@irqsave.net> Cc: Kevin Wolf <kwolf@redhat.com> Cc: Stefan Hajnoczi <stefanha@redhat.com> Signed-off-by: Liu Yuan <namei.unix@gmail.com> --- block/quorum.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)