IP Library Granted Patent US 12,468,666
Granted Patent B2
US 12,468,666 · App. 18/798,693 · Granted Nov 11, 2025

Object versioning support for a file system

Inventors: Dhairesh Oza (Karnataka, IN); Roger W. Cox (Los Altos, CA)
Assignee: NetApp, Inc.
G06F16/1873G06F16/13
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,468,666
App. No.
18/798,693
Granted
Nov 11, 2025
Kind
B2
Abstract

Systems and methods for providing a file system with object versioning support are provided. Rather than adding object records for each version of an object to a chapter database, in one example, the chapter database may be limited to a single object record for a given object including: (i) a name of the object; (ii) an object file handle containing information regarding a file containing data of a current version of multiple versions of the object; and (iii) a version table file handle containing information regarding a file containing a version table. In this manner, enumeration of objects associated with a given chapter may be performed more efficiently and prior versions of objects may be maintained separately within the version table without causing disproportionate growth of object records and without increasing the search depth with objects that are not referenced by the search at issue.

Claims (46)

1 . A method comprising:

maintaining, by a file system of a storage system, information regarding a plurality of objects within a data structure, in which subsets of objects of a plurality of objects associated with an object storage bucket are grouped into respective chapter databases of a plurality of chapter databases in which each of the respective chapter databases corresponds to a contiguous range of a namespace for object names of the plurality of objects;

tracking, by the file system, within the data structure, a plurality of versions of a first set of objects of the plurality of objects that are associated with a first chapter database of the plurality of chapter databases; and

facilitating efficient enumeration of the first set of objects by, for each object of the first set of objects, storing information regarding a current version of the plurality of versions of the object within a corresponding single object record of the first chapter database and interposing a level of indirection between the first chapter database and information regarding one or more prior versions of the plurality of versions of the object.

2 . The method of claim 1 , wherein for a given object of the first set of objects, the corresponding single object record includes:

a name of the given object;

an object file handle containing information indicative of a first file system container in which data of the current version of the given object is stored; and

a version table file handle containing information indicative of a second file system container in which information regarding the one or more prior versions of the given object are stored.

3 . The method of claim 2 , wherein the information regarding the one or more prior versions is maintained within a version table that includes for each version of the one or more prior versions of the given object, a version identifier (ID) and a second object file handle containing information indicative of a third file system container in which data of the version of the given object is stored.

4 . The method of claim 1 , further comprising:

receiving, by the file system, a request relating to a particular object of the first set of object, wherein the request includes the name of the particular object; and

servicing, by the file system, the request by locating the corresponding single object record for the particular object based on the name.

5 . The method of claim 4 , wherein the request comprises a read request and the read request further includes an indication regarding a version of the plurality of versions of the particular object and wherein the method further comprises returning, by the file system, the data of the version of the particular object to the client based on the data structure and the read request.

6 . The method of claim 1 , wherein the information indicative of the first file system container comprises an index node (inode).

7 . The method of claim 6 , wherein the first file system container comprises a file.

8 . The method of claim 1 , wherein the information indicative of the second file system container comprises an index node (inode).

9 . The method of claim 6 , wherein the second file system container comprises a file.

10 . A non-transitory machine readable medium storing instructions, which when executed by one or more processing resources of a storage system, cause a file system of the storage system to:

maintain information regarding a plurality of objects within a hierarchical data structure, in which subsets of objects of a plurality of objects associated with an object storage bucket are grouped into respective chapter databases of a plurality of chapter databases in which each of the respective chapter databases corresponds to a contiguous range of a namespace for object names of the plurality of objects;

track within the hierarchical data structure a plurality of versions of a first set of objects of the plurality of objects that are associated with a first chapter database of the plurality of chapter databases; and

facilitate efficient enumeration of the first set of objects by, for each object of the first set of objects, storing information regarding a current version of the plurality of versions of the object within a corresponding single object record of the first chapter database and interposing a level of indirection between the first chapter database and information regarding one or more prior versions of the plurality of versions of the object.

11 . The non-transitory machine readable medium of claim 10 , wherein for a given object of the first set of objects, the corresponding single object record includes:

a name of the given object;

an object file handle containing information indicative of a first file system container in which data of the current version of the given object is stored; and

a version table file handle containing information indicative of a second file system container in which information regarding the one or more prior versions of the given object are stored.

12 . The non-transitory machine readable medium of claim 11 , wherein the information regarding the one or more prior versions is maintained within a version table that includes for each version of the one or more prior versions of the given object, a version identifier (ID) and a second object file handle containing information indicative of a third file system container in which data of the version of the given object is stored.

13 . The non-transitory machine readable medium of claim 10 , wherein the instructions further cause the file system to:

receive a request relating to a particular object of the first set of object, wherein the request includes the name of the particular object; and

service the request by locating the corresponding single object record for the particular object based on the name.

14 . The non-transitory machine readable medium of claim 13 , wherein the request comprises a read request and the read request further includes an indication regarding a version of the plurality of versions of the particular object and wherein the instructions further cause the file system to return the data of the version of the particular object to the client based on the hierarchical data structure and the read request.

15 . The non-transitory machine readable medium of claim 10 , wherein the information indicative of the first file system container comprises an index node (inode) and wherein the first file system container comprises a file.

16 . The non-transitory machine readable medium of claim 10 , wherein the information indicative of the second file system container comprises an index node (inode) and wherein the second file system container comprises a file.

17 . A storage system comprising:

one or more processing resources; and

instructions that when executed by the one or more processing resource cause a file system of the storage system to:

maintain information regarding a plurality of objects within a tree data structure, in which subsets of objects of a plurality of objects associated with an object storage bucket are grouped into respective chapter databases of a plurality of chapter databases in which each of the respective chapter databases corresponds to a contiguous range of a namespace for object names of the plurality of objects;

track within the tree data structure a plurality of versions of a first set of objects of the plurality of objects that are associated with a first chapter database of the plurality of chapter databases; and

facilitate efficient enumeration of the first set of objects by, for each object of the first set of objects, storing information regarding a current version of the plurality of versions of the object within a corresponding single object record of the first chapter database and interposing a level of indirection between the first chapter database and information regarding one or more prior versions of the plurality of versions of the object.

18 . The storage system of claim 17 , wherein for a given object of the first set of objects, the corresponding single object record includes:

a name of the given object;

an object file handle containing information indicative of a first file system container in which data of the current version of the given object is stored; and

a version table file handle containing information indicative of a second file system container in which information regarding the one or more prior versions of the given object are stored.

19 . The storage system of claim 17 , wherein the instructions further cause the file system to:

receive a request relating to a particular object of the first set of object, wherein the request includes the name of the particular object; and

service the request by locating the corresponding single object record for the particular object based on the name.

20 . The storage system of claim 19 , wherein the request comprises a read request and the read request further includes an indication regarding a version of the plurality of versions of the particular object and wherein the instructions further cause the file system to return the data of the version of the particular object to the client based on the tree data structure and the read request.

Priority Claims (1)
IN 202241026724 · May 9, 2022 · national
Continuity (2)
Continuation 17852573 · Jun 29, 2022
Related Publication 20240403270A1 · Dec 5, 2024
References Cited (20)
US 10893067B1 · Geil et al. · 2021 [cited by applicant]
US 12079177B2 · Oza et al. · 2024 [cited by applicant]
US 20100333116A1 · Prahlad · 2010 [cited by examiner]
US 20110106770A1 · McDonald · 2011 [cited by examiner]
US 20130304745A1 · Dhuse et al. · 2013 [cited by applicant]
US 20140258239A1 · Amlekar · 2014 [cited by examiner]
US 20150220558A1 · Snibbe et al. · 2015 [cited by applicant]
US 20170177452A1 · Parab et al. · 2017 [cited by applicant]
US 20180137014A1 · Li et al. · 2018 [cited by applicant]
US 20190026301A1 · Wang et al. · 2019 [cited by applicant]
US 20200068038A1 · Xing · 2020 [cited by examiner]
US 20210019243A1 · Hickey et al. · 2021 [cited by applicant]
US 20210232595A1 · Solan et al. · 2021 [cited by applicant]
US 20220155962A1 · Mundra et al. · 2022 [cited by applicant]
US 20240104081A1 · Jernigan, IV · 2024 [cited by examiner]
Amazon Simple Storage Service—API Reference : User Guide, Version Mar. 1, 2006, pp. 1-1587. [cited by applicant]
API Reference., “Amazon Simple Storage Service,” Amazon Simple Storage Service API Reference, 2006, pp. 1-1113. [cited by applicant]
Non-Final Office Action mailed on Oct. 25, 2023 for U.S. Appl. No. 17/852,573, filed Jun. 29, 2022, 10 pages. [cited by applicant]
Notice of Allowance mailed on May 1, 2024 for U.S. Appl. No. 17/852,573, filed Jun. 29, 2022, 08 pages. [cited by applicant]
Technical Report., “S3 in ONTAP Best Practices,” NetApp, 2022, pp. 1-26. [cited by applicant]