From 280d5feac94e8053dbd9bfeae6e7520dba77ae0d Mon Sep 17 00:00:00 2001 From: implicitfield <114500360+implicitfield@users.noreply.github.com> Date: Wed, 3 Jan 2024 17:04:14 +0400 Subject: [PATCH] Kernel/Ext2: Allow checking for the presence of extended attributes --- Kernel/FileSystem/Ext2FS/FileSystem.cpp | 7 +++++++ Kernel/FileSystem/Ext2FS/FileSystem.h | 8 ++++++++ 2 files changed, 15 insertions(+) diff --git a/Kernel/FileSystem/Ext2FS/FileSystem.cpp b/Kernel/FileSystem/Ext2FS/FileSystem.cpp index 7dc9ff3ac70890..63dd488f981296 100644 --- a/Kernel/FileSystem/Ext2FS/FileSystem.cpp +++ b/Kernel/FileSystem/Ext2FS/FileSystem.cpp @@ -214,6 +214,13 @@ u8 Ext2FS::internal_file_type_to_directory_entry_type(DirectoryEntryView const& } } +Ext2FS::FeaturesOptional Ext2FS::get_features_optional() const +{ + if (m_super_block.s_rev_level > 0) + return static_cast(m_super_block.s_feature_compat); + return Ext2FS::FeaturesOptional::None; +} + Ext2FS::FeaturesReadOnly Ext2FS::get_features_readonly() const { if (m_super_block.s_rev_level > 0) diff --git a/Kernel/FileSystem/Ext2FS/FileSystem.h b/Kernel/FileSystem/Ext2FS/FileSystem.h index 586346028cd21b..3240638135dc2f 100644 --- a/Kernel/FileSystem/Ext2FS/FileSystem.h +++ b/Kernel/FileSystem/Ext2FS/FileSystem.h @@ -22,6 +22,13 @@ class Ext2FS final : public BlockBasedFileSystem { friend class Ext2FSInode; public: + // s_feature_compat + enum class FeaturesOptional : u32 { + None = 0, + ExtendedAttributes = EXT2_FEATURE_COMPAT_EXT_ATTR, + }; + AK_ENUM_BITWISE_FRIEND_OPERATORS(FeaturesOptional); + // s_feature_ro_compat enum class FeaturesReadOnly : u32 { None = 0, @@ -43,6 +50,7 @@ class Ext2FS final : public BlockBasedFileSystem { virtual u8 internal_file_type_to_directory_entry_type(DirectoryEntryView const& entry) const override; + FeaturesOptional get_features_optional() const; FeaturesReadOnly get_features_readonly() const; virtual StringView class_name() const override { return "Ext2FS"sv; }