Thanks for the very nice repro!    I've created a fix which will be
going into the maint branch of the e2fsprogs tree.   The commit
description:

    resize2fs: update checksums in the extent tree's relocated block
    
    When shrinking an file system, and we need to relocate an inode, the
    checksums in its extent tree must get updated to reflect its new inode
    number.  When doing this, we need to do this *after* we update the
    extent tree to reflect any blocks which need to be relocated due to
    the file system shrink operation.
    
    Otherwise, in the case where only an interior node of the extent tree
    needs to get relocated, and none of the entries in that node need to
    be adjusted, the checksum for that interior node is updated in the old
    copy of that block, and then after the extent tree is updated to use
    the new copy of that interior node, the extent tree is left with an
    invalid checksum.
    
    This is a relatively rare case, since it requires the following
    conditions to be true:
    
    *)  The metadata checksum feature must be enabled.
    *)  An inode needs to be relocated.
    *)  The inode needs to have an interior node.
    *)  The block for that interior node needs to be relocated.
    *)  None of blocks addressed by entries in that interior node needs
        to be relocated.
    
    When all of these conditions are true, though, the file system is left
    with corrupted with bad checksum for the extent tree block.
    
    Addresses-Launchpad-Bug: 1798562
    
    Signed-off-by: Theodore Ts'o <ty...@mit.edu>
    Reported-by: Jean-Baptiste Lallement <jean-baptiste.lallem...@ubuntu.com>

I've tested e2fsprogs with this change and it fixes your repro.   I also
have a regression test in the subsequent commit which reproduces the
problem with a smaller test file system.

** Patch added: "resize2fs: update checksums in the extent tree's relocated 
block"
   
https://bugs.launchpad.net/ubuntu/+source/e2fsprogs/+bug/1798562/+attachment/5203340/+files/0001-resize2fs-update-checksums-in-the-extent-tree-s-relo.patch

-- 
You received this bug notification because you are a member of Ubuntu
Touch seeded packages, which is subscribed to e2fsprogs in Ubuntu.
https://bugs.launchpad.net/bugs/1798562

Title:
  After a side by side installation, resized filesystem is corrupted

Status in e2fsprogs package in Ubuntu:
  Confirmed

Bug description:
  Test Case 1:
  With e2fsprogs 1.44.4-2:

  Download this file system image:
  
https://bugs.launchpad.net/ubuntu/+source/e2fsprogs/+bug/1798562/+attachment/5203159/+files/vda1b.qcow2.bz

  Run the following commands:

  bunzip2 vda1b.qcow2.bz
  qemu-img convert vda1b.qcow2 vda1b.raw
  e2fsck -f vda1b.raw
  resize2fs vda1b.raw 6200M
  e2fsck -f vda1b.raw

  e2fsck 1.44.4 (18-Aug-2018)
  Pass 1: Checking inodes, blocks, and sizes
  Inode 45746 extent block passes checks, but checksum does not match extent
          (logical block 1272, physical block 466167, len 776)
  Fix<y>?

  
  Test Case 2 (Use case of the installer):
  1. Perform a first installation of Ubuntu
  2. Reboot into the freshly installed system and verify everything works as 
expected
  3. Do a second installation and select "Install alonogside". Keep the size 
proposed by the installer and proceed to the end of installation
  4. Reboot
  5. On boot, in the list of installed systems, select the first system 
installed on the machine
  6. Verify that it boots, you can login and it works as expected

  Actual Result
  The FS is corrupted and depending on the corruption it goes to initramfs, 
boots but cannot login, ...

  Attached is the journal of the system installed on the corrupted
  partition.

  ProblemType: Bug
  DistroRelease: Ubuntu 18.10
  Package: ubiquity (not installed)
  ProcVersionSignature: Ubuntu 4.18.0-10.11-generic 4.18.12
  Uname: Linux 4.18.0-10-generic x86_64
  ApportVersion: 2.20.10-0ubuntu13
  Architecture: amd64
  CurrentDesktop: ubuntu:GNOME
  Date: Thu Oct 18 10:53:57 2018
  InstallCmdLine: BOOT_IMAGE=/casper/vmlinuz file=/cdrom/preseed/ubuntu.seed 
boot=casper only-ubiquity quiet splash ---
  InstallationDate: Installed on 2018-10-18 (0 days ago)
  InstallationMedia: Ubuntu 18.10 "Cosmic Cuttlefish" - Release amd64 
(20181017.3)
  SourcePackage: ubiquity
  UpgradeStatus: No upgrade log present (probably fresh install)

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/e2fsprogs/+bug/1798562/+subscriptions

-- 
Mailing list: https://launchpad.net/~touch-packages
Post to     : touch-packages@lists.launchpad.net
Unsubscribe : https://launchpad.net/~touch-packages
More help   : https://help.launchpad.net/ListHelp

Reply via email to