diff options
author | sotech117 <michael_foiani@brown.edu> | 2024-05-15 10:23:17 +0000 |
---|---|---|
committer | sotech117 <michael_foiani@brown.edu> | 2024-05-15 10:23:17 +0000 |
commit | 919b7f666b9c85699d8d38d3957f9f4a8ebfedc9 (patch) | |
tree | ddb2fe6fd8484af85faffc3ac60d66c0e690c394 | |
parent | 883711347e22d9e21c6510fa987d3a05779d6fac (diff) |
more s5fix
-rw-r--r-- | kernel/fs/s5fs/s5fs.c | 18 | ||||
-rw-r--r-- | kernel/fs/s5fs/s5fs_subr.c | 2 |
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); |