提交 6ac05a42 创建 作者: Nickolai Zeldovich's avatar Nickolai Zeldovich

avoid some more unnecessary sharing

上级 102ee83e
......@@ -127,12 +127,4 @@ void
initbio(void)
{
bufns = new xns<pair<u32, u64>, buf*, bio_hash>(false);
for (u64 i = 0; i < NBUF; i++) {
struct buf *b = new buf(0xdeadbeef, -i);
/* dummy to pre-allocate NBUF spaces for evict */
b->flags = 0;
if (bufns->insert(mkpair(b->dev, b->sector), b) < 0)
panic("binit ns_insert");
}
}
......@@ -443,13 +443,23 @@ bmap(struct inode *ip, u32 bn)
// Load indirect block, allocating if necessary.
if((addr = ip->addrs[NDIRECT]) == 0)
ip->addrs[NDIRECT] = addr = balloc(ip->dev);
bp = bread(ip->dev, addr, 1);
int writerflag = 0;
bp = bread(ip->dev, addr, writerflag);
a = (u32*)bp->data;
if((addr = a[bn]) == 0){
brelse(bp, writerflag);
writerflag = 1;
bp = bread(ip->dev, addr, writerflag);
a = (u32*)bp->data;
addr = a[bn];
if (addr == 0) {
a[bn] = addr = balloc(ip->dev);
bwrite(bp);
}
brelse(bp, 1);
}
brelse(bp, writerflag);
return addr;
}
......
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论