bug#77887: libparted detects ext4 without journal as ext2

Pascal Hambourg <[email protected]> Thu, 17 Apr 2025 22:06:30 +0200
Newsgroups gmane.comp.gnu.parted.bugs
Organization Plouf !
Message-ID <[email protected]>
This is a multi-part message in MIME format.
--------------Wk2tTdeuI0L5QDDFH60gWqdN
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

Package: parted
Version: 3.6
Severity: minor
Tags: patch easy

Reference: <https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1103454>

Dear maintainers,

libparted wrongly detects ext4 without journal as ext2 instead of ext4.
Steps to reproduce:

truncate -s 1G blob
mkfs.ext4 -O ^has_journal blob
blkid blob -> ext4
parted blob print -> ext2
mount -t ext2 blob /mnt -> "couldn't mount as ext2 due to feature 
incompatibilities"
mount -t ext4 blob /mnt -> ok

In libparted/fs/ext2/interface.c, _ext2_generic_probe() considers ext4 
as a subset of ext3 which is ext2 with journal. IMO this is wrong 
because ext4 without journal may have other incompatible features.

Please consider the attached trivial patch (untested).
--------------Wk2tTdeuI0L5QDDFH60gWqdN
Content-Type: text/x-patch; charset=UTF-8; name="detect-ext4-nojournal.patch"
Content-Disposition: attachment; filename="detect-ext4-nojournal.patch"
Content-Transfer-Encoding: base64

RnJvbSBhMjdkYjhkMzE3YzcxZGJhYWNkNTE0NzU3MjEzNjFiZmI0MDQxNTJiIE1vbiBTZXAg
MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQYXNjYWwgSGFtYm91cmcgPHBhc2NhbEBwbG91Zi5m
ci5ldS5vcmc+CkRhdGU6IFRodSwgMTcgQXByIDIwMjUgMTg6NDI6MzMgKzAyMDAKU3ViamVj
dDogW1BBVENIXSBsaWJwYXJ0ZWQ6IERvIG5vdCBkZXRlY3QgZXh0NCB3aXRob3V0IGpvdXJu
YWwgYXMgZXh0MgoKZXh0NCBtYXkgaGF2ZSBvdGhlciBpbmNvbXBhdGlibGUgZmVhdHVyZXMg
dGhhbiBqb3VybmFsIGFuZCBjYW5ub3QgYmUKbW91bnRlZCBhcyBleHQyIGJ5IGxpbnV4LCBz
byBkZXRlY3QgaXQgYXMgZXh0NCBldmVuIHdpdGhvdXQgam91cm5hbAppZiBpdCBoYXMgb3Ro
ZXIgaW5jb21wYXRpYmxlIGZlYXR1cmVzLgotLS0KIGxpYnBhcnRlZC9mcy9leHQyL2ludGVy
ZmFjZS5jIHwgMzMgKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tCiAxIGZpbGUg
Y2hhbmdlZCwgMTUgaW5zZXJ0aW9ucygrKSwgMTggZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0
IGEvbGlicGFydGVkL2ZzL2V4dDIvaW50ZXJmYWNlLmMgYi9saWJwYXJ0ZWQvZnMvZXh0Mi9p
bnRlcmZhY2UuYwppbmRleCA3ZTBiMTk3NC4uNWY2NGFiMzcgMTAwNjQ0Ci0tLSBhL2xpYnBh
cnRlZC9mcy9leHQyL2ludGVyZmFjZS5jCisrKyBiL2xpYnBhcnRlZC9mcy9leHQyL2ludGVy
ZmFjZS5jCkBAIC01MiwyNCArNTIsMjEgQEAgX2V4dDJfZ2VuZXJpY19wcm9iZSAoUGVkR2Vv
bWV0cnkqIGdlb20sIGludCBleHBlY3RfZXh0X3ZlcikKIAkJaW50IGlzX2V4dDMgPSAwOwog
CQlpbnQgaXNfZXh0NCA9IDA7CiAKLQkJaXNfZXh0MyA9IChFWFQyX1NVUEVSX0ZFQVRVUkVf
Q09NUEFUICgqc2IpCi0JCQkgICAmIEVYVDNfRkVBVFVSRV9DT01QQVRfSEFTX0pPVVJOQUwp
ICE9IDA7Ci0JCWlmIChpc19leHQzKSB7Ci0JCQlpc19leHQ0ID0gKChFWFQyX1NVUEVSX0ZF
QVRVUkVfUk9fQ09NUEFUICgqc2IpCi0JCQkJICAgICYgRVhUNF9GRUFUVVJFX1JPX0NPTVBB
VF9IVUdFX0ZJTEUpCi0JCQkJICAgfHwgKEVYVDJfU1VQRVJfRkVBVFVSRV9ST19DT01QQVQg
KCpzYikKLQkJCQkgICAgICAgJiBFWFQ0X0ZFQVRVUkVfUk9fQ09NUEFUX0dEVF9DU1VNKQot
CQkJCSAgIHx8IChFWFQyX1NVUEVSX0ZFQVRVUkVfUk9fQ09NUEFUICgqc2IpCi0JCQkJICAg
ICAgICYgRVhUNF9GRUFUVVJFX1JPX0NPTVBBVF9ESVJfTkxJTkspCi0JCQkJICAgfHwgKEVY
VDJfU1VQRVJfRkVBVFVSRV9JTkNPTVBBVCAoKnNiKQotCQkJCSAgICAgICAmIEVYVDRfRkVB
VFVSRV9JTkNPTVBBVF9FWFRFTlRTKQotCQkJCSAgIHx8IChFWFQyX1NVUEVSX0ZFQVRVUkVf
SU5DT01QQVQgKCpzYikKLQkJCQkgICAgICAgJiBFWFQ0X0ZFQVRVUkVfSU5DT01QQVRfNjRC
SVQpCi0JCQkJICAgfHwgKEVYVDJfU1VQRVJfRkVBVFVSRV9JTkNPTVBBVCAoKnNiKQotCQkJ
CSAgICAgICAmIEVYVDRfRkVBVFVSRV9JTkNPTVBBVF9GTEVYX0JHKSk7Ci0JCQlpZiAoaXNf
ZXh0NCkKLQkJCQlpc19leHQzID0gMDsKLQkJfQorCQlpc19leHQ0ID0gKChFWFQyX1NVUEVS
X0ZFQVRVUkVfUk9fQ09NUEFUICgqc2IpCisJCQkgICAgJiBFWFQ0X0ZFQVRVUkVfUk9fQ09N
UEFUX0hVR0VfRklMRSkKKwkJCSAgIHx8IChFWFQyX1NVUEVSX0ZFQVRVUkVfUk9fQ09NUEFU
ICgqc2IpCisJCQkgICAgICAgJiBFWFQ0X0ZFQVRVUkVfUk9fQ09NUEFUX0dEVF9DU1VNKQor
CQkJICAgfHwgKEVYVDJfU1VQRVJfRkVBVFVSRV9ST19DT01QQVQgKCpzYikKKwkJCSAgICAg
ICAmIEVYVDRfRkVBVFVSRV9ST19DT01QQVRfRElSX05MSU5LKQorCQkJICAgfHwgKEVYVDJf
U1VQRVJfRkVBVFVSRV9JTkNPTVBBVCAoKnNiKQorCQkJICAgICAgICYgRVhUNF9GRUFUVVJF
X0lOQ09NUEFUX0VYVEVOVFMpCisJCQkgICB8fCAoRVhUMl9TVVBFUl9GRUFUVVJFX0lOQ09N
UEFUICgqc2IpCisJCQkgICAgICAgJiBFWFQ0X0ZFQVRVUkVfSU5DT01QQVRfNjRCSVQpCisJ
CQkgICB8fCAoRVhUMl9TVVBFUl9GRUFUVVJFX0lOQ09NUEFUICgqc2IpCisJCQkgICAgICAg
JiBFWFQ0X0ZFQVRVUkVfSU5DT01QQVRfRkxFWF9CRykpOworCQlpZiAoIWlzX2V4dDQpCisJ
CQlpc19leHQzID0gKEVYVDJfU1VQRVJfRkVBVFVSRV9DT01QQVQgKCpzYikKKwkJCQkgICAm
IEVYVDNfRkVBVFVSRV9DT01QQVRfSEFTX0pPVVJOQUwpICE9IDA7CiAJCWlmIChleHBlY3Rf
ZXh0X3ZlciA9PSAyICYmIChpc19leHQzIHx8IGlzX2V4dDQpKQogCQkJcmV0dXJuIE5VTEw7
CiAJCWlmIChleHBlY3RfZXh0X3ZlciA9PSAzICYmICFpc19leHQzKQotLSAKMi4zOS41Cgo=


--------------Wk2tTdeuI0L5QDDFH60gWqdN--