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 .
Specification
The disclosure is objected to because of the following informalities: In paragraph [0001] of the spec, the patent application number information should be updated to indicate the assigned patent application number.
Appropriate correction is required.
Claim Objections
Claim 13 and claim 18 are objected to because of the following informalities:
In claim 13 line 4, “ACIO” should be spelled out, as it is the first instance of this acronym being used in the chain of claims including claim 11 and claim 13. Note, although the term is first spelled out in claim 12, claim 12 is not in the chain of claims with claim 11 and claim 13.
In claim 18, line 2, “comprises consists” should just be “comprises” or “consists”.
Appropriate correction is required.
Claim Rejections - 35 USC § 112
The following is a quotation of 35 U.S.C. 112(b):
(b) CONCLUSION.—The specification shall conclude with one or more claims particularly pointing out and distinctly claiming the subject matter which the inventor or a joint inventor regards as the invention.
The following is a quotation of 35 U.S.C. 112 (pre-AIA ), second paragraph:
The specification shall conclude with one or more claims particularly pointing out and distinctly claiming the subject matter which the applicant regards as his invention.
Claim 10 is rejected under 35 U.S.C. 112(b) or 35 U.S.C. 112 (pre-AIA ), second paragraph, as being indefinite for failing to particularly point out and distinctly claim the subject matter which the inventor or a joint inventor (or for applications subject to pre-AIA 35 U.S.C. 112, the applicant), regards as the invention.
In claim 10, “the first drive IO” lacks antecedent basis. For example, it is unclear as to whether applicant intends “the first drive IO” to correspond to “the first host IO”, “first backend IO”, or one of the “first one or more drive IOs” all set forth in claim 1.
Appropriate correction is required.
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, 9, 11 and 16-20 are rejected under 35 U.S.C. 103 as being unpatentable over Elliott et al. (Hereinafter Elliott, U.S. Publication No. 2008/0126697) in view of Johnson et al. (Hereinafter Johnson, U.S. Publication No. 2014/0337540) in view of Mukherjee et al. (Hereinafter Mukherjee, U.S. Publication No. 2008/0077736.).
Regarding claim 1, Elliott teaches:
A system, comprising:
a first input-output controller (IOC) device (See First Controller 410a depicted in Figure 6. See First Controller 410a depicted in Figure 4 and Figure 5.) in communication with a first plurality of physical disks, the first plurality of physical disks comprising a first physical disk (See Disk Drives 505 which reside in First Storage Module 205 depicted in Figure 6. See Disk Drive 505 depicted in Figure 5 and Storage Devices 420 depicted in Figure 4. See [0066] “The storage devices 420 may be configured as hard disk drives, optical storage devices, micromechanical storage devices, semiconductor storage devices. See [0067] “The controllers 410 write data to and read data from the storage devices 420 in response to the commands and/or data.” See [0085].);
a second IOC (See Second Controller 410b depicted in Figure 6. See Second Controller 410b depicted in Figure 4 and Figure 5.) in communication with a second plurality of physical disks, the second plurality of physical disks comprising a second physical disk (See Disk Drives 505 which reside in Second Storage Module 210 depicted in Figure 6. See Disk Drive 505 depicted in Figure 5 and Storage Devices 420 depicted in Figure 4. See [0066] “The storage devices 420 may be configured as hard disk drives, optical storage devices, micromechanical storage devices, semiconductor storage devices. See [0067] “The controllers 410 write data to and read data from the storage devices 420 in response to the commands and/or data.” See [0086].);
a first redundant array of independent disks (RAID) …device (See First RAID Controller 105a depicted in Figure 3.),
a first arm corresponding to the first physical disk; and
a second arm corresponding to the second physical disk (See Disk Drives 505 which reside in First Storage Module 205 and Second Storage Module 210 depicted in Figure 6. See Disk Drive 505 depicted in Figure 5 and Storage Devices 420 depicted in Figure 4. See [0066] “The storage devices 420 may be configured as hard disk drives, optical storage devices, micromechanical storage devices, semiconductor storage devices. Under broadest reasonable interpretation, the claimed first and second arm map to the first and second disk drives/storage devices in the prior art.);
hardware circuitry to generate a first plurality of backend IOs…, the plurality of backend IOs comprising:
a first backend IO directed to the first arm; and
a second backend IO directed to the second arm (See Figure 1, Figure 3, and Figure 5, in which the first RAID controller 105a can read and write data to a first and second physical disk/storage. See [0006] “The RAID controllers 105 control the storage units 110, writing data to and reading data from the storage units 110.” See [0052] “Similarly, the first RAID controller 105a may retrieve data from the second storage module 210 of the second enclosure 305b by communicating a read command through the second communication channel 310b and the second storage module 210 of the first enclosure 305a to the second storage module 210 of the second enclosure 305b. The second storage module 210 of the second enclosure 305b may retrieve the data from a storage device and communicate the data through the second communication channel 310b and the second storage module 210 of the first enclosure 305a to the first RAID controller 105a.” See [0067] “The controllers 410 receive commands and data from the RAID controllers 105 through the communication channels 310 of the loop 115. The RAID controller corresponds to the claimed hardware circuitry. The RAID controller generates commands (i.e. first and second backend IOs) directed to the storage modules/devices (i.e. first and second arm.).);
hardware circuitry to transmit the first backend IO for reception by the first IOC device; and
hardware circuitry to transmit the second backend IO for reception by the second IOC device (See [0067] “The controllers 410 receive commands and data from the RAID controllers 105 through the communication channels 310 of the loop 115. The controllers 410 write data to and read data from the storage devices 420 in response to the commands and/or data. For example, a RAID controller 105 may communicate a write command and data to the first controller 410a. The first controller 410a may write the data to storage devices 420 in response to the command.” See [0051], [0077], Figure 3, and Figure 4. The RAID controllers 105a and 105b are hardware circuitry that transmit backend IOs for reception by the first controller 410a and second controller 410b.);
wherein:
the first IOC device comprises:
hardware circuitry to receive the first backend IO; and
hardware circuitry to perform a first one or more drive IOs on the first physical disk in response to receiving the first backend IO (See [0067] “The controllers 410 receive commands and data from the RAID controllers 105 through the communication channels 310 of the loop 115. The controllers 410 write data to and read data from the storage devices 420 in response to the commands and/or data. For example, a RAID controller 105 may communicate a write command and data to the first controller 410a. The first controller 410a may write the data to storage devices 420 in response to the command.” See [0051], [0077], Figure 3, and Figure 4.); and
the second IOC device comprises:
hardware circuitry to receive the second backend IO; and
hardware circuitry to perform a second one or more drive IOs on the second physical disk in response receiving to the second backend IO (See [0067] “The controllers 410 receive commands and data from the RAID controllers 105 through the communication channels 310 of the loop 115. The controllers 410 write data to and read data from the storage devices 420 in response to the commands and/or data. For example, a RAID controller 105 may communicate a write command and data to the first controller 410a. The first controller 410a may write the data to storage devices 420 in response to the command.” See [0051], [0077], Figure 3, and Figure 4.).
Elliott does not explicitly disclose the totality of what Johnson teaches:
a first redundant array of independent disks (RAID) on chip (ROC) device (See [0006] “one of the first and the second controller devices is a Raid on a Chip device,” See [0017] “An SAS RAID on a Chip (RoC or ROC) controller provides SCSI and SATA performance functionalities to host adapters, workstations and server designs. A RoC controller may support internal and external storage devices allowing a system to support enterprise-class SAS drives and desktop-class SATA drives. A RoC controller can connect to drives directly and can use expanders to connect to additional drives. A RoC device may provide PCIe host interface, SAS or SATA ports and a full RAID implementation.”),
Although Elliott does teach a RAID controller device, Elliot does not teach the RAID controller device to be a RAID on chip (ROC) device. Johnson does teach the RAID controller to be a ROC device. It 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 to combine the RAID system of Elliott with the ROC device structure of Johnson to provide PCIe host interface which would result in greater bandwidth, faster data transmission speeds and improved power efficiency, as well as providing SCSI and SATA performance functionalities to host adapters, workstations and server designs (See [0017] of Johnson.).
Elliott and Johnson do not explicitly disclose the totality of what Mukherjee teaches:
a first redundant array of independent disks (RAID) …device (See RAID Controller 102 depicted in Figure 1. See RAID Controller 202A depicted in Figure 2. See Controller 1 depicted in Figure 4.), comprising:
hardware circuitry to manage (See [0030] “FIG. 1 is a schematic block diagram of a management module 100 that communicates with a set of physical disks 104A, 104B, 104N through a RAID controller 102” See [0034] “FIG. 2 is a schematic block diagram of the management modules 100 A-N that communicate with RAID controllers 202 A-N through a configuration module 200”) a first virtual disk (See [0031] “The management module 100 may be an upper level application that may be able to configure a RAID implementation using system specific information which may be available physical drives, possible RAID levels, and/or available virtual disks, etc. The RAID controller 102 may communicate with the set of physical disks 104 through a bus (e.g., IDE, SCSI, SATA, SAS, and/or fiber channel, etc.) to manage each of the set of physical disks 104A, 104B, 104N in the RAID implementation and/or to present the set of physical disks 104A, 104B, 104N as logical units” See [0002] “The RAID system may combine multiple physical disks into a single logical unit and may be seen by an operating system (e.g., Windows, UNIX, and/or Mac OSX, etc.) to be implemented on a server computer, and/or personal computers.” See [0035].) comprising one or more spans, each span comprising one or more arms, each arm corresponding to a different physical disk, the one or more spans comprising a first span, the first span comprising:
a first arm corresponding to the first physical disk; and
a second arm corresponding to the second physical disk (See Figure 4, which depicts a minimum/maximum disk per span field 412f or Controller 1. See [0045] “the min/max disk per span 412 indicates number of disks per span.” Under broadest reasonable interpretation, the claimed first and second arm map to first and second disks in the prior art.);
hardware circuitry to receive a first host IO from a host;
hardware circuitry to generate a first plurality of backend IOs from the first host IO, the plurality of backend IOs comprising:
a first backend IO directed to the first arm; and
a second backend IO directed to the second arm (See [0009] “a RAID controller includes a host I/O port coupled to communicate with a host computer, a physical disk I/O port coupled to communicate with a set of physical disks that forms a RAID implementation, a host I/O processor that communicates with the host I/O port to perform I/O transactions with the host computer through the host I/O port, a cache memory, a physical disk I/O processor to access host data in the cache memory and to communicate with the set of physical disks” See [0028] “The RAID controller 202 may include the host I/O port coupled to communicate with a host computer, physical disk I/O port coupled to communicate with a set of physical disks that forms a RAID implementation, a host I/O processor that communicates with the host I/O port to perform I/O transactions with the host computer through the host I/O port, a cache memory, the physical disk I/O processor to access host data in the cache memory and to communicate with the set of physical disks” See [0035] “The RAID controller 202 A-N may include the host I/O port that communicates with the host I/O processor and the physical disk I/O processor to the set of physical disks 204A-N, 206A-N, 208A-N. The physical disk I/O port may include a number of physical I/O ports to communicate with the set of physical disks 204A-N, 206A-N, 208A-N.” A RAID controller is hardware circuitry that receive host IOs. A host I/O processor is hardware circuitry that communicates with the host I/O port to perform I/O transactions with the host computer through the host I/O port. A Host computer generates backend IOs from the host, which are directed to physical disks (i.e. first and second arm.).);
It 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 to combine the RAID system of Elliott and the ROC device structure of Johnson with the RAID configuration method of Mukherjee to permit configuration of a RAID controller of any set of physical disks forming any RAID implementation without prior knowledge of firmware information of the RAID controller and system information of any set of physical disks forming any of a RAID implementation, thus providing a more flexible way to determine the configuration of a particular RAID implementation.
Regarding claim 2, Elliott teaches:
The system of claim 1, wherein:
the first plurality of disks further comprises a third physical disk (See Disk Drives 505 which reside in First Storage Module 205 depicted in Figure 6. See Disk Drive 505 depicted in Figure 5 and Storage Devices 420 depicted in Figure 4. See [0066] “The storage devices 420 may be configured as hard disk drives, optical storage devices, micromechanical storage devices, semiconductor storage devices.” See [0085].);
the second plurality of disks further comprises a fourth physical disk (See Disk Drives 505 which reside in Second Storage Module 2010 depicted in Figure 6. See Disk Drive 505 depicted in Figure 5 and Storage Devices 420 depicted in Figure 4. See [0066] “The storage devices 420 may be configured as hard disk drives, optical storage devices, micromechanical storage devices, semiconductor storage devices.” See [0086].); and
the system further comprises a second …device, the second … device (See Second RAID Controller 105b depicted in Figure 3.):
hardware circuitry to transmit the third backend IO for reception by the first IOC device; and
hardware circuitry to transmit the fourth backend IO for reception by the second IOC device (See [0067] “The controllers 410 receive commands and data from the RAID controllers 105 through the communication channels 310 of the loop 115. The controllers 410 write data to and read data from the storage devices 420 in response to the commands and/or data. For example, a RAID controller 105 may communicate a write command and data to the first controller 410a. The first controller 410a may write the data to storage devices 420 in response to the command.” See [0051], [0077], Figure 3, and Figure 4. The RAID controllers 105 are hardware circuitry that transmit backend IOs for reception by the first controller 410a and second controller 410b.).
Elliott does not explicitly disclose the totality of what Johnson teaches:
ROC device (See [0006] “one of the first and the second controller devices is a Raid on a Chip device,” See [0017] “An SAS RAID on a Chip (RoC or ROC) controller provides SCSI and SATA performance functionalities to host adapters, workstations and server designs. A RoC controller may support internal and external storage devices allowing a system to support enterprise-class SAS drives and desktop-class SATA drives. A RoC controller can connect to drives directly and can use expanders to connect to additional drives. A RoC device may provide PCIe host interface, SAS or SATA ports and a full RAID implementation.”),
Although Elliott does teach a second RAID controller device, Elliot does not teach the second RAID controller device to be a RAID on chip (ROC) device. Johnson does teach the RAID controller to be a RAID ROC device. It 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 to combine the RAID system of Elliott with the ROC device structure of Johnson to provide PCIe host interface which would result in greater bandwidth, faster data transmission speeds and improved power efficiency, as well as providing SCSI and SATA performance functionalities to host adapters, workstations and server designs (See [0017] of Johnson.).
Elliott and Johnson do not explicitly disclose the totality of what Mukherjee teaches:
the system further comprises a second…device, the second…device (See RAID Controller 202B depicted in Figure 2. See Controller 2 depicted in Figure 4.) comprising:
hardware circuitry to manage (See [0034] “FIG. 2 is a schematic block diagram of the management modules 100 A-N that communicate with RAID controllers 202 A-N through a configuration module 200”) a second virtual disk (See [0031] “The management module 100 may be an upper level application that may be able to configure a RAID implementation using system specific information which may be available physical drives, possible RAID levels, and/or available virtual disks, etc. The RAID controller 102 may communicate with the set of physical disks 104 through a bus (e.g., IDE, SCSI, SATA, SAS, and/or fiber channel, etc.) to manage each of the set of physical disks 104A, 104B, 104N in the RAID implementation and/or to present the set of physical disks 104A, 104B, 104N as logical units” See [0002] “The RAID system may combine multiple physical disks into a single logical unit and may be seen by an operating system (e.g., Windows, UNIX, and/or Mac OSX, etc.) to be implemented on a server computer, and/or personal computers.” See [0035].) comprising a second span, the second span comprising:
a third arm corresponding to the third physical disk; and
a fourth arm corresponding to the fourth physical disk (See Figure 4, which depicts a minimum/maximum disk per span field 412 for Controller 2. See [0045] “the min/max disk per span 412 indicates number of disks per span.”);
hardware circuitry to receive a second host IO;
hardware circuitry to generate a second plurality of backend IOs from the first host IO, the plurality of backend IOs comprising:
a third backend IO directed to the third arm; and
a fourth backend IO directed to the fourth arm (See [0009] “a RAID controller includes a host I/O port coupled to communicate with a host computer, a physical disk I/O port coupled to communicate with a set of physical disks that forms a RAID implementation, a host I/O processor that communicates with the host I/O port to perform I/O transactions with the host computer through the host I/O port, a cache memory, a physical disk I/O processor to access host data in the cache memory and to communicate with the set of physical disks” See [0028] “The RAID controller 202 may include the host I/O port coupled to communicate with a host computer, physical disk I/O port coupled to communicate with a set of physical disks that forms a RAID implementation, a host I/O processor that communicates with the host I/O port to perform I/O transactions with the host computer through the host I/O port, a cache memory, the physical disk I/O processor to access host data in the cache memory and to communicate with the set of physical disks” See [0035] “The RAID controller 202 A-N may include the host I/O port that communicates with the host I/O processor and the physical disk I/O processor to the set of physical disks 204A-N, 206A-N, 208A-N. The physical disk I/O port may include a number of physical I/O ports to communicate with the set of physical disks 204A-N, 206A-N, 208A-N.”);
It 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 to combine the RAID system of Elliott and the ROC device structure of Johnson with the RAID configuration method of Mukherjee to permit configuration of a RAID controller of any set of physical disks forming any RAID implementation without prior knowledge of firmware information of the RAID controller and system information of any set of physical disks forming any of a RAID implementation, thus providing a more flexible way to determine the configuration of a particular RAID implementation.
Regarding claim 3, Mukherjee teaches:
The system of claim 2, further comprising:
a ROC cluster comprising a plurality of RAID devices, the plurality of RAID devices comprising the first ROC device and the second ROC device (See RAID Controllers 202A-202N depicted in Figure 2. See Controller 1 and Controller 2 depicted in Figure 4. The RAID Controllers control a plurality of RAID devices and make up the ROC cluster. The RAID Controller 202A and RAID Controller 202B correspond to the first ROC device and second ROC device.);
wherein:
the first ROC device is a primary ROC device; and
the first ROC device (See RAID Controller 202A depicted in Figure 2. See Controller 1 depicted in Figure 4.) further comprises:
logic to store information about each RAID device in the cluster of ROC devices (See [0032] “The RAID controller 202 may include … a configuration module to provide a management application with system information of a particular set of physical disks forming a particular underlying RAID implementation that may be relevant for creating a configuration on the RAID controller of the particular underlying RAID implementation to enable the management application to configure any set of physical disks forming any RAID implementation without prior knowledge of system information of the any set of physical disks.”), the information comprising:
information about one or more virtual disks managed by each of the plurality of RAID devices in the ROC cluster (See [0004] “The RAID management application may need to possess the ability to acquire system information (e.g., available physical drives, valid RAID levels, and/or available virtual disk size, etc.).” See [0031] “The management module 100 may be an upper level application that may be able to configure a RAID implementation using system specific information which may be available physical drives, possible RAID levels, and/or available virtual disks, etc.”).
Regarding claim 4, Mukherjee teaches:
The system of claim 3, wherein the first ROC device further comprises:
logic to receive the second host IO (See [0009] “a RAID controller includes a host I/O port coupled to communicate with a host computer, a physical disk I/O port coupled to communicate with a set of physical disks that forms a RAID implementation, a host I/O processor that communicates with the host I/O port to perform I/O transactions with the host computer through the host I/O port, a cache memory, a physical disk I/O processor to access host data in the cache memory and to communicate with the set of physical disks” See [0028] “The RAID controller 202 may include the host I/O port coupled to communicate with a host computer, physical disk I/O port coupled to communicate with a set of physical disks that forms a RAID implementation, a host I/O processor that communicates with the host I/O port to perform I/O transactions with the host computer through the host I/O port, a cache memory, the physical disk I/O processor to access host data in the cache memory and to communicate with the set of physical disks” See [0035] “The RAID controller 202 A-N may include the host I/O port that communicates with the host I/O processor and the physical disk I/O processor to the set of physical disks 204A-N, 206A-N, 208A-N. The physical disk I/O port may include a number of physical I/O ports to communicate with the set of physical disks 204A-N, 206A-N, 208A-N.”);
logic to identify the second ROC device as managing the second virtual disk (See [0031] “The management module 100 may be an upper level application that may be able to configure a RAID implementation using system specific information which may be available physical drives, possible RAID levels, and/or available virtual disks, etc. The RAID controller 102 may communicate with the set of physical disks 104 through a bus (e.g., IDE, SCSI, SATA, SAS, and/or fiber channel, etc.) to manage each of the set of physical disks 104A, 104B, 104N in the RAID implementation and/or to present the set of physical disks 104A, 104B, 104N as logical units.” See [0035].); and
Mukherjee does not explicitly disclose what Elliott teaches:
logic to transmit the second host IO for reception by the second ROC device (See [0067] “The controllers 410 receive commands and data from the RAID controllers 105 through the communication channels 310 of the loop 115. The controllers 410 write data to and read data from the storage devices 420 in response to the commands and/or data. For example, a RAID controller 105 may communicate a write command and data to the first controller 410a. The first controller 410a may write the data to storage devices 420 in response to the command.” See [0051], [0077], Figure 3, and Figure 4.).
It 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 to combine the RAID system of Elliott and the ROC device structure of Johnson with the RAID configuration method of Mukherjee to permit configuration of a RAID controller of any set of physical disks forming any RAID implementation without prior knowledge of firmware information of the RAID controller and system information of any set of physical disks forming any of a RAID implementation, thus providing a more flexible way to determine the configuration of a particular RAID implementation.
Regarding claim 5, Elliott teaches:
The system of claim 3, wherein the first ROC device further comprises:
logic to store information about a plurality of IOC devices, the plurality of IOC devices comprising the first IOC device and the second IOC device (See [0067] “The controllers 410 receive commands and data from the RAID controllers 105 through the communication channels 310 of the loop 115. The controllers 410 write data to and read data from the storage devices 420 in response to the commands and/or data. For example, a RAID controller 105 may communicate a write command and data to the first controller 410a.” Controllers 410a and 410b depicted in Figure 4 correspond to the claimed first IOC device and the second IOC device.);
logic to transmit to the second ROC device configuration information about the first IOC device, the second IOC device, the third physical disk, and the fourth physical disk (See [0077] “a second interface module 215b may provide cross communications between the second controller 410b of the first storage module 205 and the second controller 410b of the second storage module 210. Thus if the first controller 410a of the first storage module 205 fails, the enclosure 305 may provide cross communications between the first and second storage modules 205, 210 through the second controller 410b of the first storage module 205, the second interface module 215b, and the second controller 410b of the second storage module 210.”).
Elliott does not explicitly disclose what Mukherjee teaches:
logic to identify the second ROC device as managing the second virtual disk (See [0031] “The management module 100 may be an upper level application that may be able to configure a RAID implementation using system specific information which may be available physical drives, possible RAID levels, and/or available virtual disks, etc. The RAID controller 102 may communicate with the set of physical disks 104 through a bus (e.g., IDE, SCSI, SATA, SAS, and/or fiber channel, etc.) to manage each of the set of physical disks 104A, 104B, 104N in the RAID implementation and/or to present the set of physical disks 104A, 104B, 104N as logical units.” See [0035].); and
It 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 to combine the RAID system of Elliott and the ROC device structure of Johnson with the RAID configuration method of Mukherjee to permit configuration of a RAID controller of any set of physical disks forming any RAID implementation without prior knowledge of firmware information of the RAID controller and system information of any set of physical disks forming any of a RAID implementation, thus providing a more flexible way to determine the configuration of a particular RAID implementation.
Regarding claim 9, Elliott teaches:
The system of claim 3, wherein communication between and among the ROC devices and IOC devices is separate from the host (See Figure 6 in view of [0075] “The SFPs 605 may provide communications between the storage modules 205, 210 of one or more enclosures 305 and between the storage modules 205, 210 and the RAID controllers 105. In one embodiment, the SFPs 605 interface with communications channels 310.” See Figure 1, Figure 3, Figure 4, Figure 5 and Figure 6, in which the RAID Controllers (i.e. ROC devices) and the First and Second Controllers (IOC devices) communicate separately from a host.).
Claim 11 and claim 20 are rejected for the same reasons as claim 1. Claim 16 is rejected for the same reasons as claim 8. Claim 17 is rejected for the same reasons as claim 1. Claim 18 is rejected for the same reasons as claim 1 and claim 2.
Regarding claim 19, Elliott teaches:
The device of claim 11, wherein: the ROC device has no direct communication with the first physical disk; and the ROC device has no direct communication with the second physical disk (See Figure 1 and Figure 3, in which the Raid Controller 105 has no direct communication with the storage devices 420, as there are intervening modules and a controller 410 between the RAID Controller 105 and the storage devices 420.).
Claims 6-8 and 10 are rejected under 35 U.S.C. 103 as being unpatentable over Elliott in view of Johnson in view of Mukherjee in view of Dodson et al. (Hereinafter Dodson, U.S. Publication No. 2016/0154756.).
Regarding claim 6, Dodson teaches:
The system of claim 3, wherein the second ROC device further comprises:
logic to communicate with the host using direct memory access (DMA) (See [0035] “In one embodiment, inter-processor communications are supported by RDMA-NIC emulating DMA controllers at every host port and by a Tunneled Window Connection (TWC) mechanism that implements a connection oriented model for ID-routed PIO access among hosts The RDMA-NIC can send ordered and unordered traffic across the fabric. The TWC can send only ordered traffic across the fabric.”).
It 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 to combine the RAID system of Elliott and the ROC device structure of Johnson and the RAID configuration method of Mukherjee with the data communication method of Dodson to improve data transfer efficiency and reduce CPU workload by facilitating direct data transfers, thus freeing the CPU to handle other critical tasks, enhancing multitasking capabilities.
Regarding claim 7, Dodson teaches:
The system of claim 3, wherein each of the RAID devices in the ROC cluster, and each of the plurality of IOC devices, communicates via peer-to-peer communications over a high-speed bus (See [0003] “Peripheral Component Interconnect Express (commonly described as PCI Express or PCIe) provides a compelling foundation for a high performance, low latency converged fabric. It has near-universal connectivity with silicon building blocks, and offers a system cost and power envelope that other fabric choices cannot achieve. PCIe has been extended by PLX Technology, Inc. to serve as a scalable converged rack level “ExpressFabric.””).
It 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 to combine the RAID system of Elliott and the ROC device structure of Johnson and the RAID configuration method of Mukherjee with the data communication method of Dodson to increase performance, reduce latency, and provide faster data transfer.
Regarding claim 8, Dodson teaches:
The system of claim 7, wherein:
the high-speed bus is a Peripheral Component Interconnect Express (PCIe) bus comprising a PCIe hub (See [0003] “Peripheral Component Interconnect Express (commonly described as PCI Express or PCIe) provides a compelling foundation for a high performance, low latency converged fabric. It has near-universal connectivity with silicon building blocks, and offers a system cost and power envelope that other fabric choices cannot achieve. PCIe has been extended by PLX Technology, Inc. to serve as a scalable converged rack level “ExpressFabric.””); and
the peer-to-peer communications comprise PCIe vendor-defined messages (VDM) (See [0039] “These messages appear on the wire as ID routed Vendor Defined Messages (VDMs). Message pull-protocol read requests that target the memory of a remote host are also sent as ID-routed VDMs.” See [0246] “In ExpressFabric™, it is necessary to implement flow control of DMA WR VDMs in order to avoid deadlock that would occur if a DMA WR VDM that could not be executed or forwarded, blocked a switch queue.”).
Regarding claim 10, Dodson teaches:
The system of claim 1, wherein:
the first IOC device further comprises:
logic to transfer data involved in the first drive IO directly with the host using direct memory access (DMA) (See [0035] “In one embodiment, inter-processor communications are supported by RDMA-NIC emulating DMA controllers at every host port and by a Tunneled Window Connection (TWC) mechanism that implements a connection oriented model for ID-routed PIO access among hosts The RDMA-NIC can send ordered and unordered traffic across the fabric. The TWC can send only ordered traffic across the fabric.”).
Claims 12-13 is rejected under 35 U.S.C. 103 as being unpatentable over Elliott in view of Johnson in view of Mukherjee in view of Weiner et al. (Hereinafter Weiner, U.S. Patent No. 9,524,107.) in view of Erickson et al. (Hereinafter Erickson, U.S. Publication No. 2017/0177241).
Regarding claim 12, Weiner teaches:
The ROC device of claim 11, wherein the logic to generate the first plurality of backend IOs from the first host IO comprises:
logic to generate a first one or more accelerated IOs (ACIO) from the first host IO; and
logic to generate the first plurality of backend IOs from the first one or more ACIOs (See Abstract “The device driver receives an Input/Output (I/O) request from an Operating System (OS) of the host, translates Logical Block Addresses (LBAs) from the received request into physical addresses at multiple storage devices, generates child I/O requests directed to the physical addresses based on the received request,”).
It 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 to combine the RAID system of Elliott and the ROC device structure of Johnson and the RAID configuration method of Mukherjee with the request generation method of Weiner to reduce RAID controller load in increase processing speed of commands/requests (See Col. 2 lines 56-61 of Weiner “Each child I/O request is directed to physical addresses on a single storage device, and therefore is directly interpretable without a need for further RAID processing at RAID controller 120 (i.e., the child I/O requests can qualify for LSI Corporation FastPath processing).”).
Regarding claim 13, Weiner teaches:
The ROC device of claim 11, further comprising:
a cache manager that manages an on-device cache (See Col. 5 lines 13-16 “the device driver maintains an operational index indicating which of the pre-allocated bundles in memory 123 are presently being used for caching data from received I/O requests.”);
logic to receive a second host IO, the second host IO comprising a read operation;
logic to generate a second one or more ACIOs from the second host IO (See Abstract “The device driver receives an Input/Output (I/O) request from an Operating System (OS) of the host, translates Logical Block Addresses (LBAs) from the received request into physical addresses at multiple storage devices, generates child I/O requests directed to the physical addresses based on the received request,”);
logic to determine that at least one of the second one or more ACIOs is a cache hit;
logic to direct the at least one of the second one or more ACIOs to the cache manager;
logic to execute the at least one of the second one or more ACIOs on the cache to read data requested by the second host IO (See Col. 5 lines 13-16 “the device driver maintains an operational index indicating which of the pre-allocated bundles in memory 123 are presently being used for caching data from received I/O requests.” See Col. 9 lines 31-36 “Program and data memory 904 can include local memory employed during actual execution of the program code, bulk storage, and cache memories that provide temporary storage of at least some program code and/or data in order to reduce the number of times the code and/or data are retrieved from bulk storage during execution.” Data that is present in the cache (i.e. cache hit) for a read operation is returned to the host.); and
It 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 to combine the RAID system of Elliott and the ROC device structure of Johnson and the RAID configuration method of Mukherjee with the cache method of Weiner to provide faster data transfer and reduce the number of times the data is retrieved from bulk storage during execution.
Weiner does not disclose what Erickson teaches:
logic to return the data read from the cache to the host by direct memory access (DMA) (See [0044] “DMA engine 29 may transfer data between cache 38 and host device 4 until all of the data requested by the host device 4 has been transferred to host device 4. For example, read module 36 of south controller 30 may continue to retrieve data from NVM 10 and store the data to cache 38, such that DMA engine 29 may transfer the data from cache 38 to host device 4.”).
It 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 to combine the RAID system of Elliott and the ROC device structure of Johnson and the RAID configuration method of Mukherjee and the cache method of Weiner with the data communication method of Erickson to improve data transfer efficiency and reduce CPU workload by facilitating direct data transfers, thus freeing the CPU to handle other critical tasks, enhancing multitasking capabilities.
Claims 14-15 are rejected under 35 U.S.C. 103 as being unpatentable over Elliott in view of Johnson in view of Mukherjee in view of Weiner et al. (Hereinafter Weiner, U.S. Patent No. 9,524,107.).
Regarding claim 14, Weiner teaches:
The ROC device of claim 11, further comprising:
logic to receive a first backend IO completion message from the first IOC device;
logic to receive a second backend IO completion message from the second IOC device; and
logic to transmit a host IO completion message in response to receiving the first backend IO completion message and the second IO completion message (See Col. 3 lines 15-18 “Interface (I/F) 116 (e.g., a Peripheral Component Interconnect (PCI) interface), transfers data (e.g., I/O requests and completions) between host 110 and RAID controller 120 on behalf of the device driver.” See Col. 8 lines 59-61 “There is also tracking information which determines which parts of an RMW request are currently executing (reads, host DMA/XOR, writes, host I/O completion, resource freeing)” See Claim 7 of Weiner “The system of claim 1, wherein: the device driver is further operable to identify a successful completion message from the RAID controller for each of the child I/O requests, and to report successful completion of the received I/O request to the OS.”).
It 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 to combine the RAID system of Elliott and the ROC device structure of Johnson and the RAID configuration method of Mukherjee with the cache method of Weiner to provide faster data transfer and reduce the number of times the data is retrieved from bulk storage during execution.
Regarding claim 15, Weiner teaches:
The ROC device of claim 14, wherein:
the host IO is received from a primary ROC device in communication with the host (See Col. 1 lines 13-14 “In a RAID environment, a host Operating System (OS) provides Input/Output (I/O) requests to a RAID controller.”); and
the logic to transmit a host IO completion message comprises logic to transmit the host IO completion device for reception by the primary ROC device (See Col. 3 lines 15-18 “Interface (I/F) 116 (e.g., a Peripheral Component Interconnect (PCI) interface), transfers data (e.g., I/O requests and completions) between host 110 and RAID controller 120 on behalf of the device driver.” See Claim 7 of Weiner “The system of claim 1, wherein: the device driver is further operable to identify a successful completion message from the RAID controller for each of the child I/O requests, and to report successful completion of the received I/O request to the OS.”).
Conclusion
Any inquiry concerning this communication or earlier communications from the examiner should be directed to MICHAEL L WESTBROOK whose telephone number is (571)270-5028. The examiner can normally be reached Mon-Fri 9am-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, Reginald Bragdon can be reached at (571) 272-4204. 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.
/MICHAEL L WESTBROOK/Examiner, Art Unit 2139
/REGINALD G BRAGDON/Supervisory Patent Examiner, Art Unit 2139