2514 Commits

Author SHA1 Message Date
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
Marcus Holland-Moritz
9724cf4203 chore: disable artifact uploads while they're unreliable 2025-02-13 17:40:11 +01:00
Marcus Holland-Moritz
5e8829bf67 docs: describe how to install FUSE driver using homebrew on macOS 2025-02-11 22:17:53 +01:00
Marcus Holland-Moritz
4d2af1726c chore: update change log v0.10.2 2024-12-02 16:25:35 +01:00
Marcus Holland-Moritz
101fbd6313 test: enforce metadata consistency checks by default 2024-11-21 17:24:06 +01:00
Marcus Holland-Moritz
a17599dc4c test: add test cases for global metadata checks 2024-11-21 17:23:35 +01:00
Marcus Holland-Moritz
f2d11233d5 fix: work around deprecated boost header 2024-11-20 18:51:37 +01:00
Marcus Holland-Moritz
9bced66c9e fix: try handling localized error messages on Windows (fixes gh #241) 2024-11-20 18:47:34 +01:00
Marcus Holland-Moritz
81585ea8cd fix(util): add function to handle localized errors on Windows (gh #241) 2024-11-20 18:47:34 +01:00
Marcus Holland-Moritz
711358ac74 chore(logger): catch errors during fmt::print (gh #241) 2024-11-20 18:47:34 +01:00
Marcus Holland-Moritz
ab26623b30 refactor: clean up logger.h 2024-11-20 18:47:34 +01:00
Marcus Holland-Moritz
75300dbfc6 fix: sanitize paths on Windows (gh #241) 2024-11-20 18:47:34 +01:00
Marcus Holland-Moritz
09d4748e87 test(tools): invalid file name handling on Windows (gh #241) 2024-11-20 18:47:34 +01:00
Marcus Holland-Moritz
7431bb627c fix(windows): handle invalid wide chars in file names (fixes gh #241)
For some reason, Windows allows invalid UTF-16 characters in file names.
Try to handle these gracefully when converting to UTF-8.
2024-11-20 18:47:34 +01:00
Marcus Holland-Moritz
e8f084d183 fix(logger): handle empty log messages (partial fix for gh #241) 2024-11-20 18:47:34 +01:00
Marcus Holland-Moritz
0757193056 chore(metadata_types): stricter checks and improved error messages 2024-11-20 15:17:12 +01:00
Marcus Holland-Moritz
7a3c16cc92 fix(metadata_types): mode/uid/gid checks were expecting 16-bit types 2024-11-20 15:17:12 +01:00
Marcus Holland-Moritz
68c44d410c test: fix unicode path handling in os_access_mock 2024-11-20 13:31:09 +01:00
Marcus Holland-Moritz
3c958c3769 fix: add missing include 2024-11-20 13:31:09 +01:00
Marcus Holland-Moritz
82b556c748 fix: remove useless code 2024-11-20 13:31:09 +01:00
Marcus Holland-Moritz
96ca461879 fix(filesystem_writer): std::move should have been std::forward 2024-11-20 13:31:09 +01:00
Marcus Holland-Moritz
e8bca0184d fix: add missing dtor overrides 2024-11-20 13:31:09 +01:00
Marcus Holland-Moritz
5e959c9cd9 fix(similarity_ordering): ensure dtor is virtual in interface 2024-11-20 13:31:09 +01:00
Marcus Holland-Moritz
6bfa9f6480 fix(console_writer): add missing header 2024-11-20 13:31:09 +01:00
Marcus Holland-Moritz
603060d1bc fix: work around benign data race in libunwind 2024-11-20 13:31:09 +01:00
Marcus Holland-Moritz
109769a32f chore: fix more spelling errors 2024-11-20 13:31:09 +01:00
Marcus Holland-Moritz
118ce8213e fix: don't pad libarchive output, ever 2024-11-20 13:31:09 +01:00
Marcus Holland-Moritz
78c37dc6f5 fix(filesystem_extractor): only call closefd() if needed 2024-11-20 13:31:09 +01:00
Marcus Holland-Moritz
b8459adc05 fix: use shared_ptr to manage archive_entry and prevent leaks 2024-11-20 13:31:09 +01:00