On 8/5/25 5:01 PM, Neal Gompa wrote:
On Tue, Aug 5, 2025 at 12:46 AM Panu Matilainen <pmati...@redhat.com> wrote:
On 7/29/25 2:13 AM, Neal Gompa wrote:
On Mon, Jul 28, 2025 at 6:30 PM Andrew Lutomirski <l...@mit.edu> wrote:
On Jul 24, 2025, at 7:02 PM, Aoife Moloney via devel-announce
<devel-annou...@lists.fedoraproject.org> wrote:
Wiki -
https://fedoraproject.org/wiki/Changes/Hardlink_identical_files_in_packages_by_default
Discussion thread -
https://discussion.fedoraproject.org/t/f43-change-proposal-hardlink-identical-files-in-packages-by-default-self-contained/160769
This is a proposed Change for Fedora Linux.
This document represents a proposed Change. As part of the Changes
process, proposals are publicly announced in order to receive
community feedback. This proposal will only be implemented if approved
by the Fedora Engineering Steering Committee.
== Summary ==
A post-build step is added to the package build macros to
automatically hardlink all identical files under `/usr`. Previously,
this was done in some packages and now it's done everywhere by
default.
Almost every time I encounter a hard link, I think it wants to be a
reflink instead. And this is very much an example of this!
Hardlinks are footguns. If you modify them, you get unexpected
results. (Yes, I know you're not supposed to modify a file that rpm
installed. People do it anyway.) If you are writing a tool that
modifies one copy of a pair of files that are actually hardlinks to
each other, you get awkward results. Even from a filesystem
implementation perspective, hardlinks are kind of gross, and if I were
designing a filesystem from scratch, I would probably not support
them, or at least not as a first-class feature.
Other than the lack of rpm support, is there any good reason to use
hardlinks instead of reflinks? Reflinks actually do what one would
want here -- the act like two separate files (which is what the
package expects) but they share storage.
Reflink support has long since been blocked on upstream progress on
RPMCoW[1]. I really do wish this was further along, I really love this
feature in CentOS Hyperscale.
reflink() does not equal RPMCoW.
RPMCoW is this controversial and complicated thing that involves
transcoding rpm packages into unverifiable blobs and then reflinks from
those. It's been explicitly NAK'ed upstream, multiple times now.
There's nothing evil or controversial about reflink as such, but using
it in rpm context is not straightforward.
Transcoding would not be required if the RPM format itself was made up
of reflinkable items. Unless you're open to changing the RPM archive
format, there are not a lot of other options.
There are all manner of options if you look beyond dying on the
particular hill of linking directly from RPM packages :D
- Panu -
--
_______________________________________________
devel mailing list -- devel@lists.fedoraproject.org
To unsubscribe send an email to devel-le...@lists.fedoraproject.org
Fedora Code of Conduct:
https://docs.fedoraproject.org/en-US/project/code-of-conduct/
List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines
List Archives:
https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org
Do not reply to spam, report it:
https://pagure.io/fedora-infrastructure/new_issue