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 RCE filed on March 30, 2026.
Claims 1-7, 9-10, 12-14, and 16-23 have been amended.
Claims 8, 11, and 15 have been canceled.
The objections and rejections from the prior correspondence that are not restated herein are withdrawn.
Response to Arguments
Applicant's arguments filed on March 30, 2026 have been fully considered but are not persuasive. Applicant argues that KNAUFT fails to teach the newly amended limitations "determin[ing] that a first data block received by a data storage system is latency-sensitive based on an expected access time of the first data block," replicat[ing], in response to determining that the first data block is latency-sensitive, the first data block to a first plurality of disks distributed across multiple servers of the data storage system," "erasure cod[ing], in response to replicating the first data block, the first data block to a second plurality of disks distributed across the multiple servers of the data storage system," "determin[ing] that a second data block received by the data storage system is non-latency-sensitive based on a second expected access time of the second data block," and "erasure cod[ing], in response to determining that the second data block is non-latency-sensitive, the second data block to the second plurality of disks without replicating the second data block," because “Knauft explicitly states that the motivation for writing the metadata to the metadata object is based on ‘avoiding the complexities of managing the metadata using an LFS’”, and “[m]oreover, at no point does Knauft suggest that the motivation for writing the metadata to the metadata object is ‘based on an expected access time of [a] first data block’ or ‘based on a second expected access time of [a] second data block.’"
The Examiner respectfully disagrees. KNAUFT [0042] teaches a number of benefits are achieved with such architecture and approach, where [0043] teaches because the metadata for each storage object O is maintained in a separate metadata object MetaObjO that is managed via an overwrite-based file system (rather than an LFS) disk layout on performance tier 122, there is no need to implement a complicated mechanism to track the movement of object metadata each time it is written, thus reducing the complexity of the system; furthermore, the degree of the overhead of updating and managing the metadata (for each storage object separately via its corresponding metadata object) will generally be small in practice due to the high I/O throughput and low I/O latency of performance tier 112 and the small size of the metadata object relative to the capacity object (i.e. latency-sensitive based on an expected access time of the first data block). In other words, KNAUFT teaches metadata is stored on performance tier 112 due to the high I/O throughput and low I/O latency of performance tier 112 and the small size of the metadata object relative to the capacity object, which suggests the capacity object being stored on the capacity tier does not require the high I/O throughput and low I/O latency of performance tier 112. Therefore, KNAUFT teaches the amended limitations of claim 1 as outlined in the rejection below.
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-5 and 21 are rejected under 35 U.S.C. 103 as being unpatentable over KNAUFT (Pub. No. US 20210311631 A1), hereafter KNAUFT, in view of LEE (Pub. No.: US 20200274556 A1), hereafter LEE.
Regarding claim 1, KNAUFT teaches:
A non-transitory computer-readable storage medium comprising instructions that when executed by at least one processor, cause the at least one processor to: determine that a first data block received by a data storage system is latency-sensitive based on an expected access time of the first data block; replicate, in response to determining that the first data block is latency-sensitive, the first data block to a first plurality of disks distributed across multiple servers of the data storage system (KNAUFT [0019] teaches the capacity object is stored on the capacity tier of the distributed storage system using an erasure coding scheme (e.g., RAID-5 or RAID-6), while the metadata object is stored on the performance tier of the distributed storage system using a mirroring scheme (e.g., RAID-1), where [0020] teaches write commands of metadata for the storage object are written to its corresponding metadata object on the performance tier using mirroring; [0042] teaches a number of benefits are achieved with such architecture and approach, where [0043] teaches because the metadata for each storage object O is maintained in a separate metadata object MetaObjO that is managed via an overwrite-based file system (rather than an LFS) disk layout on performance tier 122, there is no need to implement a complicated mechanism to track the movement of object metadata each time it is written, thus reducing the complexity of the system; furthermore, the degree of the overhead of updating and managing the metadata (for each storage object separately via its corresponding metadata object) will generally be small in practice due to the high I/O throughput and low I/O latency of performance tier 112 and the small size of the metadata object relative to the capacity object (i.e. latency-sensitive based on an expected access time of the first data block); [0037] teaches metadata object MetaObjO is created/managed using a traditional, overwrite-based file system disk layout and is mirrored (via, e.g., RAID-1) across some, or all, of storage devices 108(1)-(N) of performance tier 112),
determine that a second data block received by the data storage system is non-latency-sensitive based on a second expected access time of the second data block; and erasure code, in response to determining that the second data block is non-latency-sensitive, the second data block to the second plurality of disks without replicating the second data block (KNAUFT [0019] teaches the capacity object is stored on the capacity tier of the distributed storage system using an erasure coding scheme (e.g., RAID-5 or RAID-6) and is managed using a LFS disk layout, where [0020] teaches write commands that are directed to stripes of the storage object are issued as writes to its corresponding capacity object on the capacity tier; [0037] teaches capacity object CapObjO is created/managed using a LFS disk layout and is striped across some, or all, of storage devices 110(1)-(N) of capacity tier 114 in accordance with storage object O's provisioned erasure coding scheme; [0043] teaches metadata is stored on performance tier 112 due to the high I/O throughput and low I/O latency of performance tier 112 and the small size of the metadata object relative to the capacity object, which suggests the capacity object being stored on the capacity tier (see [0019]) does not require the high I/O throughput and low I/O latency of performance tier 112).
KNAUFT does not appear to explicitly teach erasure code, in response to replicating the first data block, the first data block to a second plurality of disks distributed across multiple servers of the data storage system.
However, LEE teaches the limitation (LEE [0060] teaches the data management circuit 104 may decide to replace the redundant data associated with the data set with less resilient data; [0061] teaches changes to previously stored user data and their redundancy levels may occur; [0072] teaches another redundancy scheme to provide resiliency when disks fail in the system 100 may be to have a second copy of the data be erasure coded across a set of storage devices 106 (e.g., devices 106b, 106c, 106d, 106e, 106f, 106g, and 106h). And a first copy of the data set fully stored in a device 106A. In such an embodiment, the data set 101 may be stored in its hashed location in its original form (the first copy of device 106a), but the second copy will be erasure coded and distributed across the defined set of devices 106b-106h).
Accordingly, it would have been obvious to a person having ordinary skill in the art at the time of the effective filing of the invention, having the teachings of KNAUFT and LEE before them, to include LEE’s change of redundancy levels in KNAUFT’s distributed storage system. One would have been motivated to make such a combination in order to employ a less expensive redundancy scheme such as erasure or error encoding as the storage fills up and the free space decreases as taught by LEE [0049], and allow the system to support more than a single storage device failure, while not incurring the latency delay needed to reassemble the data set during a read/Get operation (LEE [0073]), providing higher levels of performance and availability/reliability without sacrificing usable capacity, thus allowing significantly lower system cost (LEE [0087]).
Regarding claim 2, KNAUFT in view of LEE teaches the elements of claim 1 as outlined above. KNAUFT also teaches wherein the instructions further configure the at least one processor to: send a put () request acknowledgment associated with the second data block to a client device prior to the second data blocks being accessible from the data storage system (see KNAUFT Fig. 4 #418 & [0052] for sending an acknowledgment to the client which originated the write request indicating that the write request has been processed (thereby allowing the client to proceed with its operation), and in #428 contents of in-memory bank are written via full stripe write to allocated segment).
Regarding claim 3, KNAUFT in view of LEE teaches the elements of claim 1 as outlined above. KNAUFT also teaches wherein the instructions further configure the at least one processor to receive, in association with the second data block a callback address to be notified when the second data block is accessible from the data storage system (KNAUFT [0055] teaches once the data blocks have been reordered, full stripe write handler 118 can calculate and fill in the parity blocks for each stripe of data blocks in in-memory bank 120 (step 424), allocate a new segment in CapObjO for holding the contents of in-memory bank 120 (or find an existing free segment via the SUT) (step 426), and write out in-memory bank 120 via a full stripe write to that segment (step 428). Full stripe write handler 118 can further update the logical map in in-memory metadata cache 122 so that the LBAs of the logical data blocks in the bank/segment now point to the PBAs on capacity tier 114 where the data blocks now reside and update the SUT in in-memory metadata cache 122 to identify the new segment of CapObjO and the number of live data blocks in that segment (step 430)).
Regarding claim 4, KNAUFT in view of LEE teaches the elements of claim 1 as outlined above. KNAUFT also teaches wherein the instructions further configure the at least one processor to determine that the second data block is non-latency-sensitive based on determining that the second data block is received by an acceptor service of the data storage system (see KNAUFT [0020], [0037], and [0043] as outlined in claim 1 above).
Regarding claim 5, KNAUFT in view of LEE teaches the elements of claim 1 as outlined above. KNAUFT also teaches wherein the instructions further configure the at least one processor to determine that the first data block is latency-sensitive based on determining that the first data block is received from a latency-sensitive client through a storage front end of the data storage system (see KNAUFT [0020] and [0043] as outlined in claim 1 above).
Regarding claim 21, KNAUFT in view of LEE teaches the elements of claim 1 as outlined above. KNAUFT also teaches wherein determining that the first data block is received by the data storage system is latency-sensitive further comprises determining that the first data block is received through a storage front end of the data storage system or that a type of a write request associated with the first data block comprises a live write (see KNAUFT [0040] & [0071] as taught above in claim 1, where data from in-memory bank 120 is written to CapObjO on capacity tier 114, and data from in-memory metadata cache 122 is written to MetaObjO on performance tier 112).
Claims 6-7, 9-10, 12-14, 16-20, and 22-23 are rejected under 35 U.S.C. 103 as being unpatentable over KNAUFT in view of LEE and GUPTA (Pub. No.: US 20230315303 A1), hereafter GUPTA.
Regarding claim 6, the claim recites similar limitation as corresponding claim 1 and is rejected for similar reasons as claim 1 using similar teachings and rationale. KNAUFT in view of LEE does not appear to explicitly teach:
wherein the erasure coding is performed using a local reconstruction code (LRC) erasure coding scheme.
However, GUPTA teaches the limitation (GUPTA [0046] teaches determining parity stripes using LRC).
Accordingly, it would have been obvious to a person having ordinary skill in the art at the time of the effective filing of the invention, having the teachings of KNAUFT, LEE, and GUPTA before them, to include GUPTA and LEE’s local reconstruction code scheme in KNAUFT’s distributed storage system. One would have been motivated to make such a combination in order to optimize rebuild read and storage space overhead.
Regarding claim 7, KNAUFT in view of LEE and GUPTA teaches the elements of claim 6 as outlined above. KNAUFT also teaches wherein erasure coding the second plurality of data onto the second plurality of disks distributed across the multiple servers of the data storage system further comprises buffering, using an acceptor service of the data storage system prior to erasure coding the second plurality of data, the second plurality of data until a threshold amount of data is buffered by the acceptor service (see KNAUFT Fig. 3, where [0039] teaches in-memory bank 120 is sized to hold an amount of write data equivalent to a predefined number of stripes of storage object O that will be written via a full stripe write to O's capacity object CapObjO, and [0040] teaches full stripe write handler 118 can check whether its in-memory bank 120 has become full (i.e., there are no empty slots in bank 120 for holding further write data). If so, full stripe write handler 118 can write out (i.e., flush) the entirety of in-memory bank 120 via a full stripe write to an available segment of CapObjO on capacity tier 114, where a “segment” is a region of space in the LFS disk layout of CapObjO that can hold the contents of the bank. On the other hand, if in-memory bank 120 still contains one or more empty slot(s), full stripe write handler 118 can continue caching write data directed to storage object O in bank 120 until the bank becomes full and can be written to CapObjO via a full stripe write).
Regarding claim 9, KNAUFT in view of LEE and GUPTA teaches the elements of claim 6 as outlined above. KNAUFT also teaches sending a put () request acknowledgment associated with the second plurality of data to a client device prior to the second plurality of data being accessible from the data storage system (see KNAUFT Fig. 4 #418 & [0052] as outlined in claim 2 above).
Regarding claim 10, KNAUFT in view of LEE and GUPTA teaches the elements of claim 9 as outlined above. KNAUFT also teaches wherein determining that the first plurality of data is latency-sensitive further comprises determining that the second plurality of data is received by the data storage system in association with a latency-sensitive request comprising a callback address to be notified upon determining that the second plurality of data is accessible from the data storage system (see KNAUFT [0055] as outlined in claim 3 above).
Regarding claim 12, KNAUFT in view of LEE and GUPTA teaches the elements of claim 6 as outlined above. KNAUFT also teaches:
wherein erasure coding the first plurality of data further comprises: determining that the first plurality of data is received by the data storage system and in association with a latency-sensitive request from a client device (see KNAUFT [0019-0020] & [0052] as outlined in claims 1-2 above);
replicating, in response to determining that the first plurality of data is received by the data storage system and in association with the latency-sensitive request, the first plurality of data to at least two of the plurality of disks (see KNAUFT [0037] as outlined in claim 1 above);
sending, in response to replicating the first plurality of data, a put () request acknowledgment to the client device indicating that the first plurality of data is stored and accessible from the storage system (see KNAUFT Fig. 10 #1026 sending ACK to client);
LEE also teaches in response to replicating the first plurality of data to the at least two of the plurality of disks, erasure coding the first plurality of data to additional disks of the plurality of disks (see LEE [0060-0061] and [0072] as outlined in claim 1 above).
The same motivation that was utilized for combining KNAUFT, LEE, and GUPTA as set forth in claim 6 is equally applicable to claim 12.
Regarding claim 13, KNAUFT in view of LEE and GUPTA teaches the elements of claim 12 as outlined above. KNAUFT also teaches determining that the first plurality of data is received in association with the latency-sensitive request based on determining that the data storage system received the latency-sensitive request from the client device through a storage front end of the data storage system (see KNAUFT [0020] as outlined in claim 5 above).
Regarding claim 14, the claim recites similar limitation as corresponding claim 6 and is rejected for similar reasons as claim 6 using similar teachings and rationale. KNAUFT also teaches A computing system comprising: at least one processor; and a memory storing instructions that, when executed by the at least one processor, configure the computing system (see KNAUFT Fig. 1),
Regarding claim 16, KNAUFT in view of LEE and GUPTA teaches the elements of claim 14 as outlined above. KNAUFT also teaches send a put () request acknowledgment associated with the second plurality of data to a client device prior to the second plurality of data being accessible from the data storage system (see KNAUFT Fig. 4 #418 & [0052] as outlined in claim 2 below).
Regarding claim 17, KNAUFT in view of LEE and GUPTA teaches the elements of claim 16 as outlined above. KNAUFT also teaches wherein the instructions further configure the computing system to receive, in association with the second plurality of data, a callback address to be notified when the second plurality of data is accessible from the data storage system (see KNAUFT [0055] as outlined in claim 3 below).
Regarding claim 18, KNAUFT in view of LEE and GUPTA teaches the elements of claim 16 as outlined above. KNAUFT also teaches wherein the instructions further configure the at least one processor to determine that the second plurality of data is non-latency-sensitive based on determining that the second plurality of data is received through an acceptor service of the data storage system (see KNAUFT [0020] as outlined in claim 1 below).
Regarding claim 19, KNAUFT in view of LEE and GUPTA teaches the elements of claim 14 as outlined above. KNAUFT also teaches:
determine that the first plurality of data is received by the data storage system and in association with a latency-sensitive request from a client device (see KNAUFT [0019-0020] & [0052] as outlined in claims 1-2 above);
replicate, in response to determining that the first plurality of data is received by the data storage system and in association with the latency-sensitive request, the first plurality of data to at least two of the plurality of disks (see KNAUFT [0037] as outlined in claim 1 above);
send, in response to replicating the first plurality of data, a put () request acknowledgment to the client device indicating that the first plurality of data is stored and accessible from the data storage system (see KNAUFT Fig. 10 #1026 sending ACK to client).
LEE also teaches in response to replicating the first plurality of data to the at least two of the plurality of disks, erasure coding the first plurality of data to additional disks of the plurality of disks (see LEE [0060-0061] and [0072] as outlined in claim 1 above).
The same motivation that was utilized for combining KNAUFT, LEE, and GUPTA as set forth in claim 14 is equally applicable to claim 19.
Regarding claim 20, KNAUFT in view of LEE and GUPTA teaches the elements of claim 14 as outlined above. GUPTA also teaches:
wherein erasure coding the first plurality of data and erasure coding the second plurality of data further comprises using a local reconstruction code (LRC) erasure coding scheme (GUPTA [0046] teaches determining parity stripes using LRC).
The same motivation that was utilized for combining KNAUFT, LEE, and GUPTA as set forth in claim 14 is equally applicable to claim 20.
Regarding claim 22, the claim recites similar limitation as corresponding claim 21 and is rejected for similar reasons as claim 21 using similar teachings and rationale.
Regarding claim 23, the claim recites similar limitation as corresponding claim 21 and is rejected for similar reasons as claim 21 using similar teachings and rationale.
Conclusion
The prior art made of record and not relied upon is considered pertinent to applicant's disclosure:
JUCH (Patent No.: US 11947814 B2) – “Optimizing Resiliency Group Formation Stability” relates to utilizing mirroring and/or erasure coding schemes as part of storing data into addressable fast write storage.
WANG (Pub. No.: US 20210311652 A1) – “Using Segment Pre-Allocation to Support Large Segments” relates to employing one of two data redundancy schemes such as mirroring or erasure coding, thus improving efficiency of executing write operations depending on whether the writes are directed to a partial stripe or to a full stripe or all of the data blocks within a stripe.
Any inquiry concerning this communication or earlier communications from the examiner should be directed to ANDREW J JUNG whose telephone number is (571)270-3779. The examiner can normally be reached on Monday through Friday from 9am to 5pm.
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, David Wiley can be reached on 571-272-4150. 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.
/ANDREW J JUNG/Supervisory Patent Examiner, Art Unit 2175