IP Library Granted Patent US 12,045,485
Granted Patent B2
US 12,045,485 · App. 17/991,732 · Granted Jul 23, 2024

Optimal method for deleting sub-blocks of a pointer block that do not have on-disk metadata headers for addresses

Inventors: Mahesh Hiregoudar (Bangalore, IN); Prasanna Aithal (Bangalore, IN); Prasad Rao Jangam (Palo Alto, CA); Srinivasa Shantharam (Bangalore, IN); Rohan Pasalkar (Palo Alto, CA); Srikanth Mahabalarao (Bangalore, IN)
Assignee: VMware LLC
G06F3/064G06F3/061G06F3/0631G06F3/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,045,485
App. No.
17/991,732
Granted
Jul 23, 2024
Kind
B2
Abstract

A method of deleting a first pointer block of a plurality of pointer blocks of a file system from a storage device used by a plurality of applications, wherein the plurality of pointer blocks are each subdivided into sub-blocks, includes the steps of: determining that a first sub-block of the first pointer block is marked as being empty of any addresses of the file system at which storage space is allocated to files of the applications; determining that a second sub-block of the first pointer block has not been marked as being empty; in response to the determining that the second sub-block has not been marked as being empty, determining that the second sub-block does not contain any addresses of the file system at which storage space is allocated to the files of the applications; and deleting the first pointer block from the storage device.

Claims (49)

1. A method of deleting pointer blocks from a file system of a storage device, wherein the pointer blocks are each subdivided into sub-blocks, the method comprising:

checking a variable associated with a first sub-block of a first pointer block of the pointer blocks, wherein storage space has been allocated for the first sub-block to store a plurality of addresses of the file system, and the variable may be set to a first value to indicate that the first sub-block is empty of addresses of the file system;

in response to determining that the variable is not currently set to the first value, checking the storage space that has been allocated for the first sub-block to determine that the first sub-block is actually empty of addresses of the file system; and

in response to determining that each sub-block of the first pointer block, including the first sub-block, is empty, deleting the first pointer block from the file system.

2. The method of claim 1 , wherein the file system is a virtual machine file system (VMFS), and the first pointer block is part of a virtual disk of the VMFS.

3. The method of claim 1 , further comprising:

before deleting the first pointer block, determining that each sub-block of a second pointer block is empty of addresses of the file system; and

in response to determining that each sub-block of the second pointer block is empty, deleting the first and second pointer blocks from the file system.

4. The method of claim 1 , further comprising:

before checking the storage space that has been allocated for the first sub-block, locking the first pointer block to prevent the variable from being updated in response to incoming input/output operations (IOs).

5. The method of claim 1 , further comprising:

detecting a write input/output operation (IO) including an instruction to write data at an address of the file system; and

in response to detecting the write IO, writing the data at the address, storing the address in the first sub-block, and incrementing the variable.

6. The method of claim 5 , further comprising:

after storing the address in the first sub-block, detecting an unmap IO including an instruction to deallocate storage space at the address; and

in response to detecting the unmap IO: deallocating the storage space at the address, deleting the address from the first sub-block, and decrementing the variable.

7. A non-transitory computer-readable medium comprising instructions that are executable in a computer system, wherein the instructions when executed cause a storage device of the computer system to carry out a method of deleting pointer blocks from a file system of the storage device, and the pointer blocks are each subdivided into sub-blocks, the method comprising:

checking a variable associated with a first sub-block of a first pointer block of the pointer blocks, wherein storage space has been allocated for the first sub-block to store a plurality of addresses of the file system, and the variable may be set to a first value to indicate that the first sub-block is empty of addresses of the file system;

in response to determining that the variable is not currently set to the first value, checking the storage space that has been allocated for the first sub-block to determine that the first sub-block is actually empty of addresses of the file system; and

in response to determining that each sub-block of the first pointer block, including the first sub-block, is empty, deleting the first pointer block from the file system.

8. The non-transitory computer-readable medium of claim 7 ,

wherein the file system is a virtual machine file system (VMFS), and the first pointer block is part of a virtual disk of the VMFS.

9. The non-transitory computer-readable medium of claim 7 , the method further comprising:

before deleting the first pointer block, determining that each sub-block of a second pointer block is empty of addresses of the file system; and

in response to determining that each sub-block of the second pointer block is empty, deleting the first and second pointer blocks from the file system.

10. The non-transitory computer-readable medium of claim 7 , the method further comprising:

before checking the storage space that has been allocated for the first sub-block, locking the first pointer block to prevent the variable from being updated in response to incoming input/output operations (IOs).

11. The non-transitory computer-readable medium of claim 7 , the method further comprising:

detecting a write input/output operation (IO) including an instruction to write data at an address of the file system; and

in response to detecting the write IO, writing the data at the address, storing the address in the first sub-block, and incrementing the variable.

12. The non-transitory computer-readable medium of claim 11 , the method further comprising:

after storing the address in the first sub-block, detecting an unmap IO including an instruction to deallocate storage space at the address; and

in response to detecting the unmap IO: deallocating the storage space at the address, deleting the address from the first sub-block, and decrementing the variable.

13. A storage device including a file system in which a plurality of pointer blocks are each subdivided into sub-blocks, wherein the storage device includes a file system module executing in the storage device, the file system module being configured to:

check a variable associated with a first sub-block of a first pointer block of the pointer blocks, wherein storage space has been allocated for the first sub-block to store a plurality of addresses of the file system, and the variable may be set to a first value to indicate that the first sub-block is empty of addresses of the file system;

in response to determining that the variable is not currently set to the first value, check the storage space that has been allocated for the first sub-block to determine that the first sub-block is actually empty of addresses of the file system; and

in response to determining that each sub-block of the first pointer block, including the first sub-block, is empty, delete the first pointer block from the file system.

14. The storage device of claim 13 , wherein the file system is a virtual machine file system (VMFS), and the first pointer block is part of a virtual disk of the VMFS.

15. The storage device of claim 13 ; wherein the file system module is further configured to:

before deleting the first pointer block, determine that each sub-block of a second pointer block is empty of addresses of the file system; and

in response to determining that each sub-block of the second pointer block is empty, delete the first and second pointer blocks from the file system.

16. The storage device of claim 13 , wherein the file system module is further configured to:

before checking the storage space that has been allocated for the first sub-block, lock the first pointer block to prevent the variable from being updated in response to incoming input/output operations (IOs).

17. The storage device of claim 13 , wherein the file system module is further configured to:

detect a write input/output operation (IO) including an instruction to write data at an address of the file system; and

in response to detecting the write IO, write the data at the address, store the address in the first sub-block, and increment the variable.

18. The storage device of claim 17 , wherein the file system module is further configured to:

after storing the address in the first sub-block, detect an unmap JO including an instruction to deallocate storage space at the address; and

in response to detecting the unmap IO: deallocate the storage space at the address, delete the address from the first sub-block, and decrement the variable.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 8, 2024
From: BAHAR, BAMDAD; ZERBY, JACOB
To: FFI IONIX IP, INC.
Reel/Frame 068226/0904 →
CHANGE OF NAME Recorded Apr 15, 2024
From: VMWARE, INC.
To: VMWARE LLC
Reel/Frame 067103/0030 →
Priority Claims (1)
IN 202141028254 · Jun 23, 2021 · national
Continuity (2)
Continuation 17399098 · Aug 11, 2021
Related Publication 20230089300A1 · Mar 23, 2023