Hi,
there are mostly stabilization, refactoring and cleanup changes. There rest are minor performance optimizations due to caching or lock contention reduction and a few notable fixes.
Please pull, thanks.
Performance improvements:
-
minor speedup in logging when repeatedly allocated structure is preallocated only once, improves latency and decreases lock contention
-
minor throughput increase (+6%), reduced lock contention after clearing delayed allocation bits, applies to several common workload types
-
skip full quota rescan if a new relation is added in the same transaction
Fixes:
-
zstd fix for inline compressed file in subpage mode, updated version from the 6.8 time
-
proper qgroup inheritance ioctl parameter validation
-
more fiemap followup fixes after reduced locking done in 6.8
- fix race when detecting delalloc ranges
Core changes:
-
more debugging code
- added assertions for a very rare crash in raid56 calculation
- tree-checker dumps page state to give more insights into possible reference counting issues
-
add checksum calculation offloading sysfs knob, for now enabled under DEBUG only to determine a good heuristic for deciding the offload or synchronous, depends on various factors (block group profile, device speed) and is not as clear as initially thought (checksum type)
-
error handling improvements, added assertions
-
more page to folio conversion (defrag, truncate), cached size and shift
-
preparation for more fine grained locking of sectors in subpage mode
-
cleanups and refactoring
- include cleanups, forward declarations
- pointer-to-structure helpers
- redundant argument removals
- removed unused code
- slab cache updates, last use of SLAB_MEM_SPREAD removed