3.1 KiB
3.1 KiB
Pre-12 Batch 06: codec descriptor ownership
Date: 2026-08-13
Scope
- Moved the LZMA, DEFLATE, and ZSTD descriptors into their backend source files.
- Made their backend-only config, decompress, and availability helpers
static. - Kept the LZ4 config loader and descriptor, plus the SHIFTED and INTERLACED
descriptors and transform, in
src/decompressor.c. - Replaced the central descriptor object array with the descriptor pointer
table
z_erofs_decomp. - Reduced
src/compress.hto the three backend descriptor declarations and the LZ4 decompress prototype needed by the central descriptor.
Descriptor tuples
The normalized tuples are unchanged before and after this batch:
| Index | Name | Config callback | Decompress callback | Compile condition |
|---|---|---|---|---|
Z_EROFS_COMPRESSION_LZ4 |
lz4 |
z_erofs_load_lz4_config |
z_erofs_lz4_decompress |
always |
Z_EROFS_COMPRESSION_LZMA |
lzma |
z_erofs_load_lzma_config |
z_erofs_lzma_decompress |
always |
Z_EROFS_COMPRESSION_DEFLATE |
deflate |
z_erofs_load_deflate_config |
z_erofs_deflate_decompress |
always |
Z_EROFS_COMPRESSION_ZSTD |
zstd |
z_erofs_load_zstd_config |
z_erofs_zstd_decompress |
descriptor and config always; decompress implementation selected by ZSTDIO |
Z_EROFS_COMPRESSION_SHIFTED |
shifted |
NULL |
z_erofs_transform_plain |
always |
Z_EROFS_COMPRESSION_INTERLACED |
interlaced |
NULL |
z_erofs_transform_plain |
always |
Static validation
- Confirmed one declaration and one definition for each backend descriptor; the only additional occurrence is its central pointer-table entry.
- Confirmed the LZMA and DEFLATE config/decompress helpers have no external
consumers and are now
staticin their backends. - Confirmed the ZSTD config/decompress/availability helpers have no external
consumers and are now
static; the two decompress definitions are mutually exclusive under#ifdef ZSTDIO. - Confirmed
z_erofs_decompexplicitly fills all six runtime indices in the original order. Decompression retains the array-length bound, rejects a null table entry, and rejects a null decompress callback withEOPNOTSUPP. Config parsing retains the existing compression-config loop bound and treats a null entry or null config callback asEOPNOTSUPPbefore releasing the config buffer on the existing path. - Confirmed the
WITH_ZSTDIO=0static conditional path remained valid; actual build deferred to final validation. WithoutZSTDIO, the path keeps the descriptor non-null, reports the existing mount error andEOPNOTSUPPfrom config, and selects the decompress stub returning-1. - Confirmed
WITH_ZSTDIO=1adds-DZSTDIO, keeps the same descriptor and config callback, and selects the existing ZSTD implementation with its resource-release and error paths unchanged. git diff --checkandgit diff --cached --checkwere required for this batch.
Deferred validation
No build, QEMU, smoke, feature, or other dynamic validation was run for this
batch. Follow-up validation must build the FreeBSD KLD with both
WITH_ZSTDIO=0 and WITH_ZSTDIO=1.