// Allocate a block -- first find a free block in the bitmap, // then map it into memory. int alloc_block(void) { int r, bno; if ((r = alloc_block_num()) < 0) return r; bno = r; if ((r = map_block(bno)) < 0) { free_block(bno); return r; } return bno; }
// Allocate a block -- first find a free block in the bitmap, // then map it into memory. int alloc_block(void) { int r, bno; if ((r = alloc_block_num()) < 0) return r; bno = r; if ((r = map_block(bno)) < 0) { free_block(bno); return r; } memset(diskaddr(bno), 0, BLKSIZE); return bno; }