summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--fs.c12
-rw-r--r--fs.h6
-rw-r--r--fsvar.h2
-rw-r--r--mkfs.c8
4 files changed, 13 insertions, 15 deletions
diff --git a/fs.c b/fs.c
index 91533d1..49a736d 100644
--- a/fs.c
+++ b/fs.c
@@ -335,10 +335,10 @@ bmap(struct inode *ip, uint bn, int alloc)
if(bn < NINDIRECT){
// Load indirect block, allocating if necessary.
- if((addr = ip->addrs[INDIRECT]) == 0){
+ if((addr = ip->addrs[NDIRECT]) == 0){
if(!alloc)
return -1;
- ip->addrs[INDIRECT] = addr = balloc(ip->dev);
+ ip->addrs[NDIRECT] = addr = balloc(ip->dev);
}
bp = bread(ip->dev, addr);
a = (uint*)bp->data;
@@ -375,16 +375,16 @@ itrunc(struct inode *ip)
}
}
- if(ip->addrs[INDIRECT]){
- bp = bread(ip->dev, ip->addrs[INDIRECT]);
+ if(ip->addrs[NDIRECT]){
+ bp = bread(ip->dev, ip->addrs[NDIRECT]);
a = (uint*)bp->data;
for(j = 0; j < NINDIRECT; j++){
if(a[j])
bfree(ip->dev, a[j]);
}
brelse(bp);
- bfree(ip->dev, ip->addrs[INDIRECT]);
- ip->addrs[INDIRECT] = 0;
+ bfree(ip->dev, ip->addrs[NDIRECT]);
+ ip->addrs[NDIRECT] = 0;
}
ip->size = 0;
diff --git a/fs.h b/fs.h
index c86483e..6f92592 100644
--- a/fs.h
+++ b/fs.h
@@ -15,11 +15,9 @@ struct superblock {
uint ninodes; // Number of inodes.
};
-#define NADDRS (NDIRECT+1)
#define NDIRECT 12
-#define INDIRECT 12
#define NINDIRECT (BSIZE / sizeof(uint))
-#define MAXFILE (NDIRECT + NINDIRECT)
+#define MAXFILE (NDIRECT + NINDIRECT)
// On-disk inode structure
struct dinode {
@@ -28,7 +26,7 @@ struct dinode {
short minor; // Minor device number (T_DEV only)
short nlink; // Number of links to inode in file system
uint size; // Size of file (bytes)
- uint addrs[NADDRS]; // Data block addresses
+ uint addrs[NDIRECT+1]; // Data block addresses
};
// Inodes per block.
diff --git a/fsvar.h b/fsvar.h
index 17bcb5b..7f135a9 100644
--- a/fsvar.h
+++ b/fsvar.h
@@ -11,7 +11,7 @@ struct inode {
short minor;
short nlink;
uint size;
- uint addrs[NADDRS];
+ uint addrs[NDIRECT+1];
};
#define I_BUSY 0x1
diff --git a/mkfs.c b/mkfs.c
index 24a4b4f..3a3c62a 100644
--- a/mkfs.c
+++ b/mkfs.c
@@ -259,17 +259,17 @@ iappend(uint inum, void *xp, int n)
}
x = xint(din.addrs[fbn]);
} else {
- if(xint(din.addrs[INDIRECT]) == 0) {
+ if(xint(din.addrs[NDIRECT]) == 0) {
// printf("allocate indirect block\n");
- din.addrs[INDIRECT] = xint(freeblock++);
+ din.addrs[NDIRECT] = xint(freeblock++);
usedblocks++;
}
// printf("read indirect block\n");
- rsect(xint(din.addrs[INDIRECT]), (char*) indirect);
+ rsect(xint(din.addrs[NDIRECT]), (char*) indirect);
if(indirect[fbn - NDIRECT] == 0) {
indirect[fbn - NDIRECT] = xint(freeblock++);
usedblocks++;
- wsect(xint(din.addrs[INDIRECT]), (char*) indirect);
+ wsect(xint(din.addrs[NDIRECT]), (char*) indirect);
}
x = xint(indirect[fbn-NDIRECT]);
}