move ialloc body up, avoiding double check for end of loop
This commit is contained in:
parent
32eea7665a
commit
95c07f8267
1 changed files with 7 additions and 11 deletions
18
fs.c
18
fs.c
|
@ -201,20 +201,16 @@ ialloc(uint dev, short type)
|
|||
bp = bread(dev, IBLOCK(inum));
|
||||
dip = &((struct dinode*)(bp->data))[inum % IPB];
|
||||
if(dip->type == 0) { // a free inode
|
||||
break;
|
||||
memset(dip, 0, sizeof(*dip));
|
||||
dip->type = type;
|
||||
bwrite(bp, IBLOCK(inum)); // mark it allocated on the disk
|
||||
brelse(bp);
|
||||
ip = iget(dev, inum);
|
||||
return ip;
|
||||
}
|
||||
brelse(bp);
|
||||
}
|
||||
|
||||
if(inum >= ninodes)
|
||||
panic("ialloc: no inodes left");
|
||||
|
||||
memset(dip, 0, sizeof(*dip));
|
||||
dip->type = type;
|
||||
bwrite(bp, IBLOCK(inum)); // mark it allocated on the disk
|
||||
brelse(bp);
|
||||
ip = iget(dev, inum);
|
||||
return ip;
|
||||
panic("ialloc: no inodes");
|
||||
}
|
||||
|
||||
// Free the given inode from its file system.
|
||||
|
|
Loading…
Reference in a new issue