[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v5 3/6] libvhost-user: Support tracking inflight
From: |
Yongji Xie |
Subject: |
Re: [Qemu-devel] [PATCH v5 3/6] libvhost-user: Support tracking inflight I/O in shared memory |
Date: |
Tue, 5 Feb 2019 09:37:50 +0800 |
On Fri, 1 Feb 2019 at 10:28, Jason Wang <address@hidden> wrote:
>
>
> On 2019/1/30 下午1:48, Yongji Xie wrote:
> > On Wed, 30 Jan 2019 at 10:32, Jason Wang <address@hidden> wrote:
> >>
> >> On 2019/1/22 下午4:31, address@hidden wrote:
> >>> +static int
> >>> +vu_queue_inflight_get(VuDev *dev, VuVirtq *vq, int desc_idx)
> >>> +{
> >>> + if (!has_feature(dev->protocol_features,
> >>> + VHOST_USER_PROTOCOL_F_INFLIGHT_SHMFD)) {
> >>> + return 0;
> >>> + }
> >>> +
> >>> + if (unlikely(!vq->inflight)) {
> >>> + return -1;
> >>> + }
> >>> +
> >>> + vq->inflight->desc[desc_idx].inuse = 1;
> >>> +
> >>> + vq->inflight->desc[desc_idx].avail_idx = vq->last_avail_idx;
> >>> +
> >>> + return 0;
> >>> +}
> >>> +
> >>> +static int
> >>> +vu_queue_inflight_pre_put(VuDev *dev, VuVirtq *vq, int desc_idx)
> >>> +{
> >>> + if (!has_feature(dev->protocol_features,
> >>> + VHOST_USER_PROTOCOL_F_INFLIGHT_SHMFD)) {
> >>> + return 0;
> >>> + }
> >>> +
> >>> + if (unlikely(!vq->inflight)) {
> >>> + return -1;
> >>> + }
> >>> +
> >>> + vq->inflight->desc[desc_idx].used_idx = vq->used_idx;
> >>> +
> >>> + barrier();
> >>> +
> >>> + vq->inflight->desc[desc_idx].version++;
> >>> +
> >>> + return 0;
> >>> +}
> >>
> >> You probably need WRITE_ONCE() semantic (e.g volatile) to make sure the
> >> value reach memory.
> >>
> > The cache line should have been flushed during crash. So we can see
> > the correct value when backend reconnecting. If so, compile barrier
> > should be enough here, right?
>
>
> Maybe I worry too much but it's not about flushing cache, but about
> whether or not compiler can generate mov to memory instead of mov to
> registers.
>
OK, I see. I will declare those variables as volatile in v6. Thank you.
Thanks,
Yongji
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- Re: [Qemu-devel] [PATCH v5 3/6] libvhost-user: Support tracking inflight I/O in shared memory,
Yongji Xie <=