# US 2025/0094640 A1 · Compressed Data Integrity Veritification Using Data Integrity Field

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 2025/0094640 A1
- Document ID: US20250094640A1
- Status: Published application
- Kind: A1
- Application number: 18/368,156
- Filed: 2023-09-14
- Published: 2025-03-20
- Earliest claimed: 2023-09-14
- Assignees: Dell Products L.P.
- Applicants: Dell Products, L.P.
- Inventors: Kenneth Dorman; Lixin Pang; Rong Yu; Jeremy O'Hare; James Guyer; Jason Duquette
- Web page: https://patentgrep.com/patent/US20250094640A1

## CPC

- G06F 21/64: Protecting data integrity, e.g. using checksums, certificates or signatures
- G06F 11/1004: {to protect a block of data words, e.g. CRC or checksum (G06F11/1076 takes precedence; security arrangements for protecting computers or computer systems against unauthorized activity G06F21/00)}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

Data Integrity Field (DIF) is used to implement compression verification. When a write IO operation is received, the write IO operation is divided into data blocks, and a respective DIF is created and appended to each data block. When the write IO is compressed, the data blocks and respective DIF are collectively compressed to form compressed data. The compressed data is divided into compressed data blocks, and a respective second DIF is created and appended to each respective data block of compressed data. To verify that the compressed data is able to be decompressed, a copy of the compressed data is decompressed to restore the original data blocks and respective DIF. Each respective DIF is used to verify the content of its respective data block. In response to a determination that respective DIF match the respective data blocks, the decompression process is deemed to be verified.

## Claims

### Claim 1

A method of compressed data integrity verification, comprising:
receiving a write IO containing uncompressed data;
dividing the uncompressed data into a set of uncompressed data blocks;
adding a respective first Data Integrity Field (DIF) to each respective uncompressed data block of the set of uncompressed data blocks;
compressing the set of uncompressed data blocks and respective first DIF to create compressed data;
dividing the compressed data into a set of compressed data blocks;
adding a respective second DIF to each respective compressed data block of the set of compressed data blocks; and
verifying the compressed data is able to be accurately decompressed to recreate the uncompressed data, by:
decompressing the compressed data to create a set of decompressed data blocks and respective decompressed first DIF; and
using the respective decompressed first DIF to verify the decompressed data contained in each of the decompressed data blocks.

### Claim 2 (depends on 1)

The method of claim 1, wherein compressing the set of data blocks and respective first DIF comprises collectively compressing the set of data blocks and respective first DIF to form the compressed data.

### Claim 3 (depends on 1)

The method of claim 1, wherein each uncompressed data block has a size of 512 bytes, each respective first DIF has a size of 8 bytes, each compressed data block has a size of 512 bytes, and each respective second DIF has a size of 8 bytes.

### Claim 4 (depends on 3)

The method of claim 3, wherein each respective first DIF includes a respective first Cyclic Redundancy Check (CRC) calculated on a respective 512-byte uncompressed data block, and wherein each respective second DIF includes a respective second CRC calculated on a respective 512-byte compressed data block.

### Claim 5 (depends on 4)

The method of claim 4, wherein using the respective decompressed first DIF to verify the decompressed data contained in each of the decompressed data blocks comprises, for each decompressed data block, calculating a third respective CRC on the data contained in the decompressed data block and comparing the third respective CRC with the CRC of the respective first DIF.

### Claim 6 (depends on 1)

The method of claim 1, further comprising, in response to a determination that the compressed data is able to be accurately decompressed to recreate the uncompressed data, forwarding the compressed data blocks and respective second DIF to storage.

### Claim 7 (depends on 1)

The method of claim 1, further comprising, in response to a determination that the compressed data is not able to be accurately decompressed to recreate the uncompressed data, implementing a byte-by-byte comparison process to implement compression verification.

### Claim 8 (depends on 7)

The method of claim 7, wherein the byte-by-byte comparison process comprises comparing each byte of the decompressed data with each byte of the uncompressed data received in the write IO.

### Claim 9 (depends on 1)

The method of claim 1, wherein compressing the set of uncompressed data blocks and respective first DIF to create the compressed data, dividing the compressed data into the set of compressed data blocks, adding the respective second DIF to each respective compressed data block, and verifying the compressed data is able to be accurately decompressed to recreate the uncompressed data, is all implemented in DIF-enabled compression/decompression hardware.

### Claim 10

A system for compressed data integrity verification, comprising:
one or more processors and one or more storage devices storing instructions that are operable, when executed by the one or more processors, to cause the one or more processors to perform operations comprising:
receiving a write IO containing uncompressed data;
dividing the uncompressed data into a set of uncompressed data blocks;
adding a respective first Data Integrity Field (DIF) to each respective uncompressed data block of the set of uncompressed data blocks;
compressing the set of uncompressed data blocks and respective first DIF to create compressed data;
dividing the compressed data into a set of compressed data blocks;
adding a respective second DIF to each respective compressed data block of the set of compressed data blocks; and
verifying the compressed data is able to be accurately decompressed to recreate the uncompressed data, by:
decompressing the compressed data to create a set of decompressed data blocks and respective decompressed first DIF; and
using the respective decompressed first DIF to verify the decompressed data contained in each of the decompressed data blocks.

### Claim 11 (depends on 10)

The system of claim 10, wherein compressing the set of data blocks and respective first DIF comprises collectively compressing the set of data blocks and respective first DIF to form the compressed data.

### Claim 12 (depends on 10)

The system of claim 10, wherein each uncompressed data block has a size of 512 bytes, each respective first DIF has a size of 8 bytes, each compressed data block has a size of 512 bytes, and each respective second DIF has a size of 8 bytes.

### Claim 13 (depends on 12)

The system of claim 12, wherein each respective first DIF includes a respective first Cyclic Redundancy Check (CRC) calculated on a respective 512-byte uncompressed data block, and wherein each respective second DIF includes a respective second CRC calculated on a respective 512-byte compressed data block.

### Claim 14 (depends on 13)

The system of claim 13, wherein using the respective decompressed first DIF to verify the decompressed data contained in each of the decompressed data blocks comprises, for each decompressed data block, calculating a third respective CRC on the data contained in the decompressed data block and comparing the third respective CRC with the CRC of the respective first DIF.

### Claim 15 (depends on 10)

The system of claim 10, further comprising, in response to a determination that the compressed data is able to be accurately decompressed to recreate the uncompressed data, forwarding the compressed data blocks and respective second DIF to storage.

### Claim 16 (depends on 10)

The system of claim 10, further comprising, in response to a determination that the compressed data is not able to be accurately decompressed to recreate the uncompressed data, implementing a byte-by-byte comparison process to implement compression verification.

### Claim 17 (depends on 16)

The system of claim 16, wherein the byte-by-byte comparison process comprises comparing each byte of the decompressed data with each byte of the uncompressed data received in the write IO.

### Claim 18 (depends on 10)

The system of claim 10, wherein at least some of the processors are included in Data Integrity Field (DIF) enabled compression/decompression hardware, and wherein the operations of compressing the set of uncompressed data blocks and respective first DIF to create the compressed data, dividing the compressed data into the set of compressed data blocks, adding the respective second DIF to each respective compressed data block, and verifying the compressed data is able to be accurately decompressed to recreate the uncompressed data, are all implemented in the DIF-enabled compression/decompression hardware.
