diff options
Diffstat (limited to 'src/cmd/venti/srv/dcache.c')
-rw-r--r-- | src/cmd/venti/srv/dcache.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/src/cmd/venti/srv/dcache.c b/src/cmd/venti/srv/dcache.c index 4f87e77e..52a5364d 100644 --- a/src/cmd/venti/srv/dcache.c +++ b/src/cmd/venti/srv/dcache.c @@ -715,6 +715,7 @@ static int parallelwrites(DBlock **b, DBlock **eb, int dirty) { DBlock **p, **q; + Part *part; for(p=b; p<eb && (*p)->dirty == dirty; p++){ assert(b<=p && p<eb); @@ -725,6 +726,17 @@ parallelwrites(DBlock **b, DBlock **eb, int dirty) assert(b<=p && p<eb); recvp((*p)->writedonechan); } + + /* + * Flush the partitions that have been written to. + */ + part = nil; + for(p=b; p<q; p++){ + if(part != (*p)->part){ + part = (*p)->part; + flushpart(part); + } + } return p-b; } |