Skip to content

Commit

Permalink
🐛 inode free
Browse files Browse the repository at this point in the history
  • Loading branch information
StevenBaby committed Oct 25, 2023
1 parent 6f13b29 commit 3557848
Show file tree
Hide file tree
Showing 4 changed files with 28 additions and 2 deletions.
15 changes: 13 additions & 2 deletions src/fs/inode.c
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,12 @@ inode_t *get_free_inode()
inode_t *inode = &inode_table[i];
if (inode->type == FS_TYPE_NONE)
{
assert(!inode->buf);
assert(!inode->desc);
assert(!inode->super);
assert(!inode->op);
assert(!inode->rxwaiter);
assert(!inode->txwaiter);
return inode;
}
}
Expand All @@ -41,6 +47,12 @@ void put_free_inode(inode_t *inode)
assert(inode != inode_table);
assert(inode->count == 0);
inode->type = FS_TYPE_NONE;
assert(!inode->buf);
assert(!inode->desc);
assert(!inode->super);
assert(!inode->op);
assert(!inode->rxwaiter);
assert(!inode->txwaiter);
}

// 获取根 inode
Expand Down Expand Up @@ -90,12 +102,11 @@ void iput(inode_t *inode)

void inode_init()
{
memset(inode_table, 0, sizeof(inode_table));
for (size_t i = 0; i < INODE_NR; i++)
{
inode_t *inode = &inode_table[i];
inode->dev = EOF;
inode->type = FS_TYPE_NONE;
inode->rxwaiter = NULL;
inode->txwaiter = NULL;
}
}
5 changes: 5 additions & 0 deletions src/fs/iso9660/iso9660.c
Original file line number Diff line number Diff line change
Expand Up @@ -361,6 +361,11 @@ static void iso_close(inode_t *inode)
// 从超级块链表中移除
list_remove(&inode->node);

inode->buf = NULL;
inode->desc = NULL;
inode->super = NULL;
inode->op = NULL;

// 释放 inode 内存
put_free_inode(inode);
}
Expand Down
5 changes: 5 additions & 0 deletions src/fs/minix/minix.c
Original file line number Diff line number Diff line change
Expand Up @@ -325,6 +325,11 @@ static void minix_close(inode_t *inode)
// 从超级块链表中移除
list_remove(&inode->node);

inode->buf = NULL;
inode->desc = NULL;
inode->super = NULL;
inode->op = NULL;

// 释放 inode 内存
put_free_inode(inode);
}
Expand Down
5 changes: 5 additions & 0 deletions src/net/socket.c
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,11 @@ static void socket_close(inode_t *inode)

kfree(inode->desc);

inode->buf = NULL;
inode->desc = NULL;
inode->super = NULL;
inode->op = NULL;

// 释放 inode
put_free_inode(inode);

Expand Down

0 comments on commit 3557848

Please sign in to comment.