QueryChangedDiskAreas API call returns a FileFault error
search cancel

QueryChangedDiskAreas API call returns a FileFault error

book

Article ID: 308049

calendar_today

Updated On:

Products

VMware vSphere ESXi

Issue/Introduction

Symptoms:
When you execute the QueryChangedDiskAreas API call with a snapshot parameter, and with an offset of 0 and a changeId of *, the call returns a FileFault error similar to:
2012-09-04T11:56:17.846+02:00 [03616 info 'Default' opID=52dc4afb] [VpxLRO] -- ERROR task-internal-4118 -- vm-26512 -- vim.VirtualMachine.queryChangedDiskAreas: vim.fault.FileFault:
--> Result:
--> (vim.fault.FileFault) {
--> dynamicType = <unset>,
--> faultCause = (vmodl.MethodFault) null,
--> file = "/vmfs/volumes/4ff2b68a-8b657a8e-a151-3cd92b04ecdc/VM/VM.vmdk",
--> msg = "Error caused by file /vmfs/volumes/4ff2b68a-8b657a8e-a151-3cd92b04ecdc/VM/VM.vmdk",
--> }


Environment

VMware vSphere Web Services SDK 5.0
VMware vSphere Web Services SDK 4.1

Cause

This issue occurs when attempting to call QueryChangedAreaDisks on a CBT-enabled virtual machine which has been migrated to a different datastore. Occasionally, this issue has also been observed on CBT-enabled virtual machines which have not been migrated.

Resolution

This is a known issue, and is being reviewed by VMware.

To work around this issue, disable then re-enable Changed Block Tracking (CBT) on the affected virtual machine:

  1. Remove any existing snapshots. For more information, see Understanding virtual machine snapshots in VMware ESXi and ESX (1015180).

  2. Disable CBT using the VI API or the Managed Object Browser (MOB):

    • To disable CBT using the Managed Object Browser:

      Note: For more information on using the Managed Object Browser, see Using the MOB to Explore the Object Model in the vSphere API/SDK Documentation.

      1. Access the virtual machine in the MOB, and click on the ReconfigVM_Task method.
      2. Modify the VirtualMachineConfigSpec parameter to set changeTrackingEnabled to false.

        For example:

        <spec>
        <changeTrackingEnabled>false</changeTrackingEnabled>
        </spec>


    • To disable CBT using the VI API:

      • Use the setChangeTrackingEnabled API call.

        For example:

        VirtualMachineConfigSpec spec = vimPortType.getVMConfigSpec(vmMor);
        spec = new VirtualMachineConfigSpec();
        spec.setChangeTrackingEnabled(false);
        boolean reconfiguration = vimPortType.reconfigVM(vmMor, spec);


  3. Enable CBT using the VI API or Managed Object Browser. Follow the process in step 2, but set the value to true.

  4. Take a snapshot of the virtual machine.

  5. Call QueryChangedDiskAreas with the current snapshot.


Additional Information

To be alerted when this document is updated, click the Subscribe to Article link in the Actions box

For related information, see Changed Block Tracking (CBT) on virtual machines (1020128).
Understanding VM snapshots in ESXi / ESX
Changed Block Tracking (CBT) on virtual machines