diff --git a/fs.c b/fs.c
index c03d69b778aaaaaf6719235ae0b5034f481aecad..46179d43f2a8baea0ccfc6320aa818ebd090665a 100644
--- a/fs.c
+++ b/fs.c
@@ -227,7 +227,7 @@ iunlock(struct inode *ip)
     panic("iunlock");
 
   acquire(&icache.lock);
-  ip->flags = 0;
+  ip->flags &= ~I_BUSY;
   wakeup(ip);
   release(&icache.lock);
 }
@@ -247,7 +247,7 @@ iput(struct inode *ip)
     ip->type = 0;
     iupdate(ip);
     acquire(&icache.lock);
-    ip->flags &= ~I_BUSY;
+    ip->flags = 0;
     wakeup(ip);
   }
   ip->ref--;