IP Library Granted Patent US 9,766,990
Granted Patent B1
US 9,766,990 · App. 14/493,573 · Granted Sep 19, 2017

Checkpoint block storage device

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 9,766,990
App. No.
14/493,573
Granted
Sep 19, 2017
Kind
B1
Abstract

A checkpoint device is a transaction-based block device wherein data is committed to non-volatile memory (NVM) or tiered storage upon completion of a checkpoint. Automatic and instant rollback to the previous checkpoint is provided upon restart if any failure occurred during the previous checkpoint. Related techniques are also described.

Claims (61)

1. A method comprising:

receiving a request to write a user page to a storage device;

loading a header block from the storage device into memory, the header block indicating whether bitmap blocks were written to a first bitmap block region or a second bitmap block region at a last checkpoint, the first and second bitmap block regions located within the storage device;

loading a bitmap block from the storage device into memory, based at least in part upon information in the header block, the bitmap block indicating whether the user page was written to a first storage region or a second storage region at a last checkpoint, the first and second storage regions located within the storage device;

selecting, based at least in part upon information within the bitmap block, the first or second storage region to write the user page to;

updating a bitmap block in memory to indicate the selected storage region;

writing the user page to the selected storage region; and

in response to receiving a checkpoint request, writing the bitmap block to the storage device and atomically writing the header block to the storage device,

wherein writing the bitmap block to the storage device comprises:

selecting, based at least in part upon information within the header block, the first or second bitmap block region to write the bitmap block to;

updating the header block in memory to indicate the selected bitmap block region; and

writing the bitmap block to the selected bitmap block region.

2. The method of claim 1 wherein loading the header block from the storage device includes loading the header block from a pre-determined logical block address (LBA).

3. The method of claim 1 wherein loading the bitmap block from the storage device includes loading the bitmap block from an LBA determined using information within the header block.

4. The method of claim 1 wherein writing the user page to the selected storage region includes writing the user page to an LBA calculated using an offset within the header block, the offset associated with the selected storage region.

5. The method of claim 1 further comprising, in response to receiving the checkpoint request, calculating an error detection code based upon information within the header block and updating the header block in memory to include the calculated error detection code.

6. The method of claim 5 wherein the error detection code comprises a 32-bit cyclic redundancy code (CRC).

7. The method of claim 1 further comprising:

updating a page write bitmap in memory to indicate the user page was written since the last checkpoint, wherein selecting the first or second storage region is further based upon the page write bitmap; and

in response to receiving the checkpoint request, clearing the page write bitmap.

8. The method of claim 1 wherein the bitmap block is one of a plurality of bitmap blocks, the method further comprising:

setting one of a plurality of bitmap block dirty flags in memory to indicate the user page was written since the last checkpoint;

in response to receiving the checkpoint request, using the plurality of bitmap block dirty flags to determine which of a plurality of bitmap blocks to write to the storage device; and

in response to receiving the checkpoint request, clearing the plurality of bitmap block dirty flags.

9. The method of claim 1 further comprising:

receiving a request to read the user page from the storage device;

determining, based at least in part upon information within the bitmap block, whether the user page was written to the first or second storage region at the last checkpoint; and

reading the user page from the determined storage region.

10. The method of claim 9 wherein the bitmap block further indicates whether the user block has previously been written to, wherein the user page is not read from the determined storage region if the user page has not previously been written to.

11. A data storage system comprising:

a storage device;

a memory device;

a checkpoint device means coupled to the storage device and the memory device, the checkpoint device means for:

receiving a request to write a user page to the storage device;

loading a header block from the storage device into memory, the header block indicating whether bitmap blocks were written to a first bitmap block region or a second bitmap block region at a last checkpoint, the first and second bitmap block regions located within the storage device;

loading a bitmap block from the storage device into the memory, based at least in part upon information in the header block, the bitmap block indicating whether the user page was written to a first storage region or a second storage region at a last checkpoint, the first and second storage regions located within the storage device;

selecting, based at least in part upon information within the bitmap block, the first or second storage region to write the user page to;

updating a bitmap block in memory to indicate the selected storage region;

writing the user page to the selected storage region; and

in response to receiving a checkpoint request, writing the bitmap block to the storage device and atomically writing the header block to the storage device, wherein writing the bitmap block to the storage device comprises:

selecting, based at least in part upon information within the header block, the first or second bitmap block region to write the bitmap block to;

updating the header block in memory to indicate the selected bitmap block region; and

writing the bitmap block to the selected bitmap block region.

12. The data storage system of claim 11 wherein the checkpoint device means is associated with a device driver of an operating system (OS).

13. The data storage system of claim 11 wherein the storage device includes a Flash device.

14. The data storage system of claim 11 wherein the checkpoint device means is operatively coupled to the storage device via a storage area network (SAN).

15. The data storage system of claim 11 wherein the header block is stored within the storage device at a pre-determined logical block address (LBA).

16. The data storage system of claim 11 wherein the bitmap block is stored within a region of the storage device beginning at an LBA offset specified within the header block.

17. The data storage system of claim 11 wherein the selected storage region begins at an LBA offset specified within the header block.

18. A computer program product tangibly embodied in a non-transitory computer-readable medium, the computer-readable medium storing program instructions that are executable to:

receive a request to write a user page to a storage device;

load a header block from the storage device into memory, the header block indicating whether bitmap blocks were written to a first bitmap block region or a second bitmap block region at a last checkpoint, the first and second bitmap block regions located within the storage device;

load a bitmap block from the storage device into memory, based at least in part upon information in the header block, the bitmap block indicating whether the user page was written to a first storage region or a second storage region at a last checkpoint, the first and second storage regions located within the storage device;

select, based at least in part upon information within the bitmap block, the first or second storage region to write the user page to;

update a bitmap block in memory to indicate the selected storage region;

write the user page to the selected storage region; and

in response to receiving a checkpoint request, write the bitmap block to the storage device and atomically write the header block to the storage device,

wherein writing the bitmap block to the storage device comprises:

selecting, based at least in part upon information within the header block, the first or second bitmap block region to write the bitmap block to;

updating the header block in memory to indicate the selected bitmap block region; and

writing the bitmap block to the selected bitmap block region.

Assignments (7)
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 (044535/0109) 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 060753/0414 →
RELEASE OF SECURITY INTEREST AT REEL 044535 FRAME 0001 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/0475 →
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 →
PATENT SECURITY AGREEMENT (NOTES) Recorded Nov 29, 2017
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 044535/0109 →
PATENT SECURITY AGREEMENT (CREDIT) Recorded Nov 29, 2017
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 044535/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 23, 2014
From: MICHAUD, ADRIAN
To: EMC CORPORATION
Reel/Frame 033798/0498 →