diff options
Diffstat (limited to 'kernel/fs/s5fs')
-rw-r--r-- | kernel/fs/s5fs/s5fs.c | 16 | ||||
-rw-r--r-- | kernel/fs/s5fs/s5fs_subr.c | 6 |
2 files changed, 11 insertions, 11 deletions
diff --git a/kernel/fs/s5fs/s5fs.c b/kernel/fs/s5fs/s5fs.c index ba406e7..8fdfc7b 100644 --- a/kernel/fs/s5fs/s5fs.c +++ b/kernel/fs/s5fs/s5fs.c @@ -306,7 +306,7 @@ static void s5fs_delete_vnode(fs_t *fs, vnode_t *vn) { // Write the inode back to disk and return pframe_t *pf; - s5_get_meta_disk_block(FS_TO_S5FS(fs), S5_INODE_BLOCK(vn->vn_vno), 0, &pf); + s5_get_meta_disk_block(FS_TO_S5FS(fs), S5_INODE_BLOCK(vn->vn_vno), 1, &pf); // // Check if the page frame was not found // if (err < 0) // { @@ -481,7 +481,7 @@ static long s5fs_mknod(struct vnode *dir, const char *name, size_t namelen, } // Link the new inode/vnode to the parent directory - long link = s5_link(dir, name, namelen, VNODE_TO_S5NODE(new_vnode)); + long link = s5_link(VNODE_TO_S5NODE(dir), name, namelen, VNODE_TO_S5NODE(new_vnode)); // Check if the link operation failed if (link < 0) { @@ -700,7 +700,7 @@ static long s5fs_rename(vnode_t *olddir, const char *oldname, size_t oldnamelen, } // Remove the old directory entry - s5_remove_dirent(s5_node, oldname, oldnamelen, filepos); + s5_remove_dirent(s5_node, oldname, oldnamelen, VNODE_TO_S5NODE(olddir)); // Check if this failed (TODO: ask in hours) return link; @@ -741,7 +741,7 @@ static long s5fs_rename(vnode_t *olddir, const char *oldname, size_t oldnamelen, } // Remove the old directory entry - s5_remove_dirent(s5_node, oldname, oldnamelen, filepos); + s5_remove_dirent(s5_node, oldname, oldnamelen, VNODE_TO_S5NODE(olddir)); vput_locked(&child); vput_locked(&new_child); @@ -819,7 +819,7 @@ 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, 0); + s5_remove_dirent(VNODE_TO_S5NODE(new_vnode), ".", 1, VNODE_TO_S5FS(dir)); vput(new_vnode); s5_free_inode(s5fs, inode_num); return link2; @@ -835,8 +835,8 @@ 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, 0); - s5_remove_dirent(VNODE_TO_S5NODE(new_vnode), "..", 2, 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)); vput(new_vnode); s5_free_inode(s5fs, inode_num); return link3; @@ -973,7 +973,7 @@ static long s5fs_stat(vnode_t *vnode, stat_t *ss) s5_inode_t *s5_inode = &VNODE_TO_S5NODE(vnode)->inode; // Initialize the stat struct - ss->st_blocks = s5_inode_blocks(vnode); + ss->st_blocks = s5_inode_blocks(VNODE_TO_S5NODE(vnode)); ss->st_mode = vnode->vn_mode; ss->st_rdev = vnode->vn_devid; ss->st_ino = s5_inode->s5_number; diff --git a/kernel/fs/s5fs/s5fs_subr.c b/kernel/fs/s5fs/s5fs_subr.c index f092d0a..6e89249 100644 --- a/kernel/fs/s5fs/s5fs_subr.c +++ b/kernel/fs/s5fs/s5fs_subr.c @@ -242,7 +242,7 @@ long s5_file_block_to_disk_block(s5_node_t *sn, size_t file_blocknum, } // Update the inode indirect_block[indirect_block_index] = alloced_blocknum; - sn->dirtied_inode = 1; + // sn->dirtied_inode = 1; // set ret params and return *newp = 1; @@ -408,8 +408,8 @@ ssize_t s5_write_file(s5_node_t *sn, size_t pos, const char *buf, size_t len) if (err < 0) { // Restore pos - sn->vnode.vn_len += bytes_written; - sn->inode.s5_un.s5_size += bytes_written; + sn->vnode.vn_len -= bytes_written; + sn->inode.s5_un.s5_size -= bytes_written; return err; } |