IP Library Granted Patent US 12,399,773
Granted Patent B2
US 12,399,773 · App. 18/270,184 · Granted Aug 26, 2025

End to end check code protection in storage engine

Inventors: Yikang Xu (Redmond, WA); Peng Xu (Milpitas, CA); Rui Wang (Redmond, WA); Yu Du (Hangzhou, CN)
Assignee: Alibaba Group Holding Limited
G06F11/1004G06F11/10
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 12,399,773
App. No.
18/270,184
Granted
Aug 26, 2025
Kind
B2
Abstract

A client device may transmit a data stream including an object (such as a data file or record) to a storage system for storing the object in a storage device. In response to receiving the data stream, the storage system may store or write data of the object into a plurality of logical blocks of the storage device with an end-to-end data protection based at least in part on a comparison of a combination of check codes of a header of the object, the object and padding data with a combination of a plurality of check codes that are generated separately for metadata associated with the object and corresponding parts of the object stored in the plurality of logical blocks. The storage system may further provide an end-to-end data protection for reading data of an object stored in multiple logical blocks of a storage device.

Claims (52)

1. A method implemented by one or more processors, the method comprising:

receiving incoming data and a first check code for the incoming data from a network adapter;

generating a second check code for header data of the incoming data, and adding the first check code and the second check code to the header data to form a header of the incoming data;

separately generating a third check code for the header of the incoming data and a fourth check code for padding data, the padding data to be appended to the incoming data; and

storing the header, the incoming data, and the padding data into a plurality of logical blocks of a storage device.

2. The method of claim 1 , wherein the storage device is configured to generate a plurality of different block check codes respectively for corresponding pieces of the header, the incoming data and the padding data stored in the plurality of logical blocks.

3. The method of claim 2 , further comprising:

comparing a combination of the plurality of different block check codes with a combination of the first check code, the third check code and the fourth check code; and

determining whether the storing is successful based at least in part on a result of the comparing.

4. The method of claim 3 , wherein comparing the combination of the plurality of different block check codes with the combination of the first check code, the third check code and the fourth check code comprises:

concatenating the plurality of different block check codes to form a first combined code;

concatenating the first check code, the third check code and the fourth check code to form a second combined code; and

comparing the first combined code with the second combined code.

5. The method of claim 4 , wherein determining that the storing is successful in response to determining that the first combined code is identical to the second combined code.

6. The method of claim 1 , wherein the first check code for the incoming data is generated by the network adapter or a source from which the incoming data is sent.

7. The method of claim 1 , further comprising determining a size of the padding data based on at least in part on a size of the incoming data and a size of each logical block of the storage device.

8. The method of claim 1 , further comprising:

temporarily storing the third check code and the fourth code in a memory of a storage engine, the memory being different from the storage device; and

clearing the third check code and the fourth code from the memory after determining that the storing is successful.

9. The method of claim 1 , wherein the storage device comprises a device that is configured to store data in units of logical blocks.

10. The method of claim 1 , wherein the second check code, the third check code, and the fourth check code are generated by a cyclic redundancy check (CRC) generation method with a same polynomial constant or different CRC generation methods having different polynomial constants.

11. One or more non-transitory media storing executable instructions that, when executed by one or more processors, cause the one or more processors to perform acts comprising:

receiving a first check code for header data of payload data stored in a storage device;

verifying whether the header data is intact;

obtaining a size of padding data from a header of the payload data and generating a second check code for the padding data in response to verifying that the header data is intact;

generating a third check code for the header of the payload data, and obtaining a fourth check code for the payload data; and

comparing a plurality of different block check codes stored with corresponding pieces of the payload data in a plurality of logical blocks of the storage device with a combination of the fourth check code, the second check code, and the third check code.

12. The one or more non-transitory media of claim 11 , the acts further comprising determining an integrity of at least the payload data based on a result of the comparing.

13. The one or more non-transitory media of claim 12 , the acts further comprising transmitting the payload data and the fourth check code to another device through a network adapter in response to determining the integrity of at least the payload data.

14. The one or more non-transitory media of claim 11 , wherein comparing the plurality of different block check codes with the combination of the fourth check code, the second check code, and the third check code comprises:

concatenating the plurality of different block check codes to form the first combined code;

concatenating the fourth check code, the second check code, and the third check code to form a second combined code; and

comparing the first combined code with the second combined code.

15. The one or more non-transitory media of claim 11 , wherein verifying whether the header data is intact comprises:

generating a check code for the header data based on a cyclic redundancy check (CRC) generation method; and

comparing the generated check code for the header data with the first check code.

16. The one or more non-transitory media of claim 11 , wherein the padding data comprises all zeros, and has been appended to the payload data to ensure a total size of the header, the payload data, the padding data, and the plurality of block check codes to be a multiple of a size of each logical block of the storage device.

17. The one or more non-transitory media of claim 11 , wherein the storage device comprises a device that is configured to store data in units of logical blocks.

18. The one or more non-transitory media of claim 11 , wherein the second check code, the third check code, and the fourth check code are generated by a cyclic redundancy check (CRC) method with a same polynomial constant or different CRC methods having different polynomial constants.

19. A system comprising:

one or more processors; and

memory storing executable instructions that, when executed by the one or more processors, cause the one or more processors to perform acts comprising:

receiving incoming data and a first check code for the incoming data from a network adapter;

generating a second check code for header data of the incoming data, and adding the first check code and the second check code to the header data to form a header of the incoming data;

separately generating a third check code for the header of the incoming data and a fourth check code for padding data, the padding data to be appended to the incoming data;

storing the header, the incoming data, and the padding data into a plurality of logical blocks of a storage device;

comparing a combination of a plurality of different block check codes with a combination of the first check code, the third check code and the fourth check code; and

determining whether the storing is successful based at least in part on a result of the comparing.

20. The system of claim 19 , wherein comparing the combination of the plurality of different block check codes with the combination of the first check code, the third check code and the fourth check code comprises:

concatenating the plurality of different block check codes to form a first combined code;

concatenating the first check code, the third check code and the fourth check code to form a second combined code; and

comparing the first combined code with the second combined code, wherein determining that the storing is successful in response to determining that the first combined code is identical to the second combined code.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 29, 2026
From: ALIBABA GROUP HOLDING LIMITED
To: CLOUD INTELLIGENCE ASSETS HOLDING (SINGAPORE) PRIVATE LIMITED
Reel/Frame 075499/0384 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 13, 2025
From: XU, YIKANG; XU, PENG; WANG, RUI; DU, YU
To: ALIBABA GROUP HOLDING LIMITED
Reel/Frame 071103/0006 →
Continuity (1)
Related Publication 20240126641A1 · Apr 18, 2024
References Cited (8)
US 7809870B2 · McDaniel · 2010 [cited by examiner]
US 11825346B2 · Kim · 2023 [cited by examiner]
US 20110004817A1 · Cheong · 2011 [cited by examiner]
US 20130054916A1 · Banzhaf et al. · 2013 [cited by applicant]
US 20150324573A1 · Li et al. · 2015 [cited by applicant]
CN 108512785A · 2020 [cited by applicant]
International Search Report mailed Oct. 26, 2021, from PCT/CN2021/073415, 3 pages. [cited by applicant]
Written Opinion mailed Oct. 26, 2021, from PCT/CN2021/073415, 4 pages. [cited by applicant]