Steelfusion prefetch may log warning messages for ZERO payload blocks in vhdx during optimisation

Categories: SteelFusion Edge, SteelFusion Core
Solution Number: S32882

Issue

 
Per the Vhdx ( Hyper-V virtual hard disk) specification document, a payload block ( read it as ‘data block’ ) can be in one of the following states – FULLY PRESENT, PARTIALLY PRESENT, NOT PRESENT, UNDEFINED, ZERO , UNMAPPED.
 
In Steelfusion vhdx prefetch stack, all the FULLY PRESENT & PARTIALLY PRESENT states are translated to valid blocks.
 
For UNDEFINED, ZERO, UNMAPPED, NOT PRESENT states, the spec mentions that reads to those blocks shall return zero data/ arbitrary data. Since there is no benefit in prefetching zero/arbitrary blocks from core to edge, pfstack in steelfusion core is expected to log translation failures for RAH on such blocks.
NtfsCrawler module in prefetch stack attempt to do these translations and log a ERR message whenever there is a failure. This is different layer/module with in pfstack and do not have the capability to differentiate between genuine vs expected translation failures. In case of genuine translation failures, these logs have critical info for debug ability, hence marked at ERR/WARN level.

 
Prefetch stack may attempt to read the blocks in these states in following scenarios:
  1. RAH technique on a thin provisioned vhdx.
  2. A block is allocated, but corresponding writes are not committed yet to core. Prefetch stack crawls vhdx only once for the first read after LUN is made online. Block states read during crawl are maintained in-mem. Recrawl is not triggered for every write on vhdx because, it is IO and compute intensive.
  3. A block is actually in one of these states, prefetch stack may attempt to read as part of RAH techniques.

Solution

There is no functional impact these message are expected in some scenarios as described above.
NOTICE: Riverbed® product names have changed. Please refer to the Product List for a complete list of product names.
Last Modified: 2018-12-14
Can't find an answer? Create a case