

The RO client also attempts to merge the RW VHD(x) as it may be the last session to disconnect. Merge operations can only be done if there are no open handles to either the difference disk or the parent VHD(x).Merge operations on an ReFS file system, where the difference disk and the parent are on the same ReFS volume, are nearly instantaneous regardless the size of the difference disk.This is why both RW and RO clients attempt a merge operation. If one client begins the merge operation and is interrupted or powered off, another client can safely continue and complete the merge). The merge operation can be safely interrupted and continued.The RW difference disk is stored on the network next to the parent VHD(x) file and is named RW.VHD(x).RO difference disks are stored in the local temp directory and are named %usersid%_RO.VHD(x).If the RW.VHD(x) file does exist, the client takes the RO role and does the same steps as ProfileType = 2. If it doesn't, the client takes the RW role and performs the same steps as ProfileType = 1. Client checks to see if a RW.VHD(x) file exists.Client detaches the RO difference disk.ģ: Computer attempts Read/Write lock, revert to Read Only.Client attached the RO difference disk as the user's Profile VHD.Client creates the new RO difference disk.Client attempts to delete the previous RO difference disk (if it exists).Client detaches the RW.VHD(x) difference disk (the user's Profile VHD/X).Client attaches the RW.VHD(x) as the Profile VHD.

Client creates a new RW.VHD(x) difference disk.If it completes the merge, the RW.VHD(x) file is deleted. If it is successful, it merges the difference disk to the parent. Client attempts to open the RW.VHD(x) difference disk with Read/Write access.If a concurrent access is attempted, it will fail with a sharing violation (error 20) Client tries to directly attach the VHD(x) file.Any other value will implement VHD(x) differencing disks. This VHD(x) is also know as the VHD(x) base disk. A value of 0 (default) is the normal behavior for the VHD(x).
