mkfs.ext4 -d $directory_with_acls leads to EINVAL

Bug #1807288 reported by Michael Hudson-Doyle on 2018-12-06
14
This bug affects 1 person
Affects Status Importance Assigned to Milestone
e2fsprogs (Ubuntu)
Status tracked in Disco
Bionic
Undecided
Unassigned
Cosmic
Undecided
Unassigned
Disco
Undecided
Unassigned

Bug Description

[Justification]
`mkfs.ext4 -d` can produce broken filesystems when there are acls in the tree used as input.

[Test case]
1. dd if=/dev/zero count=0 bs=1M seek=100 of=./fake.img
2. mkdir -p stuff/journal
3. sudo apt install acl
4. setfacl -m g:adm:rwx stuff/journal
5. mkfs.ext4 -L lala -O -metadata_csum -T default -O uninit_bg fake.img -d ./stuff/
6. sudo mount ./fake.img /mnt
7. Verify that `getfacl /mnt/journal/` returns an error.
8. sudo umount /mnt
9. install libext2fs2 from -proposed.
10. mkfs.ext4 -L lala -O -metadata_csum -T default -O uninit_bg fake.img -d ./stuff/
11. sudo mount ./fake.img /mnt
12. Verify that `getfacl /mnt/journal/` returns acl information, not an error.
13. sudo umount /mnt

[Original description]

This looks an awful lot like bug 1645232 but that is claimed to be fixed:

mwhudson@ringil:~/tmp$ mkfs.ext4 -V
mke2fs 1.44.1 (24-Mar-2018)
 Using EXT2FS Library version 1.44.1
mwhudson@ringil:~/tmp$ dd if=/dev/zero count=0 bs=1M seek=100 of=./fake.img
0+0 records in
0+0 records out
0 bytes copied, 0.0015871 s, 0.0 kB/s
mwhudson@ringil:~/tmp$ mkdir -p stuff/journal
mwhudson@ringil:~/tmp$ setfacl -m g:adm:rwx stuff/journal
mwhudson@ringil:~/tmp$ mkfs.ext4 -L lala -O -metadata_csum -T default -O uninit_bg fake.img -d ./stuff/
mke2fs 1.44.1 (24-Mar-2018)
Discarding device blocks: done
Creating filesystem with 25600 4k blocks and 6400 inodes

Allocating group tables: done
Writing inode tables: done
Creating journal (1024 blocks): done
Copying files into the device: done
Writing superblocks and filesystem accounting information: done

mwhudson@ringil:~/tmp$ sudo mount ./fake.img /mnt
mwhudson@ringil:~/tmp$ getfacl /mnt/journal/
getfacl: /mnt/journal/: Invalid argument

Steve Langasek (vorlon) wrote :

Also reproducible without the -O options.

Can confirm that this works with e2fslibs from e2fsprogs 1.43.4:

$ dpkg -x ./e2fslibs_1.43.4-2_amd64.deb e2fsprogs
$ LD_LIBRARY_PATH=./e2fsprogs/lib/x86_64-linux-gnu/ e2fsprogs/sbin/mkfs.ext4 -L lala -T default fake.img -d ./stuff/
$ sudo mount ./fake.img /mnt
$ getfacl /mnt/journal/
getfacl: Removing leading '/' from absolute path names
# file: mnt/journal/
# owner: vorlon
# group: vorlon
user::rwx
group::r-x
group:adm:rwx
mask::rwx
other::r-x

$ sudo umount /mnt
$

Theodore Ts'o (tytso) wrote :

Yep, it looks like it was a regression that was introduced by commit 50d0998cfee ("libext2fs: add ea_inode support to set xattr"). The following patch should fix things.

The attachment "0001-libext2fs-fix-regression-so-we-are-correctly-transla.patch" seems to be a patch. If it isn't, please remove the "patch" flag from the attachment, remove the "patch" tag, and if you are a member of the ~ubuntu-reviewers, unsubscribe the team.

[This is an automated message performed by a Launchpad user owned by ~brian-murray, for any issues please contact him.]

tags: added: patch
Steve Langasek (vorlon) on 2018-12-07
description: updated
tags: added: id-5c09fa23626104848f94e45e
Launchpad Janitor (janitor) wrote :

This bug was fixed in the package e2fsprogs - 1.44.4-2ubuntu1

---------------
e2fsprogs (1.44.4-2ubuntu1) disco; urgency=medium

  * debian/patches/0001-libext2fs-fix-regression-so-we-are-correctly-
    transla.patch: cherry-pick upstream fix so we are correctly translating
    acls in mkfs.ext4. Closes LP: #1807288.

 -- Steve Langasek <email address hidden> Fri, 07 Dec 2018 12:12:52 +0200

Changed in e2fsprogs (Ubuntu Disco):
status: New → Fix Released
Steve Langasek (vorlon) on 2018-12-09
Changed in e2fsprogs (Ubuntu Cosmic):
status: New → In Progress

Hello Michael, or anyone else affected,

Accepted e2fsprogs into cosmic-proposed. The package will build now and be available at https://launchpad.net/ubuntu/+source/e2fsprogs/1.44.4-2ubuntu0.1 in a few hours, and then in the -proposed repository.

Please help us by testing this new package. See https://wiki.ubuntu.com/Testing/EnableProposed for documentation on how to enable and use -proposed. Your feedback will aid us getting this update out to other Ubuntu users.

If this package fixes the bug for you, please add a comment to this bug, mentioning the version of the package you tested and change the tag from verification-needed-cosmic to verification-done-cosmic. If it does not fix the bug for you, please add a comment stating that, and change the tag to verification-failed-cosmic. In either case, without details of your testing we will not be able to proceed.

Further information regarding the verification process can be found at https://wiki.ubuntu.com/QATeam/PerformingSRUVerification . Thank you in advance for helping!

N.B. The updated package will be released to -updates after the bug(s) fixed by this package have been verified and the package has been in -proposed for a minimum of 7 days.

Changed in e2fsprogs (Ubuntu Cosmic):
status: In Progress → Fix Committed
tags: added: verification-needed verification-needed-cosmic
Brian Murray (brian-murray) wrote :

Hello Michael, or anyone else affected,

Accepted e2fsprogs into bionic-proposed. The package will build now and be available at https://launchpad.net/ubuntu/+source/e2fsprogs/1.44.1-1ubuntu1 in a few hours, and then in the -proposed repository.

Please help us by testing this new package. See https://wiki.ubuntu.com/Testing/EnableProposed for documentation on how to enable and use -proposed. Your feedback will aid us getting this update out to other Ubuntu users.

If this package fixes the bug for you, please add a comment to this bug, mentioning the version of the package you tested and change the tag from verification-needed-bionic to verification-done-bionic. If it does not fix the bug for you, please add a comment stating that, and change the tag to verification-failed-bionic. In either case, without details of your testing we will not be able to proceed.

Further information regarding the verification process can be found at https://wiki.ubuntu.com/QATeam/PerformingSRUVerification . Thank you in advance for helping!

N.B. The updated package will be released to -updates after the bug(s) fixed by this package have been verified and the package has been in -proposed for a minimum of 7 days.

Changed in e2fsprogs (Ubuntu Bionic):
status: New → Fix Committed
tags: added: verification-needed-bionic
Steve Langasek (vorlon) wrote :
Download full text (3.8 KiB)

Cosmic:

$ dd if=/dev/zero count=0 bs=1M seek=100 of=./fake.img
0+0 records in
0+0 records out
0 bytes copied, 6.2141e-05 s, 0.0 kB/s
$ mkdir -p stuff/journal
$ sudo apt install acl
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following NEW packages will be installed:
  acl
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 0 B/38.5 kB of archives.
After this operation, 205 kB of additional disk space will be used.
Get:1 file:/mirror/ubuntu cosmic/main amd64 acl amd64 2.2.52-3build1 [38.5 kB]
debconf: delaying package configuration, since apt-utils is not installed
Selecting previously unselected package acl.
(Reading database ... 24069 files and directories currently installed.)
Preparing to unpack .../acl_2.2.52-3build1_amd64.deb ...
Unpacking acl (2.2.52-3build1) ...
Processing triggers for man-db (2.8.4-2) ...
Not building database; man-db/auto-update is not 'true'.
Setting up acl (2.2.52-3build1) ...
$ setfacl -m g:adm:rwx stuff/journal
$ mkfs.ext4 -L lala -O -metadata_csum -T default -O uninit_bg fake.img -d ./stuff/
mke2fs 1.44.4 (18-Aug-2018)
Discarding device blocks: done
Creating filesystem with 25600 4k blocks and 6400 inodes

Allocating group tables: done
Writing inode tables: done
Creating journal (1024 blocks): done
Copying files into the device: done
Writing superblocks and filesystem accounting information: done

$ sudo mount ./fake.img /mnt
$ getfacl /mnt/journal
getfacl: /mnt/journal: Invalid argument
$ sudo apt install -y e2fsprogs
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
  libext2fs2
Suggested packages:
  gpart parted fuse2fs e2fsck-static
Recommended packages:
  e2fsprogs-l10n
The following packages will be upgraded:
  e2fsprogs libext2fs2
2 upgraded, 0 newly installed, 0 to remove and 28 not upgraded.
Need to get 673 kB of archives.
After this operation, 0 B of additional disk space will be used.
Get:1 http://archive.ubuntu.com/ubuntu cosmic-proposed/main amd64 libext2fs2 amd64 1.44.4-2ubuntu0.1 [159 kB]
Get:2 http://archive.ubuntu.com/ubuntu cosmic-proposed/main amd64 e2fsprogs amd64 1.44.4-2ubuntu0.1 [514 kB]
Fetched 673 kB in 3s (240 kB/s)
debconf: delaying package configuration, since apt-utils is not installed
(Reading database ... 24081 files and directories currently installed.)
Preparing to unpack .../libext2fs2_1.44.4-2ubuntu0.1_amd64.deb ...
Unpacking libext2fs2:amd64 (1.44.4-2ubuntu0.1) over (1.44.4-2) ...
Setting up libext2fs2:amd64 (1.44.4-2ubuntu0.1) ...
(Reading database ... 24081 files and directories currently installed.)
Preparing to unpack .../e2fsprogs_1.44.4-2ubuntu0.1_amd64.deb ...
Unpacking e2fsprogs (1.44.4-2ubuntu0.1) over (1.44.4-2) ...
Setting up e2fsprogs (1.44.4-2ubuntu0.1) ...
Processing triggers for libc-bin (2.28-0ubuntu1) ...
Processing triggers for man-db (2.8.4-2) ...
Not building database; man-db/auto-update is not 'true'.
$ $ mkfs.ext4 -L lala -O -metadata_csum -T default -O uninit_bg fake.img -d ./stuff/
mke2fs 1....

Read more...

description: updated
tags: added: verification-done-cosmic
removed: verification-needed-cosmic
Steve Langasek (vorlon) wrote :
Download full text (3.9 KiB)

Bionic:

$ dd if=/dev/zero count=0 bs=1M seek=100 of=./fake.img
0+0 records in
0+0 records out
0 bytes copied, 7.2374e-05 s, 0.0 kB/s
$ mkdir -p stuff/journal
$ sudo apt install acl
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following NEW packages will be installed:
  acl
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 0 B/38.5 kB of archives.
After this operation, 205 kB of additional disk space will be used.
Get:1 file:/mirror/ubuntu bionic/main amd64 acl amd64 2.2.52-3build1 [38.5 kB]
debconf: delaying package configuration, since apt-utils is not installed
Selecting previously unselected package acl.
(Reading database ... 23466 files and directories currently installed.)
Preparing to unpack .../acl_2.2.52-3build1_amd64.deb ...
Unpacking acl (2.2.52-3build1) ...
Processing triggers for man-db (2.8.3-2ubuntu0.1) ...
Not building database; man-db/auto-update is not 'true'.
Setting up acl (2.2.52-3build1) ...
$ setfacl -m g:adm:rwx stuff/journal
$ mkfs.ext4 -L lala -O -metadata_csum -T default -O uninit_bg fake.img -d ./stuff/
mke2fs 1.44.1 (24-Mar-2018)
Discarding device blocks: done
Creating filesystem with 25600 4k blocks and 6400 inodes

Allocating group tables: done
Writing inode tables: done
Creating journal (1024 blocks): done
Copying files into the device: done
Writing superblocks and filesystem accounting information: done

$ sudo mount ./fake.img /mnt
$ getfacl /mnt/journal
getfacl: /mnt/journal: Invalid argument
$ sudo umount /mnt
$ sudo apt install -y e2fsprogs
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
  libext2fs2
Suggested packages:
  gpart parted fuse2fs e2fsck-static
Recommended packages:
  e2fsprogs-l10n
The following packages will be upgraded:
  e2fsprogs libext2fs2
2 upgraded, 0 newly installed, 0 to remove and 52 not upgraded.
Need to get 547 kB of archives.
After this operation, 6144 B of additional disk space will be used.
Get:1 http://archive.ubuntu.com/ubuntu bionic-proposed/main amd64 libext2fs2 amd64 1.44.1-1ubuntu1 [157 kB]
Get:2 http://archive.ubuntu.com/ubuntu bionic-proposed/main amd64 e2fsprogs amd64 1.44.1-1ubuntu1 [390 kB]
Fetched 547 kB in 2s (224 kB/s)
debconf: delaying package configuration, since apt-utils is not installed
(Reading database ... 23478 files and directories currently installed.)
Preparing to unpack .../libext2fs2_1.44.1-1ubuntu1_amd64.deb ...
Unpacking libext2fs2:amd64 (1.44.1-1ubuntu1) over (1.44.1-1) ...
Setting up libext2fs2:amd64 (1.44.1-1ubuntu1) ...
(Reading database ... 23478 files and directories currently installed.)
Preparing to unpack .../e2fsprogs_1.44.1-1ubuntu1_amd64.deb ...
Unpacking e2fsprogs (1.44.1-1ubuntu1) over (1.44.1-1) ...
Setting up e2fsprogs (1.44.1-1ubuntu1) ...
Processing triggers for libc-bin (2.27-3ubuntu1) ...
Processing triggers for man-db (2.8.3-2ubuntu0.1) ...
Not building database; man-db/auto-update is not 'true'.
$ mkfs.ext4 -L lala -O -metadata_csum -T default -O uninit_bg fake.im...

Read more...

tags: added: verification-done verification-done-bionic
removed: verification-needed verification-needed-bionic
To post a comment you must log in.
This report contains Public information  Edit
Everyone can see this information.

Other bug subscribers