Patentable/Patents/US-8452900
US-8452900

Dynamic compression of an I/O data block

PublishedMay 28, 2013
Assigneenot available in USPTO data we have
Inventorsnot available in USPTO data we have
Technical Abstract

In one aspect, a method of compressing data includes splitting an I/O into smaller I/Os based on a throughput of I/Os in a queue, a smaller I/O is equal or smaller than a block size. The method also includes storing the smaller I/Os in the queue. The method further includes asynchronously compressing the smaller I/Os.

Patent Claims
10 claims

Legal claims defining the scope of protection, as filed with the USPTO.

1

1. A method of compressing data comprising: splitting an input/output (I/O) request into smaller I/O requests if a throughput of I/O requests in a queue of I/O requests is below a predetermined threshold, a smaller I/O request is equal or smaller than a block size; storing the smaller I/O requests in the queue; asynchronously compressing the smaller I/O requests; storing metadata comprising a compression indicator, a compression length indicating how many bytes compressed data occupies if the data is compressed and a validity indicator indicating whether the data is being used and the data will be preserved; determining if an I/O request is a read request or a write request; aligning I/O data if the I/O request is a read request; reading the I/O data if the I/O request is a read request; uncompressing the I/O data if the I/O request is a read request; determining if the data in a block is needed based on the validity indicator associated with the block if the I/O request is a write request; pre-reading the I/O data if the data in the block is needed and the I/O data is not aligned; aligning the I/O data if the data in the block is needed and the I/O data is not aligned; uncompressing the pre-read I/O data if the data in the block is needed and the I/O data is not aligned; and merging the data in block with the I/O data if the data in the block is needed and the I/O data is not aligned, wherein the I/O request is one of a read request or a write request.

2

2. The method of claim 1 wherein storing metadata comprises storing the metadata on a storage array associated with a block device.

3

3. The method of claim 1 wherein storing metadata comprises storing the metadata on a memory of a host.

4

4. The method of claim 1 wherein asynchronously compressing the smaller I/O requests comprises asynchronously compressing the smaller I/O requests if the throughput in the queue falls below a predetermined threshold value.

5

5. The method of claim 1 , further comprising, if the I/O request is a read request, decrypting the I/O data before uncompressing.

6

6. The method of claim 1 , further comprising, if the pre-read data in the block is needed, decrypting the I/O data before uncompressing the pre-read I/O data.

7

7. An apparatus, comprising: circuitry configured to: split an input/output (I/O) request into smaller I/O requests if a throughput of I/O requests in a queue of I/O requests is below a predetermined threshold, a smaller I/O request is equal or smaller than a block size; store the smaller I/O requests in the queue; asynchronously compress the smaller I/O requests; determine if the I/O request is a read request or a write request; align I/O data if the I/O request is a read request; read the I/O data if the I/O request is a read request; uncompress the I/O data if the I/O request is a read request; decrypt the I/O data before uncompressing if the I/O request is a read request; store metadata comprising a compression indicator, indicating how many bytes compressed data occupies if the data is compressed and a validity indicator indicating whether the data is being used and the data will be preserved; determine if the I/O request is a read request or a write request; determine if the data in a block is needed based on the validity indicator associated with the block if the I/O request is a write request; pre-read the I/O data if the data in the block is needed and the I/O data is not aligned; align the I/O data if the data in the block is needed and the I/O data is not aligned; uncompress the pre-read I/O data if the data in the block is needed and the I/O data is not aligned; and merge the data in block with the I/O data if the data in the block is needed and the I/O data is not aligned, wherein the I/O request is one of a read request or a write request, wherein the circuitry to asynchronously compress the smaller I/O requests comprises circuitry to asynchronously compress the smaller I/O requests if the throughput in the queue falls below a predetermined threshold value.

8

8. The apparatus of claim 7 wherein the circuitry comprises at least one of a processor, a memory, programmable logic and logic gates.

9

9. An article comprising: a non-transitory machine-readable medium that stores executable instructions, the instructions causing a machine to: split an input/output (I/O) request into smaller I/O requests if a throughput of I/O requests in a queue of I/O requests is below a predetermined threshold, a smaller I/O request is equal or smaller than a block size; store the smaller I/O requests in the queue; asynchronously compress the smaller I/O requests; store metadata comprising a compression indicator, indicating how many bytes compressed data occupies if the data is compressed and a validity indicator indicating whether the data is being used and the data will be preserved; determine if the I/O request is a read request or a write request; align the I/O data determine if the I/O request is a read request or a write request; read the I/O data if the I/O request is a read request or a write request; uncompress the I/O data if the I/O request is a read request or a write request; decrypt the I/O data before uncompressing if the I/O request is a read request; determine if the data in a block is needed based on the validity indicator associated with the block if the I/O request is a write request; pre-read the I/O data if the data in the block is needed and the I/O data is not aligned; align the I/O data if the data in the block is needed and the I/O data is not aligned; uncompress the pre-read I/O data if the data in the block is needed and the I/O data is not aligned; and merge the data in block with the I/O data if the data in the block is needed and the I/O data is not aligned, wherein the I/O request is one of a read request or a write request.

10

10. The article of claim 9 wherein the instructions causing the machine to asynchronously compress the smaller I/O requests comprises instructions causing the machine to asynchronously compress the smaller I/O requests if the throughput in the queue falls below a predetermined threshold value.

Classification Codes (CPC)

Cooperative Patent Classification codes for this invention. Click any code to explore related patents in that topic.

Patent Metadata

Filing Date

December 30, 2010

Publication Date

May 28, 2013

Want to explore more patents?

Browse 5M+ US patents with plain-English claim translations and AI-generated analysis.

Citation & reuse

Analysis on this page is generated by Patentable — an AI-powered patent intelligence platform. AI-generated summaries, explanations, and analysis may be reused with attribution and a visible link back to the canonical URL below. Patent abstracts and claims are USPTO public domain.

Cite as: Patentable. “Dynamic compression of an I/O data block” (US-8452900). https://patentable.app/patents/US-8452900

© 2026 Patentable. All rights reserved.

Patentable is a research and drafting-assistant tool, not a law firm, and does not provide legal advice. Documents we generate are drafts for review by a licensed patent attorney.