From Jérôme Duval <jerome.duval@xxxxxxxxx>:
Jérôme Duval has uploaded this change for review. (
https://review.haiku-os.org/c/haiku/+/5400 ;)
Change subject: ext2: check volume state when mounting
......................................................................
ext2: check volume state when mounting
we deny mounting read/write when not clean or with errors.
---
M src/add-ons/kernel/file_systems/ext2/Volume.cpp
M src/add-ons/kernel/file_systems/ext2/ext2.h
2 files changed, 13 insertions(+), 3 deletions(-)
git pull ssh://git.haiku-os.org:22/haiku refs/changes/00/5400/1
diff --git a/src/add-ons/kernel/file_systems/ext2/Volume.cpp
b/src/add-ons/kernel/file_systems/ext2/Volume.cpp
index dff0520..a98b572 100644
--- a/src/add-ons/kernel/file_systems/ext2/Volume.cpp
+++ b/src/add-ons/kernel/file_systems/ext2/Volume.cpp
@@ -168,6 +168,16 @@
if (!_VerifySuperBlock())
return B_ERROR;
+ if ((fSuperBlock.State() & EXT2_FS_STATE_VALID) == 0
+ || (fSuperBlock.State() & EXT2_FS_STATE_ERROR) != 0) {
+ if (!IsReadOnly()) {
+ FATAL("Volume::Mount(): can't mount R/W, volume not
clean\n");
+ return status;
+ } else {
+ FATAL("Volume::Mount(): warning: volume not clean\n");
+ }
+ }
+
// initialize short hands to the superblock (to save byte swapping)
fBlockShift = fSuperBlock.BlockShift();
if (fBlockShift < 10 || fBlockShift > 16)
diff --git a/src/add-ons/kernel/file_systems/ext2/ext2.h
b/src/add-ons/kernel/file_systems/ext2/ext2.h
index 3b4e4f0..a307bb8 100644
--- a/src/add-ons/kernel/file_systems/ext2/ext2.h
+++ b/src/add-ons/kernel/file_systems/ext2/ext2.h
@@ -171,9 +171,9 @@
#define EXT2_MAX_REVISION EXT2_DYNAMIC_REVISION
-#define EXT2_FS_STATE_VALID 1 // File system was cleanly
unmounted
-#define EXT2_FS_STATE_ERROR 2 // File system has errors
-#define EXT2_FS_STATE_ORPHAN 3 // Orphans are being recovered
+#define EXT2_FS_STATE_VALID 0x1 // File system was cleanly
unmounted
+#define EXT2_FS_STATE_ERROR 0x2 // File system has errors
+#define EXT2_FS_STATE_ORPHAN 0x4 // Orphans are being recovered
// compatible features
#define EXT2_FEATURE_DIRECTORY_PREALLOCATION 0x0001
--
To view, visit https://review.haiku-os.org/c/haiku/+/5400
To unsubscribe, or for help writing mail filters, visit
https://review.haiku-os.org/settings
Gerrit-Project: haiku
Gerrit-Branch: master
Gerrit-Change-Id: Ie0188319618d9d8e7199b308c007fbaeacaed87c
Gerrit-Change-Number: 5400
Gerrit-PatchSet: 1
Gerrit-Owner: Jérôme Duval <jerome.duval@xxxxxxxxx>
Gerrit-MessageType: newchange