IP Library Granted Patent US 10,402,096
Granted Patent B2
US 10,402,096 · App. 15/884,739 · Granted Sep 3, 2019

Unaligned IO cache for inline compression optimization

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 10,402,096
App. No.
15/884,739
Granted
Sep 3, 2019
Kind
B2
Abstract

Techniques for processing unaligned IO requests in data storage systems that provide optimization of inline compression. The disclosed techniques employ an unaligned IO cache, which is used by a data storage system to process unaligned IO requests containing data with sizes that are not multiples of a predetermined block size. By employing the unaligned IO cache while processing such unaligned IO requests, the data storage system can reduce the number of read-modify-write sequences required to process a sequential load of unaligned IO requests, thereby reducing the burden on processing resources of the data storage system.

Claims (76)

1. A method of processing unaligned IO requests in a data storage system to provide optimization of inline compression, comprising:

receiving an initial unaligned IO request at a storage processor of the data storage system from a host computer, the initial unaligned IO request containing a first chunk having a size that is a first fraction of a block size supported by a file system of the data storage system;

in response to the initial unaligned IO request:

(i) reading, from a storage device of the data storage system, a compressed chunk having an uncompressed size that is a second fraction of the block size;

(ii) uncompressing the compressed chunk;

(iii) merging the first chunk with the uncompressed chunk to form a first block having the block size; and

(iv) storing the first block in an unaligned IO cache of the data storage system;

receiving at least one subsequent unaligned IO request at the storage processor from the host computer, the at least one subsequent unaligned IO request containing a second chunk having a size that is the second fraction of the block size; and

in response to the at least one subsequent unaligned IO request:

(i) retrieving the first block from the unaligned IO cache;

(ii) merging the second chunk with the first block to form a second block having the block size;

(iii) compressing the second block; and

(iv) writing the compressed second block to the storage device of the data storage system,

wherein the storing of the first block in the unaligned IO cache of the data storage system includes storing the first block in a buffer cache page of a buffer cache, and

wherein the storing of the first block in the buffer cache page of the buffer cache includes updating a pointer of a buffer cache descriptor to point to the buffer cache page storing the first block.

2. The method of claim 1 further comprising:

in response to the initial unaligned IO request:

(v) compressing the first block; and

(vi) writing the compressed first block to the storage device.

3. The method of claim 1 wherein the reading of the compressed chunk includes reading the compressed chunk having the uncompressed size that is the second fraction of the block size, the second fraction of the block size being equal to the first fraction of the block size.

4. The method of claim 1 wherein the unaligned IO cache includes a buffer hint, and wherein the storing of the first block in the buffer cache page of the buffer cache further includes updating a pointer of a buffer hint to point to the buffer cache descriptor.

5. The method of claim 4 wherein the buffer cache descriptor includes a first generation number and the buffer hint includes a second generation number, and wherein the retrieving of the first block from the unaligned IO cache includes comparing the first generation number of the buffer cache descriptor to the second generation number of the buffer hint to determine whether the first block is valid.

6. The method of claim 1 further comprising:

in response to the first block not being in active use, placing the buffer cache descriptor into a least-recently-used (LRU) queue of the data storage system.

7. A data storage system, comprising:

at least one storage device;

a file system;

an unaligned IO cache;

a memory configured to store a set of instructions for processing unaligned IO requests to provide optimization of inline compression; and

a storage processor configured to execute the set of instructions out of the memory:

to receive an initial unaligned IO request from a host computer, wherein the initial unaligned IO request contains a first chunk having a size that is a first fraction of a block size supported by the file system;

in response to the initial unaligned IO request:

(i) to read, from the storage device, a compressed chunk having an uncompressed size that is a second fraction of the block size;

(ii) to uncompress the compressed chunk;

(iii) to merge the first chunk with the uncompressed chunk to form a first block having the block size; and

(iv) to store the first block in the unaligned IO cache;

to receive at least one subsequent unaligned IO request from the host computer, wherein the at least one subsequent unaligned IO request contains a second chunk having a size that is the second fraction of the block size;

in response to the at least one subsequent unaligned IO request:

(i) to retrieve the first block from the unaligned IO cache;

(ii) to merge the second chunk with the first block to form a second block having the block size;

(iii) to compress the second block; and

(iv) to write the compressed second block to the storage device of the data storage system;

to store the first block in a buffer cache page of a buffer cache; and

to update a pointer of a buffer cache descriptor to point to the buffer cache page storing the first block.

8. The data storage system of claim 7 wherein the storage processor is further configured to execute the set of instructions out of the memory:

in response to the initial unaligned IO request:

(v) to compress the first block; and

(vi) to write the compressed first block to the storage device.

9. The data storage system of claim 7 wherein the second fraction of the block size is equal to the first fraction of the block size.

10. The data storage system of claim 7 wherein the unaligned IO cache includes a buffer hint, and wherein the storage processor is further configured to execute the set of instructions out of the memory:

updating a pointer of a buffer hint to point to the buffer cache descriptor.

11. The data storage system of claim 10 wherein the buffer cache descriptor includes a first generation number, wherein the buffer hint includes a second generation number, and wherein the storage processor is further configured to execute the set of instructions out of the memory:

comparing the first generation number of the buffer cache descriptor to the second generation number of the buffer hint to determine whether the first block is valid.

12. The data storage system of claim 7 wherein the storage processor is further configured to execute the set of instructions out of the memory:

in response to the first block not being in active use, to place the buffer cache descriptor into a least-recently-used (LRU) queue of the data storage system.

13. A computer program product having a non-transitory computer readable medium that stores a set of instructions that, when carried out by computerized circuitry, cause the computerized circuitry to perform a method of processing unaligned IO requests in a data storage system to provide optimization of inline compression, the method comprising:

receiving an initial unaligned IO request at a storage processor of the data storage system from a host computer, the initial unaligned IO request containing a first chunk having a size that is a first fraction of a block size supported by a file system of the data storage system;

in response to the initial unaligned IO request:

(i) reading, from a storage device of the data storage system, a compressed chunk having an uncompressed size that is a second fraction of the block size;

(ii) uncompressing the compressed chunk;

(iii) merging the first chunk with the uncompressed chunk to form a first block having the block size; and

(iv) storing the first block in an unaligned IO cache of the data storage system;

receiving at least one subsequent unaligned IO request at the storage processor from the host computer, the at least one subsequent unaligned IO request containing a second chunk having a size that is the second fraction of the block size; and

in response to the at least one subsequent unaligned IO request:

(i) retrieving the first block from the unaligned IO cache;

(ii) merging the second chunk with the first block to form a second block having the block size;

(iii) compressing the second block; and

(iv) writing the compressed second block to the storage device of the data storage system

wherein the storing of the first block in the unaligned IO cache of the data storage system includes storing the first block in a buffer cache page of a buffer cache, and

wherein the storing of the first block in the buffer cache page of the buffer cache includes updating a pointer of a buffer cache descriptor to point to the buffer cache page storing the first block.

14. The method of claim 13 further comprising:

in response to the initial unaligned IO request:

(v) compressing the first block; and

(vi) writing the compressed first block to the storage device.

15. The method of claim 13 wherein the reading of the compressed chunk includes reading the compressed chunk having the uncompressed size that is the second fraction of the block size, the second fraction of the block size being equal to the first fraction of the block size.

16. The method of claim 13 wherein the unaligned IO cache includes a buffer hint, and wherein the storing of the first block in the buffer cache page of the buffer cache further includes updating a pointer of a buffer hint to point to the buffer cache descriptor.

Assignments (8)
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (053546/0001) Recorded Jun 23, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL MARKETING L.P. (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO CREDANT TECHNOLOGIES, INC.); DELL INTERNATIONAL L.L.C.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO FORCE10 NETWORKS, INC. AND WYSE TECHNOLOGY L.L.C.); EMC IP HOLDING COMPANY LLC
Reel/Frame 071642/0001 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (045482/0131) Recorded May 20, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO WYSE TECHNOLOGY L.L.C.)
Reel/Frame 061749/0924 →
RELEASE OF SECURITY INTEREST AT REEL 045482 FRAME 0395 Recorded Nov 2, 2021
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; WYSE TECHNOLOGY L.L.C.
Reel/Frame 058298/0314 →
SECURITY AGREEMENT Recorded Apr 22, 2020
From: CREDANT TECHNOLOGIES INC.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; FORCE10 NETWORKS, INC.; WYSE TECHNOLOGY L.L.C.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A.
Reel/Frame 053546/0001 →
SECURITY AGREEMENT Recorded Mar 21, 2019
From: CREDANT TECHNOLOGIES, INC.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; FORCE10 NETWORKS, INC.; WYSE TECHNOLOGY L.L.C.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A.
Reel/Frame 049452/0223 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 5, 2018
From: SEN, SOUMYADEEP; ARMANGAU, PHILIPPE; SEIBEL, CHRISTOPHER A.
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 045107/0463 →
PATENT SECURITY AGREEMENT (NOTES) Recorded Mar 1, 2018
From: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; WYSE TECHNOLOGY L.L.C.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
Reel/Frame 045482/0131 →
PATENT SECURITY AGREEMENT (CREDIT) Recorded Mar 1, 2018
From: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; WYSE TECHNOLOGY L.L.C.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 045482/0395 →