2342 Commits

Author SHA1 Message Date
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