Abstract:
Provided are method, system, and program for returning attention to a processing system requesting a lock. A lock request for a resource is received from the processing system. Indication is made of a connection path on which the processing system initially communicated an establish request to establish a connection. Attention is returned on the indicated connection path to the processing system to signal the processing system that the processing system may own the requested lock in response to the lock for the resource becoming available. Subsequent messages are received from and transmitted to the processing system concerning the resource on at least one additional path.

Description:
BACKGROUND OF THE INVENTION  
       [0001]     1. Field of the Invention  
         [0002]     The present invention relates to a method, system, and program for returning attention to a processing system requesting a lock  
         [0003]     2. Description of the Related Art  
         [0004]     In certain computing environments, multiple host systems may communicate with multiple control units providing access to storage devices, such as interconnected hard disk drives through one or more logical paths. The interconnected drives may be configured as a Direct Access Storage Device (DASD), Redundant Array of Independent Disks (RAID), Just a Bunch of Disks (JBOD), etc. For instance, the hosts may implement International Business Machines Corporation&#39;s (IBM®) Transaction Facility Processing (TPF) operating system in different processing systems in the hosts that issue Multi-Path Lock Facility (MPLF) locking requests to a control unit, such as an IBM Enterprise Storage Server (ESS)®, for data in a storage device managed by the ESS receiving the request. (IBM and ESS are registered trademarks of IBM). The ESS server microcode manages the locks for resources requested by the hosts using the TPF software.  
         [0005]     A host granted a lock to a storage resource by the ESS lock manager may have exclusive or non-exclusive access to a track or data in the storage devices managed by the ESS. In this way, the ESS server manages locking for requests from many host systems.  
         [0006]     In host systems implementing the IBM Enterprise Systems Architecture/390® (ESA/390), the processing systems executing in each host may comprise logical partitions of a processor, which divides a single processor into two or more logical independent processing systems. (IBM Enterprise Systems Architecture/390 is a registered trademark of IBM) Each logical partition communicates with one or more ESS servers, or other control units, over one or more logical paths.  
         [0007]     Each TPF host connected to a logical partition in the ESS is a unique user of that partition. When a user connects to a logical partition, the path and device on which the host connects are retained as the connection path and connection device. This connection path and device may be associated with a particular path group comprising multiple logical paths to a control unit. However, the host TPF software may issue the disband path groups command for the intended connection path and device prior to connection. A user may connect on any logical path into the ESS.  
         [0008]     In the current art, a user within a logical partition executing TPF software or other software capable of issuing the MPLF specific command set, may communicate a lock request to a control unit down a logical path. This path may or may not be the connection path and may or may not be in a path group. If the user cannot get the lock and the user has requested to be queued as a waiter, then once the lock becomes available for the user to hold, the ESS sends the user an attention interrupt and message to notify the user that the user is a holder of the lock. Until the user receives such attention, the user cannot process the user&#39;s I/O and the user&#39;s single threaded queues will increase while waiting to obtain the attention and the lock. The attention is required to go to the connection path/device. If this connection path/device is within a path group, then as per path group architecture, the attention may go to any path in the path group for the device. However, with the path group architecture, the attention may be sent on a path in the path group to a host/user other than the user host/user to which the attention is actually intended. In such case where the attention is sent to the wrong user, the user is unaware of holding the lock due to not receiving the attention and notification. As a result, the user will not process queued requests and the queue will increase. In addition, if the processing system requesting the lock does not get the attention, then the further waiters of the lock will not get processed because the current new holder did not respond to the attention message from the ESS locking facility.  
       SUMMARY  
       [0009]     Provided are method, system, and program for returning attention to a processing system requesting a lock. A lock request for a resource is received from the processing system. Indication is made of a connection path on which the processing system initially communicated an establish request to establish a connection. Attention is returned on the indicated connection path to the processing system to signal the processing system that the processing system may own the requested lock in response to the lock for the resource becoming available. Subsequent messages are received from and transmitted to the processing system concerning the resource on at least one additional path. 
     
    
     BRIEF DESCRIPTION OF THE DRAWINGS  
       [0010]     Referring now to the drawings in which like reference numbers represent corresponding parts throughout:  
         [0011]      FIG. 1  illustrates a computing environment in which embodiments are implemented;  
         [0012]      FIG. 2  illustrates information maintained in a lock table;  
         [0013]      FIG. 3  illustrates information maintained in a connection path table;  
         [0014]      FIG. 4  illustrates information maintained in a path group table;  
         [0015]      FIGS. 5, 6 , and  7  illustrate operations to manage establish connection and lock requests from host systems and attention processing to those hosts; and  
         [0016]      FIGS. 8 and 9  illustrate operations performed to add paths to a path group. 
     
    
     DETAILED DESCRIPTION  
       [0017]     In the following description, reference is made to the accompanying drawings which form a part hereof and which illustrate several embodiments of the present invention. It is understood that other embodiments may be utilized and structural and operational changes may be made without departing from the scope of the present invention.  
         [0018]      FIG. 1  illustrates a computing environment in which aspects of the invention are implemented. One or more hosts  2  (only one is shown) include processing systems  4   a ,  4   b  . . .  4   n  that communicate Input/Output (I/O) requests to control units  6   a ,  6   b  . . .  6   n  through a channel subsystem  8  that provides a plurality of logical paths to the control units  6   a ,  6   b  . . .  6   n . The channel subsystem  8  manages logical paths  10  extending through adaptors  12 . An adaptor provides the physical layer through which logical paths  10  extend to one control unit  6   a ,  6   b  . . .  6   n  or multiple control units through a switch (not shown). The channel subsystem  8  may further associate multiple logical paths  10  with a path group, where all the paths in a path group may be used to communicate with one or more control units  6   a ,  6   b  . . .  6   n.    
         [0019]     The processing systems  4   a ,  4   b  . . .  4   n  each include an I/O manager  13  that manages  110  requests to the control units  6   a ,  6   b  . . .  6   n . A main memory  14  is a memory shared by the processing systems  4   a ,  4   b  . . .  4   n . Each processing system  4   a ,  4   b  . . .  4   n  may comprise a central processing unit (CPU) executing programs, including I/O manager  13  code and channel subsystem  8  code. In further embodiments, each processing system may comprise a logical partition of a processor. In this way, one processor runs multiple logical partitions that each operate as independent systems, executing their own operating system, I/O manager  13  and channel subsystem  8  code. The I/O manager  13  may comprise an operating system or file system to manage I/O requests and handle locking, such as the TPF multi-path lock facility (MPLF). Further details of the TPF system are described in the publication “Transaction Processing Facility: Concepts and Structures”, Version 4, Release 1, document no. GH31-0139-12 (Copyright IBM, June 2002), which publication is incorporated herein by reference in its entirety. Further details of a channel subsystem implementing logical paths is described in the publication “Enterprise System Architecture/390: Principles of Operation”, document no. SA22-7201-08 (Copyright IBM, June 2003), which publication is incorporated herein by reference in its entirety.  
         [0020]     The control units  6   a ,  6   b  . . .  6   n  include a lock manager  15  to manage requests from the processing systems  4   a ,  4   b  . . .  4   n  to access storage resources in the V/O devices  16   a ,  16   b  . . .  16   n , such as tracks, partitions, logical devices, logical unit numbers (LUNs), or other logical or physical units of storage. The control units  6   a ,  6   b  . . .  6   n  have memory  18  in which they maintain a lock table  20 . The components shown in control unit  6   a , such as the lock manager  15 , connection path table  22 , etc., would also be included in the other control units  6   b  . . .  6   n . The lock manager  15  maintains a connection path table  22  providing information on hosts  2  connecting to the I/O devices  16   a ,  16   b  . . .  16   n  managed by that control unit. The control units  6   a ,  6   b  . . .  6   n  may comprise any type of server, such as an enterprise storage server, storage controller, etc., or other device used to manage I/O requests to attached I/O devices, where the I/O devices may comprise storage devices known in the art, such as interconnected hard disk drives (e.g., configured as a DASD, RAID, JBOD, etc.), magnetic tape, electronic memory, etc.  
         [0021]     The control units  6   a ,  6   b  . . .  6   n  further maintain in memory  18  a path group table  24  providing information on the connection paths in each path group, where path groups may be maintained for the I/O devices  16   a ,  16   b  . . .  16   n  indicating the logical paths  10  connecting to I/O devices. Thus, the path group table  24  would associate path groups with I/O devices, and logical paths with the path groups.  
         [0022]     In certain embodiments, logical paths  10  may connect the processing systems  4   a ,  4   b  . . .  4   n  in the host to one or more control units  6   a ,  6   b  . . .  6   n  through a physical layer, such as a cable, connecting directly to one control unit  6   a ,  6   b  . . .  6   n  or connecting through a switch. One processing system  4   a ,  4   b  . . .  4   n  may connect through logical paths implemented in different adaptors  12  to different control units. The host  2  may communicate with the control units  6   a ,  6   b  . . .  6   n  over the logical paths  10 , which may extend through a network, such as a Local Area Network (LAN), Storage Area Network (SAN), Wide Area Network (WAN), wireless network, etc. Alternatively, the host  2  may communicate with the storage controller  6  over a bus interface, such as a Peripheral Component Interconnect (PCI) bus or serial interface.  
         [0023]      FIG. 2  illustrates information included with a lock entry  50 , which comprises the entries in the lock table  20 , including: a resource  52  subject to the lock request, such as a track, partition, logical disk, etc. in one attached I/O device  16   a ,  16   b  . . .  16   n ; a lock held  54  field indicating the type of lock currently held against the resource, e.g., exclusive, non-exclusive, etc.; a holder  56  identifying the processing system  4   a ,  4   b  . . .  4   n  currently holding the lock, indicated in the lock held  54  field; and a waiter queue  58  comprising a pointer to a queue or an actual queue of requests by processing systems  4   a ,  4   b  . . .  4   n  for a lock to the resource  52  that is already held. The waiters in the wait queue  58  wait for the corresponding resource  52  indicated in the entry  50  in which the queue is indicated.  
         [0024]      FIG. 3  illustrates an entry  70  in the connection path table  22  that is added when a processing system  4   a ,  4   b  . . .  4   n  in one host  2  submits an establish request to establish a connection with an I/O device  16   a ,  16   b  . . .  16   n . The connection path table entry  70  includes: a user  72  identifying the host submitting the request; a processing system/logical partition  74  identifying the processing system  4   a ,  4   b  . . .  4   n  or a logical partition therein initiating the establish connection lock request; a connection path  76  identifying a logical path  10  on which the connection was established; and a logical target device  78  identifying a logical device, e.g., logical storage, Logical Unit Number (LUN), etc., within one I/O device  16   a ,  16   b  . . .  16   n  to which the connection is established.  
         [0025]      FIG. 4  illustrates an example of an entry  80  in the path group table  24 , including a path group identifier (ID)  82 ; associated logical paths  84  that are included in the path group; and an I/O device  86  to which the paths in the path group connect.  
         [0026]      FIG. 5  illustrates operations performed by the control unit  6   a ,  6   b  . . .  6   n  to process an establish request from one host  2 . Upon receiving (at block  100 ) an establish connection request from one host  2  on a logical subsystem on one I/O channel and device, referred to as the connection path, the control unit  6   a ,  6   b  . . .  6   n  adds (at block  102 ) an entry  70  to the connection path table  22  for the connection being established, indicating the user  72 , the logical partition/processing system  74  initiating the connection establish request, the connection path  76  on which the establish connection request was communicated, and the target logical storage device  78  with which the connection is being established.  
         [0027]      FIG. 6  illustrates operations performed by the lock manager  15  in the control units  6   a ,  6   b  . . .  6   n  to process a lock request to a storage resource. Upon receiving (at block  120 ) a lock request from one processing system  4   a ,  4   b  . . .  4   n  in one connecting host, e.g.,  2 , the lock manager  15  adds (at block  105 ) to the lock entry  50  for the requested resource, indicated in field  52 , the processing system  4   a ,  4   b  . . .  4   n , or logical partition if the processing system is divided into logical partitions, initiating the request. The processing system  4   a ,  4   b  . . .  4   n  initiating the request is indicated as a holder  56  or a waiter in the waiter queue  58 , depending on whether the lock for the requested resource is available.  
         [0028]     At this point, the lock manager  15  may disconnect from the processing system  4   a ,  4   b  . . .  4   n  that initiated the request until the lock is available.  
         [0029]      FIG. 7  illustrates operations performed by the lock manager  15  to return attention to a waiter when the lock for a resource becomes available. Upon receiving (at block  150 ) indication of the release of a lock for a resource by a holder, having a corresponding entry  50 , the lock manager  15  processes (at block  152 ) the waiter queue  58  to select one waiter. The selected waiter is set (at block  154 ) to the holder  56 . The lock manager  15  processes (at block  156 ) the connection path table  22  to determine the connection path in field  76  for the new lock holder, i.e., logical path  10  on which the selected waiter initially connected with the establish request. The lock manager  15  then returns (at block  158 ) attention to the new holder, i.e., selected waiter, on the determined connection path. In this way, the attention is returned on the same logical path, i.e., connection path, on which the processing system  4   a ,  4   b  . . .  4   n  initiating the lock originally connected. Thus, the lock manager  15  will not communicate the attention on any path in the path group, but only on the logical path  10  on which the processing system/waiter initially connected with the establish request, regardless of whether the connection path is in a path group. With the described embodiments, attention is returned on the specific logical path on which the waiter connected, not any logical path in a path group including logical paths that do not connect to the processing system  4   a , 4   b  . . .  4   n  waiting for that attention, but instead that connect to other processing systems.  
         [0030]     After attention is returned on the specified logical path, any other message between the host processing system  4   a ,  4   b  . . .  4   n  and control unit  6   a ,  6   b  . . .  6   n  related to the lock or resource may be transmitted on any logical path in the path group used to communicate with that control unit  4   a ,  4   b  . . .  4   n  holding and managing the locks (at block  160 ), such as messages related to read, writes, lock releases, etc.  
         [0031]     In described embodiments, the host  2  may submit requests to the control unit  6   a ,  6   b  . . .  6   n  to add paths to path groups without regard as to whether the path being added is a connection path (i.e., the logical path on which the connection was initially established) on which attention may be returned. The I/O manager  13  algorithm for determining paths to add to a path group may add connection paths to a path group because the lock manager  15  in the control unit  6   a ,  6   b  . . .  6   n  will use the connection path table  22  to return attention down the connection path on which a connection to an I/O device  16   a ,  16   b  . . .  16   n  was established regardless of whether the connection path is in a path group.  
         [0032]      FIG. 8  illustrates operations the host I/O manager  13  performs when adding paths to a path group. Upon initiating (at block  200 ) an operation to add paths to a path group, the host I/O manager  13  determines (at block  202 ) paths to add to a path group. This determination may involve executing a path group algorithm to determine logical paths  10  to add to a path group to increase the number of concurrent connections to an I/O device  16   a ,  16   b  . . .  16   n  or logical area therein. For instance, load balancing or other operations may be performed to determine optimal assignments of logical paths to path groups to provide redundancy of paths to improve bandwidth and handle failovers. The I/O manager  13  issues one or more commands (at block  204 ) to the control unit  6   a ,  6   b  . . .  6   n  to add the determined one or more paths to one or more specified path groups, where the control units  6   a ,  6   b  . . .  6   n  maintain information on path groups in the path group table  24 . The control unit  6   a ,  6   b  . . .  6   n  adds (at block  206 ) information on the paths indicated in the command to associated paths  84  ( FIG. 4 ) in the path group table entry  80  for the identified path group  82  so the paths indicated in the command are associated with the path group indicated in the command.  
         [0033]     In certain embodiments, the host I/O manager  13  may add connection paths to path groups and the control unit  6   a ,  6   b  . . .  6   n  may then add connection paths to a path group entry  80  defined in the path group table  24 . In the described embodiments, connection paths may be assigned to path groups.  
         [0034]      FIG. 9  illustrates operations performed by the control unit  6   a ,  6   b  . . .  6   n  to select a path to use to return data to a host processing system  4   a ,  4   b  . . .  4   n  related to a connection established with an I/O device  16   a ,  16   b  . . .  16   n . Upon processing (at block  230 ) data to return to a host processing system  4   a ,  4   b  . . .  4   n  related to a connection to an I/O device  16   a ,  16   b  . . .  16   n  other than attention for a lock request, the control unit  6   a ,  6   b  . . .  6   n  determines (at block  232 ) the path group associated with the I/O device  16   a ,  16   b  . . .  16   n  involved in the communication from the path group table  24 , which identifies path groups, paths associated with the path groups and the target device to which the paths connect. The control unit  6   a ,  6   b  . . .  6   n  selects (at block  232 ) one path in the determined path group to return data to the host processing system  4   a ,  4   b  . . .  4   n  initiating the request.  
         [0035]     With described embodiments, assignment of paths to path groups does not prevent attention from being returned to a host because the control unit ensures that attention with respect to a lock request is returned down the connection path on which the connection was initially established. Moreover, connection paths may be added to a path group to use for communication between the host and I/O device after or before attention is transmitted down the connection path.  
       Additional Embodiment Details  
       [0036]     The described embodiments for copying data between controllers may be implemented as a method, apparatus or article of manufacture using standard programming and/or engineering techniques to produce software, firmware, hardware, or any combination thereof. The term “article of manufacture” as used herein refers to code or logic implemented in hardware logic (e.g., an integrated circuit chip, Programmable Gate Array (PGA), Application Specific Integrated Circuit (ASIC), etc.) or a computer readable medium, such as magnetic storage medium (e.g., hard disk drives, floppy disks, tape, etc.), optical storage (CD-ROMs, optical disks, etc.), volatile and non-volatile memory devices (e.g., EEPROMs, ROMs, PROMs, RAMs, DRAMs, SRAMs, firmware, programmable logic, etc.). Code in the computer readable medium is accessed and executed by a processor. The code in which preferred embodiments are implemented may further be accessible through a transmission media or from a file server over a network. In such cases, the article of manufacture in which the code is implemented may comprise a transmission media, such as a network transmission line, wireless transmission media, signals propagating through space, radio waves, infrared signals, etc. Thus, the “article of manufacture” may comprise the medium in which the code is embodied. Additionally, the “article of manufacture” may comprise a combination of hardware and software components in which the code is embodied, processed, and executed. Of course, those skilled in the art will recognize that many modifications may be made to this configuration without departing from the scope of the present invention, and that the article of manufacture may comprise any information bearing medium known in the art.  
         [0037]     The described operations may be performed by circuitry, where “circuitry” refers to either hardware or software or a combination thereof. The circuitry for performing the operations of the described embodiments may comprise a hardware device, such as an integrated circuit chip, Programmable Gate Array (PGA), Application Specific Integrated Circuit (ASIC), etc. The circuitry may also comprise a processor component, such as an integrated circuit, and code in a computer readable medium, such as memory, wherein the code is executed by the processor to perform the operations of the described embodiments.  
         [0038]     In described embodiments, a host adds paths to a path group, where one path group provides paths for one host. In additional embodiments, multiple hosts may add their logical paths to a single path group, such that certain logical paths in the path group enable communication with different hosts.  
         [0039]     In described embodiments, the lock manager maintained the logical path on which the processing system connected. In alternative embodiments having multiple physical connections to the control unit, the lock manager may indicate the physical connection on which to return status, as opposed to the logical connection.  
         [0040]      FIGS. 2, 3 , and  4  show certain information included in the lock table entry, connection path entry, and path group entry. In alternative embodiments, this information may be stored in different data structures having different formats and information than shown.  
         [0041]     The illustrated operations of  FIGS. 5-9  show certain events occurring in a certain order. In alternative embodiments, certain operations may be performed in a different order, modified or removed. Moreover, steps may be added to the above described logic and still conform to the described embodiments. Further, operations described herein may occur sequentially or certain operations may be processed in parallel. Yet further, operations may be performed by a single processing unit or by distributed processing units.  
         [0042]     The foregoing description of various embodiments of the invention has been presented for the purposes of illustration and description. It is not intended to be exhaustive or to limit the invention to the precise form disclosed. Many modifications and variations are possible in light of the above teaching. It is intended that the scope of the invention be limited not by this detailed description, but rather by the claims appended hereto. The above specification, examples and data provide a complete description of the manufacture and use of the composition of the invention. Since many embodiments of the invention can be made without departing from the spirit and scope of the invention, the invention resides in the claims hereinafter appended.