1460712769-b5ca6141-9a16-4039-8274-aadb5882eb60

1. A method for managing data versions, the method comprises:
receiving a first request to generate a first version of a source volume;
selectively updating a first control data structure that is indicative of changes of blocks of data associated with different versions of the source volume, in response to the first request, to reflect at least one latest modified block of data that was modified between a first point in time associated with the first version and between second point in time associated with a second version of the first source volume; wherein information representative of different versions of the source volume are stored in a target storage unit; and wherein blocks of data that remain unchanged between multiple versions of the source volume are shared between these multiple versions; wherein the first point in time follows the second point in time and wherein the at least one block data belongs to the volume; and selectively copying blocks of data from the source volume to the target volume in response to the content of the first control data structure.
2. The method according to claim 1 wherein the selectively updating the first control data structure, in response to the first request comprises updating the control data structure to reflect blocks of data that are not stored in the target storage unit but should be copied to the target storage unit.
3. The method according to claim 1 wherein the first control data structure comprises a B-Tree per volume that is keyed by a key that comprises a data block identifier and a requested point in time.
4. The method according to claim 3 wherein the stage of selectively updating the first control data structure in response to the first request, comprises generating an empty entry in the B-Tree; wherein this empty entry is filled when the corresponding block of data is copied to the target storage unit.
5. The method according to claim 1 further comprising receiving a request to retrieve a requested version of the volume and copying, to the target storage unit at least one block of data that belongs to the requested version if (i) the at least one block of data was not copied to the storage target unit and (ii) the at least one block of data was modified between a point in time associated with the requested version and a point in time associated with at least one previous versions.
6. The method according to claim 1 wherein establishing a new version comprises establishing an incremental flash copy relation on the source and the copying is done using flash copy services.
7. The method according to claim 1 further comprising updating entries of at least one control data structure in a lazy manner.
8. The method according to claim 1 further comprising maintaining a third control data structure indicative of oldest version of blocks of data that are not copied to the target storage unit; wherein the third control data structure is indicative of blocks of data the belong to multiple versions.
9. The method according to claim 1 further comprising maintaining a third control data structure indicative of oldest version of blocks of data that are not copied to the target storage unit and maintaining a fourth control data structure indicative of second oldest version of blocks of data that are not stored in the target storage unit; wherein the third and fourth control data structures facilitate a direct access to their entries.
10. The method according to claim 1 further comprising maintaining a sixth data structure indicative of most updated versions of blocks of data that were successfully copied to the target volume.
11. A computer program product comprising a computer usable medium including a computer readable program, wherein the computer readable program when executed on a computer causes the computer to: receive a first request to generate a first version of a source volume; selectively update a first control data structure that is indicative of changes of blocks of data associated with different versions of the source volume, in response to the first request, to reflect at least one latest modified block of data that was modified between a first point in time associated with the first version and between second point in time associated with a second version of the first source volume; wherein information representative of different versions of the source volume are stored in a target storage unit; and to selectively copy blocks of data from the source volume to the target volume in response to the content of the first control data structure; wherein blocks of data that remain unchanged between multiple versions of the source volume are shared between these multiple versions; wherein the first point in time follows the second point in time and wherein the at least one block data belongs to the volume.
12. The computer program product according to claim 11 wherein the computer readable program when executed on a computer causes the computer to update the control data structure to reflect blocks of data that are stored in the target storage unit as well as at least one block of data that is not stored in the target storage unit but will be copied to the target storage unit in response to at least one request to generate a future version of the volume.
13. The computer program product according to claim 11 wherein the computer readable program when executed on a computer causes the computer to selectively update a first control data structure that comprises a B-Tree per volume, wherein the B-Tree is keyed by a key that comprises a volume identifier and a requested point in time.
14. The computer program product according to claim 13 wherein the computer readable program when executed on a computer causes the computer to generate an empty entry in the B-Tree; wherein this empty entry is filled when the corresponding block of data is copied to the target storage unit.
15. The computer program product according to claim 11 wherein the computer readable program when executed on a computer causes the computer to receive a request to retrieve a requested version of the volume and copy, to the target storage unit at least one block of data that belongs to the requested version if (i) the at least one block of data was not copied to the storage target unit and (ii) the at least one block of data was modified between a point in time associated with the requested version and a point in time associated with at least one previous versions.
16. The computer program product according to claim 11 wherein the computer readable program when executed on a computer causes the computer to establish an incremental flash copy relation on the source and to copy using flash copy services.
17. The computer program product according to claim 11 wherein the computer readable program when executed on a computer causes the computer to update entries of at least one control data structure in a lazy manner.
18. The computer program product according to claim 11 wherein the computer readable program when executed on a computer causes the computer to maintain a third control data structure indicative of oldest version of blocks of data that are not copied to the target storage unit; wherein the third control data structure is indicative of blocks of data the belong to multiple versions.
19. The computer program product according to claim 11 wherein the computer readable program when executed on a computer causes the computer to maintain a third control data structure indicative of oldest version of blocks of data that are not copied to the target storage unit and maintain a fourth control data structure indicative of second oldest version of blocks of data that are not stored in the target storage unit; wherein the third and fourth control data structures facilitate a direct access to their entries.
20. The computer program product according to claim 11 wherein the computer readable program when executed on a computer causes the computer to maintain a sixth data structure indicative of most updated versions of blocks of data that were successfully copied to the target volume.
21. A storage controller comprising a system memory, a source cache and a target cache, wherein the storage controller is adapted to be coupled to a source target unit and to a target storage unit; wherein the storage controller is adapted to: receive a first request to generate a first version of a source volume; selectively update a first control data structure that is indicative of changes of blocks of data associated with different versions of the source volume, in response to the first request, to reflect at least one latest modified block of data that was modified between a first point in time associated with the first version and between second point in time associated with a second version of the first source volume; and to selectively copy blocks of data from the source volume to the target volume in response to the content of the first control data structure; wherein information representative of different versions of the source volume are stored in the target storage unit; and wherein blocks of data that remain unchanged between multiple versions of the source volume are shared between these multiple versions; wherein the first point in time follows the second point in time and wherein the at least one block data belongs to the volume.
22. The storage controller according to claim 21 wherein the storage controller is adapted to update the control data structure to reflect blocks of data that are not stored in the target storage unit but should be copied to the target storage unit.
23. The storage controller according to claim 21 further adapted to maintain a third control data structure indicative of oldest version of blocks of data that are not copied to the target storage unit.
24. The storage controller according to claim 21 further adapted to maintain a third control data structure indicative of oldest version of blocks of data that are not copied to the target storage unit and maintaining a fourth control data structure indicative of second oldest version of blocks of data that are not stored in the target storage unit; wherein the third and fourth control data structures facilitate a direct access to their entries.
25. The storage controller according to claim 21 further adapted to maintain a sixth data structure indicative of most updated versions of blocks of data that were successfully copied to the target volume.
26. The storage controller according to claim 21 wherein the first control data structure comprises a B-Tree per volume that is keyed by a key that comprises a data block identifier and a requested point in time.
27. The storage controller according to claim 26 further adapted to generate an empty entry in the B-Tree; wherein this empty entry is filled when the corresponding block of data is copied to the target storage unit.
28. The storage controller according to claim 21 further adapted to receive a request to retrieve a requested version of the volume and copy, to the target storage unit at least one block of data that belongs to the requested version if (i) the at least one block of data was not copied to the storage target unit and (ii) the at least one block of data was modified between a point in time associated with the requested version and a point in time associated with at least one previous versions.
29. The storage controller according to claim 21 further adapted to establish an incremental flash copy relation on the source and the copying is done using flash copy services.
30. The storage controller according to claim 21 further adapted to update entries of at least one control data structure in a lazy manner.
31. A method for providing a service to a customer, the method comprises:
receiving, over a network, a first request to generate a first version of a source volume;
selectively updating a first control data structure that is indicative of changes of blocks of data associated with different versions of the source volume, in response to the first request, to reflect at least one latest modified block of data that was modified between a first point in time associated with the first version and between second point in time associated with a second version of the first source volume; wherein information representative of different versions of the source volume are stored in a target storage unit; and wherein blocks of data that remain unchanged between multiple versions of the source volume are shared between these multiple versions; wherein the first point in time follows the second point in time and wherein the at least one block data belongs to the volume; and selectively copying blocks of data from the source volume to the target volume in response to the content of the first control data structure; and
providing, over the network, in response to a request to retrieve a requested version of the volume, the requested version of the volume.
32. The method according to claim 31 wherein the selectively updating the first control data structure, in response to the first request comprises updating the control data structure to reflect blocks of data that are not stored in the target storage unit but should be copied to the target storage unit.
33. The method according to claim 31 wherein the first control data structure comprises a B-Tree per volume that is keyed by a key that comprises a data block identifier and a requested point in time.
34. The method according to claim 31 wherein the stage of selectively updating the first control data structure in response to the first request, comprises generating an empty entry in the B-Tree; wherein this empty entry is filled when the corresponding block of data is copied to the target storage unit.
35. The method according to claim 31 further comprising copying, to the target storage unit at least one block of data that belongs to the requested version if (i) the at least one block of data was not copied to the storage target unit and (ii) the at least one block of data was modified between a point in time associated with the requested version and a point in time associated with at least one previous versions.

The claims below are in addition to those above.
All refrences to claim(s) which appear below refer to the numbering after this setence.

1. A temperature insensitive diode-pumped solid state laser, the laser comprising:
a. a pair of reflectors for defining a laser cavity;
b. a wavelength stabilized pump laser diode for emitting pump light at a pump wavelength into the laser cavity;
c. a laser gain crystal disposed in the laser cavity for absorbing the pump light and for producing a laser output;
d. an optical beam splitter for tapping a portion of the laser output;
e. a photo detector for detecting a power of the tapped laser output and for outputting a signal representing the detected power; and
f. a feedback control system for receiving the signal from the photo detector and for controlling a drive current of the pump laser diode based on the signal from the photo detector.
2. The solid state laser of claim 1, further comprising an optical filter for blocking the pump wavelength in the laser output.
3. The solid state laser of claim 1, wherein the pump wavelength of the pump laser diode is stabilized using a wavelength locking mechanism.
4. The solid state laser of claim 3, wherein the wavelength locking mechanism comprises a volume Bragg grating.
5. The solid sate laser of claim 1, wherein the feedback control system increases the drive current of the pump laser diode when the detected signal on the photo detector decreases and decreases the drive current of the pump laser diode when the detected signal on the photo detector increases.
6. The solid state laser of claim 1, further comprising a plurality of nonlinear crystals for converting a first wavelength of the laser output to a second wavelength.
7. The solid state laser of claim 6, wherein said plurality of nonlinear crystals are cut or positioned with different spatial orientations to operate in different temperature ranges.
8. The solid state laser of claim 6, wherein said plurality of nonlinear crystals are composed of different materials and thickness to operate in different temperature ranges.
9. A method for operating a diode-pumped solid state laser having a pump laser diode, a laser cavity, a laser gain crystal, and a plurality of nonlinear crystals such that the laser operates in a temperature-insensitive manner, the method comprising the steps of:
a. stabilizing a wavelength of the pump laser diode using a wavelength locking mechanism;
b. optimizing crystal orientations of the plurality of nonlinear crystals for wide temperature range operation; and
c. controlling a current of the pump laser diode in response to the temperature induced laser power variation.
10. The method of claim 9, wherein the wavelength locking mechanism comprises a volume Bragg grating.