summaryrefslogtreecommitdiff
path: root/bio.c
diff options
context:
space:
mode:
authorRobert Morris <[email protected]>2011-10-14 10:23:23 -0400
committerRobert Morris <[email protected]>2011-10-14 10:23:23 -0400
commit12abb1a56164a0d71fb7a76a465c912409f2f60b (patch)
treebc03592160be0e13960a9c106ecf5d48aadbe897 /bio.c
parent38eee5bca75cc16d40101953bc2003bb77d452e7 (diff)
downloadxv6-labs-12abb1a56164a0d71fb7a76a465c912409f2f60b.tar.gz
xv6-labs-12abb1a56164a0d71fb7a76a465c912409f2f60b.tar.bz2
xv6-labs-12abb1a56164a0d71fb7a76a465c912409f2f60b.zip
don't let dirty blocks be evicted from cache!
Diffstat (limited to 'bio.c')
-rw-r--r--bio.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/bio.c b/bio.c
index 88b0964..de1d0f2 100644
--- a/bio.c
+++ b/bio.c
@@ -79,9 +79,9 @@ bget(uint dev, uint sector)
}
}
- // Not cached; recycle some existing buffer.
+ // Not cached; recycle some non-busy and clean buffer.
for(b = bcache.head.prev; b != &bcache.head; b = b->prev){
- if((b->flags & B_BUSY) == 0){
+ if((b->flags & B_BUSY) == 0 && (b->flags & B_DIRTY) == 0){
b->dev = dev;
b->sector = sector;
b->flags = B_BUSY;