diff options
author | sotech117 <michael_foiani@brown.edu> | 2024-05-14 03:19:46 +0000 |
---|---|---|
committer | sotech117 <michael_foiani@brown.edu> | 2024-05-14 03:19:46 +0000 |
commit | 06d50155ac0bd079bfca0f5728346d8beeb205f2 (patch) | |
tree | 2f20c8ba099304d6ea06fb76e8a0807b8afa5a5f /kernel/fs | |
parent | 7585cb5ad84babe9db8c6595de464e33fb878f0c (diff) |
weenix fixes
Diffstat (limited to 'kernel/fs')
-rw-r--r-- | kernel/fs/namev.c | 2 | ||||
-rw-r--r-- | kernel/fs/s5fs/s5fs.c | 2 | ||||
-rw-r--r-- | kernel/fs/s5fs/s5fs_subr.c | 6 | ||||
-rw-r--r-- | kernel/fs/vfs_syscall.c | 7 | ||||
-rw-r--r-- | kernel/fs/vnode_specials.c | 2 |
5 files changed, 12 insertions, 7 deletions
diff --git a/kernel/fs/namev.c b/kernel/fs/namev.c index 8e355d6..f443b2e 100644 --- a/kernel/fs/namev.c +++ b/kernel/fs/namev.c @@ -76,7 +76,7 @@ long namev_is_descendant(vnode_t *a, vnode_t *b) long namev_lookup(vnode_t *dir, const char *name, size_t namelen, vnode_t **res_vnode) { - // // NOT_YET_IMPLEMENTED("VFS: namev_lookup"); + // NOT_YET_IMPLEMENTED("VFS: namev_lookup"); // KASSERT(NULL != dir); // KASSERT(NULL != name); diff --git a/kernel/fs/s5fs/s5fs.c b/kernel/fs/s5fs/s5fs.c index 8fdfc7b..c40c6ff 100644 --- a/kernel/fs/s5fs/s5fs.c +++ b/kernel/fs/s5fs/s5fs.c @@ -307,7 +307,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), 1, &pf); - // // Check if the page frame was not found + // Check if the page frame was not found // if (err < 0) // { // return; diff --git a/kernel/fs/s5fs/s5fs_subr.c b/kernel/fs/s5fs/s5fs_subr.c index 6e89249..f092d0a 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; } diff --git a/kernel/fs/vfs_syscall.c b/kernel/fs/vfs_syscall.c index 245e55d..fc0878e 100644 --- a/kernel/fs/vfs_syscall.c +++ b/kernel/fs/vfs_syscall.c @@ -569,6 +569,10 @@ long do_link(const char *oldpath, const char *newpath) // NOT_YET_IMPLEMENTED("VFS: do_link"); // Resolve the oldpath + if (strlen(newpath) > NAME_LEN) + { + return -ENAMETOOLONG; + } vnode_t *old_vnode = NULL; long ret = namev_resolve(NULL, oldpath, &old_vnode); @@ -599,6 +603,7 @@ long do_link(const char *oldpath, const char *newpath) if (!S_ISDIR(dir->vn_mode)) { vput(&old_vnode); + vput(&dir); return -ENOTDIR; } // Check if name is too long @@ -610,7 +615,7 @@ long do_link(const char *oldpath, const char *newpath) // Lock the vnodes and call link vlock_in_order(old_vnode, dir); - ret = dir->vn_ops->link(old_vnode, dir, name, len); + ret = dir->vn_ops->link(dir, name, len, old_vnode); vunlock_in_order(old_vnode, dir); vput(&old_vnode); diff --git a/kernel/fs/vnode_specials.c b/kernel/fs/vnode_specials.c index d8c79bd..41d4ce2 100644 --- a/kernel/fs/vnode_specials.c +++ b/kernel/fs/vnode_specials.c @@ -224,4 +224,4 @@ static long blockdev_file_fill_pframe(vnode_t *file, pframe_t *pf) static long blockdev_file_flush_pframe(vnode_t *file, pframe_t *pf) { return -ENOTSUP; -} +}
\ No newline at end of file |