diff options
author | rsc <rsc> | 2007-08-14 19:42:14 +0000 |
---|---|---|
committer | rsc <rsc> | 2007-08-14 19:42:14 +0000 |
commit | 0655445ba911b59378c57e0c58258c7d6c171880 (patch) | |
tree | 171d6f90c0f4f1c4a8626e8af5abb5182099b32f | |
parent | 2186f88c211b26e2807fbe8f0752e51dcc533ce3 (diff) | |
download | xv6-labs-0655445ba911b59378c57e0c58258c7d6c171880.tar.gz xv6-labs-0655445ba911b59378c57e0c58258c7d6c171880.tar.bz2 xv6-labs-0655445ba911b59378c57e0c58258c7d6c171880.zip |
cleanup loop
-rw-r--r-- | bio.c | 22 |
1 files changed, 10 insertions, 12 deletions
@@ -71,20 +71,18 @@ bget(uint dev, uint sector) loop: // Try for cached block. - for(b = bufhead.next; b != &bufhead; b = b->next) + for(b = bufhead.next; b != &bufhead; b = b->next){ if((b->flags & (B_BUSY|B_VALID)) && - b->dev == dev && b->sector == sector) - break; - - if(b != &bufhead){ - if(b->flags & B_BUSY){ - sleep(buf, &buf_table_lock); - goto loop; + b->dev == dev && b->sector == sector){ + if(b->flags & B_BUSY){ + sleep(buf, &buf_table_lock); + goto loop; + } + b->flags |= B_BUSY; + // b->flags &= ~B_VALID; // Force reread from disk + release(&buf_table_lock); + return b; } - b->flags |= B_BUSY; - // b->flags &= ~B_VALID; // Force reread from disk - release(&buf_table_lock); - return b; } // Allocate fresh block. |