We previously attempted to emit Rock Ridge NM records only when the name represented by the Rock Ridge extensions would actually differ. We would omit the record for an all-upper-case directory name, but Linux (and perhaps other operating systems) mapped that to lowercase. This affected only directories, as file names have an implicit ";1" version number appended and thus always differ. To solve, emit NM records for all entries. We could continue to omit the NM record for directories that would avoid mapping (for example, one named 1234.567) but this does not seem worth the complexity. PR: 203531 Reported by: Thomas Schmitt <scdbackup@gmx.net Sponsored by: The FreeBSD Foundation
Details
Details
- Reviewers
kevans jrtc27 - Commits
- rG1a38a53924e5: makefs: avoid uninitialized memory in root directory date
rG3a52cc4445ba: makefs: emit NM records for all directory entries
rG7bc4ccf3aea9: makefs: avoid uninitialized memory in root directory date
rG978013a0945d: makefs: emit NM records for all directory entries
Diff Detail
Diff Detail
- Lint
Lint Skipped - Unit
Tests Skipped
Event Timeline
Comment Actions
We could continue to omit the NM record for directories that would avoid
mapping (for example, one named 1234.567) but this does not seem worth
the complexity.
+1
I was looking at cd9660_rrip_add_NM to get a sense of how much overhead we're talking, and I found this slightly amusing:"
/* * Each NM record has 254 bytes to work with. This means that * the name data itself only has 249 bytes to work with. So, a * name with 251 characters would require two nm records. */
It seems silly to use 251 as the example for a length requiring two records instead of the minimum 250.