IP Library › Granted Patent US 12,254,197
Granted Patent B2
US 12,254,197 · App. 18/498,495 · Granted Mar 18, 2025

Method, electronic device, and computer program product for compressing data block

Inventors: Weibing Zhang (Beijing, CN); Lei Gao (Beijing, CN); Jun Wang (Beijing, CN)
Assignee: Dell Products L.P.
G06F3/0626G06F3/0613G06F3/064G06F3/0673
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,254,197
App. No.
18/498,495
Granted
Mar 18, 2025
Kind
B2
Abstract

Techniques for compressing a data block involve adding a compression flag to a data block after the data block is decompressed by a protocol layer, the compression flag indicating that the data block is compressible or uncompressible. Such techniques further involve acquiring the compression flag of the data block. Such techniques further involve determining, in response to the compression flag of the data block indicating that the data block is compressible, to perform inline compression on the data block. Such techniques further involve preventing, in response to the compression flag of the data block indicating that the data block is uncompressible, the inline compression from being performed on the data block.

Claims (54)

1. A method for compressing a data block, comprising:

adding a compression flag to a data block after the data block is decompressed by a protocol layer, the compression flag indicating that the data block is compressible or uncompressible;

acquiring the compression flag of the data block;

determining, in response to the compression flag of the data block indicating that the data block is compressible, to perform inline compression on the data block; and

preventing, in response to the compression flag of the data block indicating that the data block is uncompressible, the inline compression from being performed on the data block.

2. The method according to claim 1 , further comprising:

identifying features of the data block; and

generating the compression flag of the data block according to the identified features of the data block.

3. The method according to claim 2 , further comprising:

determining that the generated compression flag indicates that the data block is uncompressible according to the indication by the identified features of the data block that the data block is any of the following: high entropy data, encrypted data, random data, data whose size is smaller than a predetermined size, or data that has been compressed.

4. The method according to claim 3 , further comprising:

determining a compression ratio of the data block in the protocol layer;

setting, in response to the compression ratio of the data block being less than a predetermined threshold, the compression flag to indicate that the data block is uncompressible; and

setting, in response to the compression ratio of the data block being greater than or equal to the predetermined threshold, the compression flag to indicate that the data block is compressible.

5. The method according to claim 4 , wherein the compression ratio of the data block is a ratio of the size of decompressed data to the size of compressed data.

6. The method according to claim 5 , wherein a first predetermined threshold for a compression ratio of the protocol layer is set to be greater than a second predetermined threshold for a compression ratio of the inline compression based on the fact that the compression degree of a first compression algorithm of the protocol layer is less than the compression degree of a second compression algorithm of the inline compression.

7. The method according to claim 1 , wherein the data block is transferred carrying the compression flag on an input/output (IO) path, the IO path comprising passing through the protocol layer.

8. The method according to claim 7 , further comprising:

determining, in response to the compression flag of the data block indicating that the data block is compressible, that the IO path for the data block is a first path; and

performing the inline compression on the data block on the first path.

9. The method according to claim 7 , further comprising:

determining, in response to the compression flag of the data block indicating that the data block is uncompressible, that the IO path for the data block is a second path; and

skipping the inline compression for the data block on the second path.

10. The method according to claim 1 , wherein a compression algorithm used by the protocol layer for the data block is the same as a compression algorithm used by the inline compression for the data block.

11. An electronic device, comprising:

a processor; and

a memory coupled to the processor and having instructions stored therein, wherein the instructions, when executed by the processor, cause the electronic device to perform operations comprising:

adding a compression flag to a data block after the data block is decompressed by a protocol layer, the compression flag indicating that the data block is compressible or uncompressible;

acquiring the compression flag of the data block;

determining, in response to the compression flag of the data block indicating that the data block is compressible, to perform inline compression on the data block; and

preventing, in response to the compression flag of the data block indicating that the data block is uncompressible, the inline compression from being performed on the data block.

12. The electronic device according to claim 11 , wherein the operations further comprise:

identifying features of the data block; and

generating the compression flag of the data block according to the identified features of the data block.

13. The electronic device according to claim 12 , wherein the operations further comprise:

determining that the generated compression flag indicates that the data block is uncompressible according to the indication by the identified features of the data block that the data block is any of the following: high entropy data, encrypted data, random data, data whose size is smaller than a predetermined size, or data that has been compressed.

14. The electronic device according to claim 13 , wherein the operations further comprise:

determining a compression ratio of the data block in the protocol layer;

setting, in response to the compression ratio of the data block being less than a predetermined threshold, the compression flag to indicate that the data block is uncompressible; and

setting, in response to the compression ratio of the data block being greater than or equal to the predetermined threshold, the compression flag to indicate that the data block is compressible.

15. The electronic device according to claim 14 , wherein the compression ratio of the data block is a ratio of the size of decompressed data to the size of compressed data.

16. The electronic device according to claim 15 , wherein a first predetermined threshold for a compression ratio of the protocol layer is set to be greater than a second predetermined threshold for a compression ratio of the inline compression based on the fact that the compression degree of a first compression algorithm of the protocol layer is less than the compression degree of a second compression algorithm of the inline compression.

17. The electronic device according to claim 11 , wherein the data block is transferred carrying the compression flag on an input/output (IO) path, the IO path comprising passing through the protocol layer.

18. The electronic device according to claim 17 , wherein the operations further comprise:

determining, in response to the compression flag of the data block indicating that the data block is compressible, that the IO path for the data block is a first path; and

performing the inline compression on the data block on the first path.

19. The electronic device according to claim 17 , wherein the operations further comprise:

determining, in response to the compression flag of the data block indicating that the data block is uncompressible, that the IO path for the data block is a second path; and

skipping the inline compression for the data block on the second path.

20. A computer program product having a non-transitory computer readable medium which stores a set of instructions to compress a data block; the set of instructions, when carried out by computerized circuitry, causing the computerized circuitry to perform a method of:

adding a compression flag to a data block after the data block is decompressed by a protocol layer, the compression flag indicating that the data block is compressible or uncompressible;

acquiring the compression flag of the data block;

determining, in response to the compression flag of the data block indicating that the data block is compressible, to perform inline compression on the data block; and

preventing, in response to the compression flag of the data block indicating that the data block is uncompressible, the inline compression from being performed on the data block.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 7, 2023
From: ZHANG, WEIBING; GAO, LEI; WANG, JUN
To: DELL PRODUCTS L.P.
Reel/Frame 065801/0868 →
Priority Claims (1)
CN 202310418658.3 · Apr 18, 2023 · national
Continuity (1)
Related Publication 20240354013A1 · Oct 24, 2024
References Cited (33)
US 10156993B1 · Armangau et al. · 2018 [cited by applicant]
US 10157006B1 · Armangau et al. · 2018 [cited by applicant]
US 10430376B1 · Armangau et al. · 2019 [cited by applicant]
US 10514861B1 · Basov et al. · 2019 [cited by applicant]
US 10521400B1 · Basov et al. · 2019 [cited by applicant]
US 10949107B1 · Basov et al. · 2021 [cited by applicant]
US 11138185B1 · Kuang et al. · 2021 [cited by applicant]
US 11216186B1 · Armangau et al. · 2022 [cited by applicant]
US 11526469B1 · Mathews et al. · 2022 [cited by applicant]
US 11860834B1 · Bassov et al. · 2024 [cited by applicant]
US 20040054858A1 · Chandrasekaran · 2004 [cited by examiner]
US 20180246657A1 · Sadowski · 2018 [cited by examiner]
US 20190339876A1 · Auvenshine · 2019 [cited by examiner]
US 20190339911A1 · Bassov et al. · 2019 [cited by applicant]
US 20200042219A1 · Wang et al. · 2020 [cited by applicant]
US 20200042220A1 · Armangau et al. · 2020 [cited by applicant]
US 20200042399A1 · Kuang et al. · 2020 [cited by applicant]
US 20200042616A1 · Kuang et al. · 2020 [cited by applicant]
US 20200042617A1 · Kuang et al. · 2020 [cited by applicant]
US 20200142628A1 · Armangau et al. · 2020 [cited by applicant]
US 20200142643A1 · Armangau et al. · 2020 [cited by applicant]
US 20200142903A1 · Kuang et al. · 2020 [cited by applicant]
US 20210132813A1 · Shabi · 2021 [cited by examiner]
US 20210294505A1 · Keller · 2021 [cited by examiner]
US 20220035526A1 · Lv · 2022 [cited by examiner]
https://learn.microsoft.com/en-us/windows-server/storage/file-server/smb-compression, retrieved from the internet Jan. 30, 2024. [cited by applicant]
https://datatracker.ietf.org/doc/html/rfc46, retrieved from the internet Jan. 30, 2024. [cited by applicant]
https://www.man7.org/linux/man-pages/man1/sftp.1.html, retrieved from the internet Jan. 30, 2024. [cited by applicant]
https://techcommunity.microsoft.com/t5/itops-talk-blog/smb-compression-deflate-your-io/ba-p/1183552, retrieved from the internet Jan. 30, 2024. [cited by applicant]
https://www.snia.org/educational-library/smb3-landscape-and-directions-2022, retrieved from the internet Jan. 30, 2024. [cited by applicant]
https://storagedeveloper.org/events/sdc-2022/agenda/session/318, retrieved from the internet Jan. 30, 2024. [cited by applicant]
https://www.youtube.com/watch?v=_xdfHz-V7dc, retrieved from the internet Jan. 30, 2024. [cited by applicant]
https://docs. microsoft.com/en-us/openspecs/windows_protocols/ms-xca/001e03e3-d1c2-4d51-9d39-e845d9b05959, retrieved from the internet Jan. 30, 2024. [cited by applicant]