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 .
Claim Status
Claims 1, 9 and 17 have been amended. No new claims have been added or cancelled. Claims 1-20 remain pending and are ready for examination.
Claim Rejections - 35 USC § 103
In the event the determination of the status of the application as subject to AIA 35 U.S.C. 102 and 103 (or as subject to pre-AIA 35 U.S.C. 102 and 103) is incorrect, any correction of the statutory basis (i.e., changing from AIA to pre-AIA ) for the rejection will not be considered a new ground of rejection if the prior art relied upon, and the rationale supporting the rejection, would be the same under either status.
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.
The factual inquiries for establishing a background for determining obviousness under 35 U.S.C. 103 are summarized as follows:
1. Determining the scope and contents of the prior art.
2. Ascertaining the differences between the prior art and the claims at issue.
3. Resolving the level of ordinary skill in the pertinent art.
4. Considering objective evidence present in the application indicating obviousness or nonobviousness.
Claim(s) 1-4, 6, 9-12, 14 and 17-20 is/are rejected under 35 U.S.C. 103 as being unpatentable over Battaje et al. (US Publication No. 2022/0121564 -- "Battaje") in view of Colgrove et al. (US Publication No. 2015/0067286 – “Colgrove”) in further view of Bianco et al. (US Publication No. 2021/0200669 – “Bianco”).
Regarding claim 9, Battaje teaches A storage device, comprising: a non-volatile memory; and a controller configured to: (Battaje paragraph [0071], In one embodiment, the input buffer 220 receives a data stream (data packets) from one or more devices and prepares them for storage in a non-volatile storage device (e.g. storage media or storage devices 110). A controller may be used for implementing NVM commands, see Battaje paragraph [0072], The controller 201 includes software and/or logic for handling communications between the input buffer 220, the unified paging module 202, the snapshot marker based reconstruction module 204, the checkpoint based reconstruction module 206, the garbage collection module 208, the translation table management module 210, the output buffer 230 and the memory 212) prepare a list with entries containing information for respective updates to metadata for the storage device, (Battaje paragraph [0056], A forward map dump unit is the smallest unit at which the forward map dump table maintains mappings from logical block to storage media location where translation entries are dumped. At reconstruction time, the saved value of the forward map dump units is retrieved. In some embodiments, the map dump table compactly describes the saved value of the snapshot marker for each dump unit. Therefore the system looks for map entries that were created after the snapshot marker had that value. The other sources of map information are reverse-map chunks and meta-log entries. Based on the recorded snapshot marker values therein, it is efficient to determine whether a given reverse-map chunk or meta-log entry would contribute to the eventual forward map. A list of metadata entries (i.e., mapping address information) may be prepared for updated to said map information) wherein the list includes a base entry for updating metadata associated with an original physical location in the storage device; (Battaje paragraph [0041], Furthermore, when a particular translation table entry is not present in memory, the entry has to be looked up in storage media for which there needs to be a way to find the location on storage media to search the mapping for. For dense translation tables, a simple mapping can be created that maps a given logical block number to fixed location on storage media. As an example, the logical address space would be identical to physical address space, for dense translation tables. For a sparse translation table, an 80 bit logical block number address space with each translation entry consuming 16 bytes, would require 2̂80*16=2̂84 bytes of logical address space reserved for storing translation table entries, with fixed mapping. A mapping list can include base/fixed entries for metadata (i.e., address information) corresponding to an original physical address space) (Battaje paragraphs [0213-0214], In response to determining that the second value of the second checkpoint is after or greater than the first value of the first checkpoint, the method 1350 may continue by retrieving 1362 the translation table entry associated with the second checkpoint from the additional source and reconstruct the translation table using the translation table entry associated with the second checkpoint. In some embodiments, the translation table checkpoint based reconstruction module 604 may retrieve the translation table entry associated with the second checkpoint from the reverse translation map 304 and the timestamp log 306. FIG. 14A is a flow chart of an example method for maintaining a bitmap. The method 1400 may initiate by receiving 1402 a request to map a first physical block to a first logical block. The request to map the first physical block to the first logical block may be in response to a write request. A write request allocates a new physical block to the logical block where the data being written will be stored. In other instances, the garbage collection optimization module 704 may receive a request to map the first physical block to the first logical block. In some embodiments, the operations in step 1402 may be performed by the garbage collection optimization module 704 in cooperation with the bitmap 308 and one or more other entities of the system 100, as discussed elsewhere herein. The garbage collection write may be associated with a table (i.e., journal) entry which can be associated with an optimized condition foe entry. Further, a checkpoint entry (i.e, base entry) may be utilized for indicating conditional entry locations (see pointer claims below for further elaboration) and configure the base entry in the list to point to the conditional entry (Battaje paragraphs [0213-0214], In response to determining that the second value of the second checkpoint is after or greater than the first value of the first checkpoint, the method 1350 may continue by retrieving 1362 the translation table entry associated with the second checkpoint from the additional source and reconstruct the translation table using the translation table entry associated with the second checkpoint. In some embodiments, the translation table checkpoint based reconstruction module 604 may retrieve the translation table entry associated with the second checkpoint from the reverse translation map 304 and the timestamp log 306. FIG. 14A is a flow chart of an example method for maintaining a bitmap. The method 1400 may initiate by receiving 1402 a request to map a first physical block to a first logical block. The request to map the first physical block to the first logical block may be in response to a write request. A write request allocates a new physical block to the logical block where the data being written will be stored. In other instances, the garbage collection optimization module 704 may receive a request to map the first physical block to the first logical block. In some embodiments, the operations in step 1402 may be performed by the garbage collection optimization module 704 in cooperation with the bitmap 308 and one or more other entities of the system 100, as discussed elsewhere herein. The garbage collection write may be associated with a table (i.e., journal) entry which can be associated with an optimized condition foe entry. Further, a checkpoint entry (i.e, base entry) may be utilized for indicating conditional entry locations (see pointer claims below for further elaboration).
Battaje does not teach add a conditional entry to the list, wherein the conditional entry contains information for performing a conditional update to the metadata in connection with a garbage collection write operation of data from the original physical location to a physical location identified in the conditional entry.
However, Colgrove teaches add a conditional entry to the list … connected with a garbage collection write operation of data from the original physical location to a physical location identified in the conditional entry (Colgrove paragraph [0007], To support storage virtualization, a volume manager performs input/output (I/O) redirection by translating incoming I/O requests using logical addresses from end-users into new requests using addresses associated with physical locations in the storage devices. As some storage devices may include additional address translation mechanisms, such as address translation layers which may be used in solid state storage devices, the translation from a logical address to another address mentioned above may not represent the only or final address translation. Redirection utilizes metadata stored in one or more mapping tables. In addition, information stored in one or more mapping tables may be used for storage deduplication and mapping virtual sectors at a specific snapshot level to physical locations. The volume manager may maintain a consistent view of mapping information for the virtualized storage. However, a supported address space may be limited by a storage capacity used to maintain a mapping table. A nested list of metadata (i.e., address information) can be used to map to physical locations of memory, and can also include an additional address space (i.e., conditional entries) to redirect in the event the conditional entry is needed, also see the reverse mapping information in paragraph [0012], A system is contemplated which includes a storage medium, a first table including entries which map virtual addresses to locations in the storage medium, and a second table with entries which include reverse mappings of a physical address in a data storage medium to one or more virtual addresses. A data storage controller in the system is configured to perform garbage collection. During garbage collection, the controller is configured to identify one or more entries in the second table which correspond to a segment to be garbage collected. In response to determining the first table includes a valid mapping for a virtual address included in an entry of the one of the one or more entries, the controller is configured to copy data from a first location identified in the entry to a second location in the data storage medium, and reclaim the first storage location).
It would have been obvious to a person having ordinary skill in the art before the effective filing date of the invention to combine the teachings of Battaje with those of Colgrove. Colgrove teaches using a plurality of lists containing entries for metadata identifying physical address locations in memory space. The additional lists can be used when necessary, during garbage collection to update to the correct address mapping information, resulting in improved reliability (see Colgrove paragraph [0014-0015], Also contemplated are embodiments in which the controller deduplicates data corresponding to locations that are to be copied to a new segment. If the data can be deduplicated, a new entry is added to the second table which maps a virtual address to the new location. If the deduplicated data has not yet been written, it is first written to a new location. In some embodiments, data in the first table is organized as a plurality of time ordered levels. In such embodiments, when the controller copies data from the first location to a second location, it adds a new entry corresponding to the second location to the first table in a newer time-ordered level than that containing the entry corresponding to the first location. In various embodiments, the controller is also configured to detect and correct errors in garbage collected data that is being relocated).
Battaje in view of Colgrove does not teach wherein the conditional entry contains information for performing a conditional update to the metadata.
However, Bianco teaches wherein the conditional entry contains information for performing a conditional update to the metadata in connection with a garbage collection (Bianco paragraph [0056], Flushes can use pad data or be filled with additional user data from one of the garbage collection write request queues if the user data is available. If there is no additional user data available, using pad data can be acceptable. Pad data can be garbage data added to back-end commands to meet an aggregation criteria for the operation. Garbage data can be a fixed pattern, stale data from other buffers, or both. In some cases, pad data cannot be user data. In some cases, completion responses for flushes can be sent if requested for asynchronous power loss (APL) safety. For example, if the power is removed without the host system notifying the drive that power loss is imminent, or without sufficient up-time after such a notification, it can be referred to as an APL event. In other examples, the FTL core 320 can facilitate conditional L2P/VTC/journal updates after garbage collection procedure writes are completed. Bianco teaches conditional journal entry updates to metadata (i.e., L2P address information) that can be performed in response to a garbage collection, also see paragraph [0051]).
It would have been obvious to a person having ordinary skill in the art before the effective filing date of the invention to combine the teachings of Battaje and Colgrove with those of Bianco. Bianco teaches performing conditional updates to a journal entry in response to a command, which can allow for more efficient write request processing by avoiding throttling through a queue of requests through a large number of conditional operations (i.e., see Bianco paragraph [0051], The operations 325 of the I/O core 315 can issue a write request. When a read process is completed, a write process of the set of data can be issued to move the set of data to a different location on the media. Write requests can be queued up in advance such that the FTL core 320 does not to wait when the garbage collection procedure is needed. In some cases, the write requests can be inserted into the queue based on a priority of the write request. In such cases, the I/O core 315 can send a write request for the set of data to the write request queue. The write request can be associated with a priority level different from a priority level of a different write request. A full write request queue can result in backpressure that throttles garbage collection procedure read pipeline stages. The location on the media can be included with the write request to allow for conditional mapping table updates such as logical to physical (L2P)/VTC updates with garbage collection write requests).
Claims 1 and 17 are the corresponding method and non-transitory computer readable medium claims of system claim 9. They are rejected with the same references and rationale.
Regarding claim 10, Battaje in view of Colgrove in further view of Bianco teaches The storage device of claim 9, wherein the controller is further configured to copy logical information from the base entry to the conditional entry in response to determining that the garbage collection write operation is valid (Battaje paragraph [0043], Storage (flash storage) systems are expected to exhibit low latencies for latency sensitive applications that use these storage systems. The read latency is mostly media characteristic dominated. With use of power safe/capacitor backed SRAM as cache for recently written data, write latency can be minimized independent of media characteristics. However, on a system that has a paged translation structure, it is possible that a write request is received on a logical block that does not have its translation entry in memory in which case an implementation would involve fetching the on-media translation entry and then modifying the entry corresponding to the new location where data is written. This implementation incurs a read latency for a write operation that is undesired. The entry for the logical information can be copied to a new entry location given valid address determination. Also see Battaje paragraph [0230], The hot node 1512 including logical blocks L3, L5, L9 and L13 at time t1 is shown in FIG. 15B. For instance, the hot node 1512 includes frequently accessed logical blocks L3, L5, L9 and L13. The hot node 1512 is updated so the next entry to replace pointer 1508 points at the next entry to replace in the hot node 1512, specifically logical block L5. The hot node 1512 includes frequently accessed logical blocks (most frequently accessed logical block being L3). The next entry to replace pointer 1508 points to a logical block within the hot node 1512 that was the last to be accessed. For instance, the next entry to replace pointer 1508 may point to a logical block which will be relocated from the hot node 1512 if a new logical block (not present in the hot node 1512) is accessed. In the example of FIG. 15B, the pointer 1508 points to logical block L5. The copy of information can be done in response to a garbage collection operation, see Battaje paragraph [0062], In some embodiments, implementing the present disclosure with garbage collection can be performed as described below. A bitmap may be maintained with a bit per physical block. In some embodiments, the size of the bitmap may be limited by the physical size of the storage device and is not dependent on the large logical space that a sparse translation structure supports).
Claims 2 and 18 are the corresponding method and non-transitory computer readable medium claims of system claim 10. They are rejected with the same references and rationale.
Regarding claim 11, Battaje in view of Colgrove in further view of Bianco teaches The storage device of claim 10, wherein the base entry comprises a pointer to the conditional entry instead of the logical information (Battaje paragraph [0227], FIGS. 15A and 15B are example graphical representations 1500 to show how paged translation maps are preserved in the memory 212 to increase their usage. As depicted in FIG. 15A, a first node (hot node) 1502 may include logical blocks L1, L5, L9 and L13 as illustrated. The first node 1502 may be a first chunk of the memory 212. For instance, the first node 1502 can be associated with a first group of logical blocks and can be stored in the memory 212. The first node 1502 is the hot node meaning that it includes frequently accessed logical blocks. The first node 1502 includes frequently accessed logical blocks L1, L5, L9 and L13. The first node 1502 includes a pointer 1508 pointing at the next entry to be replaced in the first node 1502. In some embodiments, a frequently accessed logical block is determined using a status of an access bit associated with the frequently accessed logical block. For example, the access bit associated with the frequently accessed logical block has an ON status. The next entry to replace pointer 1508 points to a less frequently used accessed logical block within the hot node. For instance, the next entry to replace pointer 1508 may point to a logical block which will be relocated from the first (hot) node 1502 if a new logical block (not present in the hot node 1502) is accessed. In the example of FIG. 15A, the pointer 1508 points to logical block L1. The base entries contain direct pointers to the conditional entry locations rather than logical information themselves, also see Battaje paragraph [0230], The hot node 1512 is updated so the next entry to replace pointer 1508 points at the next entry to replace in the hot node 1512, specifically logical block L5. The hot node 1512 includes frequently accessed logical blocks (most frequently accessed logical block being L3). The next entry to replace pointer 1508 points to a logical block within the hot node 1512 that was the last to be accessed. For instance, the next entry to replace pointer 1508 may point to a logical block which will be relocated from the hot node 1512 if a new logical block (not present in the hot node 1512) is accessed. In the example of FIG. 15B, the pointer 1508 points to logical block L5).
Claims 3 and 19 are the corresponding method and non-transitory computer readable medium claims of system claim 11. They are rejected with the same references and rationale.
Regarding claim 12, Battaje in view of Colgrove in further view of Bianco teaches The storage device of claim 10, wherein the base entry comprises another pointer that points to a next entry in the list (Battaje paragraph [0227], FIGS. 15A and 15B are example graphical representations 1500 to show how paged translation maps are preserved in the memory 212 to increase their usage. As depicted in FIG. 15A, a first node (hot node) 1502 may include logical blocks L1, L5, L9 and L13 as illustrated. The first node 1502 may be a first chunk of the memory 212. For instance, the first node 1502 can be associated with a first group of logical blocks and can be stored in the memory 212. The first node 1502 is the hot node meaning that it includes frequently accessed logical blocks. The first node 1502 includes frequently accessed logical blocks L1, L5, L9 and L13. The first node 1502 includes a pointer 1508 pointing at the next entry to be replaced in the first node 1502. In some embodiments, a frequently accessed logical block is determined using a status of an access bit associated with the frequently accessed logical block. For example, the access bit associated with the frequently accessed logical block has an ON status. The next entry to replace pointer 1508 points to a less frequently used accessed logical block within the hot node. For instance, the next entry to replace pointer 1508 may point to a logical block which will be relocated from the first (hot) node 1502 if a new logical block (not present in the hot node 1502) is accessed. In the example of FIG. 15A, the pointer 1508 points to logical block L1. The pointer can be utilized to indicate a next entry in a list).
Claims 4 and 20 are the corresponding method and non-transitory computer readable medium claims of system claim 12. They are rejected with the same references and rationale.
Regarding claim 14, Battaje in view of Colgrove in further view of Bianco teaches The storage device of claim 9, wherein the controller is further configured to mark the base entry as invalid in response to determining that the garbage collection write operation is invalid (Battaje paragraph [0045], In some embodiments, a typical implementation of garbage collection system involves identifying a physical area on storage media to flash to garbage collect and then query for all the logical blocks that fall on this physical area of flash. The query involves some implementation of a reverse map structure (that maps physical location to logical block numbers) and then a validation step with forward map structure. The reverse map structures are typically not strictly up-to-date and hence the information from reverse map structure is validated with the forward map structure to decide on the physical locations that are still valid and need the data to be moved. The garbage collection needs to preserve attributes associated with the logical block for which the typical implementation is to query the forward map. The base entry mapping for the metadata may be invalidated in response to the garbage collection operation not being performed, also see Battaje paragraph [0046]).
Claim 6 is the corresponding method claim to system claim 14. It is rejected with the same references and rationale.
Claim(s) 5 and 13 is/are rejected under 35 U.S.C. 103 as being unpatentable over Battaje in view of Colgrove in further view of Bianco as applied to claims 1 and 9 above, and further in view of Canepa et al. (US Publication No. 2014/0325117 -- "Canepa").
Regarding claim 13, Battaje in view of Colgrove in further view of Bianco in further view of Canepa teaches The storage device of claim 9, wherein the controller is further configured to overwrite the original physical location of the base entry with the physical location of the conditional entry (Canepa paragraph [0088], In some embodiments, journal entries are compressed or otherwise reduced in size. For example, since the physical location portion of the map information of journal entries is generally monotonic in nature, the physical locations are, in some embodiments, stored in a decreased amount of space by periodically storing a base physical location and only including an offset from the base physical location in the map information of one or more subsequent journal entries. Similar techniques are applicable to reducing a size needed to store the logical page number portion of journal entries. The physical location of a journal base entry can additionally be determined/configured as the physical location of a conditional entry) in response to determining that the garbage collection write operation is valid (Battaje paragraph [0230], The hot node 1512 including logical blocks L3, L5, L9 and L13 at time t1 is shown in FIG. 15B. For instance, the hot node 1512 includes frequently accessed logical blocks L3, L5, L9 and L13. The hot node 1512 is updated so the next entry to replace pointer 1508 points at the next entry to replace in the hot node 1512, specifically logical block L5. The hot node 1512 includes frequently accessed logical blocks (most frequently accessed logical block being L3). The next entry to replace pointer 1508 points to a logical block within the hot node 1512 that was the last to be accessed. For instance, the next entry to replace pointer 1508 may point to a logical block which will be relocated from the hot node 1512 if a new logical block (not present in the hot node 1512) is accessed. In the example of FIG. 15B, the pointer 1508 points to logical block L5. The copy of information can be done in response to a garbage collection operation, see Battaje paragraph [0062], In some embodiments, implementing the present disclosure with garbage collection can be performed as described below. A bitmap may be maintained with a bit per physical block. In some embodiments, the size of the bitmap may be limited by the physical size of the storage device and is not dependent on the large logical space that a sparse translation structure supports).
It would have been obvious to a person having ordinary skill in the art before the effective filing date of the invention to combine the teachings of Battaje, Colgrove and Bianco with those of Canepa. Canepa teaches configuring a physical location of a base journal entry to be the physical location of the conditional entry. This allows the journal entries to be more selectively stored and reduce overall memory requirement by ensuring that the physical location contains both entries in a same respective area (Canepa paragraph [0087], Referring to FIG. 7, a diagram is shown illustrating selected details of an embodiment of a mapping of LPNs to map information via one or more journal entries. The journal 923 comprises a plurality of journal entries 903-0, . . . , 903-n. Each of the journal entries 903-0, . . . , 903-n comprises a respective logical block address 213-0, . . . , 213-n and respective map information (e.g., MAP INFO 913-0, . . . , 913-n). The respective map information comprises a respective physical location in the NVM 199. In some embodiments, the respective map information is of a same form as and/or comprises map information as would be stored in one of the second-level map entries. In various embodiments, the journal entries optionally and/or selectively store other information, such as respective valid bits, respective indications of a corresponding band, respective indications of status associated with the logical block address such as trimmed status, etc. In some embodiments, the journal entries comprise a respective logical page number portion of a logical block address rather than the full respective logical block address. For example, the LSBs of the logical block address are not stored, as the map operates on logical pages rather than on host sectors).
Claim 5 is the corresponding method claim to system claim 13. It is rejected with the same references and rationale.
Claim(s) 7 and 15 is/are rejected under 35 U.S.C. 103 as being unpatentable over Battaje in view of Colgrove in further view of Bianco as applied to claims 1 and 9 above, and further in view of Levy et al. (US Publication No. 2020/0073964 -- "Levy").
Regarding claim 15, Battaje in view of Colgrove in further view of Bianco and further in view of Levy teaches The storage device of claim 9, wherein the controller is further configured to free the conditional entry (Levy paragraphs [0028-0030], At S210, a request for an operation is received. The operation is to be performed on one or more objects stored in a storage system. Specifically, the operation includes adding, removing, or moving a file and updating associated metadata accordingly. The storage system may be a distributed storage system, for example as described herein with respect to FIG. 5. At S220, a transaction ID is assigned to a transaction including the requested operation. The transaction ID is a unique identifier assigned to the transaction and includes a state of the transaction. The initial state (i.e., the state when the transaction ID is assigned) is “in progress” such that the transaction ID initially indicates that the transaction is in progress. At S230, any affected objects are updated to add an entry to each. The added entries include a conditional entry that is conditioned on the state of the transaction as indicated by the current transaction ID for the transaction. The conditional entries may indicate whether to add or remove specific files from the object metadata depending on the state of the transaction ID. When a reader subsequently attempts to read one of the updated objects, the result of the read is based on any conditional entries and the respective transaction states. The conditional entry may be freed or removed based on metadata determination) in response to determining that the garbage collection write operation is valid (Battaje paragraph [0230], The hot node 1512 including logical blocks L3, L5, L9 and L13 at time t1 is shown in FIG. 15B. For instance, the hot node 1512 includes frequently accessed logical blocks L3, L5, L9 and L13. The hot node 1512 is updated so the next entry to replace pointer 1508 points at the next entry to replace in the hot node 1512, specifically logical block L5. The hot node 1512 includes frequently accessed logical blocks (most frequently accessed logical block being L3). The next entry to replace pointer 1508 points to a logical block within the hot node 1512 that was the last to be accessed. For instance, the next entry to replace pointer 1508 may point to a logical block which will be relocated from the hot node 1512 if a new logical block (not present in the hot node 1512) is accessed. In the example of FIG. 15B, the pointer 1508 points to logical block L5. The copy of information can be done in response to a garbage collection operation, see Battaje paragraph [0062], In some embodiments, implementing the present disclosure with garbage collection can be performed as described below. A bitmap may be maintained with a bit per physical block. In some embodiments, the size of the bitmap may be limited by the physical size of the storage device and is not dependent on the large logical space that a sparse translation structure supports).
It would have been obvious to a person having ordinary skill in the art before the effective filing date of the invention to combine the teachings of Battaje, Colgrove and Bianco with those of Levy. Levy teaches freeing or removing conditional metadata entries, which can ensure that the conditional entries only contain correct and up-to-date data as the logged entries that are no longer accurate can be freed or removed to allow for newer conditional entries to be added (Levy paragraphs [0007-0008], Certain embodiments disclosed herein include for transaction management. The system comprises a processing circuitry; and a memory, the memory containing instructions that, when executed by the processing circuitry, configure the system to: assign a transaction identifier (ID) to a transaction, wherein the transaction includes at least one modification to at least one object, each object having a persistent state, wherein the transaction ID indicates a state of the transaction, wherein the state of the transaction initially indicates that the transaction is in progress; modify the at least one object, wherein the modifying further comprises adding at least one conditional entry to each object, wherein each conditional entry includes one of the at least one modification that is conditional on the state of the transaction; and update the transaction ID when a termination event occurs, wherein the updating further includes changing the state of the transaction. Certain embodiments disclosed herein also include a non-transitory computer readable medium having stored thereon causing a processing circuitry to execute a process, the process comprising: assigning a transaction identifier (ID) to a transaction, wherein the transaction includes at least one modification to at least one object, each object having a persistent state, wherein the transaction ID indicates a state of the transaction, wherein the state of the transaction initially indicates that the transaction is in progress; modifying the at least one object, wherein the modifying further comprises adding at least one conditional entry to each object, wherein each conditional entry includes one of the at least one modification that is conditional on the state of the transaction; and updating the transaction ID when a termination event occurs, wherein the updating further comprises changing the state of the transaction).
Claim 7 is the corresponding method claim to system claim 15. It is rejected with the same references and rationale.
Claim(s) 8 and 16 is/are rejected under 35 U.S.C. 103 as being unpatentable over Battaje in view of Colgrove in further view of Bianco in further view of Levy as applied to claims 7 and 15 above, and further in view of Cole et al. (US Patent No. 10,108,658 -- "Cole").
Regarding claim 16, Battaje in view of Colgrove in further view of Bianco in further view of Levy and further in view of Cole teaches The storage device of claim 15, wherein determining that the garbage collection write operation is valid includes determining whether an intervening host write has occurred (Cole column 19; lines 17-30, Provider network 800 of FIG. 8 includes numerous virtualization hosts 802 in the depicted embodiment, including hosts 802A and 802B. The control plane 820 of the provider network's virtualized computing service employs a plurality of lower-level services 821 and a journal 855 to configure and manage guest virtual machines (GVMs) 812 (e.g., GVMs 812A and 812B at host 802A, and GVMs 812K and 812L at host 802B) for clients. With respect to fulfilling a request for a new guest virtual machine from a client, workflow 805 may be executed in the depicted embodiment. At least some of the steps of the workflow 805 may be triggered by transactional messages indicated in committed transaction entries of journal 855, representing earlier steps of the workflow which have been completed successfully. The entries for the journal can be updated/modified which is triggered based on a host write operation. Also see Cole column 31; lines 8-25, Similarly, if the entry included one or more messages, those messages may be read by registered message subscriber nodes. In some implementations, only a subset of the DAG nodes may be read in order to propagate committed writes or messages to their destinations. In other embodiments, journal entries may be read from any of the DAG nodes. In at least one embodiment, write appliers or message cursors may be implemented as respective threads or processes that may run at the same hosts at one or more of the DAG nodes. In other embodiments, write appliers and/or message cursors may run on different hosts than the DAG nodes. A journal entry may also be transmitted eventually to standby node 1616, and a replica of it may be stored there after it has been committed, so that the standby node 1616 is able to replace a failed node of the DAG quickly if and when such a failover becomes necessary).
It would have been obvious to a person having ordinary skill in the art before the effective filing date of the invention to combine the teachings of Battaje, Colgrove, Bianco and Levy with those of Cole. Cole teaches resolving the conditional update based on whether or not an intervening host write has occurred, which improves the system as the host write can modify the current processes or operations, as well as the metadata needing to be logged in the journal, resulting in more accurate entries but minimizing the processing requirement by not constantly resolving conditional updates regardless of write occurrence (Cole column 31; lines 3-25, After a commit, the writes of a transaction (if any writes were part of the transaction) may be propagated or applied to a set of destinations (such as storage devices at which the contents of the member data stores are located) as described earlier, e.g. by respective write appliers. Similarly, if the entry included one or more messages, those messages may be read by registered message subscriber nodes. In some implementations, only a subset of the DAG nodes may be read in order to propagate committed writes or messages to their destinations. In other embodiments, journal entries may be read from any of the DAG nodes. In at least one embodiment, write appliers or message cursors may be implemented as respective threads or processes that may run at the same hosts at one or more of the DAG nodes. In other embodiments, write appliers and/or message cursors may run on different hosts than the DAG nodes. A journal entry may also be transmitted eventually to standby node 1616, and a replica of it may be stored there after it has been committed, so that the standby node 1616 is able to replace a failed node of the DAG quickly if and when such a failover becomes necessary).
Claim 8 is the corresponding method claim to system claim 16. It is rejected with the same references and rationale.
Response to Arguments
Applicant’s arguments, see pages 1-3 (numbered pages 6-8), filed January 20th, 2026, with respect to the rejection(s) of claim(s) 1, 9 and 17 under 35 U.S.C. 103 have been fully considered and are persuasive. Therefore, the rejection has been withdrawn. However, upon further consideration, a new ground(s) of rejection is made in view of Battaje et al. (US Publication No. 2022/0121564 -- "Battaje") in view of Colgrove et al. (US Publication No. 2015/0067286 – “Colgrove”) in further view of Bianco et al. (US Publication No. 2021/0200669 – “Bianco”).
The applicant’s amendments to independent claims 1, 9 and 17 are persuasive, and a new reference has been added to disclose the newly amended claim. Specifically, the Bianco reference has been added to explicitly disclose the concept of a conditional entry to a journal providing an update to metadata in connection with a garbage collection operation, as described in further detail in the rejection above. In light of the newly applied reference and rationale, the 35 USC 103 Rejection is maintained.
Conclusion
The prior art made of record and not relied upon is considered pertinent to applicant's disclosure.
Sawhney (US Publication No. 2018/0121457) teaches a similar method of conditional journaling, where a change/update to metadata can result in an update to the recorded metadata, which can be done explicitly in response to a garbage collection process via a conditional command (i.e., see Sawhney paragraph [0156], In other embodiments, the CCEE 104 identifies a version-specific metadata record, in the metadata tier, storing the metadata corresponding to the current version of object data. Since the version-specific metadata record corresponds to the current version of object data, the version-specific metadata record may be embedded in the root metadata record. Alternatively, the version-specific metadata record may be stored separately from the root metadata record. The CCEE 104 marks the version-specific metadata record as being deleted. Additionally and/or alternatively, a garbage collection process is performed on the version-specific metadata record to remove the version-specific metadata record from the storage system).
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 nonprovisional extension fee (37 CFR 1.17(a)) 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 mailing date of this final action.
Any inquiry concerning this communication or earlier communications from the examiner should be directed to JONAH C KRIEGER whose telephone number is (571)272-3627. The examiner can normally be reached Monday - Friday 8 AM - 5 PM.
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, Rocio Del Mar Perez-Velez can be reached at (571)-270-5935. 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.
/J.C.K./Examiner, Art Unit 2133
/ROCIO DEL MAR PEREZ-VELEZ/Supervisory Patent Examiner, Art Unit 2133