[haiku-commits] haiku: hrev54157 - src/add-ons/kernel/file_systems/ext2

  • From: Jérôme Duval <jerome.duval@xxxxxxxxx>
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Sat, 9 May 2020 04:36:15 -0400 (EDT)

hrev54157 adds 1 changeset to branch 'master'
old head: 4bd6250035acae76540b58c380555236a8dfd4e0
new head: 8d9eff5881f3eb9d772d81f73dbbde2f2afb626b
overview: 
https://git.haiku-os.org/haiku/log/?qt=range&q=8d9eff5881f3+%5E4bd6250035ac

----------------------------------------------------------------------------

8d9eff5881f3: ext2: report ext2/3/4 fs name depending on available features
  
  Should help with #12157.
  
  Change-Id: I7ea0310957c06606bc66a289afe8c3a78540a803
  Reviewed-on: https://review.haiku-os.org/c/haiku/+/2610
  Reviewed-by: Kyle Ambroff-Kao <kyle@xxxxxxxxxxxxxx>
  Reviewed-by: Jérôme Duval <jerome.duval@xxxxxxxxx>

                             [ Adrien Destugues <pulkomandy@xxxxxxxxxxxxx> ]

----------------------------------------------------------------------------

Revision:    hrev54157
Commit:      8d9eff5881f3eb9d772d81f73dbbde2f2afb626b
URL:         https://git.haiku-os.org/haiku/commit/?id=8d9eff5881f3
Author:      Adrien Destugues <pulkomandy@xxxxxxxxxxxxx>
Date:        Fri May  8 19:29:57 2020 UTC
Committer:   Jérôme Duval <jerome.duval@xxxxxxxxx>
Commit-Date: Sat May  9 08:36:12 2020 UTC

Ticket:      https://dev.haiku-os.org/ticket/12157

----------------------------------------------------------------------------

3 files changed, 10 insertions(+), 3 deletions(-)
src/add-ons/kernel/file_systems/ext2/Volume.cpp           | 3 +--
src/add-ons/kernel/file_systems/ext2/Volume.h             | 3 +++
src/add-ons/kernel/file_systems/ext2/kernel_interface.cpp | 7 ++++++-

----------------------------------------------------------------------------

diff --git a/src/add-ons/kernel/file_systems/ext2/Volume.cpp 
b/src/add-ons/kernel/file_systems/ext2/Volume.cpp
index cf9bff9347..f89e8173a4 100644
--- a/src/add-ons/kernel/file_systems/ext2/Volume.cpp
+++ b/src/add-ons/kernel/file_systems/ext2/Volume.cpp
@@ -401,8 +401,7 @@ Volume::Mount(const char* deviceName, uint32 flags)
        TRACE("Volume::Mount(): Initialized block cache: %p\n", fBlockCache);
 
        // initialize journal if mounted read-write
-       if (!IsReadOnly() &&
-               (fSuperBlock.CompatibleFeatures() & EXT2_FEATURE_HAS_JOURNAL) 
!= 0) {
+       if (!IsReadOnly() && HasJournalFeature()) {
                // TODO: There should be a mount option to ignore the existent 
journal
                if (fSuperBlock.JournalInode() != 0) {
                        fJournalInode = new(std::nothrow) Inode(this,
diff --git a/src/add-ons/kernel/file_systems/ext2/Volume.h 
b/src/add-ons/kernel/file_systems/ext2/Volume.h
index 37618dbe88..369b88394e 100644
--- a/src/add-ons/kernel/file_systems/ext2/Volume.h
+++ b/src/add-ons/kernel/file_systems/ext2/Volume.h
@@ -80,6 +80,9 @@ public:
                        bool                            IndexedDirectories() 
const
                                                                { return 
(fSuperBlock.CompatibleFeatures()
                                                                        & 
EXT2_FEATURE_DIRECTORY_INDEX) != 0; }
+                       bool                            HasJournalFeature() 
const
+                                                               { return 
(fSuperBlock.CompatibleFeatures()
+                                                                       & 
EXT2_FEATURE_HAS_JOURNAL) != 0; }
                        bool                            Has64bitFeature() const
                                                                { return 
(fSuperBlock.IncompatibleFeatures()
                                                                        & 
EXT2_INCOMPATIBLE_FEATURE_64BIT) != 0; }
diff --git a/src/add-ons/kernel/file_systems/ext2/kernel_interface.cpp 
b/src/add-ons/kernel/file_systems/ext2/kernel_interface.cpp
index 1bc83cd64e..e1e47ac4a2 100644
--- a/src/add-ons/kernel/file_systems/ext2/kernel_interface.cpp
+++ b/src/add-ons/kernel/file_systems/ext2/kernel_interface.cpp
@@ -175,7 +175,12 @@ ext2_read_fs_info(fs_volume* _volume, struct fs_info* info)
        strlcpy(info->volume_name, volume->Name(), sizeof(info->volume_name));
 
        // File system name
-       strlcpy(info->fsh_name, "ext2", sizeof(info->fsh_name));
+       if (volume->HasExtentsFeature())
+               strlcpy(info->fsh_name, "ext4", sizeof(info->fsh_name));
+       else if (volume->HasJournalFeature())
+               strlcpy(info->fsh_name, "ext3", sizeof(info->fsh_name));
+       else
+               strlcpy(info->fsh_name, "ext2", sizeof(info->fsh_name));
 
        return B_OK;
 }


Other related posts:

  • » [haiku-commits] haiku: hrev54157 - src/add-ons/kernel/file_systems/ext2 - Jérôme Duval