Disaster recovery systems typically address two types of failures, a sudden catastrophic failure at a single point in time or data loss over a period of time. In the second type of gradual disaster, updates to volumes may be lost. To assist in recovery of data updates, a copy of data may be provided at a remote location. Such dual or shadow copies are typically made as the application system is writing new data to a primary storage device. International Business Machines Corporation (IBM), the assignee of the subject patent application, provides two systems for maintaining remote copies of data at a secondary site, extended remote copy (XRC) and peer-to-peer remote copy (PPRC). These systems provide a method for recovering data updates between a last, safe backup and a system failure. Such data shadowing systems can also provide an additional remote copy for non-recovery purposes, such as local access at a remote site. These XRC and PPRC systems are described in IBM publication "Remote Copy: Administrator's Guide and Reference," IBM document No. SC35-0169-02(IBM Copyright 1994, 1996), which publication is incorporated herein by reference in its entirety.
In such backup systems, data is maintained in volume pairs. A volume pair is comprised of a volume in a primary storage device and a corresponding volume in a secondary storage device that includes an identical copy of the data maintained in the primary volume. Typically, the primary volume of the pair will be maintained in a primary direct access storage device (DASD) and the secondary volume of the pair is maintained in a secondary DASD shadowing the data on the primary DASD. A primary storage controller may be provided to control access to the primary DASD and a secondary storage controller may be provided to control access to the secondary DASD.
In data transfer operations, such as XRC, storage buffers in the host system's volatile memory, e.g., DRAM, are used to buffer data transferred from the primary storage controller to the secondary storage controller. A buffer is comprised of multiple pages in the host system's memory. Such pages in a buffer are fixed for the read operation from the primary storage controller, freed after the read operation, then fixed again for the write operation to the secondary storage controller, and freed after the completion of the write operation. A fixed page cannot be swapped out of the volatile memory (DRAM) to disk storage. Fixed pages are, thus, not available to the operating system for other operations. The number of storage or page buffers of memory consumed are a function of the number of volumes involved in the copy operation. For instance, the current version of the IBM XRC product requires a minimum of 50 MB of virtual storage to support a single primary storage controller. The host system must set aside sufficient paging space in volatile memory areas for data copy operations between the controllers.
With current systems, the host system queries the primary controller to determine the size of the data transfer and then fixes pages in volatile memory to form buffers which are the targets of the data transfer operations. After a read or write operation, the pages fixed in the buffers are freed. This process, which includes fixing and freeing the pages for each data transfer, is expensive in terms of consuming host processor cycles and processing time. Certain prior art systems retain a few fixed pages within a buffer which are not freed after the read and write operations. In this way, a few of the pages in a buffer remain fixed and do not need to be fixed and freed for each input/output (I/O) operation. However, the pages in a buffer which do not remain permanently fixed float between being fixed during the read and write operations and being not fixed after the completion of such operation. These "floating" pages, which are fixed and freed for each I/O operation through the host system consume system resources to perform such fixing and freeing. This system of leaving only a couple of the pages in a buffer fixed across input/output operations is described in "Fixed Storage Allocation of Input-Output Buffers," IBM Technical Disclosure Bulletin, Vol. 39, No. 03(Mar. 1996).
Thus, there is a need in the art for an improved system for making pages in memory available for data transfer operations.