I'm monitoring change journal records to check what extents of a file is modified. I'm using this to perform incremental backups of a file. chunk size for the journal by default is set to 16KB
PS E:\> fsutil usn queryjournal E:
Usn Journal ID : 0x01da07f7fb5df881
First Usn : 0x0000000000000000
Next Usn : 0x00000000001b8550
Lowest Valid Usn : 0x0000000000000000
Max Usn : 0x00000fffffff0000
Maximum Size : 0x0000000008000000 (128.0 MB)
Allocation Delta : 0x0000000000800000 ( 8.0 MB)
Minimum record version supported : 2
Maximum record version supported : 4
Write range tracking: Enabled
Write range tracking chunk size: 16384
Write range tracking file size threshold: 1048576
But, I've observed for a file of size 5 TB, sometimes extents are reported with very different chunk sizes.
V3 record found with USN 13346408 and timestamp 2023-11-24 19:54:58 +0000 UTC and reason 1
// V4 extents found with smallest extent of size 16 KB
V3 record found with USN 13412752 and timestamp 2023-11-24 20:24:49 +0000 UTC and reason 80000001
V3 record found with USN 13412840 and timestamp 2023-11-24 20:25:06 +0000 UTC and reason 1
// V4 extents found with smallest extent of size 256 MB
V3 record found with USN 13430544 and timestamp 2023-11-24 20:54:49 +0000 UTC and reason 80000001
V3 record found with USN 13430632 and timestamp 2023-11-24 20:54:50 +0000 UTC and reason 1
// V4 extents found with smallest extent of size 64 MB
V3 record found with USN 13492544 and timestamp 2023-11-24 21:24:49 +0000 UTC and reason 80000001
V3 record found with USN 13492632 and timestamp 2023-11-24 21:24:51 +0000 UTC and reason 1
// V4 extents found with smallest extent of size 16 KB
V3 record found with USN 13579440 and timestamp 2023-11-24 21:54:50 +0000 UTC and reason 80000001
This suggests that change journal after every CLOSE record, dynamically chooses a chunk size (not sure how). I want to understand how this decision is made and is there a way to force change jounral to use 16KB as chunk size always?