IP Library Granted Patent US 11,782,828
Granted Patent B2
US 11,782,828 · App. 17/571,417 · Granted Oct 10, 2023

Efficiently purging non-active blocks in NVM regions using virtblock arrays

Inventors: Xavier Deguillard (Mountain View, CA); Ishan Banerjee (Santa Clara, CA); Julien Freche (Mountain View, CA); Kiran Tati (Milpitas, CA); Preeti Agarwal (San Jose, CA); Rajesh Venkatasubramanian (San Jose, CA)
Assignee: VMware, Inc.
G06F12/0253G06F12/0804G06F12/1009G06F2212/1044G06F2212/202G06F2212/657
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 11,782,828
App. No.
17/571,417
Granted
Oct 10, 2023
Kind
B2
Abstract

Techniques for efficiently purging non-active blocks in an NVM region of an NVM device using virtblocks are provided. In one set of embodiments, a host system can maintain, in the NVM device, a pointer entry (i.e., virtblock entry) for each allocated data block of the NVM region, where page table entries of the NVM region that refer to the allocated data block include pointers to the pointer entry, and where the pointer entry includes a pointer to the allocated data block. The host system can further determine that a subset of the allocated data blocks of the NVM region are non-active blocks and can purge the non-active blocks from the NVM device to a mass storage device, where the purging comprises updating the pointer entry for each non-active block to point to a storage location of the non-active block on the mass storage device.

Claims (60)

1. A method comprising:

receiving, by a host system from a virtual machine (VM), a write request directed to an address offset of a non-volatile random access memory (NVM) region of an NVM device, the address offset pointing to an NVM data block that is read-only as a result of being part of a previously created snapshot for the NVM region; and

in response to the write request:

allocating, by the host system, a new NVM data block;

copying, by the host system, contents of the NVM data block to the new NVM data block;

allocating, by the host system, a pointer entry on the NVM device that is associated with a running point of the NVM region, the running point comprising a pointer to a root page of a page table associated with the NVM region; and

updating, by the host system, the pointer entry to point to the new NVM data block.

2. The method of claim 1 further comprising, in response to the write request:

creating a new level 1 (L1) page in the page table pointed to by the running point;

updating a page table entry in the new L1 page for the address offset to point to the pointer entry.

3. The method of claim 1 wherein the pointer entry is allocated in a pointer array comprising a plurality of pointer entries for the running point.

4. The method of claim 3 wherein the plurality of pointer entries in the pointer array correspond to NVM data blocks owned by the running point.

5. The method of claim 1 further comprising:

determining that the new NVM data block has become a non-active block that is no longer referred to by the running point;

purging the new NVM data block from the NVM device to a storage location on a mass storage device; and

updating the pointer entry to point to the storage location.

6. The method of claim 5 wherein determining that the new NVM data block has become a non-active block comprises:

traversing a logical address space of the NVM region; and

for each of a plurality of address offsets in the logical address space, determining whether a page table associated with a snapshot of the NVM region points to a valid NVM data block at said each address offset.

7. A non-transitory computer readable storage medium having stored thereon program code executable by a host system, the program code embodying a method comprising:

receiving, from a virtual machine (VM), a write request directed to an address offset of a non-volatile random access memory (NVM) region of an NVM device, the address offset pointing to an NVM data block that is read-only as a result of being part of a previously created snapshot for the NVM region; and

in response to the write request:

allocating a new NVM data block;

copying contents of the NVM data block to the new NVM data block;

allocating a pointer entry on the NVM device that is associated with a running point of the NVM region, the running point comprising a pointer to a root page of a page table associated with the NVM region; and

updating the pointer entry to point to the new NVM data block.

8. The non-transitory computer readable storage medium of claim 7 wherein the method further comprises, in response to the write request:

creating a new level 1 (L1) page in the page table pointed to by the running point;

updating a page table entry in the new L1 page for the address offset to point to the pointer entry.

9. The non-transitory computer readable storage medium of claim 7 wherein the pointer entry is allocated in a pointer array comprising a plurality of pointer entries for the running point.

10. The non-transitory computer readable storage medium of claim 9 wherein the plurality of pointer entries in the pointer array correspond to NVM data blocks owned by the running point.

11. The non-transitory computer readable storage medium of claim 8 wherein the method further comprises:

determining that the new NVM data block has become a non-active block that is no longer referred to by the running point;

purging the new NVM data block from the NVM device to a storage location on a mass storage device; and

updating the pointer entry to point to the storage location.

12. The non-transitory computer readable storage medium of claim 11 wherein determining that the new NVM data block has become a non-active block comprises:

traversing a logical address space of the NVM region; and

for each of a plurality of address offsets in the logical address space, determining whether a page table associated with a snapshot of the NVM region points to a valid NVM data block at said each address offset.

13. A host system comprising:

a non-volatile random access memory (NVM) device;

a processor; and

a non-transitory computer readable medium having stored thereon program code that, when executed, causes the processor to:

receive, from a virtual machine (VM), a write request directed to an address offset of an NVM region of an NVM device, the address offset pointing to an NVM data block that is read-only as a result of being part of a previously created snapshot for the NVM region; and

in response to the write request:

allocate a new NVM data block;

copy contents of the NVM data block to the new NVM data block;

allocate a pointer entry on the NVM device that is associated with a running point of the NVM region, the running point comprising a pointer to a root page of a page table associated with the NVM region; and

update the pointer entry to point to the new NVM data block.

14. The host system of claim 13 wherein the program code further causes the processor to, in response to the write request:

create a new level 1 (L1) page in the page table pointed to by the running point;

update a page table entry in the new L1 page for the address offset to point to the pointer entry.

15. The host system of claim 13 wherein the pointer entry is allocated in a pointer array comprising a plurality of pointer entries for the running point.

16. The host system of claim 15 wherein the plurality of pointer entries in the pointer array correspond to NVM data blocks owned by the running point.

17. The host system of claim 13 wherein the program code further causes the processor to:

determine that the new NVM data block has become a non-active block that is no longer referred to by the running point;

purge the new NVM data block from the NVM device to a storage location on a mass storage device; and

update the pointer entry to point to the storage location.

18. The host system of claim 17 wherein the program code that causes the processor to determine that the new NVM data block has become a non-active block comprises program code that causes the processor to:

traverse a logical address space of the NVM region; and

for each of a plurality of address offsets in the logical address space, determine whether a page table associated with a snapshot of the NVM region points to a valid NVM data block at said each address offset.

Assignments (3)
CHANGE OF NAME Recorded Apr 15, 2024
From: VMWARE, INC.
To: VMWARE LLC
Reel/Frame 067102/0395 →
CHANGE OF NAME Recorded Feb 27, 2024
From: VMWARE, INC.
To: VMWARE LLC
Reel/Frame 066692/0103 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 27, 2023
From: VENKATASUBRAMANIAN, RAJESH; BANERJEE, ISHAN; FRECHE, JULIEN; TATI, KIRAN; AGARWAL, PREETI; DEGUILLARD, XAVIER
To: VMWARE INC.
Reel/Frame 064087/0319 →
Continuity (2)
Continuation 16174249 · Oct 29, 2018
Related Publication 20220129377A1 · Apr 28, 2022