rio: gone windows gone wrong (fix missing recv(x->flushc, nil) when gone but request flushing)

This commit is contained in:
cinap_lenrek 2013-10-05 22:55:10 +02:00
parent 6187e219da
commit 3da35f028f

View file

@ -422,6 +422,7 @@ xfidwrite(Xfid *x)
return; return;
} }
qunlock(&x->active); qunlock(&x->active);
recv(x->flushc, nil); /* wake up flushing xfid */
/* no break */ /* no break */
case CWflush: case CWflush:
free(r); free(r);
@ -661,6 +662,7 @@ xfidread(Xfid *x)
return; return;
} }
qunlock(&x->active); qunlock(&x->active);
recv(x->flushc, nil); /* wake up flushing xfid */
/* no break */ /* no break */
case CRflush: case CRflush:
filsyscancel(x); filsyscancel(x);
@ -727,6 +729,7 @@ xfidread(Xfid *x)
return; return;
} }
qunlock(&x->active); qunlock(&x->active);
recv(x->flushc, nil); /* wake up flushing xfid */
/* no break */ /* no break */
case MRflush: case MRflush:
filsyscancel(x); filsyscancel(x);
@ -779,6 +782,7 @@ xfidread(Xfid *x)
return; return;
} }
qunlock(&x->active); qunlock(&x->active);
recv(x->flushc, nil); /* wake up flushing xfid */
/* no break */ /* no break */
case MRflush: case MRflush:
filsyscancel(x); filsyscancel(x);
@ -919,6 +923,7 @@ xfidread(Xfid *x)
return; return;
} }
qunlock(&x->active); qunlock(&x->active);
recv(x->flushc, nil); /* wake up flushing xfid */
/* no break */ /* no break */
case WCRflush: case WCRflush:
filsyscancel(x); filsyscancel(x);