A method for efficiently handling partial write requests in a storage system includes allocating a new block of data for the new partial data, and allocating a record in an extent map to record the location of the new partial data block, the location of the old partial data block and the offset length for each data block. Data blocks can be repackaged in the background when system resources are available. A full, but misaligned write request is also efficiently handled by writing the new data to a newly allocated data block and allocating new records in an extent map to record information corresponding to two partial write operations.
Legal claims defining the scope of protection, as filed with the USPTO.
1. A method of processing data write requests in a data storage system, comprising: identifying a misaligned compressed data block that occupies only a portion of a first uniformly sized data block of a storage device by determining disparity between a memory address of the misaligned compressed data block with a memory address of the uniformly sized first data block where the compressed data block is stored; receiving a data write request, said data write request configured to replace old data, stored at the compressed data block, with new uncompressed data; allocating a new uniformly sized data block at the storage device; allocating a first extent data structure configured to associate a location of the new uncompressed data with a location of the old data; writing the new uncompressed data to the new uniformly sized block of data; recording a location of the new uncompressed data to the first extent data structure; recording a first location of the old data to the first extent data structure; and compressing the new uncompressed data based on storage device usage or storage device capacity.
2. The method of claim 1 , further comprising: allocating a second extent data structure to associate a portion of the misaligned compressed data block that spans the first uniformly sized data block and a second uniformly sized data block; and recording a second location of the old data to the second extent data structure, where the second location corresponds to the second uniformly sized data block storing the portion of the misaligned compressed data block and another uniformly sized data block allocated for storing the portion stored at the second uniformly sized data block.
3. The method of claim 1 , further comprising: identifying a most recently used extent data structure for the misaligned compressed data block, when the misaligned compressed data block is subject to more than one write operation; and deleting other extent data structures, except the most recently used extent data structure for the misaligned compressed data block.
4. The method of claim 1 , further comprising monitoring storage device usage.
5. The method of claim 4 , further comprising: consolidating a plurality of extent data structures when storage device usage is below a threshold; and deleting one or more of the plurality of extent data structures.
6. The method of claim 1 , further comprising: monitoring remaining storage device capacity.
7. The method of claim 6 , further comprising: consolidating a plurality of extent data structures when storage device capacity is below a threshold; and deleting one or more of the plurality of extent data structures.
8. A non-transitory, machine readable storage medium having stored thereon instructions for performing a method of processing data write requests in a data storage system, comprising machine executable code which when executed by at least one machine, causes the machine to: identify a misaligned compressed data block that occupies only a portion of a first uniformly sized data block of a storage device by determining any disparity between a memory address of the misaligned compressed data block with a memory address of the uniformly sized first data block where the compressed data block is stored; receive a data write request, said data write request configured to replace old data, stored at the compressed data block with new uncompressed data; allocate a new uniformly sized data block at the storage device; allocate a first extent data structure configured to associate a location of the new uncompressed data with a location of the old data; write the new uncompressed data to the new uniformly sized block of data; record a location of the new uncompressed data to the first extent data structure; record a first location of the old data to the first extent data structure; and compress the new uncompressed data based on storage device usage or storage device capacity.
9. The storage medium of claim 8 , the machine executable code further causes the machine to allocate a second extent data structure to associate a portion of the misaligned compressed data block that spans the first uniformly sized data block and a second uniformly sized data block; and record a second location of the old data to the second extent data structure, where the second location corresponds to the second uniformly sized data block storing the portion of the misaligned compressed data block and another uniformly sized data block allocated for storing the portion stored at the second uniformly sized data block.
10. The storage medium of claim 8 , the machine executable code further causes the machine to identify a most recently used extent data structure for the misaligned compressed data block, when the misaligned compressed data block is subject to more than one write operation; and delete other extent data structures, except the most recently used extent data structure for the misaligned compressed data block.
11. The storage medium of claim 8 , the machine executable code further causes the machine to monitor storage device usage.
12. The storage medium of claim 11 , the machine executable code further causes the machine to consolidate a plurality of extent data structures when storage device usage is below a threshold; and delete one or more of the plurality of extent data structures.
13. The storage medium of claim 8 , further causes the machine to monitor remaining storage device capacity.
14. The storage medium of claim 13 , further causes the machine to consolidate a plurality of extent data structures when storage device capacity is below a threshold; and delete one or more of the plurality of extent data structures.
15. A system comprising: a memory containing machine readable medium comprising machine executable code having stored thereon instructions; and a processor module coupled to the memory, the processor module configured to execute the machine executable code to: identify a misaligned compressed data block that occupies only a portion of a first uniformly sized data block of a storage device by determining any disparity between a memory address of the misaligned compressed data block with a memory address of the uniformly sized first data block where the compressed data block is stored; receive a data write request, said data write request configured to replace old data, stored at the compressed data block with new uncompressed data; allocate a new uniformly sized data block at the storage device; allocate a first extent data structure configured to associate a location of the new uncompressed data with a location of the old data; write the new uncompressed data to the new uniformly sized block of data; record a location of the new uncompressed data to the first extent data structure; record a first location of the old data to the first extent data structure; and compress the new uncompressed data based on storage device usage or storage device capacity.
16. The system of claim 15 , the machine executable code, which when executed further allocates a second extent data structure to associate a portion of the misaligned compressed data block that spans the first uniformly sized data block and a second uniformly sized data block; and records a second location of the old data to the second extent data structure, where the second location corresponds to the second uniformly sized data block storing the portion of the misaligned compressed data block and another uniformly sized data block allocated for storing the portion stored at the second uniformly sized data block.
17. The system of claim 15 , the machine executable code, which when executed further identifies a most recently used extent data structure for the misaligned compressed data block, when the misaligned compressed data block is subject to more than on write operation; and deletes other extent data structures, except the most recently used extent data structure for the misaligned compressed data block.
18. The system of claim 15 , the machine executable code, which when executed further monitors storage device usage.
19. The system of claim 18 , the machine executable code, which when executed further consolidates a plurality of extent data structures when storage device usage is below a threshold; and deletes one or more of the plurality of extent data structures.
20. The system of claim 15 , the machine executable code, which when executed further monitors remaining storage device capacity.
21. The system of claim 20 , the machine executable code, which when executed further consolidates a plurality of extent data structures when storage device capacity is below a threshold; and deletes one or more of the plurality of extent data structures.
Cooperative Patent Classification codes for this invention. Click any code to explore related patents in that topic.
December 28, 2011
September 23, 2014
Browse 5M+ US patents with plain-English claim translations and AI-generated analysis.