IP Library Granted Patent US 12,430,049
Granted Patent B2
US 12,430,049 · App. 18/422,240 · Granted Sep 30, 2025

Data log with bonded descriptors

Inventors: Vladimir Shveidel (Pardes Hana-Karkur, IL); Jenny Derzhavetz (Raanana, IL)
Assignee: Dell Products L.P.
G06F3/0631G06F3/0619G06F3/067
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,430,049
App. No.
18/422,240
Granted
Sep 30, 2025
Kind
B2
Abstract

Techniques for using data logs with bonded page descriptors (PDs) in storage systems. The techniques include, in response to a write request from a storage client, performing, in a log structured data log, a single object allocation for a bonded page descriptor (PD)-page buffer (PB) pair, storing and persisting, in a PB of the bonded PD-PB pair, user data specified by the write request, and storing and persisting, in a PD object of the bonded PD-PB pair, metadata related to the user data. The techniques include, once the user data and related MD are stored and persisted in the bonded PD-PB pair, sending an acknowledgment message to the storage client, and de-staging, flushing, or transferring, in the background, the user data and/or related MD from the bonded PD-PB pair to a storage object. By performing a single object allocation, processing costs related to performing the object allocation can be reduced.

Claims (52)

1. A method comprising:

receiving a write request from a storage client;

in response to the write request from the storage client, performing a single object allocation in a log structured data log for a bonded page descriptor (PD)-page buffer (PB) pair, the bonded PD-PB pair including a bonded PD object tightly coupled to a PB;

storing and persisting user data specified by the write request in the PB of the bonded PD-PB pair;

storing and persisting metadata (MD) related to the user data in the bonded PD object of the bonded PD-PB pair;

once the user data and related MD are stored and persisted in the bonded PD-PB pair, sending an acknowledgment message to the storage client;

de-staging, flushing, or transferring, in the background, the user data and/or the related MD from the bonded PD-PB pair to a storage object;

receiving a request to service a storage operation; and

in response to the request to service the storage operation, performing an object allocation in the log structured data log for a standalone PD object, the standalone PD object not being coupled to any PB.

2. The method of claim 1 wherein the bonded PD object is one of a plurality of bonded PD objects in a logical pool array of bonded PD objects, wherein the PB is one of a plurality of PBs in a logical pool array of PBs, and wherein the performing of the single object allocation includes allocating the same identical array index for each of the bonded PD object and the PB of the bonded PD-PB pair.

3. The method of claim 1 wherein the bonded PD object is one of a plurality of bonded PD objects in a logical pool array of bonded PD objects, wherein the standalone PD object is one of a plurality of standalone PD objects in a logical pool array of standalone PD objects, wherein the logical pool array of bonded PD objects and the logical pool array of standalone PD objects correspond to separate portions of a shared logical pool array of PD objects, and wherein the method comprises:

allocating a first range of array indices of the shared logical pool array of PD objects for the logical pool array of bonded PD objects; and

allocating a second range of array indices of the shared logical pool array of PD objects for the logical pool array of standalone PD objects.

4. The method of claim 1 comprising:

storing and persisting MD related to a storage operation in the standalone PD object.

5. The method of claim 4 wherein the MD stored and persisted in the bonded PD object includes a first transaction sequence identifier (ID) for the write request, wherein the MD stored and persisted in the standalone PD object includes a second transaction sequence ID for the storage operation, and wherein the method comprises:

servicing the write request and the storage operation in a time dependent order based on the first transaction sequence ID and the second transaction sequence ID.

6. The method of claim 5 wherein the bonded PD object and the standalone PD object belong to a logical pool array of PD objects, and wherein the method comprises:

performing a recovery operation to determine data inconsistencies resulting from corruption/non-corruption of the user data, the MD related to the user data, and/or the MD related to the storage operation.

7. The method of claim 6 comprising:

in the recovery operation, walking through the logical pool array of PD objects in time order using at least the first transaction ID and the second transaction ID, and replaying each bonded PD object and/or standalone PD object determined to contain valid MD.

8. The method of claim 1 wherein the bonded PD object has a fixed-size block allocation, wherein the log structured data log has a media granularity greater than the fixed-size block allocation of the bonded PD object, and wherein the method comprises:

packing the bonded PD object having the fixed-size block allocation into a physical block having a size that corresponds to the media granularity of the log structured data log.

9. A system comprising:

a memory; and

processing circuitry configured to execute program instructions out of the memory to:

receive a write request from a storage client;

In response to the write request from the storage client, perform a single object allocation in a log structured data log for a bonded page descriptor (PD)-page buffer (PB) pair, the bonded PD-PB pair including a bonded PD object tightly coupled to a PB;

store and persist user data specified by the write request in the PB of the bonded PD-PB pair;

store and persist metadata (MD) related to the user data in the bonded PD object of the bonded PD-PB pair;

once the user data and related MD are stored and persisted in the bonded PD-PB pair, send an acknowledgment message to the storage client; and

de-stage, flush, or transfer, in the background, the user data and/or the related MD from the bonded PD-PB pair to a storage object;

receive a request to service a storage operation; and

in response to the request to service the storage operation, perform an object allocation in the log structured data log for a standalone PD object, the standalone PD object not being coupled to any PB.

10. The system of claim 9 wherein the bonded PD object is one of a plurality of bonded PD objects in a logical pool array of bonded PD objects, wherein the PB is one of a plurality of PBs in a logical pool array of PBs, and wherein the processing circuitry is configured to execute the program instructions out of the memory to allocate the same identical array index for each of the bonded PD object and the PB of the bonded PD-PB pair.

11. The system of claim 9 wherein the bonded PD object is one of a plurality of bonded PD objects in a logical pool array of bonded PD objects, wherein the standalone PD object is one of a plurality of standalone PD objects in a logical pool array of standalone PD objects, wherein the logical pool array of bonded PD objects and the logical pool array of standalone PD objects correspond to separate portions of a shared logical pool array of PD objects, and wherein the processing circuitry is configured to execute the program instructions out of the memory to allocate a first range of array indices of the shared logical pool array of PD objects for the logical pool array of bonded PD objects, and to allocate a second range of array indices of the shared logical pool array of PD objects for the logical pool array of standalone PD objects.

12. The system of claim 9 wherein the processing circuitry is configured to execute the program instructions out of the memory to store and persist MD related to a storage operation in the standalone PD object.

13. The system of claim 12 wherein the MD stored and persisted in the bonded PD object includes a first transaction sequence identifier (ID) for the write request, wherein the MD stored and persisted in the standalone PD object includes a second transaction sequence ID for the storage operation, and wherein the processing circuitry is configured to execute the program instructions out of the memory to service the write request and the storage operation in a time dependent order based on the first transaction sequence ID and the second transaction sequence ID.

14. The system of claim 13 wherein the bonded PD object and the standalone PD object belong to a logical pool array of PD objects, and wherein the processing circuitry is configured to execute the program instructions out of the memory to perform a recovery operation to determine data inconsistencies resulting from corruption/non-corruption of the user data, the MD related to the user data, and/or the MD related to the storage operation.

15. The system of claim 14 wherein the processing circuitry is configured to execute the program instructions out of the memory to walk through the logical pool array of PD objects in time order using at least the first transaction ID and the second transaction ID, and to replay each bonded PD object and/or standalone PD object determined to contain valid MD.

16. The system of claim 9 wherein the bonded PD object has a fixed-size block allocation, wherein the log structured data log has a media granularity greater than the fixed-size block allocation of the bonded PD object, and wherein the processing circuitry is configured to execute the program instructions out of the memory to pack the bonded PD object having the fixed-size block allocation into a physical block having a size that corresponds to the media granularity of the log structured data log.

17. A computer program product including a set of non-transitory, computer-readable media having instructions that, when executed by processing circuitry, cause the processing circuitry to perform a method comprising:

receiving a write request from a storage client;

in response to the write request from the storage client, performing a single object allocation in a log structured data log for a bonded page descriptor (PD)-page buffer (PB) pair, the bonded PD-PB pair including a bonded PD object tightly coupled to a PB;

storing and persisting user data specified by the write request in the PB of the bonded PD-PB pair;

storing and persisting metadata (MD) related to the user data in the bonded PD object of the bonded PD-PB pair;

once the user data and related MD are stored and persisted in the bonded PD-PB pair, sending an acknowledgment message to the storage client;

de-staging, flushing, or transferring, in the background, the user data and/or the related MD from the bonded PD-PB pair to a storage object,

wherein the bonded PD object has a fixed-size block allocation, and

wherein the log structured data log has a media granularity greater than the fixed-size block allocation of the bonded PD object; and

packing the bonded PD object having the fixed-size block allocation into a physical block having a size that corresponds to the media granularity of the log structured data log.

18. The computer program product of claim 17 wherein the bonded PD object is one of a plurality of bonded PD objects in a logical pool array of bonded PD objects, wherein the PB is one of a plurality of PBs in a logical pool array of PBs, and wherein the performing of the single object allocation includes allocating the same identical array index for each of the bonded PD object and the PB of the bonded PD-PB pair.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 21, 2024
From: SHVEIDEL, VLADIMIR; DERZHAVETZ, JENNY
To: DELL PRODUCTS L.P.
Reel/Frame 066516/0892 →
Continuity (1)
Related Publication 20250244890A1 · Jul 31, 2025
References Cited (8)
US 7007146B2 · Romanufa et al. · 2006 [cited by applicant]
US 10091297B1 · Zhao et al. · 2018 [cited by applicant]
US 11340829B1 · Shveidel · 2022 [cited by examiner]
US 11409454B1 · Shveidel et al. · 2022 [cited by applicant]
US 11625169B2 · Chen et al. · 2023 [cited by applicant]
US 11822473B2 · Shveidel et al. · 2023 [cited by applicant]
US 20200349072A1 · Fliess · 2020 [cited by examiner]
US 20220342562A1 · Baruch · 2022 [cited by examiner]