1-7. (canceled)
8. A device, comprising:
at least one processor; and
a memory comprising program instructions, wherein the program instructions are executable by the at least one processor to implement a restore process operable to:
for at least one local block on a data volume being restored, mark the local block to indicate that the local block needs to be restored;
determine a local block on the data volume to be restored;
generate a list indicating at least one local block on a path of an implicit tree structure of the local blocks on the data volume, wherein the list indicates at least the determined local block; and
for each local block indicated in the list, restore the respective local block in the data volume from a snapshot of the data volume.
9. The device as recited in claim 8, wherein, to restore a local block in the data volume from a snapshot of the data volume, the restore process is operable to:
fetch a snapshot block corresponding to the local block from the snapshot; and
write data from the snapshot block to the local block in the data volume.
10. The device as recited in claim 8, wherein the restore process is further operable to, for at least one child local block in the tree structure of at least one local block indicated by the list, mark the child local block to indicate that the block needs to be restored.
11. The device as recited in claim 8, wherein, to generate a list indicating one or more local blocks on a path of an implicit tree structure, the restore process is operable to:
traverse one or more local blocks on the path of the implicit tree structure, wherein the path starts at a root node of the tree structure and extends to the determined local block; and
upon encountering a marked local block on the path being traversed, add an indication of each local block traversed on the path from the marked local block to the determined local block to the list.
12. The device as recited in claim 8, wherein, to determine a local block on the data volume to be restored, the restore process is operable to receive an indication of a local block on the data volume to be restored.
13. The device as recited in claim 12, wherein the received indication is a read request or a write request for the local block, and wherein the restore process is further operable to allow the read request or the write request to proceed after the respective local block is restored from the snapshot.
14. The device as recited in claim 8, wherein the program instructions are further executable by the at least one processor to implement a storage gateway process that provides an interface between one or more client processes on a local network and a storage service provided by a remote network for accessing client data maintained on a remote data store by the storage service.
15. The device as recited in claim 8, wherein, to mark the local block to indicate that the block needs to be restored, the restore process is operable to compute fingerprint data for the local block and write the fingerprint data to at least one location in the respective local block.
16. The device as recited in claim 15, wherein, to compute fingerprint data for the local block, the restore process is operable to compute a cryptographic hash of metadata corresponding to the respective local block.
17. The device as recited in claim 8, wherein, to mark a local block to indicate that the block needs to be restored, the restore process is operable to write marking data that indicates that the respective local block has not been restored to at least the beginning and the end of the respective local block.
18. A non-transitory computer-accessible storage medium storing program instructions computer-executable to implement a restore process operable to:
determine mark data for a local block at a root node of an implicit tree structure and write the mark data to at least one location in the respective local block to indicate that the respective local block needs to be restored, wherein each node in the tree structure corresponds to a particular local block on a data volume to be restored;
obtain indications of local blocks on the data volume to be restored;
for each indication of a local block to be restored:
generate a list specifying at least one local block on a path of the implicit tree structure from the root node of the tree structure to the indicated local block, wherein the list includes at least the indicated local block;
for at least one child local block in the tree structure of at least one local block indicated by the list, determine mark data for the child local block and write the mark data to at least one location in the child local block; and
for each local block specified in the list, restore the respective local block in the data volume from a snapshot of the data volume.
19. The non-transitory computer-accessible storage medium as recited in claim 18, wherein each local block corresponds to a snapshot block of the snapshot, and wherein, to restore a local block in the data volume from a snapshot of the data volume, the restore process is operable to restore data to the respective local from a corresponding snapshot block.
20. The non-transitory computer-accessible storage medium as recited in claim 18, wherein the tree structure is a binary tree structure, and wherein at least one local block at a position n in the binary tree structure has two child local blocks at positions 2n+1 and 2n+2 in the binary tree structure.
21. The non-transitory computer-accessible storage medium as recited in claim 18, wherein, to generate the list specifying at least one local block, the restore process is operable to:
traverse one or more local blocks on the path of the implicit tree structure, wherein the path starts at a root node of the tree structure and extends to the indicated local block; and
upon encountering a marked local block on the path being traversed, add each local block traversed on the path from the marked local block to the indicated local block to the list.
22. The non-transitory computer-accessible storage medium as recited in claim 18, wherein the indications of local blocks on the data volume to be restored include IO requests for respective local blocks, and wherein the restore process is further operable to allow an IO request to proceed after the respective local block is restored.
23. The non-transitory computer-accessible storage medium as recited in claim 18, wherein at least some of the indications of local blocks on the data volume to be restored are generated by the restore process restoring the local blocks as indicated by the tree structure starting at the root node and traversing the nodes of the tree structure, wherein traversing each node generates an indication of a corresponding local block.
24. The non-transitory computer-accessible storage medium as recited in claim 18, wherein the program instructions are further executable to implement a storage gateway process that provides an interface between one or more client processes on a local network and a storage service provided by a remote network for accessing client data maintained on a remote data store by the storage service.
25. The non-transitory computer-accessible storage medium as recited in claim 18, wherein, to determine mark data for a local block, the restore process is operable to compute a fingerprint for the local block, wherein the fingerprint is a cryptographic hash of metadata corresponding to the respective local block.
26. The non-transitory computer-accessible storage medium as recited in claim 18, wherein, to write the mark data to at least one location in the respective local block, the restore process is operable to write the mark data at least at the beginning and the end of the respective local block.
The claims below are in addition to those above.
All refrences to claim(s) which appear below refer to the numbering after this setence.
We claim:
1. A device for introducing a relative delay between orthogonally polarized components of an input signal comprising:
an input port for launching the input signal;
beam splitting means for dividing the input signal into first and second orthogonally polarized
sub-beams, and for directing the first sub-beam along a first path and the second sub-beam along a second path;
first reflecting means in the first path for redirecting the first sub-beam back towards the beam splitting means;
delay means in the first path for imposing a relative delay between the first and second sub-beams;
second reflecting means in the second path for redirecting the second sub-beam back towards the beam splitting means for recombination with the first sub-beam; and
an output port for outputting the recombined first and second sub-beams.
2. The device according to claim 1, wherein the relative delay is a time delay; and wherein the delay means is an optical path length difference between the first and second paths.
3. The device according to claim 2, wherein the first reflecting means is positioned a different distance away from the beam splitting means than the second reflecting means, whereby the first path has a different path length than the second path.
4. The device according to claim 1, further comprising first polarization rotating means in the first path for rotating the polarization of the first sub-beam by 90; and
second polarization rotating means in the second path for rotating the polarization of the second sub-beam by 90.
5. The device according to claim 4, wherein the first polarization rotating means is a first quarter waveplate disposed in the first path, whereby the first sub-beam traverses the first quarter waveplate twice; and wherein the second polarization rotating means is a second quarter waveplate disposed in the second path, whereby the second sub-beam traverses the second quarter waveplate twice.
6. The device according to claim 1, further comprising a waveplate for orienting the polarization of a linearly polarized beam at 45 relative to the beam splitting means, thereby forming the input signal.
7. The device according to claim 1, wherein the beam splitting means is a polarization beam splitting cube.
8. The device according to claim 7, wherein the beam splitting means and the first and second polarization rotating means have anti-reflection coatings thereon, which are selected based on the polarization of the sub-beam passing therethrough.
9. An optical filter comprising:
a first port for launching an input optical signal, which comprises a first and a second set of channels;
a second port for outputting the first set of channels;
a third port for outputting the second set of channels;
a first virtual waveplate comprising:
first beam splitting means for dividing the input signal into first and second orthogonally polarized sub-beams, and for directing the first sub-beam along a first path and the second sub-beam along a second path;
first reflecting means in the first path for redirecting the first sub-beam back towards the first beam splitting means;
second reflecting means in the second path for redirecting the second sub-beam back towards the first beam splitting means for recombination with the first sub-beam, forming a first recombined signal; and
first delay means in the first path for imposing a first relative delay between the first and second sub-beams, whereby when the first and second sub-beams recombine, the first set of channels is orthogonally polarized relative to the second set of channels; and
polarized beam separating means for directing the first set of channels to the second port, and for directing the second set of channels to the third port.
10. The device according to claim 9, wherein the first relative delay is a time delay; and wherein the first delay means is an optical path length difference between the first and second paths.
11. The device according to claim 10, wherein the first reflecting means is positioned a different distance away from the first beams splitting means than the second reflecting means, whereby the first path has a different path length than the second path.
12. The device according to claim 11, further comprising first polarization rotating means in the first path for rotating the polarization of the first sub-beam by 90; and
second polarization rotating means in the second path for rotating the polarization of the second sub-beam by 90.
13. The device according to claim 9, further comprising:
a second virtual waveplate between the first virtual waveplate and the polarized beam separating means comprising:
polarization adjustment means for rotating the polarization of the recombined signal;
second beam splitting means for dividing the recombined signal into third and fourth orthogonally polarized sub-beams, and for directing the third sub-beam along a third path and the fourth sub-beam along a fourth path;
third reflecting means in the third path for redirecting the third sub-beam back towards the second beam splitting means;
fourth reflecting means in the fourth path for redirecting the fourth sub-beam back towards the second beam splitting means for recombination with the third sub-beam, forming a second recombined signal; and
second delay means in the third path for imposing a second relative delay between the third and fourth sub-beams, whereby, when the third and fourth sub-beams recombine, the first set of channels is orthogonally polarized relative to the second set of channels.
14. The device according to claim 13, wherein the first delay means is an optical path length difference between the first and second paths, whereby the first path has an optical path length L longer than the second path; and wherein the second delay means is an optical path length difference between the third and fourth paths, whereby the fourth path has an optical path length 2L longer than the third path.
15. The device according to claim 14, wherein the first reflecting means is separated from the first beam splitting means by a distance L longer than a distance separating the second reflecting means and the first beam splitting means; and wherein the fourth reflecting means is separated from the second beam splitting means by a distance 2L longer than a distance separating the third reflecting means and the second beams splitting means.
16. The device according to claim 13, further comprising;
first polarization rotating means in the first path for rotating the polarization of the first sub-beam by 90;
second polarization rotating means in the second path for rotating the polarization of the second sub-beam by 90, whereby the first beam splitting means directs the first recombined signal towards the second virtual waveplate;
third polarization rotating means in the third path for rotating the polarization of the third sub-beam by 90;
fourth polarization rotating means in the fourth path for rotating the polarization of the fourth sub-beam by 90, whereby the second beams splitting means directs the second recombined signal towards the polarized beam separating means.
17. The device according to claim 16, wherein the first and second beam splitting means, and the first, second, third and fourth polarization rotating means have anti-reflection coatings thereon, which are selected based on the polarization of the sub-beam passing therethrough
18. The device according to claim 13, further comprising: a fourth port for launching a secondary input optical signal; and beam combining means for combining the input optical signal and the secondary optical signal before entering the first virtual waveplate.
19. The device according to claim 13, further comprising:
fifth reflecting means for directing the first set of channels back through the second and subsequently the first virtual waveplates;
fifth polarization rotating means for rotating the polarization of the first set of channels, whereby the state of polarization of the first set of channels entering the second virtual waveplate for a second time is orthogonal to the state of polarization of the first set of channels exiting the second virtual waveplate after a first pass therethrough;
sixth reflecting means for directing the second set of channels back through the second and subsequently the first virtual waveplates; and
sixth polarization rotating means for rotating the polarization of the second set of channels, whereby the state of polarization of the second set of channels entering the second virtual waveplate for a second time is orthogonal to the state of polarization of the second set of channels exiting the second virtual waveplate after a first pass therethrough.
20. The device according to claim 9, wherein the first port comprises:
a birefringent crystal for splitting the input beam into a pair of beams having orthogonal polarizations; and
a half-wave plate for rotating the polarization of one of the pair of beams, whereby the pair of beams has parallel polarizations; and
wherein the second and third ports each comprise:
a half-wave plate for rotating the polarization of one of a pair of beams having parallel polarizations forming a pair of beams with orthogonal polarizations; and
a birefringent crystal for combining the pair of beams with orthogonal polarizations.