| Summary: | restore: cannot recreate hardlinks to absolute symlinks | ||||||
|---|---|---|---|---|---|---|---|
| Product: | Base System | Reporter: | Matthias Andree <mandree> | ||||
| Component: | bin | Assignee: | freebsd-bugs (Nobody) <bugs> | ||||
| Status: | New --- | ||||||
| Severity: | Affects Some People | CC: | grahamperrin, sv | ||||
| Priority: | --- | ||||||
| Version: | 13.0-RELEASE | ||||||
| Hardware: | Any | ||||||
| OS: | Any | ||||||
| Bug Depends on: | |||||||
| Bug Blocks: | 252184 | ||||||
| Attachments: |
|
||||||
Created attachment 227165 [details] demo script (needs privileges) to show how dump/restore or tar/libarchive fail to faithfully recreate hardlinks-to-symlinks affects FreeBSD 12.2 and 13.0 after a user reports against e2fsprogs, I conclude that restore(8) is broken and cannot faithfully recreate a hardlink to a symbolic link. tar(1) with libarchive(3) fails in a similar vain. I am attaching a demo script that uses two 20M sized swap-based md(4) devices, formats them with newfs -U and sets up some corner cases with symlinks ### The error in question is, for dump/restore on 13.0: restore: warning: cannot create hard link ./usr/local/sbin/hardlink-to-abssymlink->./usr/local/sbin/abssymlink: No such file or directory mtree verification: sbin/file: link count (1, 2) usr/local/sbin/abssymlink: link count (2, 1) usr/local/sbin/relsymlink: link count (2, 1) usr/local/sbin/hardlink-to-relsymlink: type (link, file) ./usr/local/sbin/hardlink-to-abssymlink missing and consequential differences shown with mtree. ### The error in question is, for tar (libarchive) on 13.0: ./usr/local/sbin/hardlink-to-abssymlink: Hard-link target './usr/local/sbin/abssymlink' does not exist. ./usr/local/sbin/hardlink-to-relsymlink: Hard-link target './usr/local/sbin/relsymlink' does not exist. mtree verification: .: modification time (Fri Aug 13 19:12:46 2021, Fri Aug 13 19:12:47 2021) ./usr/local/sbin/abssymlink missing ./usr/local/sbin/hardlink-to-abssymlink missing ./usr/local/sbin/hardlink-to-relsymlink missing ./usr/local/sbin/relsymlink missing ### gtar from the gtar-1.34 (archivers/gtar) succeeds!