From 4f1fb377b55f04399dd9520ca8ff6122a0703887 Mon Sep 17 00:00:00 2001 From: sotech117 Date: Thu, 25 Apr 2024 16:04:44 +0000 Subject: s5 hopes --- kernel/fs/s5fs/s5fs.c | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) (limited to 'kernel/fs/s5fs/s5fs.c') diff --git a/kernel/fs/s5fs/s5fs.c b/kernel/fs/s5fs/s5fs.c index 2bcec7d..819b106 100644 --- a/kernel/fs/s5fs/s5fs.c +++ b/kernel/fs/s5fs/s5fs.c @@ -221,9 +221,15 @@ static void s5fs_read_vnode(fs_t *fs, vnode_t *vn) // Update linkcount s5_inode->s5_linkcount++; - // Get the inode from the disk + // Get the page frame for the inode pframe_t *pf; - s5_get_file_disk_block(vn, S5_INODE_BLOCK(vn->vn_vno), S5_INODE_OFFSET(vn->vn_vno), 0, &pf); + long err = s5fs_get_pframe(vn, &vn->vn_mobj, 0, &pf); + // Check if the page frame was not found + if (err < 0) + { + return; + } + // Copy the inode from the page frame memcpy(s5_inode, pf->pf_addr, sizeof(s5_inode_t)); // Release the disk block @@ -300,7 +306,13 @@ static void s5fs_delete_vnode(fs_t *fs, vnode_t *vn) { // Write the inode back to disk and return pframe_t *pf; - s5_get_file_disk_block(vn, S5_INODE_BLOCK(vn->vn_vno), S5_INODE_OFFSET(vn->vn_vno), 1, &pf); + long err = s5fs_get_pframe(vn, &vn->vn_mobj, 1, &pf); + // Check if the page frame was not found + if (err < 0) + { + return; + } + // Copy the inode to the page frame memcpy(pf->pf_addr, s5_inode, sizeof(s5_inode_t)); s5_release_disk_block(&pf); return; -- cgit v1.2.3-70-g09d2