From 7ce01cf9be997dfec50786b8aec663c84b63c209 Mon Sep 17 00:00:00 2001 From: rtm Date: Sat, 12 Aug 2006 16:47:48 +0000 Subject: mknod set nlink = 1 usertests for concurrent create/delete, and read() after unlink() --- fs.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'fs.c') diff --git a/fs.c b/fs.c index fa71c6e..d5cc899 100644 --- a/fs.c +++ b/fs.c @@ -412,6 +412,8 @@ namei(char *path, uint *ret_pinum) pinum = dp->inum; iput(dp); dp = iget(dev, ninum); + if(dp->type == 0 || dp->nlink < 1) + panic("namei"); while(*cp == '/') cp++; } @@ -443,7 +445,7 @@ mknod(char *cp, short type, short major, short minor) ip->major = major; ip->minor = minor; ip->size = 0; - ip->nlink = 0; + ip->nlink = 1; iupdate (ip); // write new inode to disk @@ -467,8 +469,8 @@ mknod(char *cp, short type, short major, short minor) brelse(bp); dp->size += sizeof(struct dirent); // update directory inode iupdate (dp); - iput(dp); - return ip; + iput(dp); + return ip; } int -- cgit v1.2.3