summaryrefslogtreecommitdiff
path: root/fs.c
diff options
context:
space:
mode:
authorrtm <rtm>2006-08-12 22:44:26 +0000
committerrtm <rtm>2006-08-12 22:44:26 +0000
commit05e975511bcf7f33955208319655dbfc687a7b0c (patch)
treecee2b914d15bfc1d48c16a3c275b453e90f3abc6 /fs.c
parentcd93074e5bed8fdbc84f2960c3219c7cf791b020 (diff)
downloadxv6-labs-05e975511bcf7f33955208319655dbfc687a7b0c.tar.gz
xv6-labs-05e975511bcf7f33955208319655dbfc687a7b0c.tar.bz2
xv6-labs-05e975511bcf7f33955208319655dbfc687a7b0c.zip
zero out all of dirent.name when creating
don't increase length of directory
Diffstat (limited to 'fs.c')
-rw-r--r--fs.c27
1 files changed, 15 insertions, 12 deletions
diff --git a/fs.c b/fs.c
index b042bb2..e01b4fb 100644
--- a/fs.c
+++ b/fs.c
@@ -56,7 +56,7 @@ balloc(uint dev)
cprintf ("balloc: allocate block %d\n", b);
bp->data[bi/8] |= 0x1 << (bi % 8);
- bwrite (dev, bp, BBLOCK(b, ninodes)); // mark it allocated on disk
+ bwrite (bp, BBLOCK(b, ninodes)); // mark it allocated on disk
brelse(bp);
return b;
}
@@ -80,7 +80,7 @@ bfree(int dev, uint b)
bi = b % BPB;
m = ~(0x1 << (bi %8));
bp->data[bi/8] &= m;
- bwrite (dev, bp, BBLOCK(b, ninodes)); // mark it free on disk
+ bwrite (bp, BBLOCK(b, ninodes)); // mark it free on disk
brelse(bp);
}
@@ -147,7 +147,7 @@ iupdate (struct inode *ip)
dip->nlink = ip->nlink;
dip->size = ip->size;
memmove(dip->addrs, ip->addrs, sizeof(ip->addrs));
- bwrite (ip->dev, bp, IBLOCK(ip->inum)); // mark it allocated on the disk
+ bwrite (bp, IBLOCK(ip->inum)); // mark it allocated on the disk
brelse(bp);
}
@@ -181,7 +181,7 @@ ialloc(uint dev, short type)
cprintf ("ialloc: %d\n", inum);
dip->type = type;
- bwrite (dev, bp, IBLOCK(inum)); // mark it allocated on the disk
+ bwrite (bp, IBLOCK(inum)); // mark it allocated on the disk
brelse(bp);
ip = iget (dev, inum);
return ip;
@@ -353,7 +353,7 @@ writei(struct inode *ip, char *addr, uint off, uint n)
m = min(BSIZE - off % BSIZE, n-r);
bp = bread(ip->dev, bmap(ip, off / BSIZE));
memmove (bp->data + off % BSIZE, addr, m);
- bwrite (ip->dev, bp, bmap(ip, off/BSIZE));
+ bwrite (bp, bmap(ip, off/BSIZE));
brelse (bp);
r += m;
off += m;
@@ -484,13 +484,16 @@ mknod(char *cp, short type, short major, short minor)
found:
ep->inum = ip->inum;
- for(i = 0; i < DIRSIZ && cp[i]; i++) ep->name[i] = cp[i];
- bwrite (dp->dev, bp, bmap(dp, off/BSIZE)); // write directory block
+ for(i = 0; i < DIRSIZ && cp[i]; i++)
+ ep->name[i] = cp[i];
+ for( ; i < DIRSIZ; i++)
+ ep->name[i] = '\0';
+ bwrite (bp, bmap(dp, off/BSIZE)); // write directory block
brelse(bp);
- dp->size += sizeof(struct dirent); // update directory inode
- iupdate (dp);
- iput(dp);
- return ip;
+
+ iput(dp);
+
+ return ip;
}
int
@@ -531,7 +534,7 @@ unlink(char *cp)
found:
ep->inum = 0;
- bwrite (dp->dev, bp, bmap(dp, off/BSIZE)); // write directory block
+ bwrite (bp, bmap(dp, off/BSIZE)); // write directory block
brelse(bp);
iupdate (dp);
iput(dp);