From 13a96baefc0ff5d8262c4bc8c797bee4b157443c Mon Sep 17 00:00:00 2001 From: Frans Kaashoek Date: Wed, 27 Jul 2011 20:35:46 -0400 Subject: Dirt simple logging Passes usertests and stressfs Seems to recover correctly in a number of simple cases --- fs.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'fs.c') diff --git a/fs.c b/fs.c index 7c6d904..a414b65 100644 --- a/fs.c +++ b/fs.c @@ -25,7 +25,7 @@ static void itrunc(struct inode*); // Read the super block. -static void +void readsb(int dev, struct superblock *sb) { struct buf *bp; @@ -65,7 +65,7 @@ balloc(uint dev) m = 1 << (bi % 8); if((bp->data[bi/8] & m) == 0){ // Is block free? bp->data[bi/8] |= m; // Mark block in use on disk. - bwrite(bp); + log_write(bp); brelse(bp); return b + bi; } @@ -92,7 +92,7 @@ bfree(int dev, uint b) if((bp->data[bi/8] & m) == 0) panic("freeing free block"); bp->data[bi/8] &= ~m; // Mark block free on disk. - bwrite(bp); + log_write(bp); brelse(bp); } @@ -159,7 +159,7 @@ ialloc(uint dev, short type) if(dip->type == 0){ // a free inode memset(dip, 0, sizeof(*dip)); dip->type = type; - bwrite(bp); // mark it allocated on the disk + log_write(bp); // mark it allocated on the disk brelse(bp); return iget(dev, inum); } @@ -183,7 +183,7 @@ iupdate(struct inode *ip) dip->nlink = ip->nlink; dip->size = ip->size; memmove(dip->addrs, ip->addrs, sizeof(ip->addrs)); - bwrite(bp); + log_write(bp); brelse(bp); } @@ -339,7 +339,7 @@ bmap(struct inode *ip, uint bn) a = (uint*)bp->data; if((addr = a[bn]) == 0){ a[bn] = addr = balloc(ip->dev); - bwrite(bp); + log_write(bp); } brelse(bp); return addr; -- cgit v1.2.3