void iunlock(struct inode*);
void itrunc(struct inode*);
void idecref(struct inode*);
-void iincref(struct inode*);
+struct inode* iincref(struct inode*);
void iput(struct inode*);
struct inode* namei(char*, int, uint*, char**, struct inode**);
void stati(struct inode*, struct stat*);
uint
bmap(struct inode *ip, uint bn)
{
- unsigned x;
- uint *a;
+ uint *a, x;
struct buf *inbp;
if(bn >= MAXFILE)
}
// Increment reference count for ip.
-void
+// Returns ip to enable ip = iincref(ip1) idiom.
+struct inode*
iincref(struct inode *ip)
{
ilock(ip);
ip->ref++;
iunlock(ip);
+ return ip;
}
// Copy stat information from inode.
if(*cp == '/')
dp = iget(rootdev, 1);
else {
- dp = p->cwd;
- iincref(dp);
+ dp = iincref(p->cwd);
ilock(dp);
}