From aacb3e0193c4942b98dbc213db39847d0971715a Mon Sep 17 00:00:00 2001 From: Victor Date: Sat, 18 Nov 2023 01:10:48 -0800 Subject: [PATCH] change name init_inode to new_inode, return struct inode pointer --- include/files.h | 2 +- lib/files.cpp | 21 ++++++++++++--------- 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/include/files.h b/include/files.h index 678cea6..7e3882f 100644 --- a/include/files.h +++ b/include/files.h @@ -9,7 +9,7 @@ class FilesOperation { FilesOperation(RawDisk&); int read_datablock(INode& inode, u_int64_t index, char* buffer); int write_datablock(INode& inode, u_int64_t index, char* buffer); - void init_inode(u_int64_t inode_number, u_int64_t permissions); + INode* new_inode(u_int64_t inode_number, u_int64_t permissions); void initialize_rootinode(); u_int64_t mkfile(u_int64_t parent_inode_number, const char* name, u_int64_t permissions); u_int64_t namei(const char* path); diff --git a/lib/files.cpp b/lib/files.cpp index 525b376..6ca996a 100644 --- a/lib/files.cpp +++ b/lib/files.cpp @@ -72,22 +72,25 @@ int FilesOperation::write_datablock(INode& inode, u_int64_t index, char* buffer) } } -void FilesOperation::init_inode(u_int64_t inode_number, u_int64_t permissions) { +INode* FilesOperation::new_inode(u_int64_t inode_number, u_int64_t permissions) { // zero out disk space of inode, because in memory inode is uninitialized by default char buffer[SECTOR_SIZE] = {0}; disk.rawdisk_write(inode_number*SECTOR_SIZE, buffer, sizeof(buffer)); - INode inode; - inode.inode_construct(inode_number, disk); - inode.block_number = inode_number; - inode.permissions = permissions; - inode.inode_save(disk); + INode *inode = new INode; + inode->inode_construct(inode_number, disk); + inode->block_number = inode_number; + inode->permissions = permissions; + inode->inode_save(disk); + + return inode; } void FilesOperation::initialize_rootinode() { // this method must be called explicitly right after initializion root_inode = inop.inode_allocate(disk); printf("Info: root inode number: %llu\n", root_inode); - init_inode(root_inode, 1); + INode *get_inode = new_inode(root_inode, 1); + delete get_inode; } u_int64_t FilesOperation::mkfile(u_int64_t parent_inode_number, const char* name, u_int64_t permissions) { @@ -127,8 +130,8 @@ u_int64_t FilesOperation::mkfile(u_int64_t parent_inode_number, const char* name inode.inode_save(disk); // initialize new file - init_inode(new_inode_number, permissions); - + INode *get_inode = new_inode(new_inode_number, permissions); + delete get_inode; return new_inode_number; }