update
This commit is contained in:
@@ -0,0 +1,31 @@
|
||||
# Pre12 Batch 02
|
||||
|
||||
This batch replaces exactly three potentially unaligned typed loads with the
|
||||
FreeBSD little-endian byte decoders planned for Pre12.
|
||||
|
||||
- `xattr.c`: `hdrbuf` contains two raw metadata bytes returned by
|
||||
`erofs_xattr_read_backing(..., sizeof(raw_len), ...)`; `le16dec(hdrbuf)`
|
||||
decodes the prefix-record length.
|
||||
- `inode.c`: `buf` contains at least one complete 32-byte compact on-disk inode
|
||||
returned by `erofs_read_metadata`; its first two bytes are the little-endian
|
||||
`i_format` field decoded by `le16dec(buf)`.
|
||||
- `data.c`: the non-indexes branch sets `entry_size` to
|
||||
`EROFS_BLOCK_MAP_ENTRY_SIZE == sizeof(__le32) == 4`; `idx` points to those
|
||||
four raw block-map bytes and `le32dec(idx)` decodes the block address.
|
||||
|
||||
For bytes `b0..b3`, both old expressions and the new helpers produce
|
||||
`b0 | b1 << 8` or `b0 | b1 << 8 | b2 << 16 | b3 << 24`. On a little-endian
|
||||
host the typed load already has that value; on a big-endian host `leXXtoh`
|
||||
byte-swaps the typed value to that same formula. The helpers preserve this
|
||||
result while avoiding any alignment requirement.
|
||||
|
||||
`xattr.c` and `data.c` receive the helpers through `internal.h` to
|
||||
`erofs_fs.h` to `<sys/endian.h>`; `inode.c` also includes `<sys/endian.h>`
|
||||
directly. Existing `le16dec` and `le32dec` consumers confirm the established
|
||||
include convention. Error checks, branches, value ranges, and buffer release
|
||||
ordering are unchanged. No point was skipped and no other endian read was
|
||||
changed.
|
||||
|
||||
Validation used exact-expression counts, buffer-source and length inspection,
|
||||
symbolic endian equivalence, source-diff inspection, and `git diff --check`.
|
||||
No build, QEMU, smoke, feature, or other dynamic test was run.
|
||||
Reference in New Issue
Block a user