Package: fsarchiver Version: 0.8.7-1+b1 Severity: normal Debian CI testing has uncovered an incompatibility with e2fsprogs 1.47.2-rc1, as can be seen here[1]. The root cause of the failure of the test backup-and-restore-ext4.sh is that the -r option of mke2fs has been removed and replaced with "-E revision=0".
[1] https://ci.debian.net/packages/f/fsarchiver/testing/amd64/54988709/ The reason for this change was to address a user complaint[2], where a user got confused and used -r 0 where they meant to use -m 0, which led to the user creating a file system which (a) doesn't support dates beyond 2038, (b) doesn't support online resizing, (c) is significantly less efficient than modern ext4 file systems, (d) lacks metadata checksumming, making the file system more vulnerable to bit flip errors, (d) doesn't support Posix ACL's or Extended Attributes, and (e) doesn't support SELinux or Apparmor --- among other issues. [2] https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1086603 Now, one perspective might be to say, "Stupid User! No biscuit!!", and just chalk it up to a Problem Exists Between Keyboard and Chair (PEBKAC) failure. On the other hand, the need for revision 0 file systems is only if you care about compatibility with Linux kernels prior to version Linux 1.2 (prior to 1995, or almost 30 years ago), and making it so easy for users to typo by making it a first-class (-r 0) option could be considered an attractive nuisance. After all, unless you are a file system developer trying to debug potential bugs (such as tune2fs -I 256 massively corrupting revision 0 file systems) or are engaged in very serious, hard-core software archeology, there is no real legitimate use for specifying -r 0 on the command line. Hence, the change that I made in e2fsprogs 1.47.2. Unfortunately, fsarchiver seems to be specifying the file system revision on the command line, for example: mke2fs -q -F -b 1024 -L 'Test' -U ae00bd66-0fd1-4852-91ea-a10c139ee156 -I 256 -r 1 -O has_journal,ext_attr,resize_inode,dir_index,^sparse_super2,^fast_commit,orphan_file,filetype,extent,^journal_dev,flex_bg,^meta_bg,^mmp,64bit,^inline_data,^ea_inode,^large_dir,large_file,huge_file,sparse_super,^uninit_bg,dir_nlink,extra_isize,^bigalloc,metadata_csum,^project /dev/loop0 and so the change in the upcoming e2fsprogs 1.47.2 release to address Debian bug #1086603 is going to break fsarchiver. This bug is to open a discussion about the right ways of addressing this failure. I can see a number of options: A) Change fsarchiver to drop specifying the "-r" option to mke2fs. This would solve the problem, but it would mean that fsarchiver would not be able to accurate backup and restore file systems from 3 decades ago. B) Revert e2fsprogs's change to address bug 1086603 and not worry about leaving an exposed, sharp edge to careless users. C) Change e2fsprogs to silently accept mke2fs -r 1, but to fail on -r 0. This solves the Debian continuous integration failure, thus unblocking e2fsprogs, but would cause fsarchiver to fail to be able to restore file systems dating from 3 decades ago. D) Change fsarchiver to retry with -E revision=N, if -r N fails. This works, but adds potential complexity all just to handle file systems dating from 3 decades ago. A lot of this depends on how much you care about supporting pre-historic, antedeluvian file sysetems from the Linux 1.0 era. I could easily just do option C, which would fix the continuous integration bug, but result in fsarchiver failing on really ancient file systems, at least until you implemented option D on your side. What are your thoughts? Thanks, regards, - Ted