提交 15a26936 创建 作者: kolya's avatar kolya

try harder to get directory refcounts right

上级 f3e87bc8
......@@ -199,6 +199,10 @@ sys_unlink(void)
memset(&de, 0, sizeof(de));
if(writei(dp, (char*)&de, off, sizeof(de)) != sizeof(de))
panic("unlink: writei");
if(ip->type == T_DIR){
dp->nlink--;
iupdate(dp);
}
iunlockput(dp);
ip->nlink--;
......@@ -247,8 +251,10 @@ create(char *path, int canexist, short type, short major, short minor)
}
if(dirlink(dp, name, ip->inum) < 0){
dp->nlink--;
iupdate(dp);
if(type == T_DIR){
dp->nlink--;
iupdate(dp);
}
iunlockput(dp);
ip->nlink = 0;
......
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论