USPatent applicationPatented

Write omission detector, write omission detecting method, and computer product

Granted 29 Mar 2011 · 3 office actions

Life of the application

12 dated events
⤢ drag to zoom20082010201220142016201820202022202420262028ProsecutionOwnershipTerm & fees
ProsecutionOwnershipTerm & feeshover for detail · click to open

Abstract

A device adaptor that controls a disk, wherein a storage area is divided into a plurality of blocks, detects a block that includes a read error. Next, the device adaptor detects a write omission in blocks that are within a predetermined range from the block that includes the read error. To be specific, the device adaptor reads data from the blocks that are in the vicinity of the block that includes the unrecovered read error in a suspect disk. Next, the device adaptor reads from a redundant disk, data of a block that corresponds to the block that includes the unrecovered read error (data of block “B†in an example shown in FIG. 1 ) and compares the read data to the data read from the suspect disk to detect the write omission.

Description

7 parts
›BACKGROUND OF THE INVENTION

1. Field of the Invention

The present invention relates to a technology for detecting occurrence of write omission in a storage medium divided into a plurality of blocks.

2. Description of the Related Art

In a commonly used storage medium (for example, a disk) that is divided into a plurality of blocks, occurrence of a write omission prevents updating of data that is stored in each block and causes obsolete data to remain in the block. A cause of occurrence of the write omission is explained specifically with respect to FIG. 11 . When a head carries out a write process to write updated data to the block that stores therein obsolete data, the head runs into dust particles etc. and data is not written to the block, thus causing obsolete data to remain in the block. The head running into the dust particles causes vibrations. Due to this, unreadable data (in other words, unrecovered read error) is written to adjacent blocks.

To take care of such a write omission, a write omission detecting method is carried out to detect the write omission. For example, a conventional write omission detecting method is disclosed in Japanese Patent Laid-open Application No. 2006-252530. In the conventional write omission detecting method, a history block, which stores therein updated data, is included for each block on the disk. When writing the updated data to the disk, a new updated status is stored in the history block and also stored in a memory of a central processing unit (CPU). Write omission is detected based on comparison of the updated status stored in the history block and the updated status stored in the memory.

However, in the conventional technology, because a process to detect the write omission is carried out after carrying out the write process, when carrying out the write process, detection of the write omission in all the blocks takes a significant time, which deteriorates the processing performance.

›SUMMARY OF THE INVENTION

It is an object of the present invention to at least partially solve the problems in the conventional technology.

According to an aspect of the present invention, a write omission detector that detects write omission in a storage medium that is divided into a plurality of blocks includes a block detection unit that detects an error block that is a block that includes a read error; and a write-omission detecting unit that detects a write omission block based on comparison of data in blocks that are within a predetermined range from the error block and data in blocks inside a redundant storage medium.

According to another aspect of the present invention, a method of detecting write omission in a storage medium that is divided into a plurality of blocks includes first detecting including detecting an error block that is a block that includes a read error; and second detecting including detecting a write omission block based on comparison of data in blocks that are within a predetermined range from the error block and data in blocks inside a redundant storage medium.

According to still another aspect of the present invention, a computer-readable recording medium stores therein a computer program that causes a computer to realize the above method.

The above and other objects, features, advantages and technical and industrial significance of this invention will be better understood by reading the following detailed description of presently preferred embodiments of the invention, when considered in connection with the accompanying drawings.

›BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a schematic for explaining an overview and a salient feature of a device adaptor according to a first embodiment of the present invention;

FIG. 2 is a block diagram of a RAID device according to the first embodiment;

FIG. 3 is a block diagram of the device adaptor according to the first embodiment;

FIG. 4 is a schematic for explaining an example of error content;

FIG. 5 is a schematic for explaining a write omission detecting process;

FIG. 6 is a schematic for explaining a diagnosis skip in the write omission detecting process;

FIG. 7 is a schematic for explaining a recovery process;

FIG. 8 is a flowchart of a process operation performed by the device adaptor according to the first embodiment;

FIG. 9 is a flowchart of a write omission detecting process operation performed by the device adaptor according to the first embodiment;

FIG. 10 is a block diagram of a computer that executes a write omission detecting program; and

FIG. 11 is a schematic for explaining the write omission phenomenon.

›DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS · 1 of 4

Exemplary embodiments of the present invention are explained in detail below with reference to the accompanying drawings. An example in which the present invention is incorporated in a device adaptor is explained below.

In the following embodiments, an overview, a salient feature, a structure, and a process flow of a device adaptor according to a first embodiment of the present invention are sequentially explained, and effects of the first embodiment are explained in the end. As shown in FIGS. 1 to 11 , the device adaptor is referred to as Device Adaptor (DA).

First, an overview and a salient feature of the device adaptor according to the first embodiment are explained with reference to FIG. 1 .

A device adaptor 10 is used as a write omission detector according to the first embodiment. In disks 30 , which are divided into a plurality of blocks, the device adaptor 10 detects a write omission that prevents updating of data stored in each block and causes obsolete data to remain in the block. The device adaptor 10 prevents deterioration in the processing performance while detecting the write omission. A Redundant Arrays of Inexpensive Disks (RAID) device 1 having a redundant structure includes the device adaptor 10 and disks 30 a and 30 b.

The device adaptor 10 , which controls the disks 30 that include a storage area divided into the blocks, detects a block that includes a read error (see ( 1 ) of FIG. 1 ). To explain with reference to FIG. 1 , during a disk reply at the time of reading data from the disk 30 b , the device adaptor 10 detects a block that includes an unrecovered read error that indicates that the block is an unreadable block. As shown in FIG. 1 , the disk 30 b , which includes the block that includes the detected unrecovered read error, is called “suspect disk” as a disk that is likely to include the write omission.

Next, the device adaptor 10 detects the write omission in the blocks that are within a predetermined range from the block that includes the detected read error (see ( 2 ) of FIG. 1 ). To be specific, the device adaptor 10 reads data of the blocks that are in the vicinity of the block that includes the unrecovered read error in the suspect disk 30 b . Next, the device adaptor 10 reads from the redundant disk 30 a , data of the block corresponding to the block that includes the unrecovered read error (block “B” in the example shown in FIG. 1 ), compares the read data to the data read from the suspect disk 30 b , and detects the write omission. In other words, if the data of the redundant disk 30 a and the data of the suspect disk 30 b differ, the device adapter 10 determines that the block that stores the data includes the write omission and carries out a recovery process.

Due to this, when carrying out the write process, the device adaptor 10 detects the write omission without detecting write omissions in all the blocks. Thus, similarly as the main salient feature mentioned earlier, the device adaptor 10 can prevent deterioration of the processing performance while detecting the write omission.

An example of a hardware structure of the RAID device 1 which uses the DA 10 shown in FIG. 1 is explained next with reference to FIG. 2 . As shown in FIG. 2 , the RAID device 1 is connected to a server 2 .

The RAID device 1 includes the DA 10 , a controller module (CM) 20 that carries out control to transfer data to a router (RT) 40 , the disks 30 that store therein data, the RT 40 that relays data, and a channel adapter (CA) 50 that controls the connection between the RAID device 1 and the server 2 . The DA 10 includes a CPU 110 , a fiber channel (FC) 120 that carries out a serial transfer, and a buffer 130 that temporarily stores therein data. The CM 20 includes a CPU 210 , and a cache memory 220 that stores therein read data and write data.

Upon receiving a read request or a write request from the server 2 , the RAID device 1 stores the read data or the write data in the cache memory 220 of the CM 20 via the RT 40 . Based on the stored read data or the write data, the DA 10 carries out reading or writing to the disks 30 .

The structure of the device adaptor 10 shown in FIG. 1 is explained with reference to FIG. 3 . As shown in FIG. 3 , the device adaptor 10 includes a CM control interface 11 , a disk control interface 12 , a controller 13 , and a storage unit 14 . The device adaptor 10 is connected to the CM 20 and the disks 30 . A process of each component is explained next.

The CM control interface 11 controls communication related to various types of data that is transacted between the device adaptor 10 and the connected CM 20 . To be specific, the CM control interface 11 receives from the cache memory 220 of the CM 20 , the write data, the read data, or redundant data that is explained later.

The disk control interface 12 controls communication related to various types of data that is transacted between the device adaptor 10 and the connected disks 30 . To be specific, the disk control interface 12 transceives data related to read or write between the device adaptor 10 and the disks 30 .

The storage unit 14 stores therein data and programs that are necessary for various processes performed by the controller 13 . Especially, the storage unit 14 includes a buffer 14 a that is closely related to the present invention. The buffer 14 a temporarily stores therein data that is read from the disks 30 .

The controller 13 includes an internal memory for storing programs that regulate various process sequences and necessary data. The controller 13 uses the programs and the data to execute the processes. Especially, the controller 13 includes an error detecting unit 13 a , a write omission-detecting unit 13 b , and a recovery unit 13 c that are closely related to the present invention. The error detecting unit 13 a corresponds to “block detection unit” that is described in claims, and the write omission-detecting unit 13 b corresponds to “write-omission detecting unit” that is described in claims.

›DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS · 2 of 4

The error detecting unit 13 a detects a block that includes the read error. To be specific, if an error occurs during the disk reply at the time of reading data from the disks 30 , the error detecting unit 13 a determines whether the error is an unrecovered read error. If the error is an unrecovered read error, the error detecting unit 13 a notifies the later explained write omission-detecting unit 13 b to carry out a write omission detecting process in the periphery of the block that includes the unrecovered write error. If the error is not an unrecovered read error, the error detecting unit 13 a notifies the later explained recovery unit 13 c to execute a recovery process according to the error content.

An error detecting process is explained in detail with reference to FIG. 4 . As shown in FIG. 4 , upon occurrence of an error such as the errors indicated in (a) of FIG. 4 , the error detecting unit 13 a determines that the error is not an unrecovered read error. Upon occurrence of an error such as the errors indicated in (b) of FIG. 4 , the error detecting unit 13 a determines that the error is an unrecovered read error. In other words, the error detecting unit 13 a determines whether the error has occurred due to a cause that is highly likely to result in occurrence of the write omission (for example, dust floating inside the disk etc.).

Returning to FIG. 3 , the write omission-detecting unit 13 b detects the write omission in the blocks that are within the predetermined range that is set by a not shown input unit from the block that includes the detected unrecovered read error. To be specific, upon receiving the notification to carry out the write omission detecting process from the error detecting unit 13 a , the write omission-detecting unit 13 b retrieves the cache memory 220 of the CM 20 . Next, the write omission-detecting unit 13 b determines whether a preceding block is already diagnosed.

If the preceding block is not already diagnosed, the write omission-detecting unit 13 b reads from the cache memory 220 , data of the block in the redundant disk 30 a corresponding to the preceding block in the suspect disk 30 b , and reads from the buffer 14 a , data of the preceding block in the suspect disk 30 b . If the preceding block is already diagnosed, the write omission-detecting unit 13 b reads from the cache memory 220 , data of the block in the redundant disk 30 a corresponding to a succeeding block in the suspect disk 30 b and reads from the buffer 14 a , data of the succeeding block in the suspect disk 30 b.

Next, the write omission-detecting unit 13 b determines whether the read data of the redundant disk 30 a matches with the read data of the suspect disk 30 b . If the data of the redundant disk 30 a does not match with the data of the suspect disk 30 b , the write omission-detecting unit 13 b notifies the later explained recovery unit 13 c that the block includes the write omission. If the data of the redundant disk 30 a matches with the data of the suspect disk 30 b , the write omission-detecting unit 13 b notifies the recovery unit 13 c that the block does not include the write omission.

The write omission detecting process is explained by way of a specific example with reference to FIGS. 5 and 6 . As shown in FIG. 5 , the write omission-detecting unit 13 b reads from the retrieved cache memory 220 of the CM 20 , data of the block in the redundant disk 30 a corresponding to the preceding block (data “B” in the example shown in FIG. 5 ) and reads data of the preceding block from the buffer 14 a of the DA 10 (data “Old” in the example shown in FIG. 5 ). Next, the write omission-detecting unit 13 b determines whether the read data of the redundant disk 30 a matches with the read data of the suspect disk 30 b . If the read data of the redundant disk 30 a does not match with the read data of the suspect disk 30 b , the write omission-detecting unit 13 b determines that the block that stores the data includes the write omission.

As shown in FIG. 6 , if a block within a diagnosis range cannot be read due to the read error (a block “D” in the example shown in FIG. 6 ), the write omission-detecting unit 13 b executes a diagnosis skip to remove the block from a detection target without determining whether the data of the redundant disk 30 a matches with the data of the suspect disk 30 b . If the disks 30 are in a degenerate state and the redundant disk 30 a does not exist, because the write omission detecting process cannot be carried out, several blocks in the vicinity of the block having the unrecovered read error are likely to include obsolete data. Due to this, an error reply is returned in response to a read request to the blocks.

Returning to FIG. 3 , the recovery unit 13 c carries out recovery of data and restores normalcy. To be specific, upon receiving the notification from the error detecting unit 13 a to execute the recovery process according to the error content for an error other than the unrecovered read error, the recovery unit 13 c executes the recovery process according to the error content. Further, upon receiving the notification that the block includes the write omission, the recovery unit 13 c updates the block that includes the write omission in the suspect disk 30 b to the corresponding block of the redundant disk 30 a.

After updating the block that includes the write omission or after receiving the notification that the block does not include the write omission, the recovery unit 13 c determines whether the succeeding block is already diagnosed. If the succeeding block is not already diagnosed, the recovery unit 13 c notifies and instructs the write omission-detecting unit 13 b to carry out a diagnosis of the succeeding block. If the succeeding block is already diagnosed; the recovery unit 13 c carries out the recovery process of error Logical Block Address (LBA) that indicates the block that includes the unrecovered read error.

The recovery process is explained by way of a specific example with reference to FIG. 7 . As shown in FIG. 7 , if data of the preceding block “B” in the suspect disk 30 b is “Old” due to the write omission, the recovery unit 13 c reads data “B” of the preceding block in the redundant disk 30 a , and updates the read data “B” as data of the preceding block of the suspect disk 30 b . In a method to carry out recovery, because the redundant disk 30 a exists, the suspect disk 30 b can be treated as a failed disk, thereby losing redundancy and resulting in the degenerated state.

›DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS · 3 of 4

The process performed by the device adaptor 10 according to the first embodiment is explained with reference to FIG. 8 . FIG. 8 is a flowchart of a process operation performed by the device adaptor 10 according to the first embodiment.

As shown in FIG. 8 , upon occurrence of an error during the disk reply at the time of reading data from the disks 30 (Yes at step S 101 ), the error detecting unit 13 a of the device adaptor 10 determines whether the error is the unrecovered read error (step S 102 ). If the error is the unrecovered read error (Yes at step S 102 ), the error detecting unit 13 a notifies the write omission-detecting unit 13 b to carry out the write omission detecting process in the periphery of the block that includes the unrecovered read error.

If the error is not the unrecovered read error (No at step S 102 ), the error detecting unit 13 a notifies the recovery unit 13 c to carry out the write omission detecting process in the periphery of the block that includes the unrecovered read error, and instructs the write omission-detecting unit 13 b to carry out the recovery process that is explained later (step S 103 ). Upon receiving the notification from the error detecting unit 13 a to execute the recovery process according to the error content for an error other than the unrecovered read error, the recovery unit 13 c carries out the recovery process according to the error content (step S 104 ).

The write omission detecting process performed by the device adaptor 10 according to the first embodiment is explained next with reference to FIG. 9 . FIG. 9 is a flowchart of a write omission detecting process operation performed by the device adaptor 10 according to the first embodiment.

As shown in FIG. 9 , upon receiving the notification from the error detecting unit 13 a to carry out the write omission detecting process, the write omission-detecting unit 13 b of the device adaptor 10 retrieves the cache memory 220 of the CM 20 (step S 201 ). Next, the write omission-detecting unit 13 b determines whether the preceding block is already diagnosed (step S 202 ). If the preceding block is not already diagnosed (No at step S 202 ), the write omission-detecting unit 13 b reads from the cache memory 220 , data of the block in the redundant disk 30 a corresponding to the preceding block of the suspect disk 30 b (step S 203 ) and reads from the buffer 14 a , data of the preceding block of the suspect disk 30 b (step S 204 ).

If the preceding block is already diagnosed (Yes at step S 202 ), the write omission-detecting unit 13 b reads from the cache memory 220 , data of the block in the redundant disk 30 a corresponding to the succeeding block of the suspect disk 30 b (step S 205 ) and reads from the buffer 14 a , data of the succeeding block of the suspect disk 30 b (step S 206 ). Next, the write omission-detecting unit 13 b determines whether the read data of the redundant disk 30 a matches with the read data of the suspect disk 30 b (step S 207 ). If the read data of the redundant disk 30 a does not match with the read data of the suspect disk 30 b (No at step S 207 ), the write omission-detecting unit 13 b notifies the later explained recovery unit 13 c that the block includes the write omission.

Upon receiving from the write omission-detecting unit 13 b the notification that the block includes the write omission, the recovery unit 13 c updates the block that includes the write omission in the suspect disk 30 b to the corresponding block of the redundant disk 30 a (step S 208 ). Further, if the read data of the redundant disk 30 a matches with the read data of the suspect disk 30 b (Yes at step S 207 ), the write omission-detecting unit 13 b notifies the recovery unit 13 c that the block does not include the write omission.

After updating the block that includes the write omission (step S 208 ) or after receiving the notification that the block does not include the write omission (Yes at step S 207 ), the recovery unit 13 c determines whether the succeeding block is already diagnosed (step S 209 ). If the succeeding block is not already diagnosed (No at step S 209 ), the recovery unit 13 c notifies and instructs the write omission-detecting unit 13 b to diagnose the succeeding block and the write omission detecting process moves to step S 202 . If the succeeding block is already diagnosed (Yes at step S 209 ), the recovery unit 13 c carries out the recovery process of error LBA that indicates the block that includes the unrecovered read error (step S 210 ).

The device adaptor 10 detects the block that includes the read error and detects the write omission in the blocks that are within the predetermined range from the detected block. Due to this, when carrying out the writing process, the write omission is detected without detecting the write omission in all the blocks. Thus, deterioration in the processing performance can be prevented while detecting the write omission.

According to the first embodiment, the predetermined range is received, the predetermined range is set, and the write omission is detected in the blocks that are within the set predetermined range. As a result, the predetermined range is set randomly without necessitating a processing load to dynamically change the predetermined range and the write omission can be detected more easily.

According to the first embodiment, if a block within the predetermined range is unreadable, the block is removed from the detection target. Thus, by detecting only the blocks within the predetermined range, the write omission scan be detected more easily.

According to the first embodiment, data of the detected block that includes the write omission is updated to data of the corresponding block in the redundant disk. Thus, the data of the block that includes the write omission can be normalized.

The embodiment of the present invention is explained. However, various modifications may be made other than the specific details and representative embodiments shown and described herein. Other embodiments included in the present invention are explained below as a second embodiment of the present invention.

›DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS · 4 of 4

(1) Write Omission Detection Range

A prior set detection range of the write omission is explained in the first embodiment. However, the present invention is not to be thus limited and the detection range of the write omission can also be changed dynamically.

To be specific, the device adaptor 10 determines the detection range of the write omission (in other words, a range that indicates a number of blocks for detecting the write omission from the block that includes the unrecovered read error) according to any one or more of a number of heads that carry out read/write, a rotating speed of the heads, a disk vendor, and a type of the disk. When carrying out the write omission detecting process, the device adaptor 10 detects the write omission within the determined detection range.

Thus, the predetermined range is determined according to any one or more of the number of heads that carry out read/write, the rotating speed of the heads, the disk vendor, and the type of the disk and the write omission is detected in the blocks that are within the predetermined range. Thus, dynamically changing the predetermined range without fixing the predetermined range enables to detect the write omission further appropriately.

(2) Diagnosis Skip

In the first embodiment, if a block within the diagnosis range cannot be read due to the read error, the block is removed from a write omission detection target. However, if a block within the diagnosis range cannot be read due to the read error, the write omission can also be detected in an adjoining block of the block. For example, if the device adaptor 10 detects a block which includes an unrecovered read error and cannot read a succeeding block of the block that includes the unrecovered read error, the device adaptor 10 treats a further succeeding block as the write omission detection target and detects the write omission.

Thus, if a block within the predetermined range cannot be read, the write omission is detected in the adjoining block of the block. Due to this, apart from the blocks within the predetermined range, the write omission is also detected in blocks that are outside the predetermined range but are highly likely to include the write omission, thus enabling to further precisely detect the write omission.

(3) System Structure etc.

The constituent elements of the device illustrated are merely conceptual and may not necessarily physically resemble the structures shown in the drawings. For instance, the device need not necessarily have the structure that is illustrated. The device as a whole or in parts can be broken down or integrated either functionally or physically in accordance with the load or how the device is to be used. For example, the error detecting unit 13 a and the write omission-detecting unit 13 b can be integrated. Further, the process functions performed by the apparatus are entirely or partially realized by a CPU or a program executed by the CPU or by a hardware using wired logic.

All the automatic processes explained in the present embodiment can be, entirely or in part, carried out manually. Similarly, all the manual processes explained in the present embodiment can be entirely or in part carried out automatically by a known method. The sequence of processes, the sequence of controls, specific names, and data including various parameters can be changed as required unless otherwise specified.

(4) Computer Programs

Each process explained in the embodiment can be realized by executing a prior formulated computer program on a computer. An example of the computer, which executes the computer program that includes functions similar to the embodiment mentioned earlier, is explained next. FIG. 10 is a block diagram of the computer that executes a write omission detecting program.

As shown in FIG. 10 , a computer 600 as the write omission detecting program includes a CM control interface 610 , a disk control interface 620 , a Read Only Memory (ROM) 630 , a CPU 640 , and a Random Access Memory (RAM) 660 that are connected by a bus 650 .

As shown in FIG. 10 , the ROM 630 prior stores therein a device adaptor that exhibits functions similar to the functions explained the embodiment mentioned earlier, in other words, an error detecting program 631 , a write omission detecting program 632 , and a recovery program 633 . Similarly as each component of the device adaptor 10 shown in FIG. 3 , the error detecting program 631 , the write omission detecting program 632 , and the recovery program 633 can be appropriately integrated or broken down.

The CPU 640 reads from the ROM 630 and executes the error detecting program 631 , the write omission detecting program 632 , and the recovery program 633 , thus causing the error detecting program 631 , the write omission detecting program 632 , and the recovery program 633 to function as an error detecting process 641 , a write omission detecting process 642 , and a recovery process 643 respectively. The error detecting process 641 , the write omission detecting process 642 , and the recovery process 643 correspond to the error detecting unit 13 a , the write omission-detecting unit 13 b , and the recovery unit 13 c respectively that are shown in FIG. 3 .

The CPU 640 reads data from a not shown disk, stores the read data in a buffer 661 of the RAM 660 , and executes various processes based on the data that is stored in the RAM 660 .

According to an embodiment of the present invention, when carrying out a write process, because a write omission is detected without detecting the write omission in all the blocks, deterioration in the processing performance can be prevented while detecting the write omission.

According to an embodiment of the present invention, the write omission can be detected more easily and more precisely. Moreover, data of a block that includes the write omission can be normalized.

Although the invention has been described with respect to a specific embodiment for a complete and clear disclosure, the appended claims are not to be thus limited but are to be construed as embodying all modifications and alternative constructions that may occur to one skilled in the art that fairly fall within the basic teaching herein set forth.

Claims as granted

17 claims

Log in to read the claims of this application.

Log in to unlock

Classifications

3 codes
IPC · International Patent Classification
Section G — Physics
  • G06F11/00
USPC · US Patent Classification
714/6714/801

Claim changes

Soon
Coming soonHow the claims changed between publication and grant

See which claims were amended, added or cancelled during examination, with every added and removed word marked.

AmendedAddedCancelledUnchanged

The published claims of this application are not paired with the granted ones in what we hold.

File wrapper

⤢ drag to zoomJan 2008Jul 2008Jan 2009Jul 2009Jan 2010Jul 2010Jan 2011USPTOApplicantNon-final rejectionResponse after non-finalRequest for continued examinationResponse after non-final
USPTOApplicanthover for detail · click to open
Pendency
3.5 y
1,281 days filing → grant
Office actions
3
non-final + final
Responses
2
1 RCE
Examiner
Christopher S McCarthy
art unit 2113 · TC 2100
Citations: 16 back · 0 forward

See the full prosecution history — every USPTO and applicant action on this file, in order.

Log in to unlock

Documents

Log in to open the documents of this file: the application as filed, every office action and response, the notice of allowance.

Log in to unlock

Chain of title

⤢ drag to zoom20082010201220142016201820202022202420262028Owner 1
Titlehover for detail · click to open

See the full assignment history — every owner this patent has passed through, with recordation dates and reel/frame numbers.

Log in to unlock