[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH 1/2] argo: warn sendv() caller when ring is full
On Tue, Jun 11, 2019 at 10:11 AM Nicholas Tsirakis <niko.tsirakis@xxxxxxxxx> wrote: > > In its current state, if the destination ring is full, sendv() > will requeue the message and return the rc of pending_requeue(), > which will return 0 on success. This prevents the caller from > distinguishing the difference between a successful write and a > message that needs to be resent at a later time. > > Instead, capture the -EAGAIN value returned from ringbuf_insert() > and *only* overwrite it if the rc of pending_requeue() is non-zero. > This allows the caller to make intelligent decisions on -EAGAIN and > still be alerted if the pending message fails to requeue. > > Signed-off-by: Nicholas Tsirakis <tsirakisn@xxxxxxxxxxxx> Thanks for the correct identification of the problem and the patch. Reviewed-by: Christopher Clark <christopher.clark6@xxxxxxxxxxxxxx> > --- > xen/common/argo.c | 6 +++++- > 1 file changed, 5 insertions(+), 1 deletion(-) > > diff --git a/xen/common/argo.c b/xen/common/argo.c > index 13052b9239..2f874a570d 100644 > --- a/xen/common/argo.c > +++ b/xen/common/argo.c > @@ -2048,9 +2048,13 @@ sendv(struct domain *src_d, xen_argo_addr_t *src_addr, > message_type, &len); > if ( ret == -EAGAIN ) > { > + int rc; > + > argo_dprintk("argo_ringbuf_sendv failed, EAGAIN\n"); > /* requeue to issue a notification when space is there */ > - ret = pending_requeue(dst_d, ring_info, src_id.domain_id, len); > + rc = pending_requeue(dst_d, ring_info, src_id.domain_id, len); > + if ( rc ) > + ret = rc; > } > > spin_unlock(&ring_info->L3_lock); > -- > 2.17.1 > _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |