CA1319440C - Queued posted-write disk write method with improved error handling - Google Patents
Queued posted-write disk write method with improved error handlingInfo
- Publication number
- CA1319440C CA1319440C CA000596535A CA596535A CA1319440C CA 1319440 C CA1319440 C CA 1319440C CA 000596535 A CA000596535 A CA 000596535A CA 596535 A CA596535 A CA 596535A CA 1319440 C CA1319440 C CA 1319440C
- Authority
- CA
- Canada
- Prior art keywords
- queue
- write
- sectors
- sector
- information
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0706—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
- G06F11/073—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a memory management context, e.g. virtual memory or cache management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0706—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
- G06F11/0727—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a storage system, e.g. in a DASD or network based storage system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0793—Remedial or corrective actions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1415—Saving, restoring, recovering or retrying at system level
- G06F11/1435—Saving, restoring, recovering or retrying at system level using file system or storage system metadata
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0804—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0751—Error or fault detection not based on redundancy
- G06F11/0754—Error or fault detection not based on redundancy by exceeding limits
- G06F11/0757—Error or fault detection not based on redundancy by exceeding limits by exceeding a time limit, i.e. time-out, e.g. watchdogs
Abstract
QUEUED POSTED-WRITE
DISK WRITE METHOD WITH
IMPROVED ERROR HANDLING
ABSTRACT
A posted-write queuing program for writing informa-tion sectors to disk sectors includes error-handling rou-tines to minimize the risk of data loss upon specified types of errors. Upon timeouts, queuing is suspended and all information sectors pending in the queue are written out to the corresponding disk sectors. Upon specified types of write errors, queuing is discontinued and repeat-ed attempts are made to write out all information sectors to the corresponding disk sectors. For each unsuccessful attempt, the corresponding information sector is saved in the queue; the user is alerted, and subsequent read or write requests directed to the corresponding disk sector is serviced from the saved information sector in the queue.
DISK WRITE METHOD WITH
IMPROVED ERROR HANDLING
ABSTRACT
A posted-write queuing program for writing informa-tion sectors to disk sectors includes error-handling rou-tines to minimize the risk of data loss upon specified types of errors. Upon timeouts, queuing is suspended and all information sectors pending in the queue are written out to the corresponding disk sectors. Upon specified types of write errors, queuing is discontinued and repeat-ed attempts are made to write out all information sectors to the corresponding disk sectors. For each unsuccessful attempt, the corresponding information sector is saved in the queue; the user is alerted, and subsequent read or write requests directed to the corresponding disk sector is serviced from the saved information sector in the queue.
Description
~ 3 ~
QUEUED POSTED-WRITE
DISK WRITE METHOD WITH
IMPROVED ERROR HANDLING
This invention relates to a method for queuing posted-write disk write operations, with improved error handling.
Disk Caching Posted writes to a disk are roughly analogous in some ways to cached reads from a disk. Disk caching, as is well known to those of ordinary skill, is a method of keeping a copy of the information last read from a relatively slow storage devi~e (e.g., a fixed or "hard"
disk) in much faster read-write random~access memory (RAM). This permits quicker processing of subsequen~
requests for that-data.
Disk caching typically operates in conjunction with read-operation requests by application programs or other programs (referred to here as "tasks").
Generally speaking, when a task initiates a read operation, it reserves a certain portion of RAM, referred to as a "buffer," and r~quests that the information stored in one or more disk sectors be copied to the buffer.
Once this information is copied to RAM, the task can manipulate the information much more rapidly than on the disk. In part, this is because manipulation of the information on the disk requires activation of mechanical components of a disk drive, whereas manipulation in RAM is done entirely electronically~
When disk caching is used, each time a task requests that a certain disk sector be read (i.e.~ copied into RAM), not only is the requested sector read, but in ad-dition certain adjacent sectors are also copied into a special RAM "cache buffer." This is done on the assump-tion that these disk sectors are likely to be read soon themselves.
Consequently, if one or more of those adjacent sec-tors is indeed the subject of a subsequent read request, the request can be filled from the RAM cache buffer.
Since the relatively slow disk drives need not be acti-~5 vated, and the request is thus filled entirely electronic-ally, this subsequent read request is completed much faster than the first one.
When disk caching is enabled, whenever a read request for specified disk sectors is initiated, the cache buffer is checked first to see if the desired disk sectors have already been read into the cache buffer. Only if the information is not in the cache buffer is an actual disk read operation initiated, whereupon the new information i5 itself copied to the cache buffer. "Old" information in the cache buffer is removed from the buffer; generally -3- ~3~
speaking, the information that is removed is the least recently used information.
Interrupts s The operation of the present invention makes use of a special capability designed into many computer architec-- tures, known as "interrupts" and "interrupt handlers."
Interrupts cause a central processing unit (CPU) of a computer to suspend execution of the current program in-struction(s); to execute a specific "interrupt handler"
routine or set of instructions; and then to resume execu-tion of the suspended current program instruction(s) at the point where it left off.
Interrupts can be generated by software, i.e., by special instructions built into a program known as "soft ware interrupts." When the CPU encounters a software int-errupt in a program, among other things it executes theassociated interrupt handler routine, then returns to execution of the program into which the software interrupt was built. A return from an interrupt-generated call to an interrupt handler routine is known as an interrupt re-turn or "IRET."
Interrupts can also be generated by appropriately de-signed hardware: many CPUs (e.g., the Intel 8086 family, including the 8086, 8088, 80286, and 80386) are designed so that other hardware components in the computer system can cause an interrupt by transmitting special signals to the CPU.
3 ~
Disk Write Interrupts Interrupts are commonly used to initiate disk write operations. A disk write operation typically entails cop-ying of information to the disk from RAM that is in use bya task.
A disk-write interrupt might be generated by a task.
For example, a spreadsheet program could initiate such a request in order to save the user's work.
(In this discussion, a computer program itself is sometimes referred to as performing one or another opera-tion. In reality, it is a hardware component such as the ~15 CPU that actually performs the operation under control of ;the program. This is a common shorthand in the art.) Disk Write Interrupt Handler in ISA BIOS
A common disk-write interrupt in the "industry stan-dard architecture" (ISA) causes execution of a specific interrupt handler (known as INT 13H) that is part of the BIOS (basic input/output services) program. The industry standard architecture is exemplified by, e.g., the IBM PC
and the ~ompaq Deskpro 286.
The BIOS proyram typically is stored in a read-only memory (~OM) installed in the ISA csmputer, and so the BIOS program itself is sometimes referred to as simply "the ROM."
In processing the disk write re~uest, the INT 13H
interrupt handler does two things ~among others). The explanation below uses a write operation to a fixed disk as an example.
-5- 'JqLfo~
First, INT 13H copies the specified data to be writ-ten to disk (referred to here as a "write buffer") to a buffer under the control of a disk controller associated with the specified disk drive (e.g., in RAM that is installed with the disk controller and not as part of "main" memory). It then directs the disk controller to copy the data to a specified sector(s) on the disk.
i That having been done, INT 13H itself calls the INT 15H WAIT interrupt handler. By default, INT 15 WAIT
simply returns to the calling function, i.e., to the INT
13H interrupt handler.
INT 13H then enters a wait loop: in each iteration of the loop, it checks to see if a flag has been set to indicate that a fixed disk hardware interrupt has oc-curred; if the flag has not been set, the loop continues.
In other words, the CPU is now busy waiting for the fixed disk hardware-interrupt-occurred flag to be set -- and has not resumed executing the task's instructions.
Nhen the disk controller has completed the write operation, it generates a hardware interrupt that causes the CPU to set the fixed disk hardware-interrupt-occurred flag and execute the INT 15~ POST interrupt handler. This routine typically performs an IRET back to the INT 13H
wait loop~
Now that the fixed disk hardware-interrupt-occurred flag has been set, the INT 13H wait loop is ended, where-upon INT 13H clears the flag, finishes its processing, and performs an IRET to return control to the task.
In effect, the design of the INT 13~ interrupt hand-ler routine forces the CPU to sit idle until the disk con-troller (which, once activated, does not need the CPU to -6- ~3~
perform its data-writing functions) has completed its work.
It will be recognized by those of ordinary skill that the above description relates to a relatively simple case of writing to disk. As is well known to those of ordinary skill, some write operations require multiple hardware interrupts thereby causing multiple WAITs and POSTs.
Queued Write Operations Write queuing, generally speaking, involves directing some or all disk write requests to a queue buffer instead of to the disk in question, and control is given back to the task. ~he actual physical writing to disk is performed later on whenever convenient, thus reducing the delay in resuming execution of the calling task.
A posted-write queuing program for writing informa-tion sectors to disk sectors includes error-handling rou-tines to minimize the risk of data loss upon specified types of errors. Upon timeouts, queuing is suspended and all information sectors pending in the queue are written out to the corresponding disk sectors. Upon specified types of write errors, gueuing is discontinued and repeat-ed attempts are made to write out all information sectors to the corresponding disk sectors. For each unsuccessful attempt, the corresponding information sector is saved in the queue; the user is alerted, and subsequent read or write requests directed to the correspondin~ disk sector is serviced from the saved information sector in the queue.
-6A- ~ 31~
~ Summary of the Invention The invention herein pertains to a method of maintaining a posted-write queue upon a timeout, to which queue information sectors addressed to respective corresponding disk sectors may be added and from which queue information sectors may be written out to the respective corresponding disk sectors.
In one broad aspect, the method comprises the steps of blocking the addition of information sectors to the queue and writing out to the corresponding disk sector each information sector already added to the queue.
In another aspect, the method comprises the steps of blocking the addition of information sectors -to the queue, attempting to write out to the corresponding disk sector each information sector already added to the queue and for each attempt that is unsuccessful, saving the information sector in the queue.
The method may also include the step of servicing from the queue any subsequent read request or write request directed to a disk sector corresponding to any of the saved information sector.
-7- ~3~
Posted-Write Q~Leueina in Disk Cache UtilitY
The present invention is illustrated by the following description of a set of routines for posting and queuing 5 write requests generated by tasks. The routines operate as a part of a disk-cache installable device driver under the MS-DOS operatiny system (versions 3.10 through 3.39).
Appendix 1 is a copy of the assembler source code for the routines.
'' 10 The posted-write queuing routines operate in ¦ conjunction with a disk cache utility that maintains a cache buffer and a cache directory. In the illustration described here, the posted-write queuing routines are written as a part of such a disk cache utility, which forms no part of the present invention (except to the extent claimed) and is not otherwise described.
, It will be understood that the description is presen-¦ 20 ted by way of illustration and not as a limitation on the subject matter claimed.
Substitution of Interrupt Handlers ;
¦ ~ 25 Several interrupt handlers in the BIOS program have their behavior altered (sometimes referred to as "hooked,"
"trapped," or "grabbed") in the conventional manner.
Generally speaking, this involves (a) saving the vectors that are stored in low memory and are associated with the respective interrupt handlers; these vectors ordinarily point to the respective addresses of the normal BIOS
interrupt handler routines; and (b) overwriting these vectors with new vectors pointing to the addresses of substitute interrupt handler routines.
-8- ~3~
In particular, the respective handlers for INT 13H, for INT 15H WAIT and INT 15H POST, and for timeouts and write errors, are replaced. Appendix 2 sets forth a pseu-docode description of the substitute routines, briefly ex-plainin~ in general terms the matters set forth in detailin ~ppendix l.
As is conventional, a substitute routine may call the original interrupt handler; this is done by simply calling the original handler, whose address was saved as part of the overwriting process described above. For example, Appendix 2 shows that this is done in the substitute routine for INT 13H.
Memory Allocation for Oueue The posted-write queuing routines use an 8K FIFO
(first-in, first-out) buffer in main memory for queuing write requests. More specifically, the queue utilizes the base memory that is reserved by the cache driver during its installation.
The queue is kept relatively small to reduce the chance of data loss due to the user turning off the com-puter when it appears that the write is complete ~when infact it is not).
Sinqle-Sector Writes If the write buffer of a disk write request will oc-cupy no more than one sector on the disk (i.e., if the re-quest is for a single-sector write), then broadly speak-ing, the write request is queued and posted as complete, and control is returned to the task.
- 9 ~ 3 ~
More specifically, the substitute INT 13H routine queues the write request and jumps to a DEQUEUE routine.
The DEQUEUE routine in turn generates its own conventional INT 13H write request that specifies the queue as the write bu~fer.
When the conventional INT 13H interrupt handler calls the INT 15H WAIT routine, the substitute INT 15H WAIT rou-tine saves the wait environment and returns back to the callinq task (instead of to the conventional INT 13H
routine that called it), even though the disk controller may not yet have reported completion of the write opera-tion. In effect, this leaves the conventional INT 13H
routine in something like a state of suspension.
When the disk controller does complete its write op-eration, it generates a hardware interrupt, thus causing the fixed disk hardware-interrupt-occurred flag to be set and causing the INT 15H POST routine to be called. The substitute INT 15H POST routine restores the previously-saved wait environment and returns control to the pre-viously "suspended" conventional INT 13H write routine, in effect reactivating that routine.
Because the fixed disk hardware-interrupt-occurred flag is now set, the now-reactivated conventional INT 13H
write routine does not stay in its wait loop waiting for that interrupt (as described above). Instead, the conven-tional INT 13H write routine finishes its processing and performs an IRET to return control to the DEQUEUE routine that originally called it.
The DEQUEUE routine in turn returns control to the calling task, but at the point where the last hardware interrupt occurred, not at the point where the write request was generated.
-10- ~
Error Handlinq On any time out, queuing is discontinued (i.e., no more write requests are added to the queue) and all write requests already queued are written out individually.
~imeout error logic is employed while waiting for the queue to become empty or not full to ensure that a cache controller failure is the only possible cause of an unrecoverable error.
! The timeout error logic uses fla~s to determine where the write operation timed out. This aids in making a determination whether or not the last sector sent to the conventional INT 13H write routine was actually wxitten out to the disk. It also aids in determinin~ whether the timeout was caused by hardware te.g., controller failure) or software (e.g., conflicting programs) and in giving the user an appropriate error message.
On any sector-not-found write error or address-not-found write error, repeated attempts (e.g., 5 disk resets and retries) are made to write out each sector in the queue to disk, one at a time. If any given sector(s) cannot be written out, queuing is permanently discontinued luntil a reset, of course) and the sector(s) in question are saved in the queue.
Subsequent to such action (until power reset), each disk read req~est and each disk write request is checked to determine whether any requested sector is in the queue (meaning that the actual disk sector is out of date or perhaps even unaccessible). Such requests are serviced from the queue buffer; if the sector in question is writ-ten to, it is updated in the queue buffer. ~ suitable alarm prompts the user to back up the disk (the backup request will be serviced in part from the queue).
~ 3 ~ 9 ~ ~ ~
Efficiencv Considerations Queueing of disk writes takes place only for single-sector writes. Only single-sector writes are queued because the queue is small and most writes will be either single-sector or very large multi-sector writes. To ac-commodate large writes would require too much complexity and overhead; it is regarded as more efficient to handle only the other most common write size, i.e., single-sector j 10 writes. (The source code, Appendix 1, includes routines for multi-sector writes.) If either a multi-sector write request or a disk read request is generated, the queue is forced empty (i.e., i.e., written out to the diskl or "flushed"~ before the requested operation is performedO If disk reads are cached, the queue is flushed only if the desired sectors to be read are not present in the cache. This queue flushing is a convenient, low-overhead way of ensuring that the data in the queue is always current.
No check is performed for duplication of write re-quests in the queue. Such a check would theoretically eliminate the extra disk write, but the associated over-head is regarded as not worth the trade-off, because only comparatively rarely will the queue contain two writes to the same disk sector.
Likewise, the queue is not sorted, because the queue is small and since most single-sector writes will either be sequential or will vary greatly across the disk. The overhead associated with moving data (in sorting or in copying to the dlsk controller buffer) is very high, so in this embodiment the queue is copied once and not moved.
-12- ~ f~
At any given time, the queue may contain write re-quests for a number of sectors (i.e., if write requests are generated in quick succession by the task). If suc-cessive write requests in the queue are directed to suc-cessive disk sectors, a more efficient disk write can beaccomplished when emptying the queue by performing a multi-sector write from the queue.
Toward this end, the queue in the embodiment de-scribed is circular and has a fixed buffer location;furthermore, the head and tail pointers are both placed at the top of the queue when the queue is empty.
Appendixes 3 and 4 outline additional considerations directed to efficient implementation of the posted-write queuing routines.
The foregoing description of the invention has been directed to a particular preferred embodiment for purposes of explanation and illustration. If will be apparent, however, to those skilled in the art having the benefit of this disclosure that many modifications and changes may be made without departing from the essence of the invention.
It is the Applicant's intention in the following claims to cover all equivalent modifications and variations as fall within the scope of the invention.
QUEUED POSTED-WRITE
DISK WRITE METHOD WITH
IMPROVED ERROR HANDLING
This invention relates to a method for queuing posted-write disk write operations, with improved error handling.
Disk Caching Posted writes to a disk are roughly analogous in some ways to cached reads from a disk. Disk caching, as is well known to those of ordinary skill, is a method of keeping a copy of the information last read from a relatively slow storage devi~e (e.g., a fixed or "hard"
disk) in much faster read-write random~access memory (RAM). This permits quicker processing of subsequen~
requests for that-data.
Disk caching typically operates in conjunction with read-operation requests by application programs or other programs (referred to here as "tasks").
Generally speaking, when a task initiates a read operation, it reserves a certain portion of RAM, referred to as a "buffer," and r~quests that the information stored in one or more disk sectors be copied to the buffer.
Once this information is copied to RAM, the task can manipulate the information much more rapidly than on the disk. In part, this is because manipulation of the information on the disk requires activation of mechanical components of a disk drive, whereas manipulation in RAM is done entirely electronically~
When disk caching is used, each time a task requests that a certain disk sector be read (i.e.~ copied into RAM), not only is the requested sector read, but in ad-dition certain adjacent sectors are also copied into a special RAM "cache buffer." This is done on the assump-tion that these disk sectors are likely to be read soon themselves.
Consequently, if one or more of those adjacent sec-tors is indeed the subject of a subsequent read request, the request can be filled from the RAM cache buffer.
Since the relatively slow disk drives need not be acti-~5 vated, and the request is thus filled entirely electronic-ally, this subsequent read request is completed much faster than the first one.
When disk caching is enabled, whenever a read request for specified disk sectors is initiated, the cache buffer is checked first to see if the desired disk sectors have already been read into the cache buffer. Only if the information is not in the cache buffer is an actual disk read operation initiated, whereupon the new information i5 itself copied to the cache buffer. "Old" information in the cache buffer is removed from the buffer; generally -3- ~3~
speaking, the information that is removed is the least recently used information.
Interrupts s The operation of the present invention makes use of a special capability designed into many computer architec-- tures, known as "interrupts" and "interrupt handlers."
Interrupts cause a central processing unit (CPU) of a computer to suspend execution of the current program in-struction(s); to execute a specific "interrupt handler"
routine or set of instructions; and then to resume execu-tion of the suspended current program instruction(s) at the point where it left off.
Interrupts can be generated by software, i.e., by special instructions built into a program known as "soft ware interrupts." When the CPU encounters a software int-errupt in a program, among other things it executes theassociated interrupt handler routine, then returns to execution of the program into which the software interrupt was built. A return from an interrupt-generated call to an interrupt handler routine is known as an interrupt re-turn or "IRET."
Interrupts can also be generated by appropriately de-signed hardware: many CPUs (e.g., the Intel 8086 family, including the 8086, 8088, 80286, and 80386) are designed so that other hardware components in the computer system can cause an interrupt by transmitting special signals to the CPU.
3 ~
Disk Write Interrupts Interrupts are commonly used to initiate disk write operations. A disk write operation typically entails cop-ying of information to the disk from RAM that is in use bya task.
A disk-write interrupt might be generated by a task.
For example, a spreadsheet program could initiate such a request in order to save the user's work.
(In this discussion, a computer program itself is sometimes referred to as performing one or another opera-tion. In reality, it is a hardware component such as the ~15 CPU that actually performs the operation under control of ;the program. This is a common shorthand in the art.) Disk Write Interrupt Handler in ISA BIOS
A common disk-write interrupt in the "industry stan-dard architecture" (ISA) causes execution of a specific interrupt handler (known as INT 13H) that is part of the BIOS (basic input/output services) program. The industry standard architecture is exemplified by, e.g., the IBM PC
and the ~ompaq Deskpro 286.
The BIOS proyram typically is stored in a read-only memory (~OM) installed in the ISA csmputer, and so the BIOS program itself is sometimes referred to as simply "the ROM."
In processing the disk write re~uest, the INT 13H
interrupt handler does two things ~among others). The explanation below uses a write operation to a fixed disk as an example.
-5- 'JqLfo~
First, INT 13H copies the specified data to be writ-ten to disk (referred to here as a "write buffer") to a buffer under the control of a disk controller associated with the specified disk drive (e.g., in RAM that is installed with the disk controller and not as part of "main" memory). It then directs the disk controller to copy the data to a specified sector(s) on the disk.
i That having been done, INT 13H itself calls the INT 15H WAIT interrupt handler. By default, INT 15 WAIT
simply returns to the calling function, i.e., to the INT
13H interrupt handler.
INT 13H then enters a wait loop: in each iteration of the loop, it checks to see if a flag has been set to indicate that a fixed disk hardware interrupt has oc-curred; if the flag has not been set, the loop continues.
In other words, the CPU is now busy waiting for the fixed disk hardware-interrupt-occurred flag to be set -- and has not resumed executing the task's instructions.
Nhen the disk controller has completed the write operation, it generates a hardware interrupt that causes the CPU to set the fixed disk hardware-interrupt-occurred flag and execute the INT 15~ POST interrupt handler. This routine typically performs an IRET back to the INT 13H
wait loop~
Now that the fixed disk hardware-interrupt-occurred flag has been set, the INT 13H wait loop is ended, where-upon INT 13H clears the flag, finishes its processing, and performs an IRET to return control to the task.
In effect, the design of the INT 13~ interrupt hand-ler routine forces the CPU to sit idle until the disk con-troller (which, once activated, does not need the CPU to -6- ~3~
perform its data-writing functions) has completed its work.
It will be recognized by those of ordinary skill that the above description relates to a relatively simple case of writing to disk. As is well known to those of ordinary skill, some write operations require multiple hardware interrupts thereby causing multiple WAITs and POSTs.
Queued Write Operations Write queuing, generally speaking, involves directing some or all disk write requests to a queue buffer instead of to the disk in question, and control is given back to the task. ~he actual physical writing to disk is performed later on whenever convenient, thus reducing the delay in resuming execution of the calling task.
A posted-write queuing program for writing informa-tion sectors to disk sectors includes error-handling rou-tines to minimize the risk of data loss upon specified types of errors. Upon timeouts, queuing is suspended and all information sectors pending in the queue are written out to the corresponding disk sectors. Upon specified types of write errors, gueuing is discontinued and repeat-ed attempts are made to write out all information sectors to the corresponding disk sectors. For each unsuccessful attempt, the corresponding information sector is saved in the queue; the user is alerted, and subsequent read or write requests directed to the correspondin~ disk sector is serviced from the saved information sector in the queue.
-6A- ~ 31~
~ Summary of the Invention The invention herein pertains to a method of maintaining a posted-write queue upon a timeout, to which queue information sectors addressed to respective corresponding disk sectors may be added and from which queue information sectors may be written out to the respective corresponding disk sectors.
In one broad aspect, the method comprises the steps of blocking the addition of information sectors to the queue and writing out to the corresponding disk sector each information sector already added to the queue.
In another aspect, the method comprises the steps of blocking the addition of information sectors -to the queue, attempting to write out to the corresponding disk sector each information sector already added to the queue and for each attempt that is unsuccessful, saving the information sector in the queue.
The method may also include the step of servicing from the queue any subsequent read request or write request directed to a disk sector corresponding to any of the saved information sector.
-7- ~3~
Posted-Write Q~Leueina in Disk Cache UtilitY
The present invention is illustrated by the following description of a set of routines for posting and queuing 5 write requests generated by tasks. The routines operate as a part of a disk-cache installable device driver under the MS-DOS operatiny system (versions 3.10 through 3.39).
Appendix 1 is a copy of the assembler source code for the routines.
'' 10 The posted-write queuing routines operate in ¦ conjunction with a disk cache utility that maintains a cache buffer and a cache directory. In the illustration described here, the posted-write queuing routines are written as a part of such a disk cache utility, which forms no part of the present invention (except to the extent claimed) and is not otherwise described.
, It will be understood that the description is presen-¦ 20 ted by way of illustration and not as a limitation on the subject matter claimed.
Substitution of Interrupt Handlers ;
¦ ~ 25 Several interrupt handlers in the BIOS program have their behavior altered (sometimes referred to as "hooked,"
"trapped," or "grabbed") in the conventional manner.
Generally speaking, this involves (a) saving the vectors that are stored in low memory and are associated with the respective interrupt handlers; these vectors ordinarily point to the respective addresses of the normal BIOS
interrupt handler routines; and (b) overwriting these vectors with new vectors pointing to the addresses of substitute interrupt handler routines.
-8- ~3~
In particular, the respective handlers for INT 13H, for INT 15H WAIT and INT 15H POST, and for timeouts and write errors, are replaced. Appendix 2 sets forth a pseu-docode description of the substitute routines, briefly ex-plainin~ in general terms the matters set forth in detailin ~ppendix l.
As is conventional, a substitute routine may call the original interrupt handler; this is done by simply calling the original handler, whose address was saved as part of the overwriting process described above. For example, Appendix 2 shows that this is done in the substitute routine for INT 13H.
Memory Allocation for Oueue The posted-write queuing routines use an 8K FIFO
(first-in, first-out) buffer in main memory for queuing write requests. More specifically, the queue utilizes the base memory that is reserved by the cache driver during its installation.
The queue is kept relatively small to reduce the chance of data loss due to the user turning off the com-puter when it appears that the write is complete ~when infact it is not).
Sinqle-Sector Writes If the write buffer of a disk write request will oc-cupy no more than one sector on the disk (i.e., if the re-quest is for a single-sector write), then broadly speak-ing, the write request is queued and posted as complete, and control is returned to the task.
- 9 ~ 3 ~
More specifically, the substitute INT 13H routine queues the write request and jumps to a DEQUEUE routine.
The DEQUEUE routine in turn generates its own conventional INT 13H write request that specifies the queue as the write bu~fer.
When the conventional INT 13H interrupt handler calls the INT 15H WAIT routine, the substitute INT 15H WAIT rou-tine saves the wait environment and returns back to the callinq task (instead of to the conventional INT 13H
routine that called it), even though the disk controller may not yet have reported completion of the write opera-tion. In effect, this leaves the conventional INT 13H
routine in something like a state of suspension.
When the disk controller does complete its write op-eration, it generates a hardware interrupt, thus causing the fixed disk hardware-interrupt-occurred flag to be set and causing the INT 15H POST routine to be called. The substitute INT 15H POST routine restores the previously-saved wait environment and returns control to the pre-viously "suspended" conventional INT 13H write routine, in effect reactivating that routine.
Because the fixed disk hardware-interrupt-occurred flag is now set, the now-reactivated conventional INT 13H
write routine does not stay in its wait loop waiting for that interrupt (as described above). Instead, the conven-tional INT 13H write routine finishes its processing and performs an IRET to return control to the DEQUEUE routine that originally called it.
The DEQUEUE routine in turn returns control to the calling task, but at the point where the last hardware interrupt occurred, not at the point where the write request was generated.
-10- ~
Error Handlinq On any time out, queuing is discontinued (i.e., no more write requests are added to the queue) and all write requests already queued are written out individually.
~imeout error logic is employed while waiting for the queue to become empty or not full to ensure that a cache controller failure is the only possible cause of an unrecoverable error.
! The timeout error logic uses fla~s to determine where the write operation timed out. This aids in making a determination whether or not the last sector sent to the conventional INT 13H write routine was actually wxitten out to the disk. It also aids in determinin~ whether the timeout was caused by hardware te.g., controller failure) or software (e.g., conflicting programs) and in giving the user an appropriate error message.
On any sector-not-found write error or address-not-found write error, repeated attempts (e.g., 5 disk resets and retries) are made to write out each sector in the queue to disk, one at a time. If any given sector(s) cannot be written out, queuing is permanently discontinued luntil a reset, of course) and the sector(s) in question are saved in the queue.
Subsequent to such action (until power reset), each disk read req~est and each disk write request is checked to determine whether any requested sector is in the queue (meaning that the actual disk sector is out of date or perhaps even unaccessible). Such requests are serviced from the queue buffer; if the sector in question is writ-ten to, it is updated in the queue buffer. ~ suitable alarm prompts the user to back up the disk (the backup request will be serviced in part from the queue).
~ 3 ~ 9 ~ ~ ~
Efficiencv Considerations Queueing of disk writes takes place only for single-sector writes. Only single-sector writes are queued because the queue is small and most writes will be either single-sector or very large multi-sector writes. To ac-commodate large writes would require too much complexity and overhead; it is regarded as more efficient to handle only the other most common write size, i.e., single-sector j 10 writes. (The source code, Appendix 1, includes routines for multi-sector writes.) If either a multi-sector write request or a disk read request is generated, the queue is forced empty (i.e., i.e., written out to the diskl or "flushed"~ before the requested operation is performedO If disk reads are cached, the queue is flushed only if the desired sectors to be read are not present in the cache. This queue flushing is a convenient, low-overhead way of ensuring that the data in the queue is always current.
No check is performed for duplication of write re-quests in the queue. Such a check would theoretically eliminate the extra disk write, but the associated over-head is regarded as not worth the trade-off, because only comparatively rarely will the queue contain two writes to the same disk sector.
Likewise, the queue is not sorted, because the queue is small and since most single-sector writes will either be sequential or will vary greatly across the disk. The overhead associated with moving data (in sorting or in copying to the dlsk controller buffer) is very high, so in this embodiment the queue is copied once and not moved.
-12- ~ f~
At any given time, the queue may contain write re-quests for a number of sectors (i.e., if write requests are generated in quick succession by the task). If suc-cessive write requests in the queue are directed to suc-cessive disk sectors, a more efficient disk write can beaccomplished when emptying the queue by performing a multi-sector write from the queue.
Toward this end, the queue in the embodiment de-scribed is circular and has a fixed buffer location;furthermore, the head and tail pointers are both placed at the top of the queue when the queue is empty.
Appendixes 3 and 4 outline additional considerations directed to efficient implementation of the posted-write queuing routines.
The foregoing description of the invention has been directed to a particular preferred embodiment for purposes of explanation and illustration. If will be apparent, however, to those skilled in the art having the benefit of this disclosure that many modifications and changes may be made without departing from the essence of the invention.
It is the Applicant's intention in the following claims to cover all equivalent modifications and variations as fall within the scope of the invention.
Claims (4)
1. A method of maintaining a posted-write queue upon a timeout, to which queue information sectors addressed to respective corresponding disk sectors may be added, and from which queue said information sectors may be written out to said respective corresponding disk sectors, said method comprising the steps of:
(a) blocking said addition of information sectors to said queue; and (b) writing out to said corresponding disk sector each information sector already added to said queue.
(a) blocking said addition of information sectors to said queue; and (b) writing out to said corresponding disk sector each information sector already added to said queue.
2. A method of maintaining a posted-write queue upon a specified type of write error, to which queue information sectors addressed to respective corresponding disk sectors may be added, and from which queue said information sectors may be written out to said respective corresponding disk sectors, said method comprising the steps of:
(a) blocking said addition of information sectors to said queue;
(b) attempting to write out to said corresponding disk sector each information sector already added to said queue; and (c) for each said attempt that is unsuccessful, saving said information sector in said queue.
(a) blocking said addition of information sectors to said queue;
(b) attempting to write out to said corresponding disk sector each information sector already added to said queue; and (c) for each said attempt that is unsuccessful, saving said information sector in said queue.
3. A method of maintaining a posted-write queue upon a specified type of write error, to which queue information sectors addressed to respective corresponding disk sectors may be added, and from which queue said information sectors may be written out to said respective corresponding disk sectors, said method comprising the steps of:
(a) blocking said addition of information sectors to said queue;
(b) attempting to write out to said corresponding disk sector each information sector already added to said queue;
(c) for each said attempt that is unsuccessful, saving said information sector in said queue; and (d) servicing from said queue any subsequent read request or write request directed to a disk sector corres-ponding to any said saved information sector.
(a) blocking said addition of information sectors to said queue;
(b) attempting to write out to said corresponding disk sector each information sector already added to said queue;
(c) for each said attempt that is unsuccessful, saving said information sector in said queue; and (d) servicing from said queue any subsequent read request or write request directed to a disk sector corres-ponding to any said saved information sector.
4. A method of managing a posted-write queue to which information sectors addressed to respective corres-ponding disk sectors may be added, and from which said in-formation sectors may be written out to said respective corresponding disk sectors, said method comprising the steps of:
(a) upon a timeout, blocking said addition of in-formation sectors to said queue and writing out to said corresponding disk sector each information sector already added to said queue;
(b) upon a specified type of write error, blocking said addition of information sectors to said queue;
(c) subsequent to said write error, attempting to write out to said corresponding disk sector each infor-mation sector already added to said queue;
(d) for each said attempt that is unsuccessful, saving said information sector in said queue; and (e) servicing from said queue any read request or write request subsequent to said unsuccessful attempt that is directed to a disk sector corresponding to said saved information sector.
QUEUED POSTED-WRITE DISK WRITE
METHOD WITH IMPROVED ERROR HANDLING
INVENTORS
CURTIS R. JONES, JR.
ROBERT S. GREADY :
page 58,132 title CACHQUE (C) Copyright Compaq Computer Corp 1988 Name: Cachque - Posted write queue addition to disk cache driver Version:
Date:
Author: Scott Gready Functional Description:
These routines add posted write capability to the memory resident portion of the Compaq disk cache driver.
page .286c ;********* The code for queueing multiple sector writes is commented ********
;********* out with a ;*A notation. This code will need to be ********
;********* restored if NUM_Q_SECT is set greater than 1. ********
beep_cnt db 10 ; number of beeps on write err.
page 22 page 23 page 24 page 25 page Page 1-27 intentionally omitted
(a) upon a timeout, blocking said addition of in-formation sectors to said queue and writing out to said corresponding disk sector each information sector already added to said queue;
(b) upon a specified type of write error, blocking said addition of information sectors to said queue;
(c) subsequent to said write error, attempting to write out to said corresponding disk sector each infor-mation sector already added to said queue;
(d) for each said attempt that is unsuccessful, saving said information sector in said queue; and (e) servicing from said queue any read request or write request subsequent to said unsuccessful attempt that is directed to a disk sector corresponding to said saved information sector.
QUEUED POSTED-WRITE DISK WRITE
METHOD WITH IMPROVED ERROR HANDLING
INVENTORS
CURTIS R. JONES, JR.
ROBERT S. GREADY :
page 58,132 title CACHQUE (C) Copyright Compaq Computer Corp 1988 Name: Cachque - Posted write queue addition to disk cache driver Version:
Date:
Author: Scott Gready Functional Description:
These routines add posted write capability to the memory resident portion of the Compaq disk cache driver.
page .286c ;********* The code for queueing multiple sector writes is commented ********
;********* out with a ;*A notation. This code will need to be ********
;********* restored if NUM_Q_SECT is set greater than 1. ********
beep_cnt db 10 ; number of beeps on write err.
page 22 page 23 page 24 page 25 page Page 1-27 intentionally omitted
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US245,865 | 1988-09-16 | ||
US07/245,865 US5065354A (en) | 1988-09-16 | 1988-09-16 | Queued posted-write disk write method with improved error handling |
Publications (1)
Publication Number | Publication Date |
---|---|
CA1319440C true CA1319440C (en) | 1993-06-22 |
Family
ID=22928407
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CA000596535A Expired - Fee Related CA1319440C (en) | 1988-09-16 | 1989-04-12 | Queued posted-write disk write method with improved error handling |
Country Status (6)
Country | Link |
---|---|
US (1) | US5065354A (en) |
EP (1) | EP0359384B1 (en) |
JP (1) | JPH0293949A (en) |
KR (1) | KR970011213B1 (en) |
CA (1) | CA1319440C (en) |
DE (1) | DE68928542T2 (en) |
Families Citing this family (35)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5347648A (en) * | 1990-06-29 | 1994-09-13 | Digital Equipment Corporation | Ensuring write ordering under writeback cache error conditions |
GB9026917D0 (en) * | 1990-12-11 | 1991-01-30 | Int Computers Ltd | Rotating memory system |
US5295259A (en) * | 1991-02-05 | 1994-03-15 | Advanced Micro Devices, Inc. | Data cache and method for handling memory errors during copy-back |
JPH06309200A (en) * | 1991-04-10 | 1994-11-04 | Internatl Business Mach Corp <Ibm> | Method for reading object from volume hierarchical type memory system and information processing system |
EP0510245A1 (en) * | 1991-04-22 | 1992-10-28 | Acer Incorporated | System and method for a fast data write from a computer system to a storage system |
US5388254A (en) * | 1992-03-27 | 1995-02-07 | International Business Machines Corporation | Method and means for limiting duration of input/output (I/O) requests |
US5448719A (en) * | 1992-06-05 | 1995-09-05 | Compaq Computer Corp. | Method and apparatus for maintaining and retrieving live data in a posted write cache in case of power failure |
US5408644A (en) * | 1992-06-05 | 1995-04-18 | Compaq Computer Corporation | Method and apparatus for improving the performance of partial stripe operations in a disk array subsystem |
US5715424A (en) * | 1992-12-10 | 1998-02-03 | International Business Machines Corporation | Apparatus and method for writing data onto rewritable optical media |
ATE154851T1 (en) * | 1993-01-21 | 1997-07-15 | Apple Computer | METHOD AND DEVICE FOR DATA TRANSMISSION AND STORAGE IN A HIGHLY PARALLEL COMPUTER NETWORK ENVIRONMENT |
JP3130536B2 (en) * | 1993-01-21 | 2001-01-31 | アップル コンピューター インコーポレーテッド | Apparatus and method for transferring and storing data from multiple networked computer storage devices |
DE69431186T2 (en) * | 1993-06-03 | 2003-05-08 | Network Appliance Inc | Method and file system for assigning file blocks to storage space in a RAID disk system |
US5963962A (en) * | 1995-05-31 | 1999-10-05 | Network Appliance, Inc. | Write anywhere file-system layout |
US6138126A (en) | 1995-05-31 | 2000-10-24 | Network Appliance, Inc. | Method for allocating files in a file system integrated with a raid disk sub-system |
US6604118B2 (en) | 1998-07-31 | 2003-08-05 | Network Appliance, Inc. | File system image transfer |
ATE409907T1 (en) * | 1993-06-03 | 2008-10-15 | Network Appliance Inc | METHOD AND DEVICE FOR DESCRIBING ANY AREAS OF A FILE SYSTEM |
ATE176824T1 (en) * | 1993-07-19 | 1999-03-15 | Cheyenne Advanced Tech Ltd | FILE BACKUP SYSTEM |
US5675725A (en) * | 1993-07-19 | 1997-10-07 | Cheyenne Advanced Technology Limited | Computer backup system operable with open files |
US5574950A (en) * | 1994-03-01 | 1996-11-12 | International Business Machines Corporation | Remote data shadowing using a multimode interface to dynamically reconfigure control link-level and communication link-level |
US5764903A (en) * | 1994-09-26 | 1998-06-09 | Acer America Corporation | High availability network disk mirroring system |
US5680580A (en) * | 1995-02-28 | 1997-10-21 | International Business Machines Corporation | Remote copy system for setting request interconnect bit in each adapter within storage controller and initiating request connect frame in response to the setting bit |
US6449686B1 (en) * | 1997-03-06 | 2002-09-10 | Micron Technology, Inc. | Method and apparatus for determining removable magnetic media types in a computer after detection of a read error condition |
AU8061798A (en) * | 1997-06-09 | 1998-12-30 | Cacheflow, Inc. | Network object cache engine |
US7103794B2 (en) | 1998-06-08 | 2006-09-05 | Cacheflow, Inc. | Network object cache engine |
US6516351B2 (en) | 1997-12-05 | 2003-02-04 | Network Appliance, Inc. | Enforcing uniform file-locking for diverse file-locking protocols |
US6457130B2 (en) | 1998-03-03 | 2002-09-24 | Network Appliance, Inc. | File access control in a multi-protocol file server |
US6366968B1 (en) * | 1998-06-26 | 2002-04-02 | Intel Corporation | Physical write packets processing when posted write error queue is full, with posted write error queue storing physical write requests when posted write packet fails |
US6587962B1 (en) * | 1999-10-20 | 2003-07-01 | Hewlett-Packard Development Company, L.P. | Write request protection upon failure in a multi-computer system |
US6857001B2 (en) | 2002-06-07 | 2005-02-15 | Network Appliance, Inc. | Multiple concurrent active file systems |
US7302690B2 (en) * | 2003-07-31 | 2007-11-27 | International Business Machines Corporation | Method and apparatus for transparently sharing an exception vector between firmware and an operating system |
US7313720B1 (en) | 2004-02-12 | 2007-12-25 | Network Appliance, Inc. | Technique for increasing the number of persistent consistency point images in a file system |
US20110167197A1 (en) * | 2010-01-05 | 2011-07-07 | Mark Leinwander | Nonvolatile Storage with Disparate Memory Types |
US20140089646A1 (en) * | 2012-09-27 | 2014-03-27 | Texas Instruments Incorporated | Processor with interruptable instruction execution |
US10649829B2 (en) | 2017-07-10 | 2020-05-12 | Hewlett Packard Enterprise Development Lp | Tracking errors associated with memory access operations |
CN109918024B (en) * | 2019-02-28 | 2022-07-05 | 深圳和而泰数据资源与云技术有限公司 | Storage management method and device, single-chip microcomputer equipment and readable storage medium |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS5255446A (en) * | 1975-10-31 | 1977-05-06 | Toshiba Corp | Information transfer control system |
US4394733A (en) * | 1980-11-14 | 1983-07-19 | Sperry Corporation | Cache/disk subsystem |
US4598357A (en) * | 1980-11-14 | 1986-07-01 | Sperry Corporation | Cache/disk subsystem with file number for recovery of cached data |
US4523275A (en) * | 1980-11-14 | 1985-06-11 | Sperry Corporation | Cache/disk subsystem with floating entry |
US4476526A (en) * | 1981-11-27 | 1984-10-09 | Storage Technology Corporation | Cache buffered memory subsystem |
US4454595A (en) * | 1981-12-23 | 1984-06-12 | Pitney Bowes Inc. | Buffer for use with a fixed disk controller |
US4523206A (en) * | 1982-03-03 | 1985-06-11 | Sperry Corporation | Cache/disk system with writeback regulation relative to use of cache memory |
US4527233A (en) * | 1982-07-26 | 1985-07-02 | Ambrosius Iii William H | Addressable buffer circuit with address incrementer independently clocked by host computer and external storage device controller |
US4546430A (en) * | 1983-07-13 | 1985-10-08 | Sperry Corporation | Control unit busy queuing |
-
1988
- 1988-09-16 US US07/245,865 patent/US5065354A/en not_active Expired - Lifetime
-
1989
- 1989-04-12 CA CA000596535A patent/CA1319440C/en not_active Expired - Fee Related
- 1989-06-29 JP JP1168278A patent/JPH0293949A/en active Pending
- 1989-08-04 EP EP89307948A patent/EP0359384B1/en not_active Expired - Lifetime
- 1989-08-04 DE DE68928542T patent/DE68928542T2/en not_active Expired - Fee Related
- 1989-08-31 KR KR1019890012719A patent/KR970011213B1/en not_active IP Right Cessation
Also Published As
Publication number | Publication date |
---|---|
EP0359384A3 (en) | 1991-07-10 |
KR970011213B1 (en) | 1997-07-08 |
JPH0293949A (en) | 1990-04-04 |
DE68928542T2 (en) | 1998-07-23 |
DE68928542D1 (en) | 1998-02-19 |
US5065354A (en) | 1991-11-12 |
EP0359384B1 (en) | 1998-01-14 |
KR900005326A (en) | 1990-04-14 |
EP0359384A2 (en) | 1990-03-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CA1319440C (en) | Queued posted-write disk write method with improved error handling | |
US10859289B2 (en) | Generating and using checkpoints in a virtual computer system | |
USRE37601E1 (en) | Method and system for incremental time zero backup copying of data | |
JPH08314848A (en) | Method and apparatus for transfer of data between two devices by shortening of overhead of microprocessor | |
USRE37364E1 (en) | Method and system for sidefile status polling in a time zero backup copy process | |
US5359713A (en) | Method and apparatus for enhancing synchronous I/O in a computer system with a non-volatile memory and using an acceleration device driver in a computer operating system | |
US6341342B1 (en) | Method and apparatus for zeroing a transfer buffer memory as a background task | |
US5448718A (en) | Method and system for time zero backup session security | |
US6314471B1 (en) | Techniques for an interrupt free operating system | |
US5752268A (en) | Minimum-delay recoverable disk control system using checkpoints and nonvolatile memory | |
JP2004185349A (en) | Update data writing method using journal log | |
JPH0683687A (en) | Data processing system and method thereof | |
US7085892B2 (en) | Method, system, and program for removing data in cache subject to a relationship | |
US20030135674A1 (en) | In-band storage management | |
US6425053B1 (en) | System and method for zeroing data storage blocks in a raid storage implementation | |
US20060069888A1 (en) | Method, system and program for managing asynchronous cache scans | |
CN111448554A (en) | Copy source to target management in a data storage system | |
US20070038593A1 (en) | Data Storage Control Apparatus And Method | |
US6725348B1 (en) | Data storage device and method for reducing write misses by completing transfer to a dual-port cache before initiating a disk write of the data from the cache | |
JPS6097458A (en) | Data transfer unit | |
JPH065515B2 (en) | Method and computer system for reducing cache reload overhead | |
JP2003131893A (en) | Arithmetic processing system, task control method in a computer system and storage medium | |
JPH0628303A (en) | Communication processor | |
JPS59172186A (en) | Cache memory control system | |
JPH09305330A (en) | Disk array system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
MKLA | Lapsed |