ref: 3da35f028f4ff5ca619f9b00d549e1b534568223
parent: 6187e219da80ed8d75c717cd5f7c2f10326c5a81
author: cinap_lenrek <cinap_lenrek@gmx.de>
date: Sat Oct 5 18:55:10 EDT 2013
rio: gone windows gone wrong (fix missing recv(x->flushc, nil) when gone but request flushing)
--- a/sys/src/cmd/rio/xfid.c
+++ b/sys/src/cmd/rio/xfid.c
@@ -422,6 +422,7 @@
return;
}
qunlock(&x->active);
+ recv(x->flushc, nil); /* wake up flushing xfid */
/* no break */
case CWflush:
free(r);
@@ -661,6 +662,7 @@
return;
}
qunlock(&x->active);
+ recv(x->flushc, nil); /* wake up flushing xfid */
/* no break */
case CRflush:
filsyscancel(x);
@@ -727,6 +729,7 @@
return;
}
qunlock(&x->active);
+ recv(x->flushc, nil); /* wake up flushing xfid */
/* no break */
case MRflush:
filsyscancel(x);
@@ -779,6 +782,7 @@
return;
}
qunlock(&x->active);
+ recv(x->flushc, nil); /* wake up flushing xfid */
/* no break */
case MRflush:
filsyscancel(x);
@@ -919,6 +923,7 @@
return;
}
qunlock(&x->active);
+ recv(x->flushc, nil); /* wake up flushing xfid */
/* no break */
case WCRflush:
filsyscancel(x);
--
⑨