Hi Xiang,

This series introduces multi-threaded decompression and extraction to
fsck.erofs.

The architecture is divided into two decoupled workqueues to prevent
thread pool exhaustion gridlock:

1. `erofs_traverse_wq`: Handles the asynchronous directory walk. It
   localizes the historically global `extract_path` and `dirstack`
   states into individual payloads, safely traversing the tree and
   verifying inodes.
2. `erofs_wq`: Dedicated strictly to processing `z_erofs_decompress_req`
   payloads. Decompression tasks take strict ownership of the raw and
   output buffers, preventing data races.

Testing on heavily packed LZ4HC images demonstrates smooth asynchronous
fan-out, successfully overlapping I/O traversal with decompression
compute.

Nithurshen (2):
  fsck.erofs: add multi-threaded decompression
  fsck.erofs: implement concurrent directory traversal

 fsck/main.c              | 450 ++++++++++++++++++++++++---------------
 include/erofs/cond.h     |  31 +++
 include/erofs/internal.h |  20 +-
 include/erofs/lock.h     |   3 +
 lib/data.c               | 216 ++++++++++++++-----
 5 files changed, 488 insertions(+), 232 deletions(-)
 create mode 100644 include/erofs/cond.h

-- 
2.52.0


Reply via email to