aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsotech117 <michael_foiani@brown.edu>2024-05-15 10:23:17 +0000
committersotech117 <michael_foiani@brown.edu>2024-05-15 10:23:17 +0000
commit919b7f666b9c85699d8d38d3957f9f4a8ebfedc9 (patch)
treeddb2fe6fd8484af85faffc3ac60d66c0e690c394
parent883711347e22d9e21c6510fa987d3a05779d6fac (diff)
more s5fix
-rw-r--r--kernel/fs/s5fs/s5fs.c18
-rw-r--r--kernel/fs/s5fs/s5fs_subr.c2
2 files changed, 10 insertions, 10 deletions
diff --git a/kernel/fs/s5fs/s5fs.c b/kernel/fs/s5fs/s5fs.c
index f41d00f..6da57d4 100644
--- a/kernel/fs/s5fs/s5fs.c
+++ b/kernel/fs/s5fs/s5fs.c
@@ -691,7 +691,6 @@ static long s5fs_mkdir(vnode_t *dir, const char *name, size_t namelen,
// NOT_YET_IMPLEMENTED("S5FS: s5fs_mkdir");
// Allocate a new inode, get its properties first
- vlock(dir);
s5fs_t *s5fs = VNODE_TO_S5FS(dir);
uint16_t type = S5_TYPE_DIR;
@@ -705,11 +704,12 @@ static long s5fs_mkdir(vnode_t *dir, const char *name, size_t namelen,
}
// Create the new vnode
+ vlock(dir);
vnode_t *new_vnode = vget_locked(dir->vn_fs, inode_num);
// Check if the vnode creation failed
if (!new_vnode)
{
- s5_free_inode(s5fs, inode_num);
+ // s5_free_inode(s5fs, inode_num);
vput_locked(&new_vnode);
return -ENOMEM;
}
@@ -719,7 +719,7 @@ static long s5fs_mkdir(vnode_t *dir, const char *name, size_t namelen,
// Check if the link operation failed
if (link < 0)
{
- s5_free_inode(s5fs, inode_num);
+ // s5_free_inode(s5fs, inode_num);
vput_locked(&new_vnode);
return link;
}
@@ -729,9 +729,9 @@ static long s5fs_mkdir(vnode_t *dir, const char *name, size_t namelen,
// Check if the link operation failed
if (link2 < 0)
{
- s5_remove_dirent(VNODE_TO_S5NODE(new_vnode), ".", 1, VNODE_TO_S5FS(dir));
- s5_free_inode(s5fs, inode_num);
- vput_locked(&new_vnode);
+ // s5_remove_dirent(VNODE_TO_S5NODE(new_vnode), ".", 1, VNODE_TO_S5FS(dir));
+ // s5_free_inode(s5fs, inode_num);
+ // vput_locked(&new_vnode);
return link2;
}
@@ -740,9 +740,9 @@ static long s5fs_mkdir(vnode_t *dir, const char *name, size_t namelen,
// Check if the link operation failed
if (link3 < 0)
{
- s5_remove_dirent(VNODE_TO_S5NODE(new_vnode), ".", 1, VNODE_TO_S5FS(dir));
- s5_remove_dirent(VNODE_TO_S5NODE(new_vnode), "..", 2, VNODE_TO_S5FS(dir));
- s5_free_inode(s5fs, inode_num);
+ // s5_remove_dirent(VNODE_TO_S5NODE(new_vnode), ".", 1, VNODE_TO_S5FS(dir));
+ // s5_remove_dirent(VNODE_TO_S5NODE(new_vnode), "..", 2, VNODE_TO_S5FS(dir));
+ // s5_free_inode(s5fs, inode_num);
vput_locked(&new_vnode);
return link3;
}
diff --git a/kernel/fs/s5fs/s5fs_subr.c b/kernel/fs/s5fs/s5fs_subr.c
index 7b0af30..731e424 100644
--- a/kernel/fs/s5fs/s5fs_subr.c
+++ b/kernel/fs/s5fs/s5fs_subr.c
@@ -846,7 +846,7 @@ long s5_link(s5_node_t *dir, const char *name, size_t namelen,
child->dirtied_inode = 1;
// dir->inode.s5_un.s5_size += sizeof(s5_dirent_t);
- dir->dirtied_inode = 1;
+ // dir->dirtied_inode = 1;
// Assert that the directory entry exists and that its inode is, as expected, the inode of child
KASSERT(s5_find_dirent(dir, name, namelen, NULL) == child->inode.s5_number);