ref: 84f4e992e0978ec6c739c6f244f31c449d4c62de
parent: d76adb110f09d0b3dfdd090f6bd385ebd66b4194
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);
--
⑨