METHOD, PROCESS AND SYSTEM FOR SHARING DATA IN A HETEROGENEOUS STORAGE NETWORK
A method, process and system of controlling the transmission of data in a heterogeneous environment having mainframe based storage using FICON and an open system based storage using FC. The invention bridges the heterogeneous environment while maintaining DASD/Disk neutrality. The bridge is a gateway programmed to permit applications residing on the mainframe or open system to map logic paths thereby eliminating or reducing the need to store data prior to transmission. The gateway is able to appear to the first storage device as a standard CTC connection to a mainframe, while appearing to the open system as a number of SCSI tape drives.
This application is a Continuation of U.S. patent application Ser. No. 11/582,718, filed Oct. 17, 2006, which claims the benefit of priority of U.S. Provisional Application Ser. No. 60/728,036, filed Oct. 17, 2005, which applications are incorporated herein in their entirety by reference.
COPYRIGHT NOTICEA portion of the disclosure of this patent document contains material which is subject to copyright protection. The copyright owner has no objection to the facsimile reproduction by anyone of the patent document or the patent disclosure, as it appears in the Patent and Trademark Office patent files or records, but otherwise reserves all copyrights whatsoever.
FIELD OF THE INVENTIONThe present invention relates to data transfer and more particularly to the transfer, translation and/or conversion of data in a heterogeneous storage network.
BACKGROUND OF THE INVENTIONAs data continues to grow inside of companies it has become readily apparent to these companies, especially those with large data warehousing installations, that they have a real need for high-speed data sharing between heterogeneous environments consisting of Open Source Systems or servers such as the z/OS server manufactured by IBM and UNIX/Windows servers, mainframes and the like. As customer's acceptance of the value of using Fibre Channel to replace SCSI-attached storage grows, the emergence of Fibre Channel-based data storage networks has become a reality. Currently, these networks generally fall into two distinct categories: The first network, illustrated in
However, these two categories of networks, or any mixture of the networks (see
In today's computing environment, true data sharing exists only on homogeneous platforms. For example, in a z/OS Parallel Sysplex configuration with multiple mainframes acting together as a single system all processors in the Sysplex typically run on similar platforms and have read and write access to data on shared disk storage. Applications running on separate processors can simultaneously read the same copy of the data, but write access requires the data to be locked by a single application in order to preserve data integrity. The process of locking data is managed by hardware and software independent of the disk storage subsystem.
Another example of true data sharing currently used is a pSeries cluster configuration with shared-disk architecture. Clustering technology allows a group of independent nodes to work together as a single system, and in a shared-disk architecture, each node can be connected to a shared pool of disks and its own local disks. All of the nodes have concurrent read and write access to the data stored on the shared disks. As with the z/OS Parallel Sysplex, write access requires the data to be locked by the node requesting the write to preserve data integrity. This locking process is also managed by software independent of the disk storage subsystem.
In corporations, database environments are the repository of the corporate data, and two common scenarios exist, 1) The data processing environments have both z/OS and UNIX/Windows systems, and 2) each of these environments have separate database environments processing information. Because of the difficulty dealing with disparate data types, the situation has been referred to as the “islands of information” problem, and solving this problem of data interchange is key to any successful data warehousing implementation.
Data warehousing is the method of consolidating information (stored in data bases) from one platform to another, or in other words bridging the islands of information. Data warehousing involves the transformation of operational data into informational data for the purpose of analysis. Operational data is the data used to run a business. This data is typically stored, retrieved, and updated by an Online Transactional Processing (OLTP) system. An OLTP system may be, for example, a reservation system, an accounting application, or an order entry application.
Informational data is typically stored in a format that makes analysis much easier. Analysis can be in the form of decision support (queries), report generation, executive information systems, and more in-depth statistical analysis.
In almost every large enterprise, three facts exist: 1) z/OS applications collect the results of the organization's day-to-day activities (it is estimated by IDC and other research firms that 60-70% of corporate data falls into this category); 2) the amount of data that is being collected is quite large; and 3) it is more productive to analyze this information on an UNIX or Windows system. Given these factors, it becomes clear that large amounts (gigabytes to terabytes) of information must be moved, or shared. All of this must be done without affecting the normal operations of the enterprise while the information being shared between the environments must handle the heterogeneous nature of UNIX/Windows to z/OS systems connectivity.
In order to share this data, corporations must decide between the three most common methods: 1) existing Local Area Networks (“LAN) technology, 2) existing pseudo-shared storage hardware, and 3) existing channel technology.
Products currently exist that use some form of inter-process communication, such as Transmission control Protocol and Internet Protocol (“TCP/IP”) sockets, or Message Queue Facility (MQF), to transfer data between the heterogeneous environments. Those using TCP/IP to transfer data between storage devices in a corporation have the same concerns as any computer-to-computer transmission over the Internet. In particular, the use of the TCP/IP sockets creates security concerns for the data stored in the storage devices. However, these products have the undesirable result of using up valuable networking resources, or computational resources, that are otherwise used for data processing needs of the user.
MQF is considered to be a “store and forward” technology. In particular, systems using MQF store messages (data) prior to transmission. Typically, the two systems do not connect to the queue at the same time. Therefore, there is no guarantee of a seamless end-to-end transfer of data in a small window.
Others have attempted to use the I/O bus to control the transmission of data between heterogeneous environments. For example, U.S. Pat. No. 5,906,658 to Raz uses the I/O bus for inter-process communication to transfer messages between a plurality of processes that are communicating with a data storage system. However, it relies on the MQF to transmit the message between the computers. Since this technology is an embedded store and forward technology, the data transfer is not implemented in a fashion that provides an end-to-end pipe with connection and session characteristics, with the semantics needed by applications to guarantee the delivery of data in real time.
Another system using I/O bus to control the transmission of data between storage devices is described in U.S. Patent Publication Number 2002/0004835 to Yarborough. This publication is different than that of Raz since it allows the application to use the I/O bus directly. However, it has the same shortcomings since it also relies on a store and forward MQF technique.
Another product that addresses the problems of transferring data between heterogeneous environments includes Alebra's Parallel Data Mover™ (“PDM”). The PDM, a software application, typically has several components installed on z/OS based mainframe computers and on open systems such as UNIX, Linux and Windows servers.
Currently, there is no data sharing, as defined above, that provides for concurrent read/write and that manages the locking process to preserve data integrity for a heterogeneous (z/OS and UNIX/Windows) storage networks or environments. Additionally, there is currently no data sharing solution that conveniently and seamlessly converts data in a heterogeneous storage network system.
There is currently a need in the industry for a product that is able to transfer data files resident on the storage system of one computer or processing system to the data files resident on another computer or processing system, and to be able to move this data in a generally small window.
SUMMARY OF THE INVENTIONThe invention provides for facilitating data sharing or data transferring and/or conversion over FICON-FIBRE channel connectivity, while maintaining DASD/Disk neutrality. In an example embodiment of the invention, the invention is a FICON-FC-FCP bridge creating a bridge to allow parallel movement of data without the need for MQF. To bridge the FICON-FC-FCP, the invention uses a gateway connected generally between a first storage or server device and a second storage or server device. This gateway facilitates the parallel movement of data by controlling the rate of transmission, the conversion between protocols, and the simultaneous read/write ability of multiple storage and/or server devices in a heterogeneous storage network system.
An object of the invention is to reduce server (mainframe and UNIX/Windows) central processing unit (CPU) cycles for data sharing/copying without the need for TCP/IP or a VTAM stack.
Another object of the invention is to provide a high security-channel-based infrastructure.
Another object of the invention is to provide high bandwidth to the network.
Still another object of the invention is to provide a gateway that emulates more than one data storage or server device to permit seamless conversion of data between the different devices.
Yet another object of the invention is to provide an end-to-end pipe for the transmission of data at a high throughput rate with session oriented semantics. Such semantics allow the applications at either end of the pipe to be informed of errors at the other end of the pipe, allowing such applications to know that the communication channel is broken, and to take recovery actions that are appropriate to the applications.
Still yet another object of the invention is to allow the mapping of addresses in one I/O bus attached to one computer system to addresses in another I/O bus attached to another computer system.
A further object of the invention is to provide either end with the address mapping information to allow discovery by the applications at either end of the pipe, allowing such applications to automatically configure the end to end communications channel, shielding the applications from having to know the I/O addresses being connected.
Still another object of the invention is to guarantee that the data traversing an implementation of this invention, from one I/O bus to another, does not get corrupted due to hardware or software defects in the implementation.
The invention will be better understood and objects other than those set forth above will become apparent when consideration is given to the following detailed description thereof. Such description makes reference to the annexed drawings wherein:
The preceding description of the drawings is provided for example purposes only and should not be considered limiting. The following detailed description is provided for more detailed examples of the present invention. Other embodiments not disclosed or directly discussed are also considered to be inherently within the scope and spirit of the present invention.
DESCRIPTION OF THE PREFERRED EMBODIMENTExample embodiments of the invention illustrated in the accompanying Figures will now be described with the method, process and system for moving or sharing data between heterogeneous environments being indicated by the numeral 10.
I. Network SystemsNetwork systems 12 are typically used for data processing where information is transferred between devices such as mainframes, servers and computers or among servers and/or storage devices. These devices typically include one or more processing means such as a central processor (CPU) and storage means for storing data and other peripheral devices. The connections between the data processing devices can be made through a fabric of optical fibers, routers, switches and the like. The optical fibers and switches create channels by which the information or data is transmitted between the devices.
The storage devices and/or servers and computers typically include a number of storage disks for storing programs, data and the like. Central processing units in the devices permit the high speed transfer of data there between via the optical fibers.
Referring to
Traditional storage network systems were homogenous, i.e., systems using the same operating systems or other software, such as Unix/Windows or an Open Source software. Today, however, modern storage network systems are heterogeneous using both mainframe, i.e., z/OS, based storage devices that use fiber connectivity (FICON) and open systems, i.e., Unix/Windows, based storage devices that utilize Fibre Channel (FC). The present invention provides a device, system and method that simplify the transmission of this heterogeneous data between mainframe base storage systems in a FICON environment and open systems based storage systems in a Fibre Channel environment.
II. Simplified Network SystemTurning now to
Other storage and/or data processing systems can also be used in conjunction with or in place of the first 14 and second 16 devices. For example, in one embodiment of the invention, the first storage/server device 14 can be a Mainframe such as the z/Series or S/390 servers manufactured by IBM and the second storage/server device 16 can be a Server such as SUN, pSeries or Windows servers. Any type of storage or server device capable of connecting to FC, FICON or other network connectivity may be used with the present invention.
Referring to
Referring to
The gateway 12 may also include one or more USB connections 13d, and/or at least one Ethernet connection 13e for permitting a user to connect to the Internet or other network. The gateway 12 can also include one or more connectors 13f for connecting a monitor, a keyboard, a mouse or other peripheral devices. A user can use the peripheral devices to access a graphic user interface (GUI) 18 residing on the gateway 12 to control the transmission and/or conversion of data in the heterogeneous environment.
IV. Gateway Software ComponentsReferring to
In one embodiment, the gateway 12 also includes a channel-to-channel (CTC) control module 26 having a FICON CTC driver 27 and a CTC assisting application 28 connected between the FICON interface 13a and the PCM 22. The CTC control module 26 facilitates the control of the channel-to-channel connection between the first storage/server device 14 on the FICON network and the second storage/server device 16 on the SCSI network.
IV. Control of Data via the GatewayThrough a keyboard or other peripheral device a user can use the GUI 18 to configure the parallel transfer and/or conversion of data between the first 14 and second 16 storage/server devices. Referring to
Continuing with
The pdm character driver 24 and a SCSI target subsystem 23 will allow an application residing on either the first device 14 or the second device 16 to send and/or receive data packets to the SCSI target driver 25 for the Fibre Channel cards 13b. In one embodiment, as illustrated in
In one embodiment of the invention, the pdm character driver 24 and the associated SCSI target driver 25 hide or mask at least a portion, but can mask all of the details, of the SCSI commands and interface, as well as the Channel commands and interface; and in one embodiment, can allow a maximum of 256 concurrent file openings. Although a maximum of 256 concurrent file openings are disclosed it is possible to include more or less than 256 concurrent file openings. Therefore, the number of concurrent file openings should not be considered a limitation but rather an example. When each file is open a file descriptor is assigned to the pdm character driver 24 that will eventually be associated with a unique logical unit number (LUN) of the SCSI target driver 25.
Referring to
In one embodiment, the configuration file of step 39 can contain the following information for each logical unit:
-
- a) the adapter number;
- b) the LUN; and/or
- c) product information about the type of emulated tape drive, can include for example purposes only:
- i) 8 byte vendor id (e.g. “EXABYTE”);
- ii) 16 byte product id (e.g. “EXB-8500”); and
- iii) 4 byte revision level (e.g. “0101”)
- iv) 9 byte Multiple Virtual Storage (MVS) system SMF ID and channel device number (e.g. “MVS3:050F”)
The name of the active configuration can be /etc/pdm/pdmxmapac or any other naming convention. The name of the special device can be named “/dev/pdm” or any other naming convention. No particular naming convention is required for operation of the invention.
V. Reading and Writing of DataOne of the advantages of the invention is its ability to read and/or write data without corrupting it for others that may need to access it. This is accomplished, in one embodiment, by delivering the pdm character driver 24 to an interface card manufacturer as a binary Red Hat Package Manager (RPM) package. As illustrated in
Referring to
The pdm character driver 24 can execute a stop command pdm_scsi stop at step 47 that will unload all of the target driver components from the kernel 21 at step 48. If the configuration is changed, the script started at step 42 can be called to start and stop the interface at step 49, or the system can be rebooted at step 50. In one embodiment, the pdm character driver 24 can execute a debug command pdm_scsi debug at step 51 to set diagnostic values for the driver components loaded at step 52, as well as to turn on and/or off diagnostics programs at step 53.
Referring back to
Once the CTC application 28 binds to a particular LUN 32 at step 54b the pdm character driver 24 can queue data blocks on two linked lists for each logical unit. As illustrated in
Referring to
In one example embodiment, while the present invention includes a character device, in fact, data is read and written in blocks, which are received and transmitted on the Fibre Channel card 13b as packets. In this example embodiment, only a complete block of data can be read or written. The amount of data returned on a read operation represents what was received in a complete SCSI WRITE command from the SCSI initiator 33 on the second device 16. If a block size requested on the read( ) system call is not large enough to contain the entire received block, an error can be returned to the caller. Therefore, in this embodiment the caller should always supply the maximum data packet size to the read( ) system call. Read( ) and write( ) commands can return with −1 to indicate an error or SCSI event. This error value termed an errno value will indicate what type of SCSI event or error has occurred.
In one embodiment, several ioctl calls are provided in the pdm character driver 24 of the present invention, and are discussed below. These data structures are typically defined in the header file which can be named pdm_ioctl.h, or any other naming convention, and can be included by any application interfacing to the pdm character driver 24.
In an example embodiment of the invention, the data structure used in the ioctl system call to bind to a LUN 32 can include:
Similarly, the following data structure can be used by the application to report various channel events:
The foregoing should be considered as example data structures for binding the LUNs 32 and reporting of channel events. Other data structures are possible and should be considered to be within the spirit and scope of the invention.
Referring to
When the SCSI target subsystem 23 processes a SCSI INQUIRE command 64 transmitted from the SCSI initiator 33 as a result of application 17b on system 16 opening the SCSI device, it places this information in vendor specific parameters starting at byte 96 of the standard INQUIRY data that is returned to the initiator 33 in the response to the INQUIRE command. In
This can be extended, of course, to include all of the configuration information needed to map SCSI target LUNS 32 to FICON CTC devices. For example, in addition to putting the information in the SCSI INQUIRE response, as described above, CTC command packets can be defined which can contain the configuration mappings. This information can be used by the application 17b at the SCSI end of the communications endpoint of the second device 16 or the application 17a at the FICON end of the communications endpoint of the first device 14 to discover all of the mappings of the I/O addresses at one end of the communications connection (e.g. SCSI logical unit number 32) and I/O addresses at the other end (e.g. MVS Device Number of the FICON channel device 66). This information can then be used by applications at either end to build configuration mapping information automatically, alleviating users of the applications from knowing the specific I/O addresses embodied in an implementation of this invention.
It is known that when data is transmitted there is always the chance that it will be corrupted. In one embodiment of the invention, a method is provided for providing a means of ensuring that the data delivered at one end of the communication channel is not corrupted by defects when it is delivered at the other end of the communication channel. For example, as illustrated in
Referring to
Referring to
The types of errors that can be issued vary and will be discussed in this section as only examples of the types of errors possible. Upon an error during a system call an error code may be displayed to a user on GUI 18. The following are example tables of error codes and their possible associated meanings involving the PDM target driver 24. When a system call fails, it can return a −1 value or any other predetermined value. The value of errno will contain the actual cause of the error.
A. open errno values:
B. ioctl errno values:
C. read errno values:
D. write errno values:
As stated above, these codes are examples only. A user can define any codes having similar messages and still be within the spirit and the scope of the invention.
The following sections describe protocol issues related to the interplay between channel events and their impact on the CTC processing application 28 and the pdm character driver 24.
VIII. End of File ProcessingAs illustrated in
This is accomplished in the invention by the PDM application 17a on the MVS system of first device 14 generating a code such as WEOF (X′81 op code), with X′60′ in flags and length of 1. In return, it can expect an immediate response (CE, DE) regardless of whether an end-of-file (EOF) indication has made it to the open systems PDM partner 17b. In this embodiment, this is command chained to a no operation code (NOOP) (X′03′) with X′20′ in flags. The CTC processing application 28, on receipt of the WEOF code can then issue a PDM_IOCRCHANEVENT ioctl command to the files descriptor bound to the associated LUN 32, with the ChannelEvent field set to CHN_EOF. This will cause the pdm character driver 24 to set the file mark bit ON in a subsequently received SCSI READ command, after all current data queued by the pdm character driver 24 has been delivered.
In the other direction, when the pdm character driver 24 receives a SCSI WRITEFILEMARK command, the driver will cause a subsequent read call to fail with the errno value set to EPIPE. All data queued will be delivered to the CTC processing application before delivering this EOF notification. It will be implemented in such a way that the poll command will notify the application that a POLLIN event is available. When the application detects this event, it should respond to a subsequent READ Channel Command Word (CCW) with a unit exception indicating end of data.
IX. SCSI SessionReferring to
Referring to
Referring to
Certain error conditions detected on the channel interface should be reported to the device for all LUN's 32 associated with the channel ID's affected by the error. This is accomplished by issuing a Channel Interface Error (CIE) command such as PDM_IOCRCHANEVENT ioctl with the ChannelEvent field set to at least one of the following codes:
-
- CHN_EQUIPMENT_CHECK
- CHN_SYSTEMRESET
- CHN_SELECTIVERESET
- CHN_HALTIO
- CHN_DATACHECK
- CHN_DATAUNDERRUN
- CHN_UNDEFINEDERROR
These codes are presented for illustration purpose and other codes and naming conventions could be used. Therefore, these should not be considered to be limiting.
In this embodiment, if the emulated SCSI device is in an on-line state, receipt of at least some of these errors will cause it to flush all queued data and to respond to the next subsequently received SCSI command with a SCSI sense code that best describes that condition. This will usually result in the SCSI initiator 33 issuing the command to report an error back to the PDM application 17b on the open systems side of the second device 16, resulting in a file transfer failure if one is in progress. In one embodiment, the under run and data check events will not cause an error to be reported to the SCSI client. If the pdm char driver 24 is able to determine that there is not a file transfer in progress at the time of the event, the system can be configured so that it may not report the error to the initiator 33, but if in doubt, it will always report the error to the next subsequent SCSI command. These events are considered one time events, i.e. once reported, they are considered cleared.
XII. Error Conditions Detected by the SCSI DriverIn general, the nature of SCSI protocol is such that errors can be reported by the target to the device, but errors are never reported from the initiator to the target, i.e. error conditions are reported by the target in response to a received SCSI command. Therefore, unlike channel errors that can occur that will be reported to the pdm char driver 24, the SCSI driver does not report SCSI protocol errors per se to CTC processing application 28.
In one embodiment of the invention, all of the errno return codes that are returned by the SCSI driver can be categorized in three classes:
-
- 1. Conditions that are part of the normal processing of the driver. These should be considered to not really be error conditions. For example, EPIPE is returned when a normal end of file condition has been received in a SCSI WRITEFILEMARK command. The actions that the CTC processing application 28 should take on these conditions have been discussed above. Examples of these errno values are:
- a. EAGAIN
- b. EPIPE
- c. ENOLINK
- 2. Conditions that result from the application issuing a call to the SCSI driver which violates the protocol specified in this design. This most likely is the result of a logic defect in the CTC processing application 28. These errno values are:
- a. ENODEV
- b. EFAULT
- c. EBUSY
- d. ENOTTY
- e. EINVAL
- 3. Conditions that result from the driver encountering an unexpected condition from a service requested from a LINUX kernel or the SCST subsystem 23. For example, failure trying to register an emulated tape device for a specific logical unit 32, or failure trying to allocate kernel 21 memory. This condition is most likely the result of a logic bug in one of the components of the SCSI target interface, or a bug in the Linux kernel. It might result, for example, from a memory leak where allocated memory is never returned to the Linux kernel. Examples of these errno values can include:
- a. ENOMEM
- b. EIO
- 1. Conditions that are part of the normal processing of the driver. These should be considered to not really be error conditions. For example, EPIPE is returned when a normal end of file condition has been received in a SCSI WRITEFILEMARK command. The actions that the CTC processing application 28 should take on these conditions have been discussed above. Examples of these errno values are:
In terms of what the CTC processing application 28 should do on class 2 errors, it is left to the applications 17a and/or 17b residing on the first device 14 and/or the second device 16 as to how to recover. In each of the cases, the driver is left in the state that it was before the error occurred. If the application 17a and/or 17b is able to recover and proceed, it should. However, as these errors indicate that a logic defect is the most likely cause of the error, the best course of action can be for it to cleanly close down the channel id associated with the LUN 32 reporting the error, if channel protocol permits. It can also log diagnostic information that can be inspected post mortem.
Class 3 errors most likely indicate a serious problem in the state of the SCSI target driver, or the kernel 21 itself. For example, if the driver is not able to acquire kernel 21 memory due to a memory leak, it is unlikely that this error will clear itself. It is suggested that the CTC processing application 28 log the fact that the error occurred, close the open driver LUN 32 devices, cleanly take down the channel interface, and reboot the Linux platform. If we consider this to be a situation that is not recoverable, rebooting the Linux server will at least make it possible that the system can be reset and will function when it reboots, avoiding the need for the customer to have to reset the machine via manual intervention.
XIII. Additional Channel CommandsOther than the WEOF and NOOP processing described herein, the PDM application 14 on MVS issues the following channel commands:
X′02′—read, with X′24′ in flags
X′01′—write, with X′24′ in flags
Responses to these commands, other than channel errors, can be CE-DE, CE-DE-UX, or CE-DE-UC.
XIV. Detailed Description of the InterfacesIn use, the pdm character module 22 of the invention acts as an intermediary or bridge for transferring data between an application which sends and receives packets on a channel connected interface and a SCSI target level driver which processes SCSI commands originating from an application 17b connected to a SCSI initiator 33 device driver. As such, it provides a calling interface of entry point routines to be called from the target driver, and a set of routine entry points to be called by the channel connected application.
The CTC processing application 28 can make system calls via the Linux or UNIX system calls read( ), write( ), ioctl( ) and poll( ) as illustrated in
The write( ) system call includes the steps or process of determining if the associated channel device is not configured, not bound, or offline. If so, it will return an appropriate error. If the SCSI device associated with the channel device is not currently reserved by a SCSI client, it will return an error indicating that the remote device is not connected. If the amount of data currently queued for the associated SCSI initiator 33 is less than the maximum queue size, it will queue the data for a subsequent SCSI READ command. Also, it will wake-up any thread waiting due to empty write queue. Otherwise, if the control block indicates non-pended I/O, it will return an error indicating that the queue is full, or, if the control block indicates pended 110, the write( ) system call will remain pending until the amount of data drops below the maximum queue size.
The poll( ) system call will control bits of the call structure that indicate whether the user is polling for data available to be read, or polling for the size of the write queue to be less than the configured maximum. If these conditions are met, it will return such indication to the user. Otherwise, it will wait for the condition requested, or wait for an event that causes the associated SCSI session to be released, or some other error event on the SCSI session. In such a case, it will return an error notification to the user.
The processing of the ioctl( ) system call routine is based on the command code passed in the parameter data structure. These commands are grouped into three general classes called Configuration, Channel Event Notification, and Diagnostics. A pseudo code summary of each of the classes is provided in tables 1-3 below.
The CHN_NOOP can be used to make the beginning and end of a transaction. If received by the driver when data is queued to from a SCSI target LUN, the queued data is inspected to determine if, based on the state of the previous transaction, the queued data should be delivered or flush from the queue. This mechanism allows the driver to recover from badly behaved applications on the FICON and Fibre Channel end points, to ensure that improper data is not delivered to an endpoint.
Processing of CHN_OFFLINE
If the associated channel device is not configured or not bound, return an appropriate error.
The following entry points are routines to be called by the SCSI Target Driver 23. These routines provide the interface between the target driver's 23 processing of SCSI READ and WRITE commands, and data queued for delivery to the SCSI initiator 33 or the channel application 17a by way of the CTC processing application 28.
When a SCSI WRITE command or SCSI WRITE_FILEMARK command is received by the SCSI target subsystem 23 from the SCSI initiator 33, a call to write_to_ch_drv( ) is made. The write_to_ch_drv( ) command determines if the channel device associated with the logical unit 32 is not configured, not bound, or offline, and returns an error if it is so determined. This will cause the target driver 23 to report a failure to the SCSI WRITE (or WRITE_FILEMARK) command with an appropriate sense code. If the event is kPdmEOF, it will put an EOF event at the tail of the read queue. This indicates that a SCSI WRITE_FILEMARK has been received, signaling an end of the current transaction. If the event is kPdmData, and the size of the read queue is less than the configured maximum, it will put the data buffer at the tail of the read queue. Otherwise, it will wait for the read queue size to go below its configured maximum.
When a SCSI READ command is received by the SCSI target subsystem 23 from the SCSI initiator 33, a call to read_from_ch_drv( ) is made. The read_from_ch_drv( ) command determines if the channel device associated with the logical unit 32 is not configured, not bound, or offline, and will return an error indicated by the kPdmNotify event, if it is so determined. This will cause the target driver 23 to report a failure to the SCSI READ command with an appropriate sense code. If there is an event on the write queue, it will take the event of the queue and return it to the caller. If the event is kPdmEOF, and the buffer is the last WEOF queued, then it will mark the flag indicating the last WEOF queued as a NULL, and the SCSI READ response should be sent to the initiator 33 with the FILEMARK bit set. If the event is kPdmData, then the SCSI READ response should be sent to the initiator 33 with the data contained in the kPdmData event. If there is no event on the write queue, it will wait until there is an event on the write queue.
The SCSI target subsystem 23 uses the report_scsi_evt_to_ch_drv( ) command to report a non-data SCSI event to the pdm character driver 24. The events reported can be session up, session down, and/or session error. These can have any naming convention such as, for example, SCSI_SESSION_UP, SCSI_SESSION_DOWN, or SCSI_ERROR. However, other naming conventions are possible and should be considered to be in the scope and spirit of the invention. If the event is SCSI_SESSION_UP, it can mark the control block of the associated Logical Unit 32 as being reserved, meaning that a SCSI RESERVE command has been received from the remote SCSI initiator 33 as illustrated in
If there is data on the read queue, and an EOF is not the last event on the read queue, then it can purge the read queue. This allows a complete transaction that has been queued for delivery to the application 17a to be transmitted successfully, and an incomplete transaction, i.e. a transaction not properly bracketed with NOOP and WEOF CTC command codes, to be flushed. If there is a read thread waiting for data on the read queue, or a thread waiting to put data on the write queue, it can wake up those thread or threads now. If the event is SCSI_ERROR, it can mark the error. This is an indication of a software or hardware failure detected in the SCSI target driver 23, and that all subsequent read( ) or write( ) system calls for the associated Logical Units will fail with an I/O error, thus notifying the application of an unrecoverable error.
Further, additional disclosure not specifically included in the specification herein, but would be known to one skilled in the art should be considered to be inherently included.
Claims
1-42. (canceled)
43. An apparatus for delivering routing information in a heterogeneous storage network system, the apparatus comprising:
- a first computer including a SCSI adapter (Small Computer System Interface);
- a first software component executing at least in part on the first computer;
- a second computer including a FICON communications adapter using CTC (Channel-to-Channel) protocol compatible communications;
- a second software component executing at least in part on the second computer; and
- a device coupled to the first computer and the second computer, the device including a processor programmed to execute instructions that are adapted to communicate with the first computer using standard SCSI protocols, which allow the first software component to identify a communications path to the second computer and communicating with the second computer using the CTC protocol and connecting to the second computer using a CTC unit, wherein the device includes a static mapping between a SCSI logical unit and the CTC unit, for the purpose of passing data between these interfaces within the device, whereby the CTC unit identification known to the second software component is presented to the first software component as information contained within vendor-specific parameters starting at byte 96 of the standard SCSI INQUIRY data as returned by the device as a response to the SCSI INQUIRE command issued by the first software component, such that the first software component initiates and engages in point-to-point transactional communication with the second software component on the second computer identified by that information, with data passing through the device without a need for static routing tables to be configured on the first computer, and allowing the first software component to confirm that an established data communication path from the first software component to the second software component is connected to a correct device attached to the second software component.
44. The apparatus of claim 43, wherein the CTC unit identification known to the second software component on the second system includes an MVS SMFID.
45. The apparatus of claim 43, wherein the CTC unit identification known to the second software component on the second system includes a channel device number.
46. The apparatus of claim 43, wherein the device further comprises a module adapted to load and unload identifier information that provides for the identification of the static mapping.
47. The apparatus of claim 46, wherein the identifier information can be at least one selected from the group comprising an adapter number, at least one logical unit number, and information related to a type of emulation needed.
48. A device, comprising
- at least one SCSI interface to a first computer;
- at least one Channel-to-Channel (CTC) interface to a second computer; and
- device electronics adapted to provide for data to pass between a SCSI network and a CTC network using the at least on SCSI interface and the at least one CTC interface, and further adapted to provide a point-to-point communication protocol using SCSI RESERVE, RELEASE, WRITE, READ, and SCSI End-of-file commands on the SCSI interface(s) and using CTC NOOP, READ, WRITE and WEOF commands on the CTC interface in a specified sequence, as well as other I/O indications, with semantics that establish a transactional based communication session, along with associated error indications, which provide feedback to software components on the first and second computers communicating with the device that the transaction has succeeded or failed.
49. The device of claim 48, wherein data transmitted between the first computer and the second computer is read and written in blocks that are received and transmitted on at least one Fibre Channel card as packets.
50. The apparatus of claim 48, wherein the first computer is a mainframe computer.
51. The apparatus of claim 48, wherein the second computer is a server.
52. The apparatus of claim 48, wherein the first computer is a mainframe computer and the second computer is a server.
53. A method of transferring data in a network system, comprising:
- delivering routing information to a first software component executing on a first computer with a SCSI adapter (Small Computer System Interface);
- communicating to the first computer using standard SCSI protocols, allowing the first software component to identify a communications path to a second software component executing on a second computer with an FICON adapter; and
- communicating with the second computer using standard CTC (Channel-to-Channel) protocols and connecting to the second computer using a CTC device and a static mapping between a SCSI logical unit and the CTC device, wherein the CTC device identification known to the second software component is presented to the first software component as information contained within the vendor-specific parameters starting at byte 96 of the standard SCSI INQUIRY data as a response to the SCSI INQUIRE command issued by the first software component, providing the first software component to initiate and engage in point-to-point transactional communication with the second software component identified by that information, without the need for static routing tables to be configured on the first computer, and further allowing the first software component to confirm that the established data communication path from the first software component to the second software component is connected to a correct device attached to the second software component.
54. The method of claim 53, wherein the CTC unit identification known to the second software component on the second system includes an MVS SMFID.
55. The method of claim 53, wherein the CTC unit identification known to the second software component on the second system includes a channel device number.
56. The method of claim 53, further comprising loading and unloading identifier information that permits identification of the static mapping.
57. The method of claim 56, wherein the identifier information can include a Multiple Virtual Storage system (MVS) System Management Facility Identifier (SMF ID) of a MVS Logical Partition (LPAR), which controls the first software component.
58. A method of transferring data in a network system, comprising:
- providing a device with at least one SCSI interface and one Channel-to-Channel interface;
- using the device to transfer data between SCSI and channel networks and to provide a reliable point-to-point communication protocol using SCSI RESERVE, RELEASE, WRITE, READ, and SCSI End-of-file commands on the SCSI interface(s) and using CTC NOOP, READ, WRITE and WEOF commands on the CTC interface in a specified sequence, as well as other I/O indications, with semantics that establish a transactional based communication session; and
- providing feedback to software components communicating with the device that the transaction has succeeded or failed.
59. The method of claim 58, further comprising disclosing configuration information to a target subsystem in the device, which facilitates mapping a logical unit to a channel-to-channel device associated with a first computer.
60. The method of claim 59, further comprising detecting an error, such as corruption within a data packet or a session outage of a communications path, from or to either the first computer or the second computer and issuing an error notice to the software components on either computer.
61. The method of claim 60, further comprising transmitting the data packet to the first computer or the second computer if no error is detected.
Type: Application
Filed: Aug 30, 2010
Publication Date: Apr 7, 2011
Applicant: Alebra Technologies, Inc. (New Brighton, MN)
Inventors: Harold H. Stevenson (Holliston, MA), David A. Miranda (Miami, FL), William Yeager (Marietta, GA)
Application Number: 12/871,682
International Classification: H04L 12/56 (20060101);