Attached the debian.tar.xz of my local build with many fixes included.

configure-ac.patch   ........... 1
compiler-warnings.patch   ...... 1
handle-bigfiles.patch   ........ 4
xattr_verify.patch   ........... 3
ignore-ext4-extents-flag.patch . 2
fix-uninit-blocks.patch   ...... 4
fix-write-estimate.patch   ..... 2
fix-paramter-maxsize.patch   ... 2
handle-inline-data.patch   ..... 4

I've ranked them from 1-4.
1 - it makes no difference if the patch is included
2 - Data is written to tape and restored correctly but a verify might
    fail or other visible effects.
3 - Data is written to tape correctly but a restore does not give
    correct results.
4 - Invalid data is written to tape.

Details of each patch: (T) indicates that I have a testcase for the bug.

configure-ac.patch
Update configure.ac so that there are no warnings about deprecated
usage.

compiler-warnings.patch
Fix some compiler warnings about suspicious usage. (The usage appears OK
in the particular context)

handle-bigfiles.patch (T)
Correctly dump files that use blocks with index >=2^32. On a default
bookworm install using default mkfs.ext4 this means filesystems >16T

xattr_verify.patch (T)
This replaces the existing xattr_verify. (which I notice is still
present in the tarfile but isn't part of the quilt series - not sure
what I did wrong there). As well as the original issue where verify of
files that had EA across two blocks, this fixes a similar issue with
directories except that directories didn't restore correctly.
N.B. I've only tested the cases of files and directories. I now have
proper testcases that I'll extend to the other types that can have EA so
there might be another patch incoming shortly.

ignore-ext4-extents-flag.patch (T)
When verifying symlinks you cannot get or set the flags on the symlink.
But with ext4 the flags can either be 0 or EXT4_EXTENTS_FL. This patch
ignores this flag while verifying.

fix-uninit-blocks.patch (T)
Ext4 added the feature that an extent can reserve blocks on the FS but
not write any data to them. This patch ensures that the dump gets blocks
of zeros written to it rather than whatever random, uninitialized data
exists on the disk.

fix-write-estimate.patch
The existing code incorrectly calculates the file size for very large
files therefore the estimate of blocks to be written will also be wrong.

fix-paramter-maxsize.patch
The -D parameter to restore -C was limited to 64 characters. This meant
verifies of a FS mounted on a patch longer than this would fail.

handle-inline-data.patch (T)
Ext4 adds the ability to store small files in the inode. These were not
dumped to the tape at all. Additionally, they use a "system.data" EA
which messes up both restore and verify of EAs.
-O inline_data is not a default parameter for bookworm and so this bug
will only be hit by people who explicitly request inline data.


All of the testcases require root to run so I've not included them. They
can be found here:
https://sourceforge.net/p/dump/code/merge-requests/3/

Attachment: dump_0.4b47-4+~tjw12r7.debian.tar.xz
Description: application/xz

Reply via email to