IP Library Granted Patent US 10,235,283
Granted Patent B2
US 10,235,283 · App. 15/458,689 · Granted Mar 19, 2019

Techniques for supporting in-place updates with a log-structured array controller

Inventors: Zah Barzik (Tel-Aviv, IL); Nikolas Ioannou (Rüschlikon, CH); Ioannis Koltsidas (Rüschlikon, CH); Amit Margalit (Tel Aviv, IL)
Assignee: International Business Machines Corporation
G06F12/0246G06F12/1009G06F2212/1044G06F2212/2022G06F2212/7201G06F2212/7205
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,235,283
App. No.
15/458,689
Granted
Mar 19, 2019
Kind
B2
Abstract

A technique for supporting in-place updates in a data storage system includes in response to garbage collection for a logical block address (LBA) being indicated, determining whether an in-place update to the LBA is pending. In response to one or more in-place updates to the LBA being pending prior to the garbage collection for the LBA being indicated, the garbage collection for the LBA is initiated following completion of the one or more in-place updates to the LBA. In response to the one or more in-place updates to the LBA not being pending prior to the garbage collection for the LBA being indicated, the garbage collection for the LBA is completed prior to any subsequent in-place update to the LBA that occurs subsequent to initiation and prior to completion of the garbage collection for the LBA.

Claims (47)

1. A method of supporting in-place updates in a data storage system, comprising:

in response to garbage collection for a logical block address (LBA) being indicated, determining, by a controller, whether an in-place update to the LBA is pending;

in response to one or more in-place updates to the LBA being pending prior to the garbage collection for the LBA being indicated, initiating, by the controller, the garbage collection for the LBA following completion of the one or more in-place updates to the LBA;

in response to the one or more in-place updates to the LBA not being pending prior to the garbage collection for the LBA being indicated, completing, by the controller, the garbage collection for the LBA prior to any subsequent in-place update to the LBA that occurs subsequent to initiation and prior to completion of the garbage collection for the LBA;

in response to determining that an entry for the LBA is not in an in-flight data structure, inserting the entry for the LBA in the in-flight data structure, setting a reference count for the entry to one, and setting a garbage collection bit for the entry to false; and

in response to determining that the entry for the LBA is in the in-flight data structure and that the garbage collection bit for the entry is false, incrementing the reference count for the entry.

2. The method of claim 1 , further comprising:

determining a physical block address (PBA) that corresponds to the LBA; and

writing data in-place at the PBA at an offset and length specified by the in-place updates.

3. The method of claim 2 , further comprising:

decrementing the reference count for the entry subsequent to the writing data.

4. The method of claim 3 , further comprising:

in response to the reference count being equal to zero and the garbage collection bit being false, deleting the entry for the LBA in the in-flight data structure.

5. The method of claim 1 , further comprising:

in response to determining that the entry for the LBA is in the in-flight data structure and that the garbage collection bit for the entry is true, waiting for the garbage collection of the LBA to complete prior to writing data in-place for the in-place updates.

6. The method of claim 1 , wherein the in-place updates are unaligned writes.

7. The method of claim 1 , wherein the in-place updates correspond to two unaligned writes that overlap in time.

8. A data storage system, comprising:

a flash memory system; and

a flash controller coupled to the flash memory system, wherein the flash controller is configured to:

in response to garbage collection for a logical block address (LBA) being indicated, determine whether an in-place update to the LBA is pending, wherein the LBA is associated with a physical block address (PBA) in the flash memory system;

in response to one or more in-place updates to the LBA being pending prior to the garbage collection for the LBA being indicated, initiate the garbage collection for the LBA following completion of the one or more in-place updates to the LBA;

in response to the one or more in-place updates to the LBA not being pending prior to the garbage collection for the LBA being indicated, complete the garbage collection for the LBA prior to any subsequent in-place update to the LBA that occurs subsequent to initiation and prior to completion of the garbage collection for the LBA;

in response to determining that an entry for the LBA is not in an in-flight data structure, insert the entry in the in-flight data structure, set a reference count for the entry to one, and set a garbage collection bit for the entry to false; and

in response to determining that the entry for the LBA is in the in-flight data structure and that the garbage collection bit for the entry is false, increment the reference count for the entry.

9. The data storage system of claim 8 , wherein the controller is further configured to:

determine the PBA that corresponds to the LBA; and

write data in-place at the PBA at an offset and length specified by the in-place updates.

10. The data storage system of claim 9 , wherein the controller is further configured to:

decrement the reference count for the entry subsequent to the writing data.

11. The data storage system of claim 10 , wherein the controller is further configured to:

in response to the reference count being equal to zero and the garbage collection bit being false, delete the entry for the LBA in the in-flight data structure.

12. The data storage system of claim 8 , wherein the controller is further configured to:

in response to determining that the entry for the LBA is in the in-flight data structure and that the garbage collection bit for the entry is true, wait for the garbage collection of the LBA to complete prior to writing data in-place for the in-place updates.

13. The data storage system of claim 8 , wherein the in-place updates are unaligned writes.

14. The data storage system of claim 8 , wherein the in-place updates correspond to two unaligned writes that overlap in time.

15. A computer program product, the computer program product comprising a computer readable storage medium having program instructions embodied therein, the program instructions executable by a controller, to cause the controller to:

in response to garbage collection for a logical block address (LBA) being indicated, determine whether an in-place update to the LBA is pending, wherein the LBA is associated with a physical block address (PBA) in the flash memory system;

in response to one or more in-place updates to the LBA being pending prior to the garbage collection for the LBA being indicated, initiate the garbage collection for the LBA following completion of the one or more in-place updates to the LBA;

in response to the one or more in-place updates to the LBA not being pending prior to the garbage collection for the LBA being indicated, complete the garbage collection for the LBA prior to any subsequent in-place update to the LBA that occurs subsequent to initiation and prior to completion of the garbage collection for the LBA;

in response to determining that an entry for the LBA is not in an in-flight data structure, insert the entry in the in-flight data structure, set a reference count for the entry to one, and set a garbage collection bit for the entry to false; and

in response to determining that the entry for the LBA is in the in-flight data structure and that the garbage collection bit for the entry is false, increment the reference count for the entry.

16. The program product of claim 15 , wherein the program instructions executable by the controller, are further configured to cause the controller to:

determine the PBA that corresponds to the LBA; and

write data in-place at the PBA at an offset and length specified by the in-place updates.

17. The program product of claim 15 , wherein the program instructions executable by the controller, are further configured to cause the controller to:

in response to determining that the entry for the LBA is in the in-flight data structure and that the garbage collection bit for the entry is true, wait for the garbage collection of the LBA to complete prior to writing data in-place for the in-place updates.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 6, 2017
From: BARZIK, ZAH; IOANNOU, NIKOLAS; KOLTSIDAS, IOANNIS; MARGALIT, AMIT
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 042618/0522 →
Continuity (1)
Related Publication 20180267893A1 · Sep 20, 2018