Method and system for cross-domain data sharing
First Claim
1. 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.
2 Assignments
0 Petitions
Accused Products
Abstract
A method for sharing data between a first domain and a second domain, including issuing a first request for data from a storage pool by the first domain, receiving the first request by a control domain driver in a control domain, obtaining the data by the control domain driver, storing a first copy of the data in shared memory at a first physical address, updating a hypervisor page map to include an entry associating a 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 by the second domain, receiving the second request by the control domain driver, determining that the first copy of the data is present in the shared memory, and updating the hypervisor page map to include an entry associating the second pseudo-physical page number with the first physical address.
53 Citations
20 Claims
-
1. 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. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10)
-
-
11. A computer readable medium comprising instructions executable by a processor for performing a method, the method comprising:
-
issuing a first request for data from a storage pool by a 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 a 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 a 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 second domain communicate with the control domain using a hypervisor. - View Dependent Claims (12, 13, 14, 15, 16, 17, 18)
-
-
19. A system, comprising:
-
a processor; a main memory comprising a shared memory; a storage pool, wherein the storage pool comprises instructions executable by the processor to perform a method, the method comprising; issuing a first request for data from a storage pool by a 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 the 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 accessible by the control domain, the first domain, and a 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 second domain communicate with the control domain using a hypervisor. - View Dependent Claims (20)
-
Specification