summaryrefslogtreecommitdiff
path: root/sys/src/cmd/rio/fsys.c
diff options
context:
space:
mode:
authorcinap_lenrek <cinap_lenrek@gmx.de>2013-11-01 21:21:24 +0100
committercinap_lenrek <cinap_lenrek@gmx.de>2013-11-01 21:21:24 +0100
commitf37ee95fbcd5d837c4eff29e7feb5a999420dae2 (patch)
treed8d7fad4c6e551dac7eabcf4d7f97844ee6d883e /sys/src/cmd/rio/fsys.c
parent413977c19bb65fb1b704d58ae9a59cdf64179c84 (diff)
rio: enforce flush reply ordering for all xfids
flushing isnt optional for concurrently handled requests. we need to ensure that Rflush is replied *after* the origianl request. so we assign the flushtag for *every* xfid in xfidctl(), and filsysrespond() checks if the xfid was flushed *after* replying and wakes up the flushing xfid.
Diffstat (limited to 'sys/src/cmd/rio/fsys.c')
-rw-r--r--sys/src/cmd/rio/fsys.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/sys/src/cmd/rio/fsys.c b/sys/src/cmd/rio/fsys.c
index 5e680ea85..41db21b96 100644
--- a/sys/src/cmd/rio/fsys.c
+++ b/sys/src/cmd/rio/fsys.c
@@ -270,6 +270,8 @@ filsysrespond(Filsys *fs, Xfid *x, Fcall *t, char *err)
free(x->buf);
x->buf = nil;
x->flushtag = -1;
+ if(x->flushing)
+ recv(x->flushc, nil); /* wakeup flushing xfid */
return x;
}