Marcus Holland-Moritz
02abf76545
chore: update TODO
2025-03-14 15:07:49 +01:00
Marcus Holland-Moritz
e75fa244d8
test: test dwarfsextract more thoroughly
2025-03-14 15:07:49 +01:00
Marcus Holland-Moritz
8a9ab6ea64
chore(filesystem_extractor): add more debug/trace logging
2025-03-14 15:07:49 +01:00
Marcus Holland-Moritz
3b9dbc606c
refactor(filesystem_extractor): "spare" is actually "sparse"
2025-03-14 15:07:49 +01:00
Marcus Holland-Moritz
361074ced2
feat: show total hardlink size in dump / JSON info
2025-03-14 15:07:49 +01:00
Marcus Holland-Moritz
1f2f6b08b9
test: add dwarfsextract archive_error test
2025-03-14 15:07:49 +01:00
Marcus Holland-Moritz
2c1689e192
test: move compat images, clean up and extend compat tests
2025-03-14 15:07:49 +01:00
Marcus Holland-Moritz
346a04439b
fix: ensure a valid empty JSON object is created
2025-03-14 15:07:49 +01:00
Marcus Holland-Moritz
5a5d44c59a
fix: only add version info to JSON metadata if requested
2025-03-14 15:07:49 +01:00
Marcus Holland-Moritz
f0cd212c0e
test: add inode_size_cache tests
2025-03-14 15:07:49 +01:00
Marcus Holland-Moritz
a0c2b6c26b
fix: inode size cache was used incorrectly
2025-03-14 15:07:49 +01:00
Marcus Holland-Moritz
a4602fad95
refactor(dwarfs): remove copy/paste in FUSE driver
2025-03-14 15:07:49 +01:00
Marcus Holland-Moritz
90852d622b
test: more inode_info tests
2025-03-14 15:07:49 +01:00
Marcus Holland-Moritz
d13ea51ae5
refactor(metadata_types): remove unused code
2025-03-14 15:07:49 +01:00
Marcus Holland-Moritz
9e201cfe65
test: add tests for dir_entry_view::parent()
2025-03-14 15:07:49 +01:00
Marcus Holland-Moritz
25ef134463
fix: dir_entry_view::name() for root entry should be empty
2025-03-14 15:07:49 +01:00
Marcus Holland-Moritz
003d315810
test: add readv tests with maxiov argument
2025-03-14 15:07:49 +01:00
Marcus Holland-Moritz
19a4bc88e8
test: exercise directory iterator beyond range-for
2025-03-14 15:07:49 +01:00
Marcus Holland-Moritz
49adb18131
refactor(filesystem_v2): char const* -> string_view
2025-03-14 15:07:49 +01:00
Marcus Holland-Moritz
7fc87e1962
refactor(metadata_v2): prefer make_optional
2025-03-14 15:07:49 +01:00
Marcus Holland-Moritz
05f788f6f0
feat(filesystem_v2): return dir_entry_view from find()
2025-03-14 15:07:49 +01:00
Marcus Holland-Moritz
436949a98d
feat(filesystem_v2): return dir_entry_view from readdir()
2025-03-14 15:07:49 +01:00
Marcus Holland-Moritz
40e43a153f
feat(internal): allow storing "." and ".." in dir_entry_view_impl
2025-03-14 15:07:49 +01:00
Marcus Holland-Moritz
b45d9c1870
feat(internal): add packed_ptr template
2025-03-14 15:07:49 +01:00
Marcus Holland-Moritz
65f5c99592
feat(metadata_v2): use bit-packing for chunk table
2025-03-14 15:07:49 +01:00
Marcus Holland-Moritz
ed0f64917a
feat(metadata_v2): use bit-packing for shared files table
2025-03-14 15:07:49 +01:00
Marcus Holland-Moritz
01f20aa1f1
refactor(metadata): include self index in directories table
2025-03-14 15:07:49 +01:00
Marcus Holland-Moritz
682cf883a2
chore(dwarfsck): document why enable_nlink
is needed
2025-03-14 15:07:42 +01:00
Marcus Holland-Moritz
a80bbaa5bd
feat(metadata_v2): use bit-packing for hardlink table
2025-03-14 13:39:25 +01:00
Marcus Holland-Moritz
ac53f364a7
feat(internal): add packed_int_vector template
2025-03-14 13:39:25 +01:00
Marcus Holland-Moritz
6d6e6662f7
test: add more compatibility tests
2025-03-14 13:39:25 +01:00
Marcus Holland-Moritz
8b7347af76
refactor(metadata_v2): use internal types w/o heap alloc where possible
2025-03-14 13:39:25 +01:00
Marcus Holland-Moritz
302af7497e
feat(metadata): add directory_iterator
2025-03-14 13:39:25 +01:00
Marcus Holland-Moritz
ed066dbef1
feat(internal): add directory self-index
2025-03-14 13:39:25 +01:00
Marcus Holland-Moritz
2a8330b625
refactor(metadata_types): initialize empty directory view
2025-03-14 13:39:25 +01:00
Marcus Holland-Moritz
26d8e0d4ed
refactor(metadata_types): improve diagnostics
2025-03-14 13:39:25 +01:00
Marcus Holland-Moritz
efb7fc7b18
refactor(metadata_types): remove unused member
2025-03-14 13:39:25 +01:00
Marcus Holland-Moritz
822539a992
feat(filesystem_v2): add root() method
2025-03-14 13:39:25 +01:00
Marcus Holland-Moritz
a0ff15e7ac
refactor: simplify loops by using ranges
2025-03-14 13:39:25 +01:00
Marcus Holland-Moritz
0e3ceb0b30
refactor: remove internal methods from public interface
2025-03-14 13:39:25 +01:00
Marcus Holland-Moritz
e6d69866a3
feat: further improve walk_data_order speed by about 20%
...
Before:
```
Benchmark Time CPU Iterations
--------------------------------------------------------------------------
filesystem_walk/walk 50.9 ms 50.8 ms 14
filesystem_walk/walk_data_order 143 ms 142 ms 5
```
After:
```
Benchmark Time CPU Iterations
--------------------------------------------------------------------------
filesystem_walk/walk 50.1 ms 50.0 ms 14
filesystem_walk/walk_data_order 121 ms 121 ms 6
```
2025-03-14 13:39:25 +01:00
Marcus Holland-Moritz
0bc31efeca
feat: improve performance of filesystem walk / walk_data_order
...
About 80% faster for `walk`, 25% faster for `walk_data_order`.
Before:
```
Benchmark Time CPU Iterations
--------------------------------------------------------------------------
filesystem_walk/walk 91.3 ms 91.3 ms 8
filesystem_walk/walk_data_order 181 ms 181 ms 4
```
After:
```
filesystem_walk/walk 50.1 ms 50.1 ms 14
filesystem_walk/walk_data_order 143 ms 143 ms 5
```
2025-03-14 13:39:25 +01:00
Marcus Holland-Moritz
32541c3fd9
chore: add filesystem walk benchmark
2025-03-14 13:39:25 +01:00
Marcus Holland-Moritz
133d98ede2
refactor(metadata_v2): small optimization
2025-03-14 13:39:25 +01:00
Marcus Holland-Moritz
3d5532085c
refactor(metadata_v2): clean up timing in walk_data_order
2025-03-14 13:39:25 +01:00
Marcus Holland-Moritz
1c5f345181
feat(file_stat): add perm_string() and mode_string() instance methods
2025-03-14 13:39:25 +01:00
Marcus Holland-Moritz
a8cf283d4e
fix(dwarfs): limit number of chunks in inodeinfo xattr
...
Highly fragmented files would have *megabytes* in `inodeinfo`, which
not only breaks the xattr interface, but can also dramatically slow
down tools like `eza` who like to read xattrs for no apparent reason.
2025-03-14 13:39:25 +01:00
Marcus Holland-Moritz
e803efebe6
feat: add inode size cache
2025-03-14 13:39:25 +01:00
Marcus Holland-Moritz
5c9cfd75bb
chore(dwarfs): add caller context to debug logging
2025-02-13 17:41:30 +01:00
Marcus Holland-Moritz
d0c5609172
feat(filesystem_v2): support maxiov parameter for readv()
2025-02-13 17:41:30 +01:00