Memory device with data scrubbing capability and methods
US-2024393961-A1 · Nov 28, 2024 · US
US2016350010A1 · US · A1
| Field | Value |
|---|---|
| Publication number | US-2016350010-A1 |
| Application number | US-201514726598-A |
| Country | US |
| Kind code | A1 |
| Filing date | May 31, 2015 |
| Priority date | May 31, 2015 |
| Publication date | Dec 1, 2016 |
| Grant date | — |
A practical reading order for non-experts. Skip the full description unless you need deep technical detail.
What the patent document calls the invention.
A short plain-language summary of the technical disclosure.
Who owns or filed the patent and who is credited as inventor.
Filing, priority, publication, and grant dates set the timeline.
The legal scope of protection — read this for what is actually claimed.
Technology tags used to group this patent with similar filings.
Prior art links and similar publications in this corpus.
Official abstract text for this publication.
Examples provide input and output request block size compatibility. A storage filter converts input and output (IO) requests associated with a first data block size into modified IO requests compatible with a data storage organized in a second data block size where the first data block size is different than the first data block size. The storage filter translates read IO requests for a smaller block size into modified read requests for a data storage organized with a larger data block size. Write IO requests for smaller block size are converted into modified write IO requests for larger data block size data storage. The storage filter also converts read IO requests generated for larger block size into smaller block size read IO requests. Likewise, the storage filter also translates write IO requests corresponding to larger data block size into modified write IO requests of smaller block size.
Opening claim text (preview).
We claim: 1 . A method comprising: receiving an input/output (IO) request associated with a first block size from a client, the first block size being a different block size than a second block size associated with a data storage device; and converting the IO request associated with the first block size to a modified IO request associated with the second block size by a storage filter, converting the IO request to the modified IO request further comprising: on determining the IO request is a read request and the first block size is a smaller block size than the second block size, generating a small-to-large read IO request, reading at least one data block of the second block size from the data storage device into a temporary buffer, and copying at least one requested data block of the first block size from the temporary buffer into a user buffer; on determining the IO request is the read request and the first block size is a larger block size than the second block size, generating a large-to-small read IO request, and reading a range of data blocks of the second block size from the data storage device into the user buffer; on determining the IO request is a write request and the first block size is the smaller block size than the second block size, the write request having write data associated therewith and stored in the user buffer, generating a small-to-large write IO request, reading at least one data block of the second block size from the data storage device into a temporary buffer, writing the write data from the user buffer to the temporary buffer to form at least one modified data block of the second block size in the temporary buffer, and writing the at least one modified data block from the temporary buffer to the data storage device; and on determining the IO request is the write request and the first block size is the larger block size than the second block size, generating a large-to-small write IO request, and writing write data associated with the write request from the user buffer to the data storage device using a data journal. 2 . The method of claim 1 , wherein writing the write data associated with the write request from the user buffer to the data storage device using a data journal further comprises: writing the write data to an entry in the data journal; on determining the write data is completely written to the data journal entry, writing the write data from the data journal entry to the data storage device; and on determining the write data is completely written to the data storage device, updating the data journal to indicate the write operation is complete. 3 . The method of claim 1 , wherein the modified IO request comprises a modified length and a modified offset, and wherein generating the modified IO request further comprises: calculating the modified length and the modified offset based on a multiple of the first block size to the second block size. 4 . The method of claim 1 , further comprising: processing the large-to-small write IO request, wherein processing the modified large-to-small write request further comprises: identifying a set of free sectors on the data storage device using a mapping table; writing the write data to the set of free sectors; and updating the mapping table. 5 . The method of claim 1 , further comprising: receiving the IO request from a virtual machine, wherein the storage filter is implemented on a hypervisor associated with the virtual machine. 6 . The method of claim 1 wherein the data storage device is a first data storage device and further comprising: creating the data journal on a second data storage device that is external to the first data storage device. 7 . The method of claim 1 further comprising: processing the small-to-large read IO request, wherein processing the small-to-large read IO request further comprises: generating a scatter-gather command to read at least one data block of the larger block size from the data storage device into a temporary buffer and copy the at least one requested data block of the smaller block size into the user buffer using a single command. 8 . The method of claim 1 further comprising: processing the small-to-large write request, wherein processing the small-to-large write request further comprises generating a scatter-gather command to write the write data from the user buffer and the at least one data block from the temporary buffer to the data storage device to form the at least one modified data block using a single command. 9 . One or more computer-readable storage media including computer-executable software instructions that, when executed, cause at least one processor to: convert, by a storage filter, an IO write request associated with a first block size to a large-to-small write request associated with a second block size, the first block size being larger than the second block size; and write requested write data associated with the IO write request from a user buffer to an entry in a data journal; on determining the requested write data is written to the data journal entry in its entirety, copy the requested write data from the data journal to a data storage device associated with the second block size; and on determining the requested write data is completely written to the data storage device, update the data journal to indicate the write operation is complete. 10 . The computer storage media of claim 9 , wherein the IO write request is received from a virtual machine. 11 . The computer storage media of claim 9 , wherein the storage filter is implemented by a hypervisor. 12 . The computer storage media of claim 9 , wherein the computer-executable instructions further cause the processor to: check, by the storage filter, the data journal upon initial access of the data storage device; on determining a write did not complete prior to a failure, recover the requested write data from the data journal and copy the requested write data from the data journal to the data storage device; and on determining the requested write data is completely written to the data storage device, update the data journal to indicate the write operation is complete. 13 . The computer storage media of claim 9 , wherein the computer-executable instructions cause the processor to: identify a set of free sectors on the data storage device using a mapping table; write the requested write data to the set of free sectors; and update the mapping table. 14 . A system for providing input and output request block size compatibility, said system comprising: at least one processor; a data storage device associated with a first block size, the data storage device comprising a mapping table; and a storage filter comprising computer executable code which, upon execution, causes the at least one processor to: translate an input/output (IO) request associated with a second block size into a modified IO request corresponding to the second block size of the data storage device, the first block size being a different block size than a second block size; and process the modified IO request, wherein processing the modified IO request wherein the computer executable code, when executed, further causes the at least one processor to: calculate a modified offset and modified length based on a multiple of the first block size to the second block size on determining the IO request is a read request, read at least one data block of the first block size corresponding to the modified offset and modified length from the data storage device into a temporary buffer, and copy at least one requested data
Command handling arrangements, e.g. command buffers, queues, command scheduling · CPC title
in relation to data integrity, e.g. data losses, bit errors · CPC title
Hypervisor-specific management and integration aspects · CPC title
Replication mechanisms · CPC title
I/O management, e.g. providing access to device drivers or storage · CPC title
Related publications grouped by family.
Answers are generated from the same data shown on this page.