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 .
Continued Examination Under 37 CFR 1.114
A request for continued examination under 37 CFR 1.114, including the fee set forth in 37 CFR 1.17(e), was filed in this application after final rejection on 6/3/2026. Since this application is eligible for continued examination under 37 CFR 1.114, and the fee set forth in 37 CFR 1.17(e) has been timely paid, the finality of the previous Office action has been withdrawn pursuant to 37 CFR 1.114. Applicant's previously non-entered submission filed on 4/28/2026 has been entered.
Response to Arguments
Applicant’s arguments, seepages 9-12 of the remarks, filed 4/28/2026, with respect to the amended claim language 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 Lashgari (US 12,204,509).
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.
Claim(s) 1-7, 14-19 is/are rejected under 35 U.S.C. 103 as being unpatentable over Gazit (US 2021/0133165) in view of Lashgari (US 12,204,509).
In regards to claim 1, Gazit teaches
detecting, by a storage device, partial similarity between a candidate storage page and a target storage page using an XOR operation on the candidate storage page and the target storage page; wherein the target storage page is selected based on a comparison result related to the XOR operation satisfying a threshold, and (¶39-47, fig. 2A/B in step 214, a matching bucket 170m is first found for a candidate storage page (i.e. the 32 MSBs match, the XOR hamming distance is 0), and then the 32 LSBs of all the entries in the bucket are compared to the candidate storage page, via calculating the hamming distance (i.e. the number of 1s resulting from an XOR of the 32 LSBs of the candidate storage page and each of the entries in the matching bucket. An exact match is found (step 218) when an entry with a distance of 0 is identified, if no exact match is found, then a partial match is searched for (step 250) a partial match (step 252) is found (i.e. target storage page is selected) when the hamming distance (number of bits that are different) is less than a threshold (i.e. 2), this done by taking the bitwise XOR of the candidate block and a target block and summing the number of 1’s, which will denote the total number of bits that are different between the candidate block and the target block. ¶26, 29 and Fig. 1 teach data storage system 116 of which the deduplication can be performed)
generating, by the storage device, a data structure indicative of the partial similarity; storing, by the storage device, the data structure with a pointer to the target storage page; (¶46-47, fig. 2B, step 254, the stored data structure for the candidate storage page contains a reference (pointer) to the target block and the difference data)
receiving, by the storage device, a read command associated with the candidate storage page; and reconstructing, by the storage device and in response to the read command, the candidate storage page based on the data structure and the pointer. (¶47 the candidate storage page can be reconstructed when it becomes necessary (i.e. read) by reading the target data and the difference data indicated in the data structure)
Gazit may not explicitly state that the XOR operation is used to determine the partial similarity between the source and target destination, however it does teach using XOR to determine bitwise differences in the source and target data and that the threshold for determining similarity can be the hamming distance (the number of bits are that different). Therefore, it would have been obvious to one of ordinary skill in the art prior to the effective filing date of the claimed invention to have been able to make this modification. The motivation for such is that Gazit states in ¶101 “Those skilled in the art will therefore understand that various changes in form and detail may be made to the embodiments disclosed herein without departing from the scope of the following claims”
Gazit may not explicitly teach and/or make obvious
wherein the threshold is modified based on one or more properties of the storage device
However, Lashgari teaches in C2:49-59 and C32:6-19 that the similarity threshold for deduplication can be modified based on the number of resources available for processing events (i.e. a property of the storage device).
It would have been obvious to one of ordinary skill in the art prior to the effective filing date of the claimed invention to have incorporated the teachings of Lashgari in order to be able to modify the threshold level of similarity used to identify “duplicates” based on the resources available. The motivation for making this modification is that when more processing resources are available, more stringent thresholds can be used to take the time to find a better match, while when less resources are available a less stringent threshold can be used to a suitable match in less time.
In regards to claim 2, Gazit teaches
calculating, by the storage device, a hash value of the candidate storage page; and selecting, by the storage device, the target storage page using the hash value of the candidate storage page. (¶41-43, fig. 2A, steps 210-216 a sim hash is taken of the candidate block and that hash is used to identify a target block from a set of target blocks)
In regards to claim 3, Gazit teaches
calculating, by the storage device, a hash value of the target storage page; and comparing, by the storage device, the hash value of the candidate storage page with the hash value of the target storage page. (¶41-43, fig. 2A, steps 210-216 a sim hash is taken of the candidate block and that hash is used to identify a target block from a set of target blocks by comparing the sim hash of the potential target blocks with the sim hash of the candidate block)
In regards to claim 4, Gazit teaches
wherein selecting the target storage page comprises: identifying, by the storage device, the target storage page based on the hash value of the target storage page matching the hash value of the candidate storage page. (¶41-43, fig. 2A, steps 210-216 a sim hash is taken of the candidate block and that hash is used to identify a target block from a set of target blocks by comparing the sim hash of the potential target blocks with the sim hash of the candidate block which matches the candidate data block)
In regards to claim 5, Gazit teaches
wherein detecting the partial similarity comprises: determining, by the storage device, that a quantity of zero areas in results of the XOR operation satisfies a similarity threshold. ((¶45-47, fig. 2B, a partial match is found when the hamming distance (number of bits that are different) is less than a threshold (i.e. 2), this done by taking the bitwise XOR of the candidate block and a target block and summing the number of 1’s, which will denote the total number of bits that are different between the candidate block and the target block. Note that since the system is binary, the number of 1s denotes the areas that don’t match and 0s that do match, so the threshold can be made to check against either when the data length is a known quantity.
In regards to claim 6, Gazit teaches
returning, by the storage device, the candidate storage page, after reconstruction, in response to the read command. (¶447 the candidate storage page can be reconstructed when it becomes necessary (i.e. read) by reading the target data and the difference data indicated in the data structure)
In regards to claim 7, Gazit teaches
wherein reconstructing the candidate storage page comprises: retrieving, by the storage device, the target storage page using the pointer; and combining, by the storage device, the data structure with the target storage page to reconstruct the candidate storage page. (¶46-47 the target data (which is referenced, i.e. via a pointer) can be retrieved and is XORed (combined) with the difference data restoring the original candidate block.
In regards to claim 14, Gazit teaches
one or more instructions that, when executed by one or more processors of a device, cause the device to: ((¶26, 29 and Fig. 1 teach data storage system 116 containing storage processor(s) 120, 102a, and memory 130 which can contain software instructions to be executed to perform the functions detailed)
perform a set of comparison operations between a set of target storage pages and a candidate storage page to determine a set of comparison results; select a best target storage page, from the set of target storage pages, using the set of comparison results; (¶45-47, fig. 2B, step 250 searches for a candidate block (i.e. a best target storage page from a set of target storage pages) by locating a target block whose digest differs by less than a predetermined hamming distance)
wherein the target storage page is selected based on a comparison result related to the XOR operation satisfying a threshold, and (¶39-47, fig. 2A/B in step 214, a matching bucket 170m is first found for a candidate storage page (i.e. the 32 MSBs match, the XOR hamming distance is 0), and then the 32 LSBs of all the entries in the bucket are compared to the candidate storage page, via calculating the hamming distance (i.e. the number of 1s resulting from an XOR of the 32 LSBs of the candidate storage page and each of the entries in the matching bucket. An exact match is found (step 218) when an entry with a distance of 0 is identified, if no exact match is found, then a partial match is searched for (step 250) a partial match (step 252) is found (i.e. target storage page is selected) when the hamming distance (number of bits that are different) is less than a threshold (i.e. 2), this done by taking the bitwise XOR of the candidate block and a target block and summing the number of 1’s, which will denote the total number of bits that are different between the candidate block and the target block. ¶26, 29 and Fig. 1 teach data storage system 116 of which the deduplication can be performed)
compress and store a comparison result, from the set of comparison results, corresponding to the best target storage page, to the storage device; and store a pointer to the best target storage page to enable reconstruction of the candidate storage page during read operations. (¶47 teaches that a pointer to the selected target block and the difference data can be compressed and stored and that it can be reconstructed to the original data when necessary.)
Gazit may not explicitly teach that the comparison results used to select the best storage page are the same results that are then stored, as the difference data is determined using an bitwise XOR of the actual data, while the target storage block can be determined using an XOR of the digests (hashes) of the candidate page and the set of target pages. However, it would have been obvious to one of ordinary skill in the art prior to the effect filing date of the claimed invention that instead of using the hashes, the actual data could be used to calculate the differences. The motivation for such is that using the actual data of the source and target for the XOR comparison is more accurate (while slightly slower) that using the hashes, and it would therefore be preferred if the best possible match was to be found.
Gazit may not explicitly teach and/or make obvious
wherein the threshold is modified based on one or more properties of the storage device
However, Lashgari teaches in C2:49-59 and C32:6-19 that the similarity threshold for deduplication can be modified based on the number of resources available for processing events (i.e. a property of the storage device).
It would have been obvious to one of ordinary skill in the art prior to the effective filing date of the claimed invention to have incorporated the teachings of Lashgari in order to be able to modify the threshold level of similarity used to identify “duplicates” based on the resources available. The motivation for making this modification is that when more processing resources are available, more stringent thresholds can be used to take the time to find a better match, while when less resources are available a less stringent threshold can be used to a suitable match in less time.
In regards to claim 15, Gazit teaches
receive a read command indicating the candidate storage page; and retrieve the comparison result that was compressed and stored and the pointer to the best target storage page in response to the read command. (¶44-47 the candidate storage page can be reconstructed when it becomes necessary (i.e. read) by reading the target data and the difference data indicated in the data structure)
In regards to claim 16, Gazit teaches
cause the device to: retrieve the best target storage page using the pointer; combine the comparison result with the best target storage page to reconstruct the candidate storage page; and return the candidate storage page, after reconstruction, in response to the read command. ¶46-47 the target data (which is referenced, i.e. via a pointer) can be retrieved and is XORed (combined) with the difference data restoring the original candidate block.
In regards to claim 17, Gazit teaches
wherein the set of comparison operations comprises a set of XOR operations. (¶47 the difference operations are done using bitwise XOR operations)
In regards to claim 18, Gazit teaches
select the set of target storage pages using at least one hash value for at least one target storage page in the set of target storage pages. (¶41-43, fig. 2A, steps 210-216 a sim hash is taken of the candidate block and that hash is used to identify a target block from a set of target blocks by comparing the sim hash of the potential target blocks with the sim hash of the candidate block which matches the candidate data block)
In regards to claim 19, Gazit teaches
to select the best target storage page using the set of comparison results, cause the device to: select the best target storage page based on the comparison result corresponding to the best target storage page satisfying a similarity threshold. (¶45-47, fig. 2B, a partial match is found when the hamming distance (number of bits that are different) is less than a threshold (i.e. 2)
Claim(s) 8-13 and 21 is/are rejected under 35 U.S.C. 103 as being unpatentable over Gazit (US 2021/0133165) in view of in view of Lashgari (US 12,204,509) and Sengupta (US 2011/0276780).
In regards to claim 8, Gazit teaches
one or more processors configured to: (¶26, 29 and Fig. 1 teach data storage system 116 containing storage processor(s) 120, 102a, of which the deduplication can be performed)
calculate a hash value for a candidate page to be stored; ¶41-43, fig. 2A, steps 210-216 a sim hash is taken of the candidate block and that hash is used to identify a target block from a set of target blocks)
compare the hash value of the candidate page with a set of hash values of a set of stored pages to identify a target page within the set of stored pages; (¶41-43, fig. 2A, steps 210-216 a sim hash is taken of the candidate block and that hash is used to identify a target block from a set of target blocks by comparing the sim hash of the potential target blocks with the sim hash of the candidate block)
perform a set of XOR operations on the target page to determine a set of XOR results; (¶45-47, fig. 2B, a partial match is found when the hamming distance (number of bits that are different) is less than a threshold (i.e. 2), this done by taking the bitwise XOR of the candidate block and a target block and summing the number of 1’s, which will denote the total number of bits that are different between the candidate block and the target block.
store a selected XOR result, from the set of XOR results, based on a similarity threshold; and store a pointer to a selected page, from the target page and the one or more neighboring pages, with the selected XOR result. (¶46-47, fig. 2B, step 254, the stored data structure for the candidate storage page contains a reference (pointer) to the target block and the associated difference data)
wherein the target storage page is selected based on the selected XOR result satisfying the similarity
threshold, and (¶39-47, fig. 2A/B in step 214, a matching bucket 170m is first found for a candidate storage page (i.e. the 32 MSBs match, the XOR hamming distance is 0), and then the 32 LSBs of all the entries in the bucket are compared to the candidate storage page, via calculating the hamming distance (i.e. the number of 1s resulting from an XOR of the 32 LSBs of the candidate storage page and each of the entries in the matching bucket. An exact match is found (step 218) when an entry with a distance of 0 is identified, if no exact match is found, then a partial match is searched for (step 250) a partial match (step 252) is found (i.e. target storage page is selected) when the hamming distance (number of bits that are different) is less than a threshold (i.e. 2), this done by taking the bitwise XOR of the candidate block and a target block and summing the number of 1’s, which will denote the total number of bits that are different between the candidate block and the target block. ¶26, 29 and Fig. 1 teach data storage system 116 of which the deduplication can be performed)
Gazit may not explicitly teach and/or make obvious
wherein the threshold is modified based on one or more properties of the storage device
However, Lashgari teaches in C2:49-59 and C32:6-19 that the similarity threshold for deduplication can be modified based on the number of resources available for processing events (i.e. a property of the storage device).
It would have been obvious to one of ordinary skill in the art prior to the effective filing date of the claimed invention to have incorporated the teachings of Lashgari in order to be able to modify the threshold level of similarity used to identify “duplicates” based on the resources available. The motivation for making this modification is that when more processing resources are available, more stringent thresholds can be used to take the time to find a better match, while when less resources are available a less stringent threshold can be used to a suitable match in less time.
Gazit and Lashgari may not explicitly teach and/or make obvious
and one or more neighboring pages, relative to the candidate page
store a pointer, from the target page and the one or more neighboring pages
However, Sengupta suggests in ¶33 that deduplicated chunks often neighbor each other in the source file and target destination.
Therefore, it would have been obvious to one of ordinary skill in the art prior to the effective filing date of the claimed invention to have taken this information and been able to modify the system of Gazit and Lashgari such that when a match (or partial match) target block was found for the source block to also check to see if the neighboring source block locations could be deduplicated with the neighboring blocks of the selected target block and stored in the same way. This motivation of such is that this can allow further deduplication of the storage system, potentially saving more storage space.
In regards to claim 9, Gazit teaches
wherein the set of XOR operations are performed at a block level. (¶47 teaches a bitwise XOR of the block is taken)
In regards to claim 10, Gazit teaches
wherein the similarity threshold is selected based on one or more properties of a storage system for the candidate page. (¶84 teaches the predetermine hamming distance (threshold) may be 1, 2 or any other suitable value (i.e. based upon the deduplication system)
In regards to claim 11, Gazit teaches
receive a read command indicating the candidate page; and retrieve the selected XOR result and the pointer to the selected page in response to the read command. (¶47 the candidate storage page can be reconstructed when it becomes necessary (i.e. read) by reading the target data and the difference data (XOR result) indicated in the data structure)
In regards to claim 12, Gazit teaches
retrieve the selected page using the pointer; combine the selected XOR result with the selected page to reconstruct the candidate page; and return the candidate page, after reconstruction, in response to the read command. (¶46-47 the target data (which is referenced, i.e. via a pointer) can be retrieved and is XORed (combined) with the difference data restoring the original candidate block.)
In regards to claim 13, Gazit teaches
to compare the hash value of the candidate page with the set of hash values of the set of stored pages to identify the target page, the one or more processors are configured to: identify the target page based on the hash value of the candidate page matching a hash value, in the set of hash values, of the target page. (¶41-43, fig. 2A, steps 210-216 a sim hash is taken of the candidate block and that hash is used to identify a target block from a set of target blocks by comparing the sim hash of the potential target blocks with the sim hash of the candidate block which matches the candidate data block)
In regards to claim 21, Lashgari further teaches/makes obvious
wherein the one or more properties of the storage device are associated with at least one of: information associated with available space related to the storage device, or information associated with available processing resources related to the storage device. (C2:49-59 and C32:6-19 that the similarity threshold for deduplication can be modified based on the number of resources available for processing events (i.e. a property of the storage device).
Conclusion
The prior art made of record and not relied upon is considered pertinent to applicant's disclosure:
Oh (US 2026/0064635) teaches in ¶153 that the hamming similarity threshold can be adjusted based on the number of active data storage units.
Any inquiry concerning this communication or earlier communications from the examiner should be directed to JASON W BLUST whose telephone number is (571)272-6302. The examiner can normally be reached 12-8:30 EST.
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, Hosain Alam can be reached at (571) 272-3978. 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.
/JASON W BLUST/Primary Examiner, Art Unit 2132