STORAGE SYSTEM FOR ATOMIC WRITE WHICH INCLUDES A PRE-CACHE
Storage systems which allow atomic write operations, methods of operating thereof, and corresponding computer program products. By way of non-limiting example, a possible method includes: configuring volatile memory into cache memory and pre-cache memory; receiving an indication that a plurality of blocks relating to a command is to be written as an atomic write operation; enabling tracking of the atomic write operation; caching at least one block from the plurality in the pre-cache memory; and upon receiving an indication that all blocks in the plurality have been successfully accommodated in the pre-cache memory, enabling data corresponding to the plurality of blocks to subsequently be cached in the cache memory and discontinuing tracking of the atomic write operation.
1 . A method of operating a storage system which includes a control layer, said control layer including a volatile memory and a volatile memory control module, said control layer operatively coupled to a physical storage space including a plurality of storage disk drives, the method comprising:
configuring said volatile memory into cache memory and pre-cache memory;
receiving an indication that a plurality of blocks relating to a command is to be written as an atomic write operation;
enabling tracking of said atomic write operation;
caching at least one block from said plurality in said pre-cache memory; and
upon receiving an indication that all blocks in said plurality have been successfully accommodated in said pre-cache memory, enabling data corresponding to said plurality of blocks to subsequently be cached in said cache memory and discontinuing tracking of said atomic write operation.
2 . The method of claim 1 , wherein a commit write command is said indication that all blocks have been successfully accommodated in said pre-cache memory.
3 . The method of claim 1 , wherein said enabling data corresponding to said plurality of blocks to subsequently be cached in said cache memory includes: moving said data to said cache memory.
4 . The method of claim 1 , wherein said enabling data corresponding to said plurality of blocks to subsequently be cached in said cache memory includes: reassigning memory blocks in said pre-cache memory which include said data to said cache memory.
5 . The method of claim 1 , further comprising:
upon receiving instead an indication that an event has occurred which precludes at least one block in said plurality from being successfully accommodated in said pre-cache memory, discarding data in said pre-cache memory which corresponds to said atomic write operation system and discontinuing tracking of said atomic write operation.
6 . The method of claim 5 , wherein said event includes a failure at an external host or in a connection with an external host port.
7 . The method of claim 1 , wherein said storage system communicates with an external host using an SCSI protocol.
8 . The method of claim 1 , wherein said enabling tracking includes: adding an entry for said atomic write operation to a table or other data structure which tracks active atomic write operations.
9 . A storage system, comprising:
a physical storage space including a plurality of storage disk drives;
a control layer including a volatile memory, and a volatile memory control module, said control layer operatively coupled to said physical storage space and operable to:
configure said volatile memory into cache memory and pre-cache memory;
receive an indication that a plurality of blocks relating to a command is to be written as an atomic write operation;
enable tracking of said atomic write operation;
cache at least one block from said plurality in said pre-cache memory; and
upon receipt of an indication that all blocks in said plurality have been successfully accommodated in said pre-cache memory, enable data corresponding to said plurality of blocks to subsequently be cached in said cache memory and discontinue tracking of said atomic write operation.
10 . The system of claim 9 , wherein a commit write command is said indication that all blocks have been successfully accommodated in said pre-cache memory.
11 . The system of claim 9 , wherein operable to enable data corresponding to said plurality of blocks to subsequently be cached in said cache memory includes:
operable to move said data to said cache memory.
12 . The system of claim 9 , wherein operable to enable data corresponding to said plurality of blocks to subsequently be cached in said cache memory includes:
operable to reassign memory blocks in said pre-cache memory which include said data to said cache memory.
13 . The system of claim 9 , wherein said control layer is further operable to:
upon receipt instead of an indication that an event has occurred which precludes at least one block in said plurality from being successfully accommodated in said pre-cache memory, discard data in said pre-cache memory which corresponds to said atomic write operation and discontinue tracking of said atomic write operation.
14 . The system of claim 13 , wherein said event includes a failure at an external host or in a connection with a host port.
15 . The system of claim 9 , wherein said control layer is operable to communicate with an external host using an SCSI protocol.
16 . The system of claim 9 , wherein operable to enable tracking includes: operable to add an entry for said atomic write operation to a table or other data structure which tracks active atomic write operations.
17 . A computer program product comprising a non-transitory computer usable medium having computer readable program code embodied therein for operating a storage system which includes a control layer, said control layer including a volatile memory and a volatile memory control module, said control layer operatively coupled to a physical storage space including a plurality of storage disk drives, the computer program product comprising:
computer readable program code for causing the computer to configure said volatile memory into cache memory and pre-cache memory;
computer readable program code for causing the computer to receive an indication that a plurality of blocks relating to a command is to be written as an atomic write operation;
computer readable program code for causing the computer to enable tracking of said atomic write operation;
computer readable program code for causing the computer to cache at least one block from said plurality in said pre-cache memory; and
computer readable program code for causing the computer, upon receiving an indication that all blocks in said plurality have been successfully accommodated in said pre-cache memory, to enable data corresponding to said plurality of blocks to subsequently be cached in said cache memory and to discontinue tracking of said atomic write operation.