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 .
This office action is in response to the claim invention filed on March 3, 2025, in which claims 1-20 are presented for examination.
Information Disclosure Statement
The information disclosure statement filed March 6, 2025, March 13, 2025 and April 28, 2025 complies with the provisions of 37 CFR 1.97, 1.98 and MPEP § 609 because [ 2 ]. It has been placed in the application file. The information referred to therein has been considered as to the merits.
Drawings
The drawings are objected to because fig.5 and Fig.6A-G.
(A). In Fig.5, it appears that items 502, 504 and 514 are labeled as separate entity, which are not connected as a single figure. Should each of the identified items are deem to be independent, applicant is suggested to label each of the items as a figure. It is also unclear as to what item 500 is corresponded to.
(B). It appears that fig.6A-G respectively have two separate portions, which are not connected as a single figure. Should the two of the identified portions are deem to be independent, applicant is suggested to label each of the portions as a figure respectively. It is also unclear as to what item 600 is corresponded to.
Corrected drawing sheets in compliance with 37 CFR 1.121(d) are required in reply to the Office action to avoid abandonment of the application. Any amended replacement drawing sheet should include all of the figures appearing on the immediate prior version of the sheet, even if only one figure is being amended. The figure or figure number of an amended drawing should not be labeled as “amended.” If a drawing figure is to be canceled, the appropriate figure must be removed from the replacement sheet, and where necessary, the remaining figures must be renumbered and appropriate changes made to the brief description of the several views of the drawings for consistency. Additional replacement sheets may be necessary to show the renumbering of the remaining figures. Each drawing sheet submitted after the filing date of an application must be labeled in the top margin as either “Replacement Sheet” or “New Sheet” pursuant to 37 CFR 1.121(d). If the changes are not accepted by the examiner, the applicant will be notified and informed of any required corrective action in the next Office action. The objection to the drawings will not be held in abeyance.
Claim Rejections - 35 USC § 112
The following is a quotation of 35 U.S.C. 112(b):
(b) CONCLUSION.—The specification shall conclude with one or more claims particularly pointing out and distinctly claiming the subject matter which the inventor or a joint inventor regards as the invention.
The following is a quotation of 35 U.S.C. 112 (pre-AIA ), second paragraph:
The specification shall conclude with one or more claims particularly pointing out and distinctly claiming the subject matter which the applicant regards as his invention.
Claims 1-20 are rejected under 35 U.S.C. 112(b) or 35 U.S.C. 112 (pre-AIA ), second paragraph, as being indefinite for failing to particularly point out and distinctly claim the subject matter which the inventor or a joint inventor (or for applications subject to pre-AIA 35 U.S.C. 112, the applicant), regards as the invention. The independent claims 1, 9, and 16 recite “determining that execution of an operation will result in a page being removed from persistent memory of a node; and inserting a page block number of the page into a queue before the page is removed from the persistent memory”. However, the claims seem to be indefinite under both conditions (1) when the page being removed from persistent memory of a node and (2) when the page not being removed from persistent memory of a node.
The independent claims 1, 9 and 16 recite “In response to the node rebooting”. It is unclear as to what node rebooting the applicant is referred to. There is no mentioned in the claims that a node rebooting operation was requested. Amendment is advised.
The independent claims 1, 9 and 16 recite “traversing a file system tree of the file system to reconstruct a current list of page block numbers of pages”. It is unclear how a current list of page block numbers of pages would reconstruct when traversing a file system tree of the file system in order to remove from the persistent memory. Amendment is advised.
The independent claims 1, 9 and 16 recite “rebuilding the queue using the current list of page block numbers”. It is unclear how the queue would rebuild using the current list of page block numbers when there is no mention a queue using a current/ previous list of page block numbers. Amendment is advised.
The term “will” in the independent claims 1, 9 and 16 raises doubt and uncertainty as whether the operation follow the term “will” will execute.
The independent claim 3 recites “traversing a file system buftree to reconstruct a current list of page block numbers no longer referenced the file system buftree”. It is unclear how a current list of page block numbers no longer referenced the file system buftree would reconstruct when traversing a file system buftree. There is no mentioned of a current list was built to traverse a file system buftree. Claim 3 is not further limited claim 1. Amendment is advised.
Claims 2-8, 10-15 and 17-20 are rejected for incorporating the deficiency of their respective base claims by dependency.
Claim Rejections - 35 USC § 101
35 U.S.C. 101 reads as follows:
Whoever invents or discovers any new and useful process, machine, manufacture, or composition of matter, or any new and useful improvement thereof, may obtain a patent therefor, subject to the conditions and requirements of this title.
Claims 1-20 are rejected under 35 U.S.C. 101 because the claimed invention is directed to an abstract without significantly more.
At Step 1:
With respect to subject matter eligibility under 35 USC 101, it is determined that the claims are directed to one of the four statutory categories of invention, i.e., process, machine, manufacture, or composition of matter.
At Step 2A, Prong One:
The limitation “determining that execution of an operation will result in a page being removed from persistent memory of a node” in claims 1, 9 and 16, as drafted this recites a mental process as a form of evaluation or judgement or opinion. One can mentally judge/evaluate the execution of an operation that result in a page being removed from persistent memory of a node.
The limitation “inserting a page block number of the page into a queue before the page is removed from the persistent memory” in claims 1, 9 and 16, as drafted, is a process that, under its broadest reasonable interpretation, covers a mental process as a form of evaluation or judgement, but for the recitation of generic computer components. That is, other than reciting “inserting a page block number of the page into a queue before the page is removed from the persistent memory”, nothing in the claim element precludes the steps from practically being performed in a human mind. For example, the limitation “inserting a page block number of the page into a queue before the page is removed from the persistent memory”, in the context of these claims encompasses one can mentally, or manually with the aid of pen and paper insert a page block number of the page into a queue.
The limitation “rebuilding the queue using the current list of page block numbers” in claims 1, 9 and 16, as drafted this recites a mental process as a form of evaluation or judgement. One can mentally evaluate the queue using the current list of page block numbers.
If a claim limitation, under its broadest reasonable interpretation, covers mental processes but for the recitation of generic computer components, then it falls within the "Mental Processes" grouping of abstract ideas (concepts performed in the human mind including an observation, evaluation, judgement, and opinion). Accordingly, the claim recites an abstract idea.
At Step 2A, Prong Two:
This judicial exception is not integrated into a practical application. In particular, the claims recite the following additional elements:
That the method is "implemented by a computing system” is a high-level recitation of a generic computer components and represents mere instructions to apply on a computer as in MPEP 2106.05(f), which does not provide integration into a practical application.
The limitation “traversing a file system tree of a file system to reconstruct a current list of page block numbers of pages to remove from the persistent memory” amounts to data-gathering steps which is considered to be insignificant extra-solution activity, (See MPEP 2106.05(g)).
The limitation “a processor, persistent memory and non-transitory machine readable device” are recited at a high level of generality such that they amount to on more than mere instructions to apply the exception using a generic component. (see MPEP 2106.05(f)). These limitations can also be viewed as nothing more than an attempt to generally link the use of the judicial exception to the technological environment of a computer (see MPEP 2106.05(h)). Note, the mere instructions to apply an exception on a generic computer cannot integrate a judicial exception into a practical application.
At Step 2B:
The conclusions for the mere implementation using a computer are carried over and does not provide significantly more.
With respect to the “traversing a file system tree ……” identified as insignificant extra-solution activity above when re-evaluated this element is well-understood, routine, and conventional as evidenced by the court cases in MPEP 2106.05(d)(II), "i. Receiving or transmitting data over a network, e.g., using the Internet to gather data, Symantec, 838 F.3d at 1321, 120 USPQ2d at 1362 (utilizing an intermediary computer to forward information); … OIP Techs., Inc., v. Amazon.com, Inc., 788 F.3d 1359, 1363, 115 USPQ2d 1090, 1093 (Fed. Cir. 2015) (sending messages over a network); buySAFE, Inc. v. Google, Inc., 765 F.3d 1350, 1355, 112 USPQ2d 1093, 1096 (Fed. Cir. 2014) (computer receives and sends information over a network);" and thus remains insignificant extra-solution activity that does not provide significantly more.
With respect to the “processor and non-transitory computer-readable storage media” amount to elements that have been recognized as well-understood, routine, and conventional activity in particular fields, as demonstrate by: Relevant court decision: the followings are examples of court decisions demonstrating well-understood, routine and conventional activities, see e.g., MPEP 2106.05(d)(II) and MPEP 2106.05(f)(2): Computer readable storage media comprising instructions to implement a method, e.g., see Versata Dev. Group, Inc. v. SAP Am., Inc., 793 F.3d 1306, 1334, 115 USPQ2d 1681, 1701 (Fed. Cir. 2015).
The claims do not include additional elements that are sufficient to amount to significantly more than the judicial exception because the additional elements when considered both individually and as an ordered combination do not amount to significantly more than the abstract idea.
Looking at the claim as a whole does not change this conclusion and the claim appears to be ineligible.
Accordingly, claim 1 is directed to an abstract idea. The remaining independent claims 9 and 16 fall short the 35 USC 101 requirement under the same rationale.
The dependent claims 2-8, 10-15 and 17-20 when analyzed and each taken as a whole are held to be patent ineligible under 35 USC 101 because the additional recited limitations fail to establish that the claims are not directed to an abstract idea.
Claim 2 recites “invoking, by a frontend process of the node, an add page block number interface to insert the page block number into the queue”. This additional element is recited at a high level of generality and would function in its ordinary capacity for invoking an add page block number interface to insert the page block number into the queue, this additional element does not integrate the integrate the judicial exception into a practical application and does not amount to significantly more.
Claim 3 recites “the one or more criteria comprises the first and second managed directories having a dependency traversing a file system buftree to reconstruct the current list of page block numbers no longer referenced by the file system buftree”. This additional element is recited at a high level of generality and would function in its ordinary capacity for traversing a file system buftree to reconstruct the current list of page block numbers no longer referenced by the file system buftree, this additional element does not integrate the integrate the judicial exception into a practical application and does not amount to significantly more.
Claim 4 recites “identifying page block numbers to include within the current list of page block numbers of pages to remove from the persistent memory based upon the file system tree no longer referencing the page block numbers”. This limitation, as drafted, is a process that, under its broadest reasonable interpretation, covers a mental process as a form of evaluation or judgement. There is no additional elements recited which tie the abstract idea into a practical application and does not amount to significant more than the identified judicial exception.
Claim 5 recites “providing access to the queue as a non-persistent log through a global per- host in-core structure”. This additional element is recited at a high level of generality and would function in its ordinary capacity for providing access to the queue as a non-persistent log, this additional element does not integrate the integrate the judicial exception into a practical application and does not amount to significantly more.
Claim 6 recites “implementing the queue as a non-persistent log of volatile memory pages comprising page block numbers to free”. This additional element is recited at a high level of generality and would function in its ordinary capacity for implementing the queue as a non-persistent log of volatile memory pages, this additional element does not integrate the integrate the judicial exception into a practical application and does not amount to significantly more.
Claim 7 recites “populating a volatile memory page with a header that includes a list of entries of page block numbers to free”. This additional element is recited at a high level of generality and would function in its ordinary capacity for populating a volatile memory page with a header, this additional element does not integrate the integrate the judicial exception into a practical application and does not amount to significantly more.
Claim 8 recites “applying a read/write lock to the non-persistent log to allow multiple processes to read from the non-persistent log and to provide write access to no more than one process at time to the non-persistent log”. This additional element is recited at a high level of generality and would function in its ordinary capacity for applying a read/write lock to the non-persistent log, this additional element does not integrate the integrate the judicial exception into a practical application and does not amount to significantly more.
Claim 10 recites “populate the non-persistent log with a log page comprising a header followed by a list of entries for the log page; and populate the list of entries with the page block numbers to free; and provide access to the non-persistent log through a file system superblock of the file system”. This additional element is recited at a high level of generality and would function in its ordinary capacity for populating the non-persistent log with a log page and the list of entries with the page block numbers to free; and providing access to the non-persistent log, this additional element does not integrate the integrate the judicial exception into a practical application and does not amount to significantly more.
Claim 11 recites “wherein machine executable code causes the machine to: the non-persistent log with log pages; and insert a next pointer and a previous pointer into a log page to point back to a prior log page and point forward to a next log page”. This limitation, as drafted, is a process that, under its broadest reasonable interpretation, covers a mental process as a form of evaluation or judgement. There is no additional elements recited which tie the abstract idea into a practical application and does not amount to significant more than the identified judicial exception.
Claim 12 recites “populate the non-persistent log with generation counts of pages to free, wherein a generation count corresponds to a number of times a page has been evicted from the persistent memory”. This additional element is recited at a high level of generality and would function in its ordinary capacity for populating the non-persistent log with generation counts of pages to free, this additional element does not integrate the integrate the judicial exception into a practical application and does not amount to significantly more.
Claim 13 recites “execute worker to process the non-persistent log to free pages associated with the page block numbers within the non-persistent log”. This additional element is recited at a high level of generality and would function in its ordinary capacity for executing worker to process the non-persistent log, this additional element does not integrate the integrate the judicial exception into a practical application and does not amount to significantly more.
Claim 14 recites “execute a plurality of workers to asynchronously process the non-persistent log to free pages associated with the page block numbers within the non-persistent log”. This additional element is recited at a high level of generality and would function in its ordinary capacity for executing a plurality of workers to asynchronously process the non-persistent log, this additional element does not integrate the integrate the judicial exception into a practical application and does not amount to significantly more.
Claim 15 recites “wherein machine executable code causes the machine to: in response to a frontend process having a backlog of processing to perform for the persistent memory, trigger execution of a background worker to process the non-persistent log to free pages associated with the page block numbers within the non-persistent log”. This additional element is recited at a high level of generality and would function in its ordinary capacity for perform for the persistent memory, trigger execution of a background worker, this additional element does not integrate the integrate the judicial exception into a practical application and does not amount to significantly more.
Claim 17 recites “use a persistent per-page structure state to track log pages, within the log,as having a file system log type”. This additional element is recited at a high level of generality and would function in its ordinary capacity for using a persistent per-page structure state, this additional element does not integrate the integrate the judicial exception into a practical application and does not amount to significantly more.
Claim 18 recites “filter pages within the persistent memory using the file system log type to identify the log pages of the log within the persistent memory”. This additional element is recited at a high level of generality and would function in its ordinary capacity for filtering pages within the persistent memory, this additional element does not integrate the integrate the judicial exception into a practical application and does not amount to significantly more.
Claim 19 recites “utilize the file system log type to distinguish between the log pages and pages correspond to an inofile or page tree of a file”. This additional element is recited at a high level of generality and would function in its ordinary capacity for applying a read/write lock to the non-persistent log, this additional element does not integrate the integrate the judicial exception into a practical application and does not amount to significantly more.
Claim 20 recites “execute a worker to process the log to free pages associated with the page block numbers within the log”. This additional element is recited at a high level of generality and would function in its ordinary capacity for executing a worker to process the log, this additional element does not integrate the integrate the judicial exception into a practical application and does not amount to significantly more.
Claim Rejections - 35 USC § 103
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.
Claims 1-4, 9 and 16 are rejected under 35 U.S.C. 103 as being unpatentable over Bennett US 2014/0195725 in view of Yu et al., (hereinafter “Yu”) CN 103176752.
As to claim 1, Bennett discloses a method, comprising:
determining that execution of an operation will result in a page being removed from persistent memory of a node (see par. [0107], if the blocks are rewritten in place is to write the compliment of the data to the block, which of the two states of the data exist may be determined, for example, by the block erase count. At least this writes a substantially equal number of "0" and "1" bits to the pages over time; par. [0109], it has been assumed that each page of the block has been written and that a number C of pages have been modified and relocated to another physical address. Where the operation of the memory system is configured so as to leave some blocks only partially written, another parameter, which may represent the number of free pages remaining in a block may also be maintained);
inserting a page block number of the page into a queue before the page is removed from the persistent memory (see par. [0114] In an aspect, a number of blocks meeting the criteria for garbage collection may be selected and placed in a queue for reallocation. For each of the selected blocks, the addresses of pages having obsolete data may be identified and placed in a queue for reassignment as the PBAs of newly modified data. So, there may be a data structure having such PBAs immediately available for assignment when a WRITE2 command has been received. Providing that the design of the hardware and operating software is such that the pending requests can be committed to non-volatile memory without loss in the event of a loss of power, disorderly shutdown or orderly shutdown, the WRITE2 command may be acknowledged with the corresponding PBA without delay);
in response to the node rebooting, traversing a file system tree of a file system to reconstruct a current list of page block numbers of pages to remove from the persistent memory (see par. [0138], where the file system organization optimized assuming that the data are stored in blocks: that is, a number of pages equal to the number of pages in the block, and having PBAs falling in the same physical block, either blocks having all of the pages being valid may be selected from the erased block pool, or a service message returned to the file system. Such a write command may be characterized as a WRITE3 where, for example, the data payload is the LBA range and the corresponding list of associated PBAs determined from the L2P table. When the operation has been successfully completed, the acknowledgement message may contain the corresponding new list of PBA to which the data has been relocated; and [0146], Initially, for simplicity, we will ignore error processing. Each of the memory circuits 200 may have a number N of memory blocks, of which a predetermined fraction k is allocated to the user. Each block has a number of memory pages M. For each memory circuit, there may be a block allocation table such as shown in FIG. 3. Initially all of the block allocation tables are identical and the memory has all free blocks or erased blocks. So, only one block allocation table may be needed to relate the logical representation of the memory block having N pages to the physical location of the memory block).
However, Bennett does not explicitly disclose the claimed “rebuilding the queue using the current list of page block numbers”.
Meanwhile, Yu discloses the claimed “rebuilding the queue using the current list of page block numbers” (see par. [0099] [space] 97 in the page mapping table out from logical address 184 indexed by LBA-P, LBA-P is a logical block number and logical page number L of logical page number. generating a physical page number Y page in the entry mapping table, the physical page number Y is physical address 186, the physical block address, page size and M of and PBA-P (Y, L, but different values). Because the page much more than the number of blocks, the number of mapping entries of the page mapping ratio mapping number of block mapping entry is much greater. channel identification flash memory one of strips 30. The 8 band (similar to the structure of N-RAID) in 8 channels. channel can be mapped to the mapping table, the device controller may be the page data to any channel, but not only limited to a specific channel. or, if it is always equal to J2, a J2 channel of the flash memory can be deleted from the physical block number. if two planar flash memory, the LSB channel is added to as a LSB page. if using a structure similar to the RAIDl structure, one channel will be used as equivalents of other channels, and not displayed in FIG.
[0310] (first space 307) through using parity /ECC with multiple flash memory channels and the tape data space into multivariate non-volatile block, the reliability of the whole system is improved greatly. For example, the ninth flash memory chip can be used in conjunction with the flash memory interface. If serious read error is encountered one of eight flash memory chips, the other eight flash memory chips of parity writing ninth flash memory chips, providing additional data protection. However, it is possible to use central processing engine with a DDR/SDRAM cache in order to meet complex ECC/ generated parity calculation and calculating capability requirement. a further advantage is that, even if one flash memory or flash memory module is damaged, data may be recovered, or intelligent storage exchanger can start fault repair "or" automatic rebuilding program, inserting a new flash memory module, and recovering or reconstructing "lost" or "damaged" data. fault-tolerant performance of the whole system is greatly improved.
[0311] (first space 308) flash memory unit of floating grid by adding electronic programming. flash memory control page written into the inserted electronic, so as to be held between the two reference voltage level. bit line of a NAND flash memory structure connected to a string 32 of unit, each unit and connect to 32 different word lines. unit write data after the write and read of the adjacent unit will cause interference to the unit. the interference adding electronic to the unit floating gate or removing electrons therefrom. Electronic number of long period will affect the unit floating grid. due to the change of the electronic number in floating grid electrode, output voltage level when reading varies correspondingly. if the change of the output voltage level exceeds the reference voltage limit, then reading result is wrong.
Therefore, it would have been obvious to one having ordinary skill in the art before the effective filing date of the claimed invention to have modified the system of Bennett to rebuild the queue using the current list of page block numbers, in order to ensure that the queue is correctly reorganized and that the order of the items in the queue is preserved, thereby maintaining performance and reliability of the system.
As to claim 9, claim 9 is a system for performing the method of claim 1 above. It is rejected under the same rationale.
As to claim 16, claim 16 is a non-transitory machine readable medium having storing therein instructions for executing the method of claim 1 above. It is rejected under the same rationale.
As to claim 2, the combination of Bennett and Yu discloses the invention as claimed. In addition, Bennett discloses the claimed invoking, by a frontend process of the node, an add page block number interface to insert the page block number into the queue (see [0124], Where the in-place garbage collection is used (with or without block level indirection), the data to be written is placed in a buffer 1030 so that it may be inserted in the stream of data being written to the block when the garbage collection operation is being performed, or to a next block with free pages. The data is written to the block when the appropriate PBA so as to preserve the monotonic aspect of writing to blocks, which may be by insertion in a the appropriate garbage collection buffer or in a buffer to be written to a new block or partially filled block, depending on the availability of the storage space at the time of writing the data. The bitmap representing the status of each page may have been reset to free when the block was erased to be placed in the free block queue and the bit associated with the PBA is now set to valid. When a block is written and a PBA is skipped (due to a lack of data availability) the bit is set to obsolete, as data cannot subsequently be written to the PBA. That is, in a situation such as a shutdown, a block of data may be effectively filled by setting the remaining bits of the block bit map to obsolete. This may facilitate rapid recovery).
As to claim 3, the combination of Bennett and Yu discloses the invention as claimed. In addition, Bennett discloses the claimed traversing a file system buftree to reconstruct the current list of page block numbers no longer referenced by the file system buftree (see [0124], Where the in-place garbage collection is used (with or without block level indirection), the data to be written is placed in a buffer 1030 so that it may be inserted in the stream of data being written to the block when the garbage collection operation is being performed, or to a next block with free pages. The data is written to the block when the appropriate PBA so as to preserve the monotonic aspect of writing to blocks, which may be by insertion in a the appropriate garbage collection buffer or in a buffer to be written to a new block or partially filled block, depending on the availability of the storage space at the time of writing the data. The bitmap representing the status of each page may have been reset to free when the block was erased to be placed in the free block queue and the bit associated with the PBA is now set to valid. When a block is written and a PBA is skipped (due to a lack of data availability) the bit is set to obsolete, as data cannot subsequently be written to the PBA. That is, in a situation such as a shutdown, a block of data may be effectively filled by setting the remaining bits of the block bit map to obsolete. This may facilitate rapid recovery).
As to claim 4, the combination of Bennett and Yu discloses the invention as claimed. In addition, Bennett discloses the claimed identifying page block numbers to include within the current list of page block numbers of pages to remove from the persistent memory based upon the file system tree no longer referencing the page block numbers (see par. [0127], An example of the selection of a block to which data is to be written is shown in FIG. 9. The status of each block is maintained 1210, for example, in a data structure such as shown in FIG. 3 so that each block may be characterized by the number of times that the block has previously been erased and the number of valid pages in the block. The time since the last erasure may also be maintained. Blocks are selected for garbage collection/wear leveling in accordance with a policy. For example, the blocks may be ranked using a function of the number of times the block has been erased, the time since last erasure, and the fraction of valid blocks such as T (1-u)/(u N), where u is the fraction of the blocks that are valid (u>0). The block with the highest rank, for example, may be selected as the next block. More than one block may be selected so as to ensure a sufficient availability of free PBAs in the queue for assignment to write commands).
Claims 5-8 and 10-15 and 17-20 are rejected under 35 U.S.C. 103 as being unpatentable over Bennett US 2014/0195725 in view of Yu et al., (hereinafter “Yu”) CN 103176752 and further in view of D’Sa et al., (hereinafter “D’Sa”) US 20160070714.
As to claims 5-8, 10-15 and 17-20, the combination of Bennett and Yu discloses the invention as claimed, except for providing access to the queue as a non-persistent log through a global per- host in-core structure; populating a volatile memory page with a header that includes a list of entries of page block numbers to free; and applying a read/write lock to the non-persistent log to allow multiple processes to read from the non-persistent log and to provide write access to no more than one process at time to the non-persistent log.
However, D’Sa discloses the claimed “providing access to the queue as a non-persistent log through a global per- host in-core structure; populating a volatile memory page with a header that includes a list of entries of page block numbers to free; and applying a read/write lock to the non-persistent log to allow multiple processes to read from the non-persistent log and to provide write access to no more than one process at time to the non-persistent log’ (see par. 0075] In an embodiment, the volume layer log 345 is a two level, append-only logging structure, wherein the first level is NVRAM 280 (embodied as NVLogs 285) and the second level is SSD 260, e.g., stored as extents. New volume metadata entries 600 inserted into level 0 of the dense tree are also recorded in the volume layer log 345 of NVLogs 285. When there are sufficient entries in the volume layer log 345, e.g., when the log 345 is full or exceeds a threshold, the volume metadata entries are flushed (written) from log 345 (i.e., from NVRAM) to SSD 260 as one or more extents 470. Multiple extents may be linked together with the volume superblock 760 holding a key (i.e., an extent key) to the head of the list. In the case of recovery, the volume layer log 345 is read back to memory 220 to reconstruct the in-core top level 800 (i.e., level 0) of dense tree 700. Other levels may be demand paged via the page cache 448, e.g., metadata pages of level 1 are loaded and read as needed.
[0076] FIG. 14 illustrates volume logging 1400 of the dense tree metadata structure. Copies of the volume metadata entries 600 stored in level 0 of the dense tree are maintained in persistent storage (SSD 260) and recorded as volume layer log 345 in, e.g., NVLogs 285. Specifically, the entries of level 0 are stored in the in-core staging buffer 715, logged in the append log (volume layer log 345) of NVLogs 285 and thereafter flushed to SSD 260 as a set of metadata pages 720. Copies of the level 0 volume metadata are maintained in-core as the active dense tree level 0 so as to service incoming read requests from memory 220. Illustratively, the in-core top level 800 (e.g., active dense tree level 0 1170) may be used as a cache (for hot metadata), whereas the volume metadata stored on the other lower levels of the dense tree are accessed less frequently (cold data) and maintained on SSD. Alternatively, the lower levels also may be cached using the page cache 448; and Once the merge operation completes, the page keys (i.e., K1, K2) may be persistently recorded in a set of data structures embodied as a reference count (refcount) log 1520 to allow the merge operation to complete without resolving deletion (e.g., reference count reduction) of the keys (and, thus, freeing the space referenced by locations 490a,b on SSD storing the metadata pages 720a,b associated with the page keys K1, K2). Subsequently, a volume layer process 1530 may be spawned (instantiated) to “walk” through the page keys stored in the refcount log and delete (i.e., reference count reduce) each key from the refcount log 1530, out-of-band of the merge operation. Note that key deletion may occur when a reference count 1540 associate with page key 628 (i.e., key associated with an extent storing the metadata page) reduces to a sentinel value (e.g., zero). Illustratively, the extent store layer may effect deletion (e.g., a reference count of zero) for each key by clearing a corresponding entry in the hash table 482, thereby dereferencing the location 490 indicating the extent storing the metadata page. Note further that new metadata pages may be generated (1) by the merge (e.g., page 720c) and (2) from incoming data (e.g., page 720aa), which may be recorded in the hash table 482 before the deferred delete process effects deletion of the old extents 720a,b.).
Therefore, it would have been obvious to one having ordinary skill in the art before the effective filing date of the claimed invention to have modified the combined system of Bennett and Yu to provide access to the queue as a non-persistent log through a global per- host in-core structure, in order to ensure that system logs are stored in a location that is not only non-persistent but also accessible globally across the system, thereby maintaining the integrity of the system’s logs and ensuring that critical information is not discarded.
The limitations of claims 10-15 and 17-20 are implicitly and explicitly disclose by the combination of Bennett, Yu and D’Sa.
Conclusion
The prior art made of record and not relied upon is considered pertinent to applicant's disclosure.
US 10,489,346 (involved in designating a file comprising a set of files arranged in a set of tree structures and based on a direct mapping persistent memory. Instructions are received from a client to alter an altered file of the set of files. An alternate tree structure is created to apply the alteration when the alteration involves a non-atomic tree structure operation to an original tree structure of the set of tree structures containing the altered file. The alteration is committed to the file system through an atomic operation)
US 7,921,077 (involved in receiving a transfer of data from a source. The target persistent consistency point image (PCPI) of the transferred data is generated. The data deduplication on the transferred data is performed. The revised target PCPI is generated).
US 20160070618 (involved in storing first data entry in first metadata structure. Second data entry of level 0 of second metadata structure is merged with third data entry of level 1 of the first structure to form fourth data entry, where the second entry has first offset and first length representing first address range, the third entry has second offset and second length representing second address range, and the fourth entry represents merge of the first range with the second range. The fourth entry is stored in a storage array of solid state drives attached to a storage system).
US 20150317326 (involved in receiving a command to overwrite or delete data stored within an allocated portion of a file system. An entry is added in a data structure that indicated that the allocated portion of the file system is to be reallocated in response to the overwrite or delete command. A write command is received to write data to the file system. The added portion of the file system is formatted. The added portion of the file system is allocated. The portion of the file system is allocated from another data structure, which has a sufficient amount of space to satisfy write command).
US 9135123 (involved in storing changes to contents of file of file system in data object of global data cache upon receiving write I/O request for file of file system. A copy of data object and information for data object are stored in persistent data transaction log associated with file system. The contents of file on storage device are updated based on data object stored in global data cache and information is stored in persistent data transaction log. The contents of file are updated on the storage device after providing acknowledgement of completion of the write I/O request).
Any inquiry concerning this communication or earlier communications from the examiner should be directed to JEAN M CORRIELUS whose telephone number is (571)272-4032. The examiner can normally be reached Monday-Friday 6:30a-10p(Midflex).
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.
If attempts to reach the examiner by telephone are unsuccessful, the examiner’s supervisor, Ann J Lo can be reached at (571)272-9767. The fax phone number for the organization where this application or proceeding is assigned is 571-273-8300.
Information regarding the status of published or unpublished applications may be obtained from Patent Center. Unpublished application information in Patent Center is available to registered users. To file and manage patent submissions in Patent Center, visit: https://patentcenter.uspto.gov. Visit https://www.uspto.gov/patents/apply/patent-center for more information about Patent Center and https://www.uspto.gov/patents/docx for information about filing in DOCX format. For additional questions, contact the Electronic Business Center (EBC) at 866-217-9197 (toll-free). If you would like assistance from a USPTO Customer Service Representative, call 800-786-9199 (IN USA OR CANADA) or 571-272-1000.
/JEAN M CORRIELUS/Primary Examiner, Art Unit 2159 March 28, 2026