forked from Bananymous/banan-os
				
			
			update main #1
			
				
			
		
		
		
	| 
						 | 
				
			
			@ -69,7 +69,7 @@ namespace Kernel
 | 
			
		|||
 | 
			
		||||
		BAN::ErrorOr<uint32_t> reserve_free_block(uint32_t primary_bgd);
 | 
			
		||||
 | 
			
		||||
		BAN::HashMap<ino_t, BAN::RefPtr<Inode>>& inode_cache() { return m_inode_cache; }
 | 
			
		||||
		BAN::HashMap<ino_t, BAN::RefPtr<Ext2Inode>>& inode_cache() { return m_inode_cache; }
 | 
			
		||||
 | 
			
		||||
		const Ext2::Superblock& superblock() const { return m_superblock; }
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -110,7 +110,7 @@ namespace Kernel
 | 
			
		|||
		BAN::RefPtr<Inode> m_root_inode;
 | 
			
		||||
		BAN::Vector<uint32_t> m_superblock_backups;
 | 
			
		||||
 | 
			
		||||
		BAN::HashMap<ino_t, BAN::RefPtr<Inode>> m_inode_cache;
 | 
			
		||||
		BAN::HashMap<ino_t, BAN::RefPtr<Ext2Inode>> m_inode_cache;
 | 
			
		||||
 | 
			
		||||
		BlockBufferManager m_buffer_manager;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -53,7 +53,7 @@ namespace Kernel
 | 
			
		|||
			, m_inode(inode)
 | 
			
		||||
			, m_ino(ino)
 | 
			
		||||
		{}
 | 
			
		||||
		static BAN::ErrorOr<BAN::RefPtr<Inode>> create(Ext2FS&, uint32_t);
 | 
			
		||||
		static BAN::ErrorOr<BAN::RefPtr<Ext2Inode>> create(Ext2FS&, uint32_t);
 | 
			
		||||
 | 
			
		||||
	private:
 | 
			
		||||
		Ext2FS& m_fs;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -21,7 +21,7 @@ namespace Kernel
 | 
			
		|||
		return (m_ino - 1) / m_fs.superblock().blocks_per_group;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	BAN::ErrorOr<BAN::RefPtr<Inode>> Ext2Inode::create(Ext2FS& fs, uint32_t inode_ino)
 | 
			
		||||
	BAN::ErrorOr<BAN::RefPtr<Ext2Inode>> Ext2Inode::create(Ext2FS& fs, uint32_t inode_ino)
 | 
			
		||||
	{
 | 
			
		||||
		if (fs.inode_cache().contains(inode_ino))
 | 
			
		||||
			return fs.inode_cache()[inode_ino];
 | 
			
		||||
| 
						 | 
				
			
			@ -36,7 +36,7 @@ namespace Kernel
 | 
			
		|||
		Ext2Inode* result_ptr = new Ext2Inode(fs, inode, inode_ino);
 | 
			
		||||
		if (result_ptr == nullptr)
 | 
			
		||||
			return BAN::Error::from_errno(ENOMEM);
 | 
			
		||||
		auto result = BAN::RefPtr<Inode>::adopt(result_ptr);
 | 
			
		||||
		auto result = BAN::RefPtr<Ext2Inode>::adopt(result_ptr);
 | 
			
		||||
		TRY(fs.inode_cache().insert(inode_ino, result));
 | 
			
		||||
		return result;
 | 
			
		||||
	}
 | 
			
		||||
| 
						 | 
				
			
			@ -589,7 +589,7 @@ needs_new_block:
 | 
			
		|||
				const auto& entry = *(const Ext2::LinkedDirectoryEntry*)entry_addr;
 | 
			
		||||
				BAN::StringView entry_name(entry.name, entry.name_len);
 | 
			
		||||
				if (entry.inode && entry_name == file_name)
 | 
			
		||||
					return TRY(Ext2Inode::create(m_fs, entry.inode));
 | 
			
		||||
					return BAN::RefPtr<Inode>(TRY(Ext2Inode::create(m_fs, entry.inode)));
 | 
			
		||||
				entry_addr += entry.rec_len;
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue