`Whitney
`
`[54]
`
`SYSTEM FOR, AND METHOD OF, OFF(cid:173)
`LOADING NETWORK TRANSACTIONS
`FROM A MAINFRAME TO AN
`INTELLIGENT INPUT/OUTPUT DEVICE,
`INCLUDING OFF-LOADING MESSAGE
`QUEUING FACILITIES
`
`[76]
`
`Inventor: Mark M. Whitney, 3874 Wintergreen
`Ct., Marietta, Ga. 30062-6825
`
`[21] Appl. No.: 09/038,603
`
`[22] Filed:
`
`Mar. 11, 1998
`
`[60]
`
`[51]
`
`[52]
`
`[58]
`
`[56]
`
`Related U.S. Application Data
`Provisional application No. 60/040,555, Mar. 13, 1997.
`
`Int. Cl.7 ............................ G06F 13/14; G06F 13/12;
`G06F 13/10; G06F 3/06; G06F 12/10
`U.S. Cl. ..................................... 710/5; 710/6; 710/52;
`710/54; 710/36; 710/39; 709/215; 709/250;
`709/300
`Field of Search .................................. 710/6, 36, 1, 5,
`710/54; 709/204, 300, 250, 215; 711/152,
`148; 714/38
`
`References Cited
`
`U.S. PATENT DOCUMENTS
`
`4,534,013
`4,901,232
`5,263,161
`5,293,385
`5,333,269
`5,388,219
`5,452,430
`5,463,772
`5,465,328
`5,499,384
`5,577,211
`5,603,059
`
`8/1985 Sheth . ... ... ... ... .... ... ... ... ... ... .... ... ... 710/5
`2/1990 Harrington et al. . ... ... ... .... ... ... ... . 710/6
`11/1993 Barth et al. ............................. 711/152
`3/1994 Hary .......................................... 714/38
`7/1994 Calvignac et al. ...................... 709/215
`2/1995 Chan et al.
`. ... ... ... ... ... .... ... ... ... ... . 710/5
`9/1995 Dievendorff et al.
`............. 395/183.13
`10/1995 Thompson et al. ..................... 395/600
`11/1995 Dievendorff et al.
`............. 395/182.13
`3/1996 Lentz et al. ................................. 710/1
`11/1996 Annapareddy et al.
`........... 395/200.13
`2/1997 Churchill et al. . ... ... ... .... ... ... ... .. 710/36
`
`I 1111111111111111 11111 lllll lllll lllll 111111111111111 lllll 111111111111111111
`US006141701A
`[11] Patent Number:
`[45] Date of Patent:
`
`6,141,701
`Oct. 31, 2000
`
`5,659,794
`5,742,761
`5,764,922
`5,822,766
`5,828,881
`5,925,099
`5,931,918
`5,931,920
`5,983,292
`
`8/1997 Caldarale .................................... 710/1
`4/1998 Olnowich et al. ...................... 709/250
`6/1998 Peacock et al.
`............................ 710/6
`10/1998 Purdham et al.
`....................... 711/148
`10/1998 Wang ...................................... 709/300
`7 /1999 Futral et al.
`... ... ... .... ... ... ... ... ... 709 /204
`8/1999 Row et al. .............................. 709/300
`8/1999 Ghaffari et al.
`............................ 710/5
`11/1999 Nordstrom et al.
`...................... 710/54
`
`Primary Examiner-Thomas C. Lee
`Assistant Examiner-Katharina Schuster
`Attorney, Agent, or Firm-Hale and Dorr LLP
`
`[57]
`
`ABSTRACT
`
`A system for, and method of, off-loading network transac(cid:173)
`tions from a mainframe to an intelligent input/output device,
`including off-loading message queuing facilities. A storage
`controller has a processor and a memory, in which the
`controller receives 1/0 commands having corresponding
`addresses. In the controller memory, a communication stack
`is provided for receiving and transmitting information on a
`network. In addition, a message queue facilities (MQF) is
`provided that cooperates with the communication stack and
`that is responsive to a message queue verb. The MQF causes
`the communication stack to provide information to a queue
`in the MQF or causes a queue in the MQF to provide
`information to the communication stack. Moreover, inter(cid:173)
`face logic is provided in the controller memory and is
`responsive to the 1/0 commands, to determine whether an
`1/0 command is within a first set of predetermined 1/0
`commands. If so, the interface logic maps the 1/0 command
`to a corresponding message queue verb and queue to invoke
`the MQF. In this fashion, the MQF may cooperate with the
`communication stack to send and receive information cor(cid:173)
`responding to the verb, while off-loading the processing
`from a computer client (e.g., a mainframe) of the storage
`controller.
`
`22 Claims, 25 Drawing Sheets
`
`Improved 1/0 Device 100
`
`DASO Storage Control Unit 102
`
`105
`
`MQF
`
`Communications
`Stack
`
`Page 1 of 52
`
`
`
`United States Patent [19J
`Whitney
`
`[54]
`
`SYSTEM FOR, AND METHOD OF, OFF(cid:173)
`LOADING NETWORK TRANSACTIONS
`FROM A MAINFRAME TO AN
`INTELLIGENT INPUT/OUTPUT DEVICE,
`INCLUDING OFF-LOADING MESSAGE
`QUEUING FACILITIES
`
`[76]
`
`Inventor: Mark M. Whitney, 3874 Wintergreen
`Ct., Marietta, Ga. 30062-6825
`
`[21] Appl. No.: 09/038,603
`
`[22] Filed:
`
`Mar. 11, 1998
`
`[60]
`
`[51]
`
`[52]
`
`[58]
`
`[56]
`
`Related U.S. Application Data
`Provisional application No. 60/040,555, Mar. 13, 1997.
`
`Int. Cl.7 ............................ G06F 13/14; G06F 13/12;
`G06F 13/10; G06F 3/06; G06F 12/10
`U.S. Cl. ..................................... 710/5; 710/6; 710/52;
`710/54; 710/36; 710/39; 709/215; 709/250;
`709/300
`Field of Search .................................. 710/6, 36, 1, 5,
`710/54; 709/204, 300, 250, 215; 711/152,
`148; 714/38
`
`References Cited
`
`U.S. PATENT DOCUMENTS
`
`4,534,013
`4,901,232
`5,263,161
`5,293,385
`5,333,269
`5,388,219
`5,452,430
`5,463,772
`5,465,328
`5,499,384
`5,577,211
`5,603,059
`
`8/1985 Sheth . ... ... ... ... .... ... ... ... ... ... .... ... ... 710/5
`2/1990 Harrington et al. . ... ... ... .... ... ... ... . 710/6
`11/1993 Barth et al. ............................. 711/152
`3/1994 Hary .......................................... 714/38
`7/1994 Calvignac et al. ...................... 709/215
`2/1995 Chan et al.
`. ... ... ... ... ... .... ... ... ... ... . 710/5
`9/1995 Dievendorff et al.
`............. 395/183.13
`10/1995 Thompson et al. ..................... 395/600
`11/1995 Dievendorff et al.
`............. 395/182.13
`3/1996 Lentz et al. ................................. 710/1
`11/1996 Annapareddy et al.
`........... 395/200.13
`2/1997 Churchill et al. . ... ... ... .... ... ... ... .. 710/36
`
`I 1111111111111111 11111 lllll lllll lllll 111111111111111 lllll 111111111111111111
`US006141701A
`[11] Patent Number:
`[45] Date of Patent:
`
`6,141,701
`Oct. 31, 2000
`
`5,659,794
`5,742,761
`5,764,922
`5,822,766
`5,828,881
`5,925,099
`5,931,918
`5,931,920
`5,983,292
`
`8/1997 Caldarale .................................... 710/1
`4/1998 Olnowich et al. ...................... 709/250
`6/1998 Peacock et al.
`............................ 710/6
`10/1998 Purdham et al.
`....................... 711/148
`10/1998 Wang ...................................... 709/300
`7 /1999 Futral et al.
`... ... ... .... ... ... ... ... ... 709 /204
`8/1999 Row et al. .............................. 709/300
`8/1999 Ghaffari et al.
`............................ 710/5
`11/1999 Nordstrom et al.
`...................... 710/54
`
`Primary Examiner-Thomas C. Lee
`Assistant Examiner-Katharina Schuster
`Attorney, Agent, or Firm-Hale and Dorr LLP
`
`[57]
`
`ABSTRACT
`
`A system for, and method of, off-loading network transac(cid:173)
`tions from a mainframe to an intelligent input/output device,
`including off-loading message queuing facilities. A storage
`controller has a processor and a memory, in which the
`controller receives 1/0 commands having corresponding
`addresses. In the controller memory, a communication stack
`is provided for receiving and transmitting information on a
`network. In addition, a message queue facilities (MQF) is
`provided that cooperates with the communication stack and
`that is responsive to a message queue verb. The MQF causes
`the communication stack to provide information to a queue
`in the MQF or causes a queue in the MQF to provide
`information to the communication stack. Moreover, inter(cid:173)
`face logic is provided in the controller memory and is
`responsive to the 1/0 commands, to determine whether an
`1/0 command is within a first set of predetermined 1/0
`commands. If so, the interface logic maps the 1/0 command
`to a corresponding message queue verb and queue to invoke
`the MQF. In this fashion, the MQF may cooperate with the
`communication stack to send and receive information cor(cid:173)
`responding to the verb, while off-loading the processing
`from a computer client (e.g., a mainframe) of the storage
`controller.
`
`22 Claims, 25 Drawing Sheets
`
`Improved 1/0 Device 100
`
`DASO Storage Control Unit 102
`
`105
`
`MQF
`
`Communications
`Stack
`
`Page 1 of 52
`
`
`
`,,
`z
`-l!: go T"!
`•
`Stack
`
`Communications
`
`-
`
`.;
`
`116
`
`...
`
`I..,.,..;_
`
`f
`
`MQF
`
`r
`
`~
`
`Buffers
`Cache
`RAM
`
`120
`
`V
`
`I/
`
`Disk
`
`109 /
`
`~
`
`....,
`
`~
`
`Disk
`
`109
`
`~
`
`....,
`
`....
`
`......
`
`..__
`
`Queue Watching
`
`C>♦a♦"& T-'-•-
`
`118a
`
`118 ~
`
`Queue Watching
`
`~
`
`.,.._,:, __ f'a~ha
`Long Message
`112a
`
`112 H
`
`1
`
`Mapping
`
`I __ ,_
`
`l
`
`-, ..
`
`-
`
`!""'"
`I")
`0
`
`Status Table
`Address Watching
`110a
`
`105
`
`:: Address Watching H
`
`Logic
`
`110
`
`DASO Storage Control Unit 102
`
`100
`
`ev1ce
`
`d 1/0 D
`
`mprove
`
`-
`-
`
`t=e,,-;1;+v
`Lock
`
`"u
`.
`Program
`Channel
`
`-
`
`Collection
`Program
`Channel
`
`, ..,..,;,..
`
`1vo..,
`
`lvoa
`
`1011A
`
`108
`
`DASO Engine
`
`~~ i::-
`.-CD 'iii
`~ .!: 'E
`! :a
`L,
`
`t)
`
`,.
`
`·~
`
`·~
`
`Figure 1
`
`Page 2 of 52
`
`
`
`U.S. Patent
`
`Oct. 31, 2000
`
`Sheet 2 of 25
`
`6,141,701
`
`200
`Address Watching
`Logic
`Figure 2
`
`205
`
`Figure 2
`
`210
`
`No ➔
`
`Return to DSTC Processing
`
`Look up MCHR in the
`address watching
`status table
`
`225
`
`active with active
`branch vector
`
`No---
`
`Return to DSTC Processing
`
`Yes
`
`240
`
`250
`
`Get branch vector from
`Enter Prescribed Mapping Logic Routine
`address watching logic
`status table entry and '-------All mapping logic enters will directly return to DSTC
`enter prescribed
`processing unless otherwise noted
`mapping logic routine
`
`Page 3 of 52
`
`
`
`U.S. Patent
`
`Oct. 31, 2000
`
`Sheet 3 of 25
`
`6,141,701
`
`Mapping Logic
`Figure 3
`
`Figure 3
`
`310
`
`No
`
`Open MQF Queue
`Based Upon this
`Record's MCHR
`
`Yes
`
`FILEC
`
`325
`
`330
`
`335
`
`Yes
`
`Put Message to
`MQF Queue
`
`Return to DSTC
`Logic
`
`No + 340
`
`Return to DSTC
`Processing and signal
`error to TPF
`
`Page 4 of 52
`
`
`
`U.S. Patent
`
`Oct. 31, 2000
`
`Sheet 4 of 25
`
`6,141,701
`
`400
`
`Mapping Logic
`Figure 4
`
`405
`
`MQF Queue
`Open?
`
`No
`
`Yes
`415
`
`FIWHC
`request from
`TPF?
`
`No
`
`425
`
`FILUC
`request from
`TPF
`
`No
`
`440
`
`Figure 4
`
`410
`
`Open MQF Queue
`Based Upon this
`Record's MCHR
`Address
`
`420
`
`Yes
`
`Return to DSTC Processing and permit lock facility
`naturally hold record and return to TPF with good
`return (or put into Waiter Queue Pending Unhold from
`another TPF Processor)
`
`430
`
`435
`
`Yes
`
`Put message to
`MQF queue
`
`Return to DSTC Processing and
`permit lock facility to unhold record
`and pass ii to waiting TPF
`Processor and signal good return to
`TPF
`
`445
`
`UNFRC
`request from
`TPF
`
`-Yes
`
`Return to DSTC Processing and permit Lock
`facility to unhold record and pass it to waiting
`TPF Processor
`
`No 450
`
`Return to DSTC
`Processing and
`signal error to TPF
`
`Page 5 of 52
`
`
`
`U.S. Patent
`
`Oct. 31, 2000
`
`Sheet 5 of 25
`
`6,141,701
`
`Mapping Logic
`Figure 5
`
`500
`
`Figure 5
`
`510
`
`No
`
`Open MQF Queue
`based upon this
`record's MCHR
`address
`
`520
`
`Yes
`
`Return to DSTC Processing and pennit lock facility naturally hold
`record and return to TPF with good return (or put into Waiter Queue
`Pending Un hold from another TPF Processor)
`
`527
`
`Fetch the TPF chain of
`records from the DSTC
`and copy to Long Msg
`Staging Cache
`
`530
`Reassemble the chain
`of records into a single
`long message . Ensure
`the integrity of the
`reassembled long
`message
`
`535
`
`Successfully
`reassemble the long
`message?
`
`N ~
`0~
`
`Yes
`
`7 Yes
`L_____..
`
`Put long message
`to MQF queue
`
`70
`
`Return to DSTC Processing and permit lock
`facility to unhold record and pass it to waiting
`TPF Processor and signal good return to TPF
`.... ___ ····-··
`
`---
`
`Yes
`
`No
`
`request from
`TPF?
`
`No
`
`560
`
`UNFRC
`
`Return to DSTC
`Processing and signal
`error to TPF
`- - - · - - - - - ___ ,,.,.
`
`Page 6 of 52
`
`
`
`U.S. Patent
`
`Oct. 31, 2000
`
`Sheet 6 of 25
`
`6,141,701
`
`600
`
`Mapping Logic
`Figure 6
`
`Figure 6
`
`610
`
`No
`
`Open MQF Queue
`Based Upon this
`Record's MCHR
`Address
`
`Yes
`
`620
`
`Yes
`
`Return to DSTC Processing and permit lock facility
`naturally hold record and return to TPF with good
`return (or put into waiter queue pending unhold from
`another TPF Processor)
`
`No
`
`625
`
`FILEC
`request from
`TPF?
`
`630
`
`-Yes
`
`Put Message to
`MQF Queue as
`Unit of Work
`
`635
`
`Return to DSTC Processing and
`signal good return to TPF
`
`No
`
`No
`
`Yes
`
`645
`
`Put Message to
`MQF Queue as
`unit of work and
`then commit the
`unit of Work
`
`655
`
`660
`
`Yes
`
`Execute a Rollback
`for this message's
`unit of work
`
`Return to DSTC Processing and
`permit lock facilif9 to unhold record
`and pass it to waiting TPF Processor
`and signal good return to TPF
`
`Return to DSTC
`Processing and signal
`error to TPF
`
`Page 7 of 52
`
`
`
`U.S. Patent
`
`Oct. 31, 2000
`
`Sheet 7 of 25
`
`6,141,701
`
`Mapping Logic
`Figure 7
`
`700
`
`Figure 7
`
`710
`
`No
`
`Open MQF Queue
`Based Upon this
`Record's MCHR
`Address
`
`720
`
`request from
`TPF?
`
`Return to DSTC Processing and permit lock facility naturally hold
`Yes record and return to TPF with good return (or put into waiter queue
`pending unhold from another TPF Processor)
`
`No725
`
`FILEC
`request from
`TPF?
`
`Yes
`
`727
`
`730
`
`Fetch the TPF chain
`of records from the
`DSTC and copy to
`Long Msg Staging
`Cache
`
`Reassemble the chain of
`records into a single long
`message . Ensure the
`integrity of the
`reassembled long
`message
`
`No
`
`735
`
`Successfully
`reassemble the
`long message?
`
`~ - - - ,~ . . - - - - - - - - -Ye s - - - - - - - - - -~
`745
`
`750
`
`Put long Message
`to MQF Queue as
`Unit of Work
`
`FILUC
`request from
`TPF?
`
`Yes
`
`Commit the unit of
`work to the MQF
`
`No
`
`Yes
`
`755
`
`Return to DSTC Processing and
`signal good return to TPF
`
`760
`
`765
`
`770
`
`UNFRC
`request from
`TPF?
`
`Yes
`
`Execute a rollback
`for this message's
`unit of work
`
`Return to DSTC Processing and permit
`f---------. lock facility to unhold record and pass it to
`waiting TPF Processor and signal good
`return to TPF
`
`Return to DSTC
`Processing and signal
`error to TPF
`
`\
`
`Page 8 of 52
`
`
`
`U.S. Patent
`
`Oct. 31, 2000
`
`Sheet 8 of 25
`
`6,141,701
`
`Mapping Logic
`Figure 8
`
`800
`
`805
`
`MQF Queue
`Open?
`
`No
`
`810
`
`Open MQF Queue
`Based Upon this
`Record's MCHR
`Address
`
`Figure 8
`
`835
`
`No
`
`Return to DSTC Processing
`and signal error to TPF
`
`Yes
`
`830
`
`FINWC
`request from
`TPF?
`
`Yes 840
`
`Get the first
`message from the
`MQF queue for this
`MCHR and transfer
`to DSTC Cache
`
`880
`
`885
`
`Was there a
`Message?
`
`No 890 . -
`
`-
`
`Transfer a null
`message to DSTC
`Cache to indicate
`nothing found in
`Queue
`
`--Yes
`
`Return to DSTC Processing and DSTC to
`pass record to TPF Processor and signal
`good return to TPF
`
`895
`
`---~Yes
`
`Return to DSTC Processing and
`DSTC to pass null record to TPF
`Processor and signal good return to
`TPF
`
`Page 9 of 52
`
`
`
`U.S. Patent
`
`Oct. 31, 2000
`
`Sheet 9 of 25
`
`6,141,701
`
`Mapping Logic
`Figure 9
`
`900
`
`905
`
`MQF Queue
`Open?
`
`No
`
`910
`
`Open MQF Queue
`Based Upon this
`Record's MCHR
`Address
`
`Figure 9
`
`935
`
`No
`
`Return to DSTC Processing and
`signal error to TPF
`
`Yes
`
`FIWHC
`request from
`TPF?
`
`0
`
`Yes
`
`940
`
`Get the Message
`from the MQF Queue
`for this MCHR and
`transfer to DSTC
`Cache
`
`980
`
`985
`
`Was there a
`Message?
`
`eturn to DSTC Processing and DSTC t
`---~-Yes-~~ pass record to TPF Processor and signal
`good return to TPF
`
`No 990
`i
`
`Ensure MQF Triggers
`the queue watching
`logic for this MCHR
`when a Msg arrives in
`its MQF Queue
`
`995
`
`-
`
`Yes
`
`Return to DSTC Processing processing and
`permit lock facility too hold queue wait process
`the MCHR file address as though another TPF
`Processor already has it.
`
`Page 10 of 52
`
`
`
`U.S. Patent
`
`Oct. 31, 2000
`
`Sheet 10 of 25
`
`6,141,701
`
`Figure 10-A
`
`1000
`
`Mapping Logic
`Figure 10-A
`
`1010
`
`MQF Queue
`Open?
`
`No
`
`Open Queue
`Based Upon this
`Record's MCHR
`
`Yes
`
`request from
`TPF?
`
`1020
`
`J3,J
`
`No~
`
`Yes
`
`1030
`
`Get the long
`message from the
`MQF queue and
`place it in the long
`message staging
`cache
`
`1035
`
`1040
`
`1045
`
`Was there a
`Message?
`
`-Yes
`
`Segment the long
`message into a chain of
`TPF records in the long
`msg staging cache
`
`Initialize the long
`message cursor to
`indicate first record of
`chain
`
`1050
`
`Fig-
`01078-
`
`No
`
`1055
`
`Ensure MQF Triggers
`the queue watching
`logic for this MCHR
`when a Msg arrives in
`its MQF Queue
`
`- - - - - - - - ---c.,1159
`Return to DSTC Processing processing and
`permit lock facility too hold queue wait process
`the MCHR file address as though another TPF
`Processor already has it.
`
`Page 11 of 52
`
`
`
`U.S. Patent
`
`Oct. 31, 2000
`
`Sheet 11 of 25
`
`6,141,701
`
`1070
`
`Mapping Logic
`Figure 10-B
`
`Figure 10-8
`
`072
`
`FINWC
`request from
`TPF?
`
`------...;.i092
`
`No
`
`Return to DSTC
`Processing and signal
`error to TPF
`
`Yes
`
`1074
`
`Any more records
`from long message to
`transfer?
`
`No
`
`1076
`
`Transfer a null
`record to DSTC
`Cache to indicate
`end of chain
`
`1078
`
`Transfer the next record
`from the long msg
`staging cache area to
`the DSTC Cache for
`this MCHR
`
`1080
`
`Was this the last
`record in the chain?
`
`Yes
`
`No
`
`t
`
`1085
`
`1090
`
`Flush the TPF record
`chain in the long
`message staging cache
`and zero the long
`message cursor.
`
`Update long message
`cursor to next record of - - - - - - - - - - - -~
`chain
`
`1095
`
`eturn to DSTC Processing an
`DSTC to pass record to TPF
`Processor and signal good return
`toTPF
`
`Page 12 of 52
`
`
`
`U.S. Patent
`
`Oct. 31, 2000
`
`Sheet 12 of 25
`
`6,141,701
`
`Figure 11-A
`
`Mapping Logic
`Figure 11-A
`
`1100
`
`1110
`
`MQF Queue
`Open?
`
`Open queue based
`No----. upon this record's
`MCHR
`
`Yes
`1125
`
`HOLDC
`request from
`TPF?
`
`No
`
`1135
`
`FINWC
`request from
`TPF?
`
`No
`
`1180
`
`I
`
`1130
`
`Yes
`
`Return to DSTC Processing and
`signal TPF with good return
`
`Yes
`
`1137
`
`Get the firsUnext
`message from the
`MQF queue as a
`unit of work for this
`MCHR
`
`1185
`
`1139
`
`Fig-
`1150-A
`
`UNFRC
`request from
`TPF?
`
`Yes
`
`Execute a Commit
`the unit work to the
`MQF Queue
`
`No
`
`1190
`
`1192
`
`1195
`
`FILUC
`request from
`TPF?
`
`Yes
`
`Rollback the Unit
`of Work for this
`MQF Queue
`
`Return te DSTC Processing and
`permit lock facility to unhold record
`and pass it to waiting TPF Processor
`and signal good return to TPF
`
`No 1199
`-- t
`-
`Return to DSTC Proces~
`and signal error to TP~
`
`Page 13 of 52
`
`
`
`U.S. Patent
`
`Oct. 31, 2000
`
`Sheet 13 of 25
`
`6,141,701
`
`Figure 11-B
`
`150
`
`Mapping Logic
`Figure 11-8
`
`1155
`
`Was there a
`message in the MQF
`queue?
`
`Yes
`
`1159
`
`Transfer the next
`message in the unit
`of work from the
`MQF to the DSTC
`Cache for this MCHR
`
`No
`
`1160
`
`Any messages fro
`this unit of work been
`transferred
`
`Yes
`
`1165
`
`Transfer a null
`record to DSTC
`Cache
`to indicate end of
`unit of work
`
`1169
`
`Return to DSTC Processing and
`DSTC to pass record to TPF
`Processor and signal good return
`toTPF
`
`No
`
`1170
`
`Ensure MQF Triggers
`the queue watching
`logic for this MCHR
`when a Msg arrives in
`its MOF Queue
`
`1175
`
`Return to DSTC Processing
`processing and permit lock facility
`too hold queue wait process the
`MCHR file address as though
`another TPF Processor already has
`it.
`
`Page 14 of 52
`
`
`
`U.S. Patent
`
`Oct. 31, 2000
`
`Sheet 14 of 25
`
`6,141,701
`
`1200
`
`Mapping Logic
`Figure 12-A
`
`MQF Queue
`
`-No
`
`1210
`
`Open queue based
`upon this record's
`MCHR
`
`Yes
`
`1230
`
`request from
`TPF?
`
`Yes
`
`Return to DSTC Processing
`and signal good return
`
`No
`
`1235
`
`FINWC
`request from
`TPF?
`
`No
`
`1280
`
`1237
`
`~~1239
`- - -Y e s~
`
`1285
`
`UNFRC
`request from
`TPF?
`
`Yes
`
`Execute a Commit
`the unit work to the
`MQF Queue
`
`No
`
`1290
`
`1292
`
`FILUC
`request from
`TPF?
`
`--Yes -
`
`Rollback the Unit
`of Work for this
`MQF Queue
`
`No 1299
`
`Return to DSTC Processing
`and signal error to TPF
`
`Figure 12-A
`
`1295
`
`Return to DSTC Processing
`and signal good return to TPF
`
`Page 15 of 52
`
`
`
`U.S. Patent
`
`Oct. 31, 2000
`
`Sheet 15 of 25
`
`6,141,701
`
`Mapping Logic
`Figure 12-B
`
`Yes
`
`1250
`
`More of long
`message to
`transfer?
`
`No
`
`Get the next long
`message of the unit
`of work from the
`MQF queue and
`place it in the long
`message staging
`cache
`
`54
`
`Was there a
`message in the MQF
`queue?
`
`Figure 12-B
`
`1244
`
`Get the first long
`message of the unit
`of long message
`from the MQF queue
`and place it in the
`long message
`staging cache
`
`Was there a
`message in the MQF
`queue?
`
`No
`
`Yes
`
`Ensure MQF Triggers
`the queue watching
`logic for this MCHR
`when a Msg arrives in
`its MQF Queue
`
`1262
`
`Return to DSTC Processing
`recessing and permit lock facilit
`too hold queue wait process the
`MCHR file address as though
`another TPF Processor already
`has it.
`
`Yes
`
`I
`
`- - - - - - - - - ' - " .U s
`
`1267
`
`Segment the long
`message into a chain of f - - - - - - - - - (cid:173)
`TPF records in the long
`msg staging cache .
`
`Transfer the first record
`from the long msg
`staging cache area to
`the DSTC Cache for
`this MCHR
`
`Yes
`,
`
`12f
`6
`
`Segment the long
`message into a chain of
`TPF records in the long
`rnsg staging cache .
`
`No
`
`Transfer the next record
`from the long msg
`staging cache area to
`the DSTC Cache for
`this MCHR
`
`l
`
`12 57
`
`
`Transfer a X'FF' record
`to DSTC Cache to
`indicate the last long
`message has been
`transferred and another
`is ready for transfer
`
`1258
`
`1259
`
`Transfer a null
`record to DSTC
`Cache to indicate
`both last record and
`end of unit of work
`
`Flush the TPF record
`chain in the long
`message staging
`cache.
`
`L_ __
`
`- - - - - - - - - - - - - - - - - -~ - - - - - - -
`
`1279
`eturn to DSTC Processing an
`DSTC to pass record to TPF
`Processor and signal good return
`to TPF
`
`Page 16 of 52
`
`
`
`U.S. Patent
`
`Oct. 31, 2000
`
`Sheet 16 of 25
`
`6,141,701
`
`Figure 13
`
`Mapping Logic
`Figure 13
`
`1300
`
`1305
`
`MQF Queue
`Open?
`
`No
`
`1310
`
`Open MQF Queue
`Based Upon this
`Record's MCHR
`Address
`
`1335
`
`No
`
`Return to DSTC Processing
`and signal error to TPF
`
`Yes
`
`1330
`
`FINWC
`request from
`TPF?
`
`Browse the first
`message from the
`MQF queue for this
`MCHR and transfer
`to DSTC Cache
`
`1380
`
`1385
`
`Was there a
`Message?
`
`Yes
`
`Return to DSTC Processing and DSTC to
`pass record to TPF Processor and signal
`good return to TPF
`
`No1390
`
`Transfer a null
`message to DSTC
`Cache to indicate
`nothing found in
`Queue
`
`1395
`
`Yes
`
`Return to DSTC Processing and
`DSTC to pass null record to TPF
`Processor and signal good return to
`TPF
`
`Page 17 of 52
`
`
`
`U.S. Patent
`
`Oct. 31, 2000
`
`Sheet 17 of 25
`
`6,141,701
`
`Figure 14
`
`Mapping Logic
`Figure 14
`
`1400
`
`MQFQueue
`Open?
`
`No
`
`1410
`
`Open MQF Queue
`Based Upon this
`Record's MCHR
`Address
`
`1435
`
`No
`
`Return to DSTC Processing and
`signal error to TPF
`
`1445
`
`No
`
`Indicate Browse First
`in Queue on next
`Activation
`
`1449
`
`Return to DSTC Processing
`and signal good return to TPF
`
`Simple Find or File
`request from TPF?
`FINWC or FILEC?
`
`Yes
`
`Yes 1450
`
`Browse the Next
`message from the
`MQF queue for this
`MCHR and transfer
`to DSTC Cache
`
`Was there a
`Message?
`
`Yes
`
`Return to DSTC Processing and DSTC to
`pass record to TPF Processor and signal
`good return to TPF
`
`1465
`
`NO
`
`1470
`
`Empty Queue?
`
`Yes
`
`1475
`
`Transfer a null
`message to DSTC
`Cache to indicate
`nothing found in
`Queue
`
`,·~-----1,'-=1480
`
`Transfer a X'FF"
`message to DSTC
`Cache to indicate
`end of Queue
`
`1485
`
`Return to DSTC
`Processing and DSTC to
`pass null record to TPF
`Processor and signal
`good return to TPF
`
`Page 18 of 52
`
`
`
`U.S. Patent
`
`Oct. 31, 2000
`
`Sheet 18 of 25
`
`6,141,701
`
`Figure 15
`
`Mapping Logic
`Figure 15
`
`1500
`
`MQF Queue
`Open?
`
`No
`
`1515
`
`Open MQF Queue
`Based Upon this
`Record's MCHR
`Address
`
`1525
`
`request from
`TPF?
`
`Yes
`
`Return to DSTC Processing and return to
`TPF with good return
`
`No
`
`1530
`
`FILEC
`request from
`TPF?
`
`Yes
`
`Yes
`
`Transfer the Cursor
`from the Filed
`Record to the
`address watching
`status table
`
`1535 _____ 1539
`~
`Return to DSTC
`Processing signal good
`return to TPF
`
`Yes
`
`request from
`TPF?
`
`No
`
`1545
`Unhold/Unlock
`record request from
`TPF? (UNFRC)
`
`1549
`
`No
`
`Return to DSTC
`Processing and
`signal error to TPF
`
`Yes 1550
`Browse a message
`from the MQF queue
`based upon the
`cursor for this MCHR
`and transfer to DSTC
`Cache
`
`Yes
`
`1555
`
`Return to DSTC Processing and permit lock
`facility to unhold record and pass it to waiting
`TPF Processor and signal good return to TPF
`
`1565
`
`Was there a
`Message?
`
`Yes
`
`Return to DSTC Processing and DSTC to
`pass record to TPF Processor and signal
`good return to TPF
`
`No 1570
`
`Transfer a null
`message to DSTC
`Cache to indicate
`nothing found in
`Queue
`
`1575
`
`Return to DSTC Processing and
`DSTC to pass null record to TPF
`Processor and signal good return to
`TPF
`
`Page 19 of 52
`
`
`
`U.S. Patent
`
`Oct. 31, 2000
`
`Sheet 19 of 25
`
`6,141,701
`
`Figure 16
`
`Mapping Logic
`Figure 16
`
`1600
`
`1615
`
`No
`
`Open MQF Queue
`Based Upon this
`Record's MCHR
`Address
`
`1625
`
`request from
`TPF?
`
`Yes
`
`Return to DSTC Processing and permit
`lock facility naturally hold record and
`return to TPF with good return
`
`~---------;1635
`Transfer the Cursor
`from the Filed
`Record to the
`address watching
`status table
`
`1639
`
`Yes Return to DSTC Processing signal
`good return to TPF
`
`1645
`
`UNFRC
`request from
`TPF?
`
`Yes
`
`1655
`
`1649
`
`Return to DSTC Processing
`and signal error to TPF
`
`No
`
`1630
`
`FILEC
`request from
`TPF?
`
`Yes
`
`Yes
`
`request from
`TPF?
`
`No
`
`Yes 1650
`
`Get single message
`from the MQF queue
`based upon the
`cursor for this MCHR
`and transfer to DSTC
`Cache
`
`1660
`
`Return to DSTC Processing and permit lock
`facility to unhold record and pass it to waiting
`TPF Processor and signal good return to TPF
`
`1665
`
`Was there a
`Message?
`
`Yes
`
`Return to DSTC Processing and DSTC to
`pass record to TPF Processor and signal
`good return to TPF
`
`No 1670
`
`Transfer a null
`message to DSTC
`Cache to indicate
`nothing found in
`Queue
`
`1675
`
`Return to DSTC Processing and DSTC to
`pass null record to TPF Processor and
`signal good return to TPF
`
`Page 20 of 52
`
`
`
`U.S. Patent
`
`Oct. 31, 2000
`
`Sheet 20 of 25
`
`6,141,701
`
`Figure 17
`
`Mapping Logic
`Figure 17
`
`1700
`
`MQF Queue
`Open?
`
`No
`
`1715
`
`Open MQF Queue
`Based Upon this
`Record's MCHR
`Address
`
`1725
`
`request from
`TPF?
`
`Yes
`
`Return to DSTC Processing and permit
`lock facility naturally hold record and
`return to TPF with good return
`
`No
`
`1730
`
`FILEC
`request from
`TPF?
`
`Yes
`
`740
`
`FINWC
`request from
`TPF?
`
`Yes 1750
`
`et message and
`escriptor from the
`OF queue based
`ed options for this
`HR and transfer to
`DSTC Cache
`
`Transfer the Get
`Options from the
`Filed Record to the Yes
`address watching
`status table
`
`1739
`
`Return to DSTC Processing signal good
`return to TPF
`
`1745
`
`UNFRC
`request from
`TPF?
`
`1749
`Return to DSTC Processing and
`signal error to TPF
`
`No
`
`Yes
`
`No--
`
`Yes
`
`1755
`
`Return to DSTC Processing and permit lock
`facility to unhold record and pass it to wailing
`TPF Processor and signal good return to TPF
`
`1765
`
`Was there a
`Message?
`
`--Yes
`
`Return to DSTC Processing and DSTC to
`pass record to TPF Processor and signal
`good return to TPF
`
`No 1770
`
`Transfer a null
`message to DSTC
`Cache to indicate
`nothing found in
`Queue
`
`1775
`
`Return to DSTC Processing and
`DSTC to pass null record to TPF
`Processor and signal good return to
`TPF
`- - - - - - - - - -
`
`Page 21 of 52
`
`
`
`U.S. Patent
`
`Oct. 31, 2000
`
`Sheet 21 of 25
`
`6,141,701
`
`Figure 18
`
`1800
`
`Mapping Logic
`Figure 18
`
`1805
`
`MQF Queue
`
`No
`
`Yes
`
`1810
`
`Open MQF Queue
`Based Upon this
`Record's MCHR
`Address
`
`1820
`
`request from
`TPF?
`
`Yes
`
`Return to DSTC Processing and permit lock facility
`naturally hold record and return to TPF with good
`return
`
`No
`
`request from
`TPF?
`
`Yes
`
`No
`
`1830
`
`Put message and
`descriptor to MQF
`queue using
`passed options
`
`1835
`
`Return to DSTC Processing
`and permit lock facility
`to unhold record
`and pass it to waiting
`TPF Processor
`
`1845
`
`Yes
`
`Return to DSTC Processing and permit
`Lock facility to unhold record and pass
`it to waiting TPF Processor
`
`No1850
`
`Return to DSTC
`Processing and signal
`error to TPF
`
`Page 22 of 52
`
`
`
`U.S. Patent
`
`Oct. 31, 2000
`
`Sheet 22 of 25
`
`6,141,701
`
`Figure 19
`
`1900
`Queue Watching Logic
`The MQF has triggered this logic
`because a msg has arrived in the MQF
`that may need to be passed to a
`wailing mainframe processor.
`
`~----'L--1~910
`Reference the
`trigger activation
`mesage, and the
`queue watching
`status table
`
`1925
`Put this trigger
`message to the
`master trigger
`response queue
`indicating
`uninitialized queue
`
`No
`
`Yes
`
`1930
`
`1940
`
`MCHR in triggered
`locked wait state?
`
`-No
`
`Yes
`
`~
`~e s
`~ - - ~ - ~ 5
`Set Conditions in
`the Lock Facility to
`unhold trigger
`locked MCHR and
`signal wailing
`mainframe to re(cid:173)
`request
`
`No
`
`1945
`
`Indicate this queue
`has messages in
`Queue Watching
`Table entry
`
`--~------19.70
`Return to queue watching
`wait state pending trigger
`activation by MQF
`
`___ .....____ _ _ 1_,__9-80
`
`Exit to DSTC and permit lock
`facility to unhold record signal
`waiting mainframe processor to
`re-request
`
`1950
`Put this trigger
`message to the
`master trigger
`response queue
`with corresponding
`MCHR address
`
`1960
`
`rtrigge
`ueue in Yes
`
`Page 23 of 52
`
`
`
`U.S. Patent
`
`Oct. 31, 2000
`
`Sheet 23 of 25
`
`6,141,701
`
`Figure 20
`
`Mapping Logic
`Figure 20
`
`2000
`
`2005
`
`MQF Control
`Queues Open?
`
`No
`
`2010
`
`Open Master
`Control Family of
`Queues
`
`Yes
`2015
`
`2020
`
`FIWHC
`request from
`TPF?
`
`Yes
`
`Return to DSTC Processing and permit
`lock facility naturally hold record
`and return to TPF with good return
`
`No
`
`2025
`
`2030
`
`2035
`
`FILUC
`request from
`TPF?
`
`Yes
`
`Execute control
`message to specified
`MQF queue
`
`No
`
`2070
`
`2075
`
`UNFRC
`request from
`TPF?
`
`Yes
`
`Return to DSTC
`Processing and permit
`Lock facility to unhold
`record
`
`Put the combine
`request and response
`into the master control
`response queue and
`into the master control
`logging queue
`
`2040
`
`~ - - - - - " ' - - - - - - - -~~
`Execute an Inquiry
`command against
`specified queue and
`replace existing inquiry
`reponse message in
`master control inquiry
`queue
`
`2045
`
`Also Put the response
`to the inquiry to the
`master control loggin!r
`queue
`
`No
`
`2080
`
`Return to DSTC
`Processing and
`signal error to TPF
`
`2060
`----
`
`Return to DSTC
`Processing and permit
`lock facility to unhold
`record
`
`2055
`Check-point the
`address and queue
`watching table entries
`by repectively replacing
`their entries in the
`check-pointed
`persistent queues
`
`Update the
`address and queue
`watching status
`table with current
`status
`
`Page 24 of 52
`
`
`
`U.S. Patent
`
`Oct. 31, 2000
`
`Sheet 24 of 25
`
`6,141,701
`
`Figure 21
`
`Mainframe with Onboard
`Commercial Message Queuing Facility (CMQF)
`and
`Supporting Communication Stack (CS)
`# 1 - Application
`Puts
`a Message to the
`CMQF
`
`Commercial Message Queuing Facility (CM PF)
`
`I
`
`#3-The ~MQF
`Send the
`Mesf ~ge
`through the CS
`
`Ma nframe
`
`I
`I
`
`Commun cation Stack
`
`Mainfr eme DASO File
`Input/Ou put (1/0) Routines
`
`# 2 - The CMQF sav 3s the Put Message
`to D ~SD
`
`Mainframe Channel Subsystem
`
`I
`
`...
`
`Mainfr, Im< Ch nnels
`
`'I'
`
`DA 13D Storage
`C tmtrol Unit
`(DSTC)
`
`j
`
`Mainfram, q,. trnels
`
`'"
`
`Communic, ion
`Control U it
`(CCU)
`
`-
`
`0,
`
`11'
`
`......
`___,
`
`/
`r---
`
`H1gn
`F erformance
`Pd Jistent DASO
`Data Storage
`__,
`--
`
`'-
`
`,
`
`((\
`\U
`--
`
`Open System
`with Message
`Queuing Facility
`
`, __
`
`I
`uata
`Warehouse or
`Data Mart
`with Message
`Queuing
`Facilitv
`
`Message
`Redirect and
`Tran slate for the
`Message
`Queuing Facility
`
`'
`
`)
`
`Archive Facility with
`Message Queuing
`Facility
`
`Page 25 of 52
`
`
`
`U.S. Patent
`
`Oct. 31, 2000
`
`Sheet 25 of 25
`
`6,141,701
`
`High Performance
`Persistent DASO
`Data Storage
`STDTPF
`
`•
`
`11
`
`11
`
`Figure 22
`
`Mainframe with IBM Transaction Processing Facility (TPF) Operating System
`
`TPF Fixed
`Data
`Record
`(MCHR-41)
`
`TPF File
`is an
`
`a Record
`F Put
`
`TPF Mainframe Channel Subsystem
`
`TPF Find
`is an
`
`a Record
`F Get
`
`DASD Storage Control Unit's(DSTC) Mainframe Channel Interface
`with Limited Locking Facility (LLF) - Device Type "B"
`
`TPF Fixed
`Data
`Record
`(MCHR-3x)
`
`..
`
`TPF Fixed
`Data
`Record
`(MCHR-4x)
`
`..,,
`
`TPF File a Record
`Its MCHR
`Maps to an
`
`..,,
`MQF DSTC
`Monitoring and
`Intercept
`Processes
`TPF Find a Record
`Its MCHR
`ile Address
`DASD Storage Control Unit Limited Lock Facility
`Maps from a MQF Queue
`or Multi-Path Lock Facility
`ercial Message Queuing Facility encapusulated and controlled by the Message Queuing Off ad
`Faciljty(MQF) which is resident.on DASD Storage Control Unit
`
`M
`Put
`Queue
`1
`
`►
`MQF
`Put
`Qu