* `>0` makes bees start with the `thread-min` number of workers and then add more until either the 1-minute load average approaches the target or the `thread-max` limit is reached.
* **`task-queue-max`**
- Maximum number of extent-scan tasks the crawler will queue at once before backpressuring itself, expressed as a count of in-flight `Task` objects. Larger values increase parallelism and memory use; smaller values reduce wasted work after a restart by keeping fewer extents in flight.
+ Maximum number of extent-scan tasks the scanner will queue at once before backpressuring itself, expressed as a count of in-flight `Task` objects. Larger values increase parallelism and memory use; smaller values reduce wasted work after a restart by keeping fewer extents in flight.
This parameter cannot be set too low, or scanners will not be able to allocate any `Task` objects and the crawl will starve. The exact minimum depends on bees implementation details that may change between releases; treat **50** as a risky minimum.
## [scan.extent.*] sections
-The `[scan.extent.*]` sections configure the extent scan mode. Extent scan walks the btrfs extent tree in physical address order, dividing extents into size tiers and dispatching a crawler task for each tier.
+The `[scan.extent.*]` sections configure the extent scan mode. Extent scan divides extents into size tiers; each tier is a scanner with its own size range and filter chain. Each scanner has a crawler that walks the btrfs extent tree in physical address order, enumerating extents for the scanner to process.
### Wildcard defaults: [scan.extent.*]
Set to `no` to disable all extent size tiers by default, then enable individual tiers.
* **`size-min`**
- Minimum physical (post-compression) extent size for this tier. Extents smaller than this are skipped by the crawler. Accepts [size values](config-format.md#size-values). Default: `0`.
+ Minimum physical (post-compression) extent size for this tier. Extents smaller than this are skipped by the scanner. Accepts [size values](config-format.md#size-values). Default: `0`.
* **`size-max`**
Maximum physical extent size for this tier. Extents larger than this are skipped by the scanner. Accepts [size values](config-format.md#size-values); `max` means no upper bound. Default: `max`.
`1` selects the temporary `scan_next_extent` hook for integration tests.
* **`first-transid`**
- Where a crawler starts scanning **the first time the tier is created** — that
+ Where this scanner starts **the first time the tier is created** — that
is, when there is no saved position for it in `beespoint.ini`. A tier that
already has a saved position always resumes from that position and ignores
this setting. Default: `min`. Inherited from `[scan.extent.*]` if not set
| Value | Starting point | Effect |
|-------|----------------|--------|
- | `min` | Lowest min-transid of existing crawlers | Default. The new tier joins the in-progress scans without redundantly re-sweeping data already scanned and committed past. On a fresh install (no crawlers yet) this is transid 0, so bees scans everything. |
+ | `min` | Lowest min-transid of existing scanners | Default. The new tier joins the in-progress scans without redundantly re-sweeping data already scanned and committed past. On a fresh install (no scanners yet) this is transid 0, so bees scans everything. |
| `zero` | Beginning of the filesystem | The new tier independently re-scans **all** existing data. Use after widening a size tier, relaxing a filter, or adding a hash function, when a full historical pass can find duplicates the old configuration could not. |
| `current` | Current filesystem transid | The new tier ignores everything written before now and only processes **future** writes. |
### Named tier sections: [scan.extent.NAME]
-Each named section corresponds to one crawler scanning extents in its configured size range. The section name is an opaque label with no special meaning — size bounds come from `size-min` and `size-max`, not from the name. The default configuration has six tiers:
+Each named section configures one scanner that processes extents in its configured size range. The section name is an opaque label with no special meaning — size bounds come from `size-min` and `size-max`, not from the name. The default configuration has six tiers:
| Section | Default size range |
|---------|--------------------|