Patent ID: 8037279

Claim:
A method for sharing data between a first domain and a second domain, comprising: issuing a first request for the data from a storage pool by the first domain, wherein the first request comprises a first pseudo-physical page number, wherein the first domain comprises a first domain address map, and wherein the first domain address map comprises an entry associating the first pseudo-physical page number with a first virtual memory address; receiving the first request by a control domain driver in a control domain; identifying, in response to the first request, a first clone of a hierarchical block tree, wherein the first clone corresponds to the first domain; traversing the first clone to determine that the data is not in shared memory; obtaining, in response to determining that the data is not in the shared memory, the data from the storage pool by the control domain driver; storing a first copy of the data in the shared memory at a first physical address, wherein the shared memory is accessible by the control domain, the first domain, and the second domain; updating a hypervisor page map to include an entry associating the first pseudo-physical page number with the first physical address; notifying the first domain that the first request has been completed; issuing a second request for the data from the storage pool by the second domain, wherein the second request comprises a second pseudo-physical page number, wherein the second domain comprises a second domain address map, and wherein the second domain address map comprises an entry associating the second pseudo-physical page number with a second virtual memory address; receiving the second request by the control domain driver in the control domain, wherein the second request comprises a requested metaslab identifier and a requested offset of the data; identifying, in response to the second request, a second clone of the hierarchical block tree, wherein the second clone corresponds to the second domain; traversing the second clone using the requested metaslab identifier and the requested offset; determining, by the control domain driver while traversing the second clone, that the first copy of the data is present in the shared memory by identifying a match between the requested metaslab identifier and the requested offset and a data's metaslab identifier and a data's offset corresponding to the first copy of the data, wherein the first copy of the data is referenced in the second clone; updating the hypervisor page map to include an entry associating the second pseudo-physical page number with the first physical address; and notifying the second domain that the second request has been completed, wherein the first domain and the second domain communicate with the control domain using a hypervisor.