diff options
author | cinap_lenrek <cinap_lenrek@gmx.de> | 2013-11-01 21:21:24 +0100 |
---|---|---|
committer | cinap_lenrek <cinap_lenrek@gmx.de> | 2013-11-01 21:21:24 +0100 |
commit | f37ee95fbcd5d837c4eff29e7feb5a999420dae2 (patch) | |
tree | d8d7fad4c6e551dac7eabcf4d7f97844ee6d883e /sys/src/cmd/rio/fsys.c | |
parent | 413977c19bb65fb1b704d58ae9a59cdf64179c84 (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.c | 2 |
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; } |