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.  | 
