1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-31 13:18:13 +00:00

Kernel/Ext2FS: Avoid temporary String allocation during inode creation

Make sure we pass the StringView we get all the way through so it never
turns into a heap-allocated String. :^)
This commit is contained in:
Andreas Kling 2021-08-28 22:24:53 +02:00
parent 4ce99e4ab7
commit 4cbe348a0f
2 changed files with 4 additions and 4 deletions

View file

@ -1539,7 +1539,7 @@ KResult Ext2FS::set_block_allocation_state(BlockIndex block_index, bool new_stat
return update_bitmap_block(bgd.bg_block_bitmap, bit_index, new_state, m_super_block.s_free_blocks_count, bgd.bg_free_blocks_count); return update_bitmap_block(bgd.bg_block_bitmap, bit_index, new_state, m_super_block.s_free_blocks_count, bgd.bg_free_blocks_count);
} }
KResult Ext2FS::create_directory(Ext2FSInode& parent_inode, const String& name, mode_t mode, UserID uid, GroupID gid) KResult Ext2FS::create_directory(Ext2FSInode& parent_inode, StringView name, mode_t mode, UserID uid, GroupID gid)
{ {
MutexLocker locker(m_lock); MutexLocker locker(m_lock);
VERIFY(is_directory(mode)); VERIFY(is_directory(mode));
@ -1569,7 +1569,7 @@ KResult Ext2FS::create_directory(Ext2FSInode& parent_inode, const String& name,
return KSuccess; return KSuccess;
} }
KResultOr<NonnullRefPtr<Inode>> Ext2FS::create_inode(Ext2FSInode& parent_inode, const String& name, mode_t mode, dev_t dev, UserID uid, GroupID gid) KResultOr<NonnullRefPtr<Inode>> Ext2FS::create_inode(Ext2FSInode& parent_inode, StringView name, mode_t mode, dev_t dev, UserID uid, GroupID gid)
{ {
if (name.length() > EXT2_NAME_LEN) if (name.length() > EXT2_NAME_LEN)
return ENAMETOOLONG; return ENAMETOOLONG;

View file

@ -130,8 +130,8 @@ private:
virtual StringView class_name() const override { return "Ext2FS"sv; } virtual StringView class_name() const override { return "Ext2FS"sv; }
virtual Ext2FSInode& root_inode() override; virtual Ext2FSInode& root_inode() override;
RefPtr<Inode> get_inode(InodeIdentifier) const; RefPtr<Inode> get_inode(InodeIdentifier) const;
KResultOr<NonnullRefPtr<Inode>> create_inode(Ext2FSInode& parent_inode, const String& name, mode_t, dev_t, UserID, GroupID); KResultOr<NonnullRefPtr<Inode>> create_inode(Ext2FSInode& parent_inode, StringView name, mode_t, dev_t, UserID, GroupID);
KResult create_directory(Ext2FSInode& parent_inode, const String& name, mode_t, UserID, GroupID); KResult create_directory(Ext2FSInode& parent_inode, StringView name, mode_t, UserID, GroupID);
virtual void flush_writes() override; virtual void flush_writes() override;
BlockIndex first_block_index() const; BlockIndex first_block_index() const;