DETAILED ACTION
Notice of Pre-AIA or AIA Status
The present application, filed on or after March 16, 2013, is being examined under the first inventor to file provisions of the AIA .
Response to Amendment
2. The Supplemental Amendment filed on December 3rd 2025 has been entered. Claims 1 and 11 have been amended, claim 20 has been cancelled, claim 21 was previously presented. Claims 1 – 19 and 21 are currently pending.
Response to Arguments
3. The finality of the office action dated 09/03/2025 has been withdrawn.
Upon further consideration new grounds of rejection have been necessitated due
to Applicant's supplemental amendments and are made in view of Dragojevic et al., (United States Patent Publication Number 20240273080) hereinafter Dragojevic
Claim Rejections – 35 U.S.C. §103
4. The following is a quotation of 35 U.S.C. 103 which forms the basis for all
obviousness rejections set forth in this Office action:
A patent for a claimed invention may not be obtained, notwithstanding that the claimed invention is not identically disclosed as set forth in section 102, if the differences between the claimed invention and the prior art are such that the claimed invention as a whole would have been obvious before the effective filing date of the claimed invention to a person having ordinary skill in the art to which the claimed invention pertains. Patentability shall not be negated by the manner in which the invention was made.
5. The factual inquiries set forth in Graham v John Deere Co., 383 U.S. 1, 148 USPQ
459 (1966), that are applied for establishing a background for determining obviousness
under 35 U.S.C. 103 are summarized as follows:
a. Determining the scope and contents of the prior art
b. Ascertaining the differences between the prior art and the claims at issue
c. Resolving the level of ordinary skill in the pertinent art
d. Considering objective evidence present in the application indicating
obviousness or nonobviousness
Claims 1, 8, 9, 11 and 18 are rejected under 35 U.S.C. 103 as being unpatentable over Strzelczak et al. (United States Patent Publication Number 2013/0036278), in view of Curtis-Maury et al. (United States Patent Publication Number 20220083422 ), hereinafter referred to as Curtis-Maury, in view of Wei et al., (United States Patent Publication Number 2023/0035832) hereinafter Wei and in further view of Dragojevic et al., (United States Patent Publication Number 20240273080) hereinafter Dragojevic
Regarding claim 1 Strzelczak teaches a method (a content-addressable method [0211]) of operating (of storing and retrieving data [0211]) a data storage system (data storage controlling unit 21 “a configurable part of storage system 10” [0211]) (ABS., content addressable storage system) SEE ALSO Figs. 10, 11, 13, 14 and 21 having data deduplication functionality (Deduplication as a part of block write is a basic operation and its performance is critical for the performance of the whole system [0138]) SEE ALSO paragraphs [0069], [0089], [0119], [0140], [0169], [0192], [0195], [0196], [0198] and [0234] including storage (the storage system 10 is equipped with a storage device 31 that stores data [0209]) of unique data instances (There are two distinct block types: regular blocks and searchable blocks [0067]) with associated reference counts each indicating a respective number of distinct references to the associated data instance, (Each block has a reference counter tracking the number of other blocks pointing to the counter owner. [0101]) the storage system (data storage controlling unit 21 “a configurable part of storage system 10” [0211]) (ABS., content addressable storage system) SEE ALSO Figs. 10, 11, 13, 14 and 21 also having reclamation functionality (garbage reclamation [0184]) that reclaims storage for reuse based on reference counts of associated data instances reaching zero, (In each of the 5 experiments measuring the duration of garbage reclamation, we wrote 500 GB of data and deleted
50 GB of it, but varied amount of data to be rewritten for the reclamation to finish. FIG. 7(a) shows almost linear relation between garbage reclamation duration and the amount of data to be rewritten. This is because the duration of garbage reclamation
is proportional to the number of containers keeping blocks with counters equal zero. [0185]) SEE ALSO paragraph [0145], [0233]
Strzelczak does not fully disclose comprising: performing a background process of correcting the reference counts by, performing one or more foreground processes in a manner that produces incorrect-high reference counts greater than corresponding numbers of actual references to associated data instances, the incorrect-high reference counts resulting in loss of storage capacity by non- reclamation of data instances when their number of actual references has reached zero and their reference counts are non-zero; for each of the unique data instances, (1) copying the unique data instance to a new data instance with an initial reference count of zero and making the new data instance unavailable for reclaiming, (2) scanning a set of referencing structures for all references to the unique data instance, and for each reference (i) replacing the reference with a new reference to the new data instance, and (ii) incrementing the reference count of the new data instance, and (3) upon completing the scanning, making the new data instance available for eventual reclaiming based on its reference count reaching zero; wherein replacing the reference with the new reference includes replacing a pointer to data of the unique data instance with a new pointer to the same data in the new data instance as part of a garbage collecting background process.
Curtis-Maury teaches performing one or more foreground processes in a manner (a failure occurring while the reference count is being updated [0110]) that produces incorrect-high reference counts greater than corresponding numbers of actual references to associated data instances, (For example, if a reference count becomes incorrect due to a failure occurring while the reference count is being updated, then the reference count may be too large or too small ( a value different than a correct reference count value) [0110]) (For example, without knowing whether the reference count for the page was updated or not, a current value of the reference count after the node 602 recovers from the failure could be incorrect such as where only the page was added to the persistent memory 604 and the reference count was never updated. Incorrect reference counts can cause memory leaks due to reference counts being higher than the correct value [0120]) the incorrect-high reference counts (incorrect reference count … the reference count is too large (a value that is higher than a correct
reference count value),[0110]) resulting in loss of storage capacity (memory leaks [0110]) by non- reclamation of data instances when their number of actual references has reached zero and their reference counts are non-zero; (where the page is retained within persistent memory even though nothing is using/referencing the data within the page. [0110]) and performing a background process (a process of reconciliation run in a manner that is non-disruptive to client access [0121]) such as “background process” of correcting (corrects [0017]) the reference counts (reference counts [0029], [0031], [0109]) (2) scanning a set of referencing structures for all references (During operation 506 of method 500 of FIG. 5, a first scanner 632 is executed to traverse the pages 608 [0128]) to the unique data instance, (inofile of file system instance [0096]) such as “unique data instance” and (3) upon completing the scanning, (when the second scanner is able to complete within the window [0132])
It would have been prima facie obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to have modified Strzelczak to incorporate the teachings of Curtis-Maury whereby performing one or more foreground processes in a manner that produces incorrect-high reference counts greater than corresponding numbers of actual references to associated data instances, the incorrect-high reference counts resulting in loss of storage capacity by non- reclamation of data instances when their number of actual references has reached zero and their reference counts are non-zero. By doing so inconsistencies within the persistent memory 416 are reconciled in order to place the persistent memory 416 and persistent memory file system 414 into a consistent state in a manner that is non-disruptive to client devices. Curtis-Maury [0111]
Wei teaches by, for each of the unique data instances, (object type [0070]) such as “unique data instance” (1) copying (Fig. 8, (554) clone object to session cache [0072]) the unique data instance(object type [0070]) such as “unique data instance” to a new data instance (ABS., cloned object) (cloned object [0072]) with an initial reference count of zero (When the counter has a value of zero [0017]) and making the new data instance (ABS., cloned object) (cloned object [0072]) unavailable for reclaiming,(Fig. 8, (558) lock global cache [0072]) and for each reference (i) replacing the reference with a new reference (Fig. 8, (560) detach original from global cache [0072], (562) swap clone into global cache [0072]) to the new data instance, (ABS., cloned object) (cloned object [0072]) and (ii) incrementing the reference count (the reference count is increased by one [0060]) of the new data instance, (ABS., cloned object) (cloned object [0072]) making the new data instance (ABS., cloned object) (cloned object [0072]) available for eventual reclaiming (ABS., and the cloned object type is swapped into the global cache, after which the global cache in unlocked.) (Fig. 8, (564) unlock global cache [0072]) based on its reference count reaching zero; (ABS. When both the reference counter and the session counter are zero, the object type may be removed from the cache. ) (When the counter has a value of zero, there are no concurrent sessions. [0017]) wherein replacing the reference with a new reference (Fig. 8, (560) detach original from global cache [0072], (562) swap clone into global cache [0072])
It would have been prima facie obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to have modified Strzelczak in view of Curtis-Maury to incorporate the teachings of Wei for each of the unique data instances, (1) copying the unique data instance to a new data instance with an initial reference count of zero and making the new data instance unavailable for reclaiming, and for each reference (i) replacing the reference with a new reference to the new data instance, and (ii) incrementing the reference count of the new data instance, and, making the new data instance available for eventual reclaiming based on its reference count reaching zero. By doing so consistency is maintained. Wei [0055]
Dragojevic teaches includes replacing a pointer (the writer also updates the sibling leaf pointers, which are used during the scan operation. It locks the sibling leaves and updates the pointers after it swaps in the new subtree [0136]) to data of the unique data instance (new nodes with a new logical ID “LID” and a memory buffer. [0135]) with a new pointer (the writer also updates the sibling leaf pointers, which are used during the scan operation. It locks the sibling leaves and updates the pointers after it swaps in the new subtree [0136]) to the same data in the new data instance(new nodes with a new logical ID “LID” and a memory buffer. [0135]) as part of a garbage collecting background process (nodes being put into the garbage collection list [0135])
It would have been prima facie obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to have modified Strzelczak in view of Curtis-Maury and Wei to incorporate the teachings of Dragojevic wherein includes replacing a pointer to data of the unique data instance with a new pointer to the same data in the new data instance as part of a garbage collecting background process. By doing so nodes that are no longer accessible are garbage collected. Dragojevic [0102]
Claim 11 corresponds to claim 1 and is rejected accordingly
Regarding clam 8 Strzelczak in view of Curtis-Maury, Wei and Dragojevic teaches the method of claim 1,
Strzelczak as modified does not fully disclose wherein performing one or more foreground processes in a manner that produces incorrect-high reference counts includes one or more of (1) a performance optimization that intentionally trades performance for reduced capacity by refraining from updating a reference count, (2) decoupled, non-transactional updating of the references and the reference counts, and (3) errors including incorrect programming
Curtis-Maury teaches performing one or more foreground processes in a manner (node failure; failure occurring whilst the reference count is being updated; another example of an inconsistency, the node 402 may submit a set of actions to the persistent memory 416 for persisting data into pages of the persistent memory 416. The set of actions may comprise a first write action to write data to a page and a second write action to update a checksum for the page based upon the data written to the page. If the node 402 fails before the persistent memory 416 has successful completed the set of actions, then an inconsistent state can occur where only one of the write actions successfully completed, such as where the data was written to the page but the checksum was not updated with the correct value or the checksum was updated but the
data was never written to the page [0110]) (a wide variety of other types of inconsistencies can occur, such as checksum mismatches, pages having incorrect page
states (e.g., an LO data page may have an indirect L2 page state instead of a child LO page state), incorrect information within metadata of per-page structures, etc [0120])
in a manner that produces incorrect-high reference counts(For example, if a reference count becomes incorrect due to a failure occurring while the reference count is being updated, then the reference count may be too large or too small ( a value different than a correct reference count value) [0110]) (For example, without knowing whether the reference count for the page was updated or not, a current value of the reference count after the node 602 recovers from the failure could be incorrect such as where only the page was added to the persistent memory 604 and the reference count was never updated. Incorrect reference counts can cause memory leaks due to reference counts being higher than the correct value [0120]) includes one or more of (1) a performance optimization that intentionally trades performance for reduced capacity by refraining from updating a reference count, (2) decoupled, non-transactional updating of the references and the reference counts, and (3) errors including incorrect programming (then data corruption occurred where the page is freed and reused to store different
data even though the data that was freed is still being used/referenced. [0110) such as “errors due to incorrect programming”
It would have been prima facie obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to have modified Strzelczak in view of Wei and Dragojevic to incorporate the teachings of Curtis-Maury wherein performing one or more foreground processes in a manner that produces incorrect-high reference counts includes one or more of (1) a performance optimization that intentionally trades performance for reduced capacity by refraining from updating a reference count, (2) decoupled, non-transactional updating of the references and the reference counts, and (3) errors including incorrect programming. By doing so inconsistencies within the persistent memory 416 are reconciled in order to place the persistent memory 416 and persistent memory file system 414 into a consistent state in a manner that is non-disruptive to client devices such as the client device 428 accessing data stored within the pages of the persistent memory 416. Curtis-Maury [0111].
Claim 18 corresponds to claim 8 and is rejected accordingly
Regarding clam 9 Strzelczak in view of Curtis-Maury, Wei and Dragojevic teaches the method of claim 8,
Strzelczak as modified does not fully disclose wherein the performance optimization includes a blind update of a reference count.
Curtis-Maury teaches wherein the performance optimization (high availability performance [0020]) includes a blind update of a reference count (a failure occurring
while the reference count is being updated [0110]) such as a “blind update”
It would have been prima facie obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to have modified Strzelczak in view of Wei and Dragojevic to incorporate the teachings of Curtis-Maury wherein the performance optimization includes a blind update of a reference count. By doing so then the reference count may be too large or too small ( a value different than a correct reference count value). Curtis-Maury [0110]
Claims 2 – 6, 10, 12 – 16 and 19 are rejected under 35 U.S.C. 103 as being unpatentable over Strzelczak et al. (United States Patent Publication Number 2013/0036278), in view of Curtis-Maury et al. (United States Patent Publication Number 20220083422 ), hereinafter referred to as Curtis-Maury, in view of Wei et al., (United States Patent Publication Number 2023/0035832) hereinafter Wei, in view of Dragojevic et al., (United States Patent Publication Number 20240273080) hereinafter Dragojevic and in further view of David et al. (United States Patent Publication Number 2022/0114100) hereinafter David.
Regarding clam 2 Strzelczak in view of Curtis-Maury, Wei and Dragojevic teaches the method of claim 1,
Strzelczak as modified does not fully disclose wherein making the new data instance unavailable for reclaiming includes marking the new data instance as in-progress, and wherein making the new data instance available for eventual reclaiming includes clearing the in-progress marking.
David teaches wherein making the new data instance unavailable for reclaiming (an exclusive block to prevent other nodes from accessing and making modifications [0079]) includes marking the new data instance as in-progress, (an exclusive lock generally include a temporary restriction on the ability to access and modify [0079]) such as “marked as in-progress” and wherein making the new data instance available for eventual reclaiming (Upon completion of the operation, the requesting node ( e.g., storage processor 100) may release the exclusive lock and reference count update process 10 may allow other nodes to access metadata block 136 within the storage array. [0080]) ) includes clearing the in-progress marking (may release the exclusive lock [0079) such as “clearing the in-progress marking”
It would have been prima facie obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to have modified Strzelczak in view of Curtis-Maury, Wei and Dragojevic to incorporate the teachings of David wherein making the new data instance unavailable for reclaiming includes marking the new data instance as in-progress, and wherein making the new data instance available for eventual reclaiming includes clearing the in-progress marking. By doing so an unreferenced third layer metadata block may be reclaimed for new user data. David [0078]
Claim 12 corresponds to claim 2 and is rejected accordingly
Regarding claim 3 Strzelczak in view of Curtis-Maury, Wei and Dragojevic teaches the method of claim 1,
Strzelczak as modified does not fully disclose wherein the referencing structures are included in a mapper structure organized and operative to map logical block addresses to physical block addresses.
Curtis-Maury teaches the referencing structures are (per-page structure
to page mappings using a one-to-one mapping [0099]) such as “referencing structures”
It would have been prima facie obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to have modified Strzelczak in view of Wei and Dragojevic to incorporate the teachings of Curtis-Maury wherein referencing structures. By doing so With the variable mapping, persistent memory objects (e.g., objects stored within the file system superblock to point to the list of file system info objects; objects within a file system info object to point to the root of the inofile; objects within an inode to point to a root of a file tree of a file; and objects within indirect pages to point to child blocks (child pages)) will store a per-page structure ID of its per-page structure as a location of a child page being pointed to, and will redirect through the per-page structure using the per-page structure ID to identify the physical block number of the child page being pointed. Curtis-Maury [0099].
David teaches wherein included in a mapper structure (storage array [0053]) such as “mapper structure” organized and operative to map logical block addresses to physical block addresses (mapping between the logical address and physical address is a form of metadata that the array needs to manage [0053])
It would have been prima facie obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to have modified Strzelczak in view of Curtis-Maury, Wei and Dragojevic to incorporate the teachings of David wherein are included in a mapper structure organized and operative to map logical block addresses to physical block addresses. By doing so additional capabilities may be managed such as snapshots, change tracking for efficient remote replication, deduplication pointers, and compression. David [0053]
Claim 13 corresponds to claim 3 and is rejected accordingly
Regarding claim 4 Strzelczak in view of Curtis-Maury, Wei, Dragojevic and David teaches the method of claim 3,
Strzelczak as modified does not fully disclose wherein the mapper structure has a multi-layer organization including a tree-organized first layer including the referencing structures and a second layer having metadata of the data instances, the metadata including the reference counts.
Curtis-Maury teaches the referencing structures are (per-page structure
to page mappings using a one-to-one mapping [0099]) such as “referencing structures”
It would have been prima facie obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to have modified Strzelczak in view of Wei, Dragojevic and David to incorporate the teachings of Curtis-Maury wherein referencing structures. By doing so With the variable mapping, persistent memory objects (e.g., objects stored within the file system superblock to point to the list of file system info objects; objects within a file system info object to point to the root of the inofile; objects within an inode to point to a root of a file tree of a file; and objects within indirect pages to point to child blocks (child pages)) will store a per-page structure ID of its per-page structure as a location of a child page being pointed to, and will redirect through the per-page structure using the per-page structure ID to identify the physical block number of the child page being pointed. Curtis-Maury [0099].
David teaches wherein the mapper structure (storage array [0053]) such as “mapper structure” has a multi-layer organization (multi-layer architecture [0055]) including a tree-organized first layer (the first layer (e.g., first layer 300) may be organized in a "tree" data structure [0056]) and a second layer having metadata of the data instances, (a second layer (e.g., second layer 306) may include second layer metadata blocks (e.g., second layer metadata block 308) with a plurality of entries (e.g., plurality of entries 310) [0057]) the metadata including the reference counts (updates to a reference count associated with a metadata block may include increases to the number of reference counts associated with the metadata block. [0069])
It would have been prima facie obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to have modified Strzelczak in view of Curtis-Maury, Wei and Dragojevic to incorporate the teachings of David wherein the mapper structure has a multi-layer organization including a tree-organized first layer including a second layer having metadata of the data instances, the metadata including the reference counts. By doing so a deduplication operation may generally increase the reference count of a particular metadata block as references from first layer metadata blocks to other second layer metadata blocks are re-referenced to another second layer metadata block. David [0069]
Claim 14 corresponds to claim 4 and is rejected accordingly
Regarding claim 5 Strzelczak in view of Curtis-Maury, Wei, Dragojevic and David teaches the method of claim 4,
Strzelczak as modified does not fully disclose wherein the referencing structures are leaf structures forming a lowest sub-layer of the tree-organized first layer, the leaf structures having a generally M:1 relationship to the data instances to effect the data deduplication functionality.
Curtis-Maury teaches the referencing structures are (per-page structure
to page mappings using a one-to-one mapping [0099]) such as “referencing structures”
It would have been prima facie obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to have modified Strzelczak in view of Wei, Dragojevic and David to incorporate the teachings of Curtis-Maury wherein referencing structures. By doing so With the variable mapping, persistent memory objects (e.g., objects stored within the file system superblock to point to the list of file system info objects; objects within a file system info object to point to the root of the inofile; objects within an inode to point to a root of a file tree of a file; and objects within indirect pages to point to child blocks (child pages)) will store a per-page structure ID of its per-page structure as a location of a child page being pointed to, and will redirect through the per-page structure using the per-page structure ID to identify the physical block number of the child page being pointed. Curtis-Maury [0099].
David teaches wherein leaf structures (plurality of entries of one or more third layer metadata blocks [0057]) such as “leaf structures” forming a lowest sub-layer (Fig. 3, (312) third layer [0058]) of the tree-organized first layer, (the first layer (e.g., first layer 300) may be organized in a "tree" data structure [0056]) the leaf structures (plurality of entries of one or more third layer metadata blocks [0057]) such as “leaf structures” having a generally M:1 relationship to the data instances to (second layer metadata blocks (e.g., second layer metadata block 308) with a plurality of entries (e.g., plurality of entries 310) that map to a plurality of entries of one or more third layer metadata blocks [0057]) effect the data deduplication functionality (operations that may be performed on the metadata blocks (e.g., metadata block (MDB) 136) may generally include writing new blocks of user data to a storage array, performing deduplication on existing data, removing data, garbage collection operations,
etc. [0060])
It would have been prima facie obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to have modified Strzelczak in view of Curtis-Maury, Wei and Dragojevic to incorporate the teachings of David wherein leaf structures forming a lowest sub-layer of the tree-organized first layer, the leaf structures having a generally M:1 relationship to the data instances to effect the data deduplication functionality. By doing so a deduplication operation may generally increase the reference count of a particular
metadata block as references from first layer metadata blocks to other second layer metadata blocks are re-referenced to another second layer metadata block. David [0069]
Claim 15 corresponds to claim 5 and is rejected accordingly
Regarding claim 6 Strzelczak in view of Curtis-Maury, Wei, Dragojevic and David teaches the method of claim 5,
Strzelczak as modified further teaches wherein the background process (background deletion process [0101]) is a leaf fixer process (The whole deletion consists of two phases run periodically: garbage identification in which new counter values
are computed. This phase is followed by space reclamation during which storage space can be reclaimed by removing garbage identified in the first part [0103]) such as “leaf fixer process” being configured and operative to:(i) be executed in regular cycles (run periodically [0101], [0103]) and concurrently with regular user load (synchronization between deletion and users using epochs [0075]) that is dynamically (The implemented deletion in the present invention bears some resemblance to concurrent garbage collection in programming languages with dynamic data structures is well-understood [0192]) modifying the references contained in the set of referencing structures; (FIG. 3(a) shows the case where the retention root pointing to block A has been written after the deletion start, the block A should not be deleted. [0116]) (Therefore, it is enough to advance the epoch twice and assure that blocks written between the first and the second advance will have their increments sent as presented in FIG. 4 … Therefore, the epoch is always incremented by one to thereby shift to the next generation as shown in FIG. 4. [0117 and (The second advance ensures that the address of block A obtained before the deletion started is discarded by a user, so no new references to A can be created. The only new blocks that can point to A are the ones written after the first and before the second advance. But these are precisely the ones we send additional increments from. [0118]) and thereby enable safe removal of old data instances (space reclamation during which storage space can be reclaimed by removing garbage identified in the first part. [0103]) (After commit, garbage blocks are no longer readable and space occupied by them is reclaimed in the background. [0112])
Strzelczak as modified does not fully disclose(ii) employ a working set of data instances whose references are to be fixed, and fix all references in the working set; (iii) traverse an entire relevant metadata space; and (iv) guarantee that all references have been updated
Curtis-Maury, (ii) employ a working set of data instances whose references are to be fixed, (local inconsistencies [0130]) and (global inconsistencies [0131]) such as “working set of data instances whose references are to be fixed” and fix all references in the working set; (a first scanner 632 is executed to traverse the pages 608 of the persistent memory 604 to fix local inconsistencies associated with the pages 608. [0128] ) (a second scanner 752 is executed to fix global inconsistencies within the persistent memory file system of the remote partition 730, [0137]) (iii) traverse an entire relevant metadata space; (During operation 506 of method 500 of FIG. 5, a first scanner 632 is executed to traverse the pages 608 of the persistent memory 604 to fix local inconsistencies associated with the pages 608. A local inconsistency is an inconsistency associated with a first set of metadata (e.g., metadata within a per-page structure of a page) or data of the page that can be fixed using a second set of meta data (e.g., other meta data within the per-page structure of the page) or other data of the page [0128]) and (iv) guarantee that all references have been updated (Executing the first scanner 632 synchronously simplifies the process of fixing the local inconsistencies, but can impact performance such as by increasing client I/O latency because the client I/O access is unavailable 620 until the first scanner 632 completes. [0130]) (a second scanner 634 is executed to traverse a file system tree of the persistent memory 604 to fix global inconsistencies [0131] (Executing the second scanner 634 synchronously simplifies the process of fixing the local inconsistencies, but can impact performance such as by increasing client I/O latency because the client I/O access is unavailable 620 until the second scanner 634 completes. [0132]))
It would have been prima facie obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to have modified Strzelczak in view of Wei, Dragojevic and David to incorporate the teachings of Curtis-Maury traverse an entire relevant metadata space; and (iv) guarantee that all references have been updated. By doing so inconsistencies within the persistent memory 604 and persistent memory file system 606 are reconciled in a manner that is non-disruptive to client access. Curtis-Maury [0121]
Claim 16 corresponds to claim 6 and is rejected accordingly
Regarding clam 10 Strzelczak in view of Curtis-Maury, Wei and Dragojevic teaches the method of claim 8,
Strzelczak as modified does not fully disclose wherein the non-transactional updating includes updating a reference count without acquiring an exclusive lock for the data instance.
David teaches wherein the non-transactional updating (operations that access the metadata block without changing or modifying the metadata block (e.g., reading data, deduplication data [0083]) includes updating a reference count without acquiring an exclusive lock for the data instance (reference count update process 10 may provide 412 a shared lock on the metadata block to the at least one node of the multi-node storage system. [0083])
It would have been prima facie obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to have modified Strzelczak in view of Curtis-Maury, Wei and Dragojevic to incorporate the teachings of David wherein the non-transactional updating includes updating a reference count without acquiring an exclusive lock for the data instance. By doing so reference count update process 10 may allow another node ( e.g., storage processor 126) to perform another operation on metadata block 136 within the storage array that does not require a consistent reference count while the requesting node (e.g., storage processor 100) performs the operation that does not require a consistent reference count associated with metadata block 136. David [0084]
Regarding claim 19 Strzelczak in view of Curtis-Maury, Wei and Dragojevic teaches the data storage system of claim 18,
Strzelczak as modified does not fully disclose wherein the performance optimization includes a blind update of a reference count, and wherein the non-transactional updating includes updating a reference count without acquiring an exclusive lock for the data instance.
Curtis-Maury teaches wherein the performance optimization (high availability performance [0020]) includes a blind update of a reference count (a failure occurring
while the reference count is being updated [0110]) such as a “blind update”
It would have been prima facie obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to have modified Strzelczak in view of Wei and Drogojevic to incorporate the teachings of Curtis-Maury wherein the performance optimization includes a blind update of a reference count. By doing so then the reference count may be too large or too small ( a value different than a correct reference count value). Curtis-Maury [0110]
David teaches wherein the non-transactional updating (operations that access the metadata block without changing or modifying the metadata block (e.g., reading data, deduplication data [0083]) includes updating a reference count without acquiring an exclusive lock for the data instance (reference count update process 10 may provide 412 a shared lock on the metadata block to the at least one node of the multi-node storage system. [0083])
It would have been prima facie obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to have modified Strzelczak in view of Curtis-Maury, Wei and Dragojevic to incorporate the teachings of David wherein the non-transactional updating includes updating a reference count without acquiring an exclusive lock for the data instance. By doing so reference count update process 10 may allow another node ( e.g., storage processor 126) to perform another operation on metadata block 136 within the storage array that does not require a consistent reference count while the requesting node (e.g., storage processor 100) performs the operation that does not require a consistent reference count associated with metadata block 136. David [0084]
Claims 7 and 17 are rejected under 35 U.S.C. 103 as being unpatentable over Strzelczak et al. (United States Patent Publication Number 2013/0036278), in view of Curtis-Maury et al. (United States Patent Publication Number 20220083422 ), hereinafter referred to as Curtis-Maury, in view of Wei et al., (United States Patent Publication Number 2023/0035832) hereinafter Wei in view of Dragojevic et al., (United States Patent Publication Number 20240273080) hereinafter Dragojevic in view of David et al. (United States Patent Publication Number 2022/0114100) hereinafter David and in further view Vankamamidi et al., (United States Patent Publication Number 2021/0034292) hereinafter Vankamamidi
Regarding claim 7 Strzelczak in view of Curtis-Maury, Wei, Dragojevic and David teaches the method of claim 4,
Strzelczak as modified does not fully disclose wherein the second layer includes virtual large blocks (VLBs) storing the reference counts and having pointers to respective physical large blocks (PLBs) providing underlying physical storage of the data instances.
Vankamamidi teaches wherein the second layer (In addition, virtual blocks can be used in a layer in between the logical blocks and the physical data storage to provide a mapping between logical blocks and physical blocks [0018]) includes virtual large blocks (VLBs) (respective one or more VLBs 140 [0024]) storing the reference counts (reference count) within a virtual block [0019]) and having pointers (each VLB 140 has one or more pointers 145a-n associated with it [0024]) to respective physical large blocks (PLBs) (physical blocks PBs 150 [0023]) providing underlying physical storage (and to provide data storage services, [0018]) of the data instances (Fig. 3, database/database table [0029]) such as “data instances”
It would have been prima facie obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to have modified Strzelczak in view of Curtis-Maury, Wei, Dragojevic and David to incorporate the teachings of Vankamamidi wherein the second layer includes virtual large blocks (VLBs) storing the reference counts and having pointers to respective physical large blocks (PLBs) providing underlying physical storage of the data instances. By doing so a user of a system is able to better utilize resources within a data storage system by deferred virtual block deferred reference counting by the system receiving an IO request for data, the data associated with a virtual block, updating a reference count structure to reflect the IO request, and updating, out of line from the IO request, one or more reference counts associated with the virtual block to reflect the result of the IO request based on the updated reference count structure. Vankamamidi [0021].
Claim 17 corresponds to claim 7 and is rejected accordingly
Claim 21 is rejected under 35 U.S.C. 103 as being unpatentable over Strzelczak et al. (United States Patent Publication Number 2013/0036278), in view of Curtis-Maury et al. (United States Patent Publication Number 20220083422 ), hereinafter referred to as Curtis-Maury, in view of Wei et al., (United States Patent Publication Number 2023/0035832) hereinafter Wei, in view of Dragojevic et al., (United States Patent Publication Number 20240273080) hereinafter Dragojevic and in further view of Kucherov (United States Patent Publication Number2020/0012430) hereinafter Kucherov
Regarding claim 21 Strzelczak in view of Curtis-Maury, Wei and Dragojevic teaches the method of claim 1,
Strzelczak does not fully disclose wherein each of the unique data instances includes a respective associated existing reference count resulting from the foreground processes, the existing reference count having a non-zero value, and wherein the copying of each the unique data instances to a respective new data instance refrains from copying the existing reference count and instead creates a new reference count with the initial reference count of zero, for use in the subsequent steps 2(i) and 2(ii) for the new data instance
Wei teaches and wherein the copying (Fig. 8, (554) clone object to session cache [0072]) of each the unique data instances (object type [0070]) such as “unique data instance” to a respective new data instance (ABS., cloned object) (cloned object [0072]) refrains from copying the existing reference count and instead creates a new reference count with the initial reference count of zero, (ABS., both the reference counter and the
session counter are zero,) (the counter has a value of zero [0017])for use in the subsequent steps 2(i) and 2(ii) for the new data instance(ABS., cloned object) (cloned object [0072])
It would have been prima facie obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to have modified Strzelczak in view of Curtis-Maury and Dragojevic to incorporate the teachings of Wei and wherein the copying of each the unique data instances to a respective new data instance refrains from copying the existing reference count and instead creates a new reference count with the initial reference count of zero, for use in the subsequent steps 2(i) and 2(ii) for the new data instance. By doing so When the counter has a value of zero, there are no concurrent sessions. Wei [0017]
Kucherov teaches wherein each of the unique data instances (respective physical blocks in storage devices [0046]) such as “unique data instances” includes a respective associated existing reference count (ABS., reference count) (Figs.1, 4 & 5 reference counts [0013], [0016], [0017]) resulting from the foreground processes, (deletion of a corresponding storage volume [0094]) such as “foreground process” the existing reference count having a non-zero value, (having non-zero reference counts [0100])
It would have been prima facie obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to have modified Strzelczak in view of Curtis-Maury, Wei and Dragojevic to incorporate the teachings of Kucherov wherein each of the unique data instances includes a respective associated existing reference count resulting from the foreground processes, the existing reference count having a non-zero value. By doing so Such an arrangement reduces leaks in the physical storage capacity of the content addressable storage system 105 by detecting and eliminating orphaned blocks of physical capacity, that is, physical blocks having non-zero reference counts but no associated logical blocks Kucherov [0100]
Conclusion
6. Applicant's amendment necessitated the new ground(s) of rejection presented in this Office action. Accordingly, THIS ACTION IS MADE FINAL. See MPEP § 706.07(a). Applicant is reminded of the extension of time policy as set forth in 37 CFR 1.136(a).
A shortened statutory period for reply to this final action is set to expire
THREE MONTHS from the mailing date of this action. In the event a first reply is
filed within TWO MONTHS of the mailing date of this final action and the advisory action
is not mailed until after the end of the THREE-MONTH shortened statutory
period, then the shortened statutory period will expire on the date the advisory
action is mailed, and any extension fee pursuant to 37 CFR 1.136(a) will be
calculated from the mailing date of the advisory action. In no event, however, will
the statutory period for reply expire later than SIX MONTHS from the date of this
final action.
Examiner interviews are available via telephone, in-person, and video
conferencing using a USPTO supplied web-based collaboration tool. To schedule an
interview, applicant is encouraged to use the USPTO Automated Interview Request
(AIR) at http://www.uspto.gov/interviewpractice.
7. Any inquiry concerning this communication or earlier communications from the
examiner should be directed to Kweku Halm whose telephone number is (469)295-
9144. The examiner can normally be reached on 9:00AM - 5:30PM Mon - Thur. If
attempts to reach the examiner by telephone are unsuccessful, the examiner's
supervisor, Sanjiv Shah can be reached on (571) 272 - 4098. The fax phone
number for the organization where this application or proceeding is assigned is 571-273-
8300.
Information regarding the status of an application may be obtained from the
Patent Application Information Retrieval (PAIR) system. Status information for published
applications may be obtained from either Private PAIR or Public PAIR. Status information
for unpublished applications is available through Private PAIR only. For more
information about the PAIR system, see http://pair-direct.uspto.gov. Should you have
questions on access to the Private PAIR system, contact the Electronic Business Center
(EBC) at 866-217-9197 (toll-free). If you would like assistance from a USPTO Customer
Service Representative or access to the automated information system, call 800-786-
9199 (IN USA OR CANADA) or 571-272-1000.
/KWEKU WILLIAM HALM/Examiner, Art Unit 2166
/SANJIV SHAH/Supervisory Patent Examiner, Art Unit 2166