opnsense-src/usr.sbin/makefs
Ed Maste e4bcef6dab makefs: Make cd9660 Rock Ridge inodes reproducible
Rock Ridge extensions include an inode field:

    "POSIX File Serial Number" shall have the same meaning as and may be
    used for the st_ino field of POSIX:5.6.1. This field shall be
    recorded according to ISO 9660:7.3.3. Directory Records which share
    the value of this field are defined as links (see POSIX:2.2.2.17)
    and, by definition, point to the same file or directory.

Previously we'd store the source file's st_ino (except that in metalog
mode we'd record 0 for files with nlink = 1).  This had two issues: the
generated ISO image was nonreproducible due to the arbitrary inode
numbers, and files without hard links would falsely be detected (by
certain tools) as hard links to each other.

Note that the kernel's cd9660(5) file system ignores the Rock Ridge
PX File Serial Number, so this issue isn't observed by mounting such a
file system.

Instead of using the source inode directly, assign target inode numbers
sequentially.  Use a map so that files with the same source inode (hard
links) still receive the same target inode number.

PR:		284795
PR:		285027
Reviewed by:	brooks
Sponsored by:	The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D49141

(cherry picked from commit 518cdd344ec51584478f39b9a9cac77fc0766ce1)
(cherry picked from commit 337f5e7a44c4d5ac29e0b0c0fe957bb3b9bae222)
(cherry picked from commit a18be39aafc1b55fd67603ee6a6d820d0fcd877f)
2025-03-04 15:57:26 -05:00
..
cd9660 makefs: Make cd9660 Rock Ridge inodes reproducible 2025-03-04 15:57:26 -05:00
ffs Defer the January 19, 2038 date limit in UFS1 filesystems to February 7, 2106 2025-02-06 11:25:09 -08:00
msdos makefs: Remove a stray semicolon 2024-10-31 12:40:17 +08:00
sys Fix makefs bootstrap after d485c77f20 2021-02-22 17:55:45 +00:00
tests makefs: Handle special file types when creating a zpool 2025-01-21 14:08:40 +00:00
zfs makefs: Handle special file types when creating a zpool 2025-01-21 14:08:40 +00:00
cd9660.c makefs: Fix cd9660 duplicate directory names 2025-01-14 16:07:39 -05:00
cd9660.h makefs: Make cd9660 Rock Ridge inodes reproducible 2025-03-04 15:57:26 -05:00
ffs.c Defer the January 19, 2038 date limit in UFS1 filesystems to February 7, 2106 2025-02-06 11:25:09 -08:00
ffs.h Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:16 -06:00
Makefile makefs: Quiet a -Wdangling-pointer warning in cd9660_generate_path_table 2024-01-03 09:43:48 -08:00
Makefile.depend Remove $FreeBSD$: one-line sh pattern 2023-08-16 11:55:03 -06:00
Makefile.depend.host Remove $FreeBSD$: one-line sh pattern 2023-08-16 11:55:03 -06:00
Makefile.depend.options Build host tools on non-FreeBSD host with DIRDEPS_BUILD 2023-04-22 13:13:22 -07:00
makefs.8 makefs.8: Clarify that makefs-generated zpools always have the same GUID 2024-11-28 14:38:17 +00:00
makefs.c makefs: Make it possible to silence warnings about duplicate paths 2024-02-03 14:10:43 -05:00
makefs.h Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:16 -06:00
msdos.c makefs: clean up some leftovers after $FreeBSD$ tag removal 2023-08-16 16:24:37 -04:00
msdos.h Remove $FreeBSD$: one-line .c comment pattern 2023-08-16 11:54:29 -06:00
mtree.c makefs: Make it possible to silence warnings about duplicate paths 2024-02-03 14:10:43 -05:00
walk.c makefs: Remove dead code in inode_type() 2025-01-14 14:14:27 +00:00
zfs.c makefs: Remove the warning printed when makefs -t zfs is used 2024-11-05 00:56:50 +00:00