On Fri, Feb 26, 2021 at 04:58:23PM -0800, Amy Parker wrote: > Can you replicate this on modern 5.4 from kernel.org? -generic kernels > are from Canonical and are sometimes broken compared to upstream. If > you can't replicate this on mainline, you'll need to contact > Canonical. We can't do anything if the problem only persists on > distribution kernels. This has nothing to do with the kernel. What the user is complaining about is that e2fsck trusts the blocks count field in the superblock as to be a source of truth. If that field is artificially changed to be a smaller value, e2fsck will assume the file system size indicated by that changed size. That's an intentional design choice of e2fsck. Given that with modern ext4 file systems, we have metadata checksums, if the superblock has been accidentally corrupted, the checksum will fail, and then e2fsck will try using the backup superblock instead. For older file systems that don't have metadata checksums enabled, we could check to see if certain "fundamental constants" in the primary superblock is different from the secondary superblock, but... > > debugfs -w image > > debugfs: ssv blocks_count 4000 > > debugfs: q This will update the blocks_count in the primary and all secondary backups. So that's not going to really help the user. Effectively, the complaint is "I pointed the gun at my foot, and pulled the triggered, and now my foot hurts!" > > # Expected that e2fsck would fix the blocks count corruption instead of > > changing other fields (e.g.,free blocks_count) The problem is that e2fsck can't really determine that the blocks count field has been corrupted. We could warn the user if the blocks_count is smaller than the reported size of the device, but.... that's actually something that can happen in real life, and it's not necessarily a file system "corruption", but rather an intentional choice by the system administrator. If we were to give a warning, or worse, assume that blocks count should be adjusted to be the size of the deivce, we'd be getting complaints from users who deliberately chose to set the file system size to be something smaller than the block device. So this is a case of e2fsck is working as intended. Cheers, - Ted