On Mon, 14 Aug 2017, Boris Ostrovsky wrote:
> On 07/31/2017 06:57 PM, Stefano Stabellini wrote:
> > Introduce a waitqueue to allow only one outstanding accept command at
> > any given time and to implement polling on the passive socket. Introduce
> > a flags field to keep track of in-flight accept
On Mon, 14 Aug 2017, Boris Ostrovsky wrote:
> > > +
> > > +ret = bedata->rsp[req_id].ret;
> >
> > You can just return bedata->rsp[req_id].ret;
>
> Or maybe not. The slot may get reused by the time you get to the end.
Right!
> >
> > -boris
> >
> > > +/* read ret, then set this rsp slot
+
+ret = bedata->rsp[req_id].ret;
You can just return bedata->rsp[req_id].ret;
Or maybe not. The slot may get reused by the time you get to the end.
-boris
-boris
+/* read ret, then set this rsp slot to be reused */
+smp_mb();
+WRITE_ONCE(bedata->rsp[req_id].req_id, PVC
On 07/31/2017 06:57 PM, Stefano Stabellini wrote:
Introduce a waitqueue to allow only one outstanding accept command at
any given time and to implement polling on the passive socket. Introduce
a flags field to keep track of in-flight accept and poll commands.
Send PVCALLS_ACCEPT to the backend
Introduce a waitqueue to allow only one outstanding accept command at
any given time and to implement polling on the passive socket. Introduce
a flags field to keep track of in-flight accept and poll commands.
Send PVCALLS_ACCEPT to the backend. Allocate a new active socket. Make
sure that only on