2.6.1.3.4 Backfilling

Backfilling is an allocation strategy designed to reclaim some of the free space in the PST methodically walking through the file from end to start, filling in empty spaces along the way as allocation requests come in. The backfilling process is initiated when the overall file utilization (that is, free space to file size ratio) drops below a threshold. The threshold is not specified in the PST file and is up to the implementation of the PST client.

When a backfill is initiated, the DFL_BACKFILL_COMPLETE flag is cleared from the DList and the ulCurrentPage field in the DLISTPAGE is set to the index of the last AMap page of the PST. For subsequent allocations, the implementation SHOULD scan for free space backwards (that is, towards the beginning of the file). If space is found, then space is allocated from the AMap page indicated by ulCurrentPage. However, if that AMap page cannot service the allocation, then ulCurrentPage is updated with the index of the AMap page before the current page. The process repeats itself until the ulCurrentPage reaches the first AMap page, in which case the backfill has finished and the DFL_BACKFILL_COMPLETE flag is set in bFlags.

Note that backfilling is an optional optimization feature and is not required.<22>