Method of avoiding physical I/O via caching with prioritized LRU management
First Claim
Patent Images
1. A method, executed by an extended buffer manager (XBM) process executing in an MVS computer system having a data storage system, of improving the processing of an input/output (I/O) request initiated by a calling process, comprising:
- if said calling process is an XBM managed process thenif a data set corresponding to said calling process is in a XBM data set table then if said XBM process is actively caching a data set requested by said calling process thenif said I/O request is a read request thenif said XBM process is successful in removing cache directory entriesassociated with said data set thencopy data associated with said data set to said calling process; and
replace said cache directory entries;
elsecontinue;
if said XBM process is in simulate mode then execute a MVS media manager routine and terminate;
else if said read request is satisfied from a cache then dispatch a service request block to said calling process; and
return execution control to said calling process;
elseexecute a MVS media manager routine and terminate;
elseremove data specified by said calling process from a XBM data cache;
write specified data to a XBM data cache; and
execute a MVS media manager routine and terminate;
elseexecute a MVS media manager routine and terminate;
elseadd a data set corresponding to said calling process to said XBM data set table;
issue a MVS I/O request for said calling process; and
terminate;
elseterminate.
9 Assignments
0 Petitions
Accused Products
Abstract
A method of caching I/O requests permits caching in the MVS environment independent of the access method protocol used to initiate an I/O request (e.g., QSAM, VSAM, Media Manager). In addition, objects can be user-prioritized for residence in the cache.
20 Citations
9 Claims
-
1. A method, executed by an extended buffer manager (XBM) process executing in an MVS computer system having a data storage system, of improving the processing of an input/output (I/O) request initiated by a calling process, comprising:
-
if said calling process is an XBM managed process then if a data set corresponding to said calling process is in a XBM data set table then if said XBM process is actively caching a data set requested by said calling process then if said I/O request is a read request then if said XBM process is successful in removing cache directory entries associated with said data set then copy data associated with said data set to said calling process; and
replace said cache directory entries;else continue; if said XBM process is in simulate mode then execute a MVS media manager routine and terminate; else if said read request is satisfied from a cache then dispatch a service request block to said calling process; and
return execution control to said calling process;else execute a MVS media manager routine and terminate; else remove data specified by said calling process from a XBM data cache; write specified data to a XBM data cache; and execute a MVS media manager routine and terminate; else execute a MVS media manager routine and terminate; else add a data set corresponding to said calling process to said XBM data set table;
issue a MVS I/O request for said calling process; and
terminate;else terminate. - View Dependent Claims (2, 3, 9)
-
-
4. A method of processing a read request in an MVS computer system having a data storage system and a media manager vector table,
said media manager vector table having an entry, referred to as a read/write table entry, containing an address of a series of instructions for performing a read/write service, referred to as a read/write routine, said read request being generated by a calling process requesting that control be passed to the read/write routine to copy data from a specified data set on a storage medium to a buffer, referred to as a calling process buffer, said method being executed by a process in the computer system, referred to as a manager process, and comprising: -
(a) providing, in the read/write table entry, an address comprising the address of a processing routine of the manager process in place of the address of the read/write routine, (b) providing, in a storage device in the computer system; (1) a data structure containing information about one or more data sets being managed by the manager process, referred to as a data set table, and (2) a directory containing one or more entries respectively corresponding to data blocks in the data sets being managed by the manager process, and (3) a cache containing copies of the data blocks having entries in the directory; (c) receiving the read request in response to the calling process'"'"'s request that control be passed to the read/write routine; (d) testing whether some or all of the following conditions are true; (1) the calling process is being managed by the manager process, (2) the specified data set is listed in the data set table, and (3) the specified data set is being actively cached by the manager process; (e) if all of the conditions recited in paragraph (d) are true, then; (1) removing, from the directory of data blocks, one or more entries respectively corresponding to one or more data blocks responsive to the read request, referred to as the requested data blocks; (2) attempting to copy the requested data blocks from the cache to the calling process buffer; (3) replacing the data entries for the requested data blocks in the directory of data blocks; (4) if (A) the manager process is in a simulate mode, or (B) the attempt to copy the requested data blocks from the cache to the calling process buffer was not successful, then (x) passing control to the read/write routine to copy the requested data blocks from the storage medium to the calling process buffer, (y) when the read/write routine reports that the copying is complete, copying the requested data blocks to the cache, and (z) notifying the calling process that the processing of the read request is complete; (5) if (A) the manager process is not in a simulate mode and (B) the attempt to copy the requested data blocks from the cache to the calling process was successful, then (x) dispatching a service request block to branch to a termination routine of the calling process and (y) returning control to the calling process. - View Dependent Claims (5, 6, 7)
-
-
8. A method of processing a write request in an MVS computer system having a data storage system and a media manager vector table,
said media manager vector table having an entry, referred to as a read/write table entry, containing an address of a series of instructions for performing a read/write service, referred to as a read/write routine, said I/O request being generated by a calling process requesting that control be passed to the read/write routine either (x) to copy data, from a specified data set on a storage medium in the computer system, into a buffer, referred to as a calling process buffer, such a request being referred to as a read request, or (y) to copy data from the calling process buffer to the storage medium, such a request being referred to as a write request; said method being executed by a process in the computer system, referred to as a manager process, and comprising; (a) providing, in the read/write table entry, an address comprising the address of a processing routine of the manager process in place of the address of the read/write routine, (b) providing, in a storage device in the computer system; (1) a list of data sets being managed by the manager process, (2) a directory containing one or more entries respectively corresponding to data blocks in the data sets being managed by the manager process, and (3) a cache containing copies of the data blocks having entries in the directory; (c) receiving the I/O request in response to the calling process'"'"'s request that control be passed to the read/write routine; (d) testing whether some or all of the following conditions are true; (1) the calling process is being managed by the manager process, (2) the specified data set is listed in the data set table, and (3) the specified data set is being actively cached by the manager process; (e) if all of the conditions recited in paragraph (d) are true and the I/O request is a read request, then; (1) removing, from the directory of data blocks, one or more entries respectively corresponding to one or more data blocks responsive to the read request, referred to as the requested data blocks; (2) attempting to copy the requested data blocks from the cache to the calling process buffer; (3) replacing the data entries for the requested data blocks in the directory of data blocks; (4) if (i) the manager process is in a simulate mode, or (ii) the attempt to copy the requested data blocks from the cache to the calling process buffer was not successful, then (x) passing control to the read/write routine to copy the requested data blocks from the storage medium to the calling process buffer, (y) when the read/write routine reports completion of the copying, copying the requested data blocks to the cache, and (z) notifying the calling process that processing of the read request is complete; (5) if (i) the manager process is not in a simulate mode and (ii) the attempt to copy the requested data blocks from the cache to the calling process was successful, then (x) dispatching a service request block to branch to a termination routine of the calling process and (y) returning control to the calling process; (f) if all of the conditions recited in paragraph (d) are true and the I/O request is a write request, then; (1) removing from the cache one or more data blocks responsive to the write request, referred to as the requested dark blocks; (2) copying the requested data blocks from the calling process buffer to the cache; (3) replacing the data entries for the requested data blocks in the directory of data blocks; (4) testing whether the manager process is in a simulate mode, and if not, then dispatching a service request block to branch to a termination routine of the calling process; and (5) returning control to the calling process.
Specification