text: fig1 illustrates an embodiment of a computing environment . a storage controller 2 includes a storage manager 4 comprising software and / or hardware to manage read and write requests to data in a storage 6 . the storage manager 4 maintains information in a memory 8 , including a background operation list 10 indicating all the active addressable blocks in the storage 6 , such as tracks or logical block addresses ( lbas ), and a recently modified list 12 indicating addressable blocks recently modified . the storage manager 4 may perform error checking on the addressable blocks indicated in the lists 10 and 12 . the storage 6 may comprise one or more storage devices , such as one or more disk drives , an array of storage devices , such as a just a bunch of disks ( jbod ), direct access storage device ( dasd ), redundant array of independent disks ( raid ) array , virtualization device , tape storage , flash memory , etc . data or checksum blocks written to each disk in a raid rank for an addressable location , such as an lba or track , are referred to as a stripe , where a stripe comprises the consecutive sectors written to a single disk in a rank of storage devices across which data and checksum information are written . data in each addressable block in the storage 6 is stored in a stripe 14 a , 14 b , 14 c , 14 d . each stripe 14 a , 14 b , 14 c , 14 d comprises multiple data blocks , d 1 , d 2 , d 3 , d n and at least two checksum blocks ( p ) and ( q ), calculated using suitable error correction calculation techniques known in the art . for instance , the ( p ) checksum block may be calculated using a standard error checking checksum , such as shown in equation ( 1 ) below : the additional checksum block ( q ) may be calculated using a polynomial raid6 checksum , such as a reed - solomon code , such as shown in equation ( 2 ) below : the checksum blocks ( p ) and ( q ) block may comprise any suitable error correction code known in the art , such as a redundancy check code , cyclical redundancy check ( crc ) code , parity code , or other checksum values known in the art . in alternative embodiments , only one checksum , e . g ., just a ( p ) block , may be maintained for each stripe 14 a , 14 b , 14 c , 14 d , and thus the error correction operation would only use on checksum block . in one embodiment , the data block d i in a stripe 14 a , 14 b , 14 c , 14 d is stored in a separate storage unit , e . g ., a hard disk drive , such a that there are n storage units for storing data and one storage unit for storing checksum . redundant array of independent disk ( raid ) algorithms known in the art may be used to write stripes 14 a , 14 b , 14 c , 14 d of data and checksum to the storage 6 . in this way , the data from one addressable block , e . g ., track , lba , etc ., is stored across multiple disks to enable data recovery in the event of a failure and increased data throughput to improve read and write performance . the storage controller 2 may comprise a separate storage server in communication with multiple host systems , having one or more processors . alternatively , the storage controller 2 may be implemented on an expansion card or the motherboard of a computer system . the combination of the storage controller 2 and storage manager 4 may be implemented as a processor executing computer readable code and / or a hardware device implementing hardware logic to perform the described operations . fig2 illustrates an alternative arrangement known of how data may be striped in the storage 6 , where each stripe includes data and a horizontal checksum block ( p ), as described above with respect to fig1 , and additionally includes a vertical checksum element 20 a , 20 b , 20 c , 20 d to provide checksum in the vertical direction for blocks from different stripes on the same storage unit , e . g ., checksum block p i provides checksum for all the d i blocks in the stripes . in the embodiment of fig2 , there may not be an additional horizontal checksum , such as ( q ). fig1 and 2 show different arrangements for data and checksum blocks in a stripe in a storage array . however , there are many different arrangements of the data and checksum blocks , such as interleaved , diagonal , etc ., used by raid algorithms in the art . fig3 illustrates an embodiment of operations performed by the storage manager 4 for a write request to an addressable block . upon receiving ( at block 100 ) a write request to an addressable block in the storage 6 , the storage manager 4 applies ( at block 102 ) the write data to the stripe 14 a , 14 b , 14 c , 14 d having the addressable block and recalculates ( at block 104 ) the checksum for the updated addressable block . the checksum recalculation operation may recalculate only a single checksum in the horizontal direction , multiple checksums in the horizontal direction or a horizontal and vertical checksum , depending on the checksum implementation for the stripe . in certain embodiments , the storage manager 4 may store the updated addressable block and checksum in a cache ( not shown ) and destage at a later time . if ( at block 106 ) the checksum calculation is based on a full stride write or a read modified write ( rmw ), which means that the checksum was calculated from all the data blocks , or if the addressable block is already on the recently modified list 12 , then the addressable block is removed ( at block 108 ) from the recently modified list 12 if indicated on the list . in this way , an addressable block is removed from the list 12 if one or more checksums are recalculated using all the blocks during a write operation or as part of a background operation . otherwise , if the checksum is calculated from a partial stripe or if the addressable block is not already indicated on the recently modified list 12 , then the modified addressable block is indicated ( at block 110 ) in the recently modified list 12 . additionally , the operations of blocks 104 - 110 may be performed when checking the checksum during a background operation per the processing of the background operation list 10 . if there is a subsequent modification to a stripe that is on the recently modified list 12 and has not been error checking since the last modification , then the item may be removed from the recently modified list 12 on the assumption that the subsequent write results in an uncorrectable error . in one embodiment , the storage manager 6 may process the entries in the recently modified list 8 to error check the stripes indicated in the most recently modified list to check those stripes most recently modified first . by performing error checking first on those stripes most recently modified , the storage manager 4 increases the likelihood that a block with an error will be detected before the error is propagated further , such as by using the incorrect checksum data in subsequent writes to recalculate one or more checksums for the stripe . as discussed the checksum data may not accurately reflect the data blocks in a stripe 14 a , 14 b , 14 c , 14 d if after the checksum was calculated , the data was not properly written to the storage units , e . g ., “ dropped write ” or “ off track write ”. if a checksum error is detected before the stripe is subsequently updated , then the storage manager 4 may determine the data block causing the error because only one block ( d i ) was updated when the checksum was calculated . if multiple data blocks are updated and the wrong checksum recalculated , then the modified block resulting in the checksum error may not be discernible from the multiple modified blocks . there may be two different updates that occur before the checksum error is detected . one is a “ full stride write ” type update which removes the stripe from the “ most recently updated state ” because the checksum is recalculated using all the data blocks d 1 , d 2 . . . d n . a “ full stride write ” results in the stripe being removed from the recently modified list 12 . during a “ read modified write ” ( rmw ) update , only those data blocks that have changed are updated and the checksum is calculated from partial data blocks the stripe leaving the “ most recently updated state ”. an rmw operation results in the addressable block for the stripe being added to the recently modified list 12 . if the stripe is already indicated on the list 12 , then the stripe 12 is removed from the recently modified list 12 because this subsequent update based on a partial checksum may result in error propagation and / or error hiding so the error checking operation may or may not find a problem in an embodiment where there are both vertical and horizontal checksum elements , as shown in fig2 , if a stripe has not been updated , then the data block d i with the error may be determined by checking the vertical checksum elements to determine the vertical column having a checksum error , indicating the data block that was not correctly written . however , propagating errors in two directions , horizontal and vertical checksum , multiple times may make it difficult or unfeasible to determine the disk ( d i ) in which the error occurred . the schemes with vertical and horizontal checksum may be part of a raid6 ( a raid with 2 checksums ) architecture . when using horizontal and vertical topology , the second checksum does not have to comprise an rs polynomial sum and can instead be calculating using xor checksum generation since there is only a single simple share by any code . in an alternative embodiment , the storage manager 4 may immediately perform an error checking operation after writing the modified data and modified checksum for a stripe 14 a , 14 b , 14 c , 14 d by reading the just updated checksum and data , and recalculating the checksum data to check whether the modified data was written properly to storage 6 . fig4 illustrates an embodiment of operations performed by the storage manager 4 for checking the one or more checksums for a stripe . upon initiating ( at block 150 ) error checking operations , the storage manager 4 generates ( at block 152 ) a background operation list 10 of all addressable blocks in the storage 6 to check . the storage manager 4 performs ( at block 154 ) error checking of stripes for m addressable blocks indicated in the background operation list 10 starting from the last accessed addressable block in the list . error checking may involve the storage manager 4 reading all the data blocks d 1 , d 2 . . . d n for the checked stripe 14 a , 14 b , 14 c , 14 d , recalculating the one or more checksums , and comparing the recalculated checksum to the stored checksums , e . g ., ( p ) and / or ( q ), etc . if the recalculated and stored checksums ( p ) and / or ( q ) for the stripe 14 a , 14 b , 14 c , 14 d match , then there is no checksum error ; if they do not match , then the one or more stored checksums do not accurately reflect the stored data blocks . the storage manager 4 performs a loop of operations at blocks 156 through 170 for each of the m addressable blocks in the background operation list 10 to process . if the end of the background operation list 10 is reached , then the storage manager 4 may return to accessing stripes for addressable blocks at the top of the background operation list 10 . in one embodiment , the background operation list 10 may order addressable blocks according to their address number , from lowest address to highest . if ( at block 158 ) there is a checksum error for any of the m checked stripes 14 a , 14 b , 14 c , 14 d and if ( at block 160 ) the error is detectable , then the storage manager 4 initiates ( at block 162 ) an error handling operation with respect to the checked stripe . a detectable error may comprise an error such that the location or block where the error occurred can be determined . an undetectable error may comprise a dropped write , where the location of the error cannot be determined because the data was not written to the location or because the error was propagated multiple times . the error handling at block 162 may involve attempting to use the one or more checksums for the stripe to recover the data in the block having the error or fencing off the block until the cause of the error can be detected and fixed . if ( at block 160 ) the error is determined to be undetectable , e . g ., a dropped write , and the stripe having the checksum error is not indicated on the most recently modified list 12 ( at block 164 ) ( i . e ., in the most recently modified state ), then an indication is made ( at block 166 ) that the error for the stripe cannot be corrected because the modified data may have been subsequently updated , decreasing the likelihood that the stripe can be recovered , or there may have been no update that could have resulted in an error . otherwise , if ( at block 164 ) the stripe having the undetectable error is indicated on the most recently modified list 12 , then the storage manager 4 uses ( at block 168 ) one or more checksum codes , e . g ., ( p ) and / or ( q ) as shown in fig1 or vertical and horizontal parities as shown in fig2 , for the stripe to correct the error ( e . g ., dropped write ). with respect to fig5 , after processing the m addressable blocks in the background operation list 10 , the storage manager 4 determines ( at block 172 ) whether there are addressable blocks indicated in the recently modified list 12 . if so , then the storage manager 4 performs ( at block 174 ) error checking of stripes for n of the most recently modified addressable blocks indicated in the recently modified list 12 . if ( at block 172 ) the recently modified list 12 is empty , then control proceeds back to block 154 in fig4 to continue processing the background operation list 10 . if ( at block 176 ) there are checksum errors for any of the checked n stripes from the recently modified list 12 , then the storage manager 4 initiates ( at block 178 ) an error handling operation with respect to stripes having checksum errors . as discussed , the error handling operation may use one or multiple checksum blocks , e . g ., checksums , to correct the error . if ( at block 176 ) there was no error or after performing error handling ( at block 178 ), the storage manager 4 removes ( at block 180 ) the addressable blocks for the considered n stripes form the recently modified list 12 and returns to block 154 to continue processing the background operation list 10 . with the described operations of fig4 and 5 , the storage manager 4 alternates between performing error checking of the stripes for addressable blocks indicated in the background operation list 10 and addressable blocks indicated in the recently modified list 12 . in certain embodiments , the m addressable blocks checked in the background operation list 10 may exceed the n addressable blocks checked in the recently modified list 12 . for instance , the storage manager 4 may error check the stripes for twelve addressable blocks in the background operation list 10 and then check the stripes for two addressable blocks in the recently modified list 12 . in the embodiments of fig4 and 5 , the background operation list 10 is checked before the recently modified list 12 . in an alternative embodiment , the recently modified list 12 may be checked for errors before checking the background operation list 10 . in certain embodiments , the storage manager 4 may use resources devoted to background operation error checking to perform both the recently modified list and background operation list error checking . in a further embodiment , the storage manager 4 may allocate additional resources to the error checking to improve the performance of error checking with respect to both lists 10 and 12 , which may negatively impact general read / write processing . with the described embodiments , the storage manager performs additional error checking of stripes for addressable blocks most recently modified to increase the likelihood of detecting a checksum error before the addressable block is subsequently updated and the checksum error propagated . the described operations may be implemented as a method , apparatus or article of manufacture using standard programming and / or engineering techniques to produce software , firmware , hardware , or any combination thereof . the described operations may be implemented as code maintained in a “ computer readable medium ”, where a processor may read and execute the code from the computer readable medium . a computer readable medium may comprise media such as magnetic storage medium ( e . g ., hard disk drives , floppy disks , tape , etc . ), optical storage ( cd - roms , dvds , optical disks , etc . ), volatile and non - volatile memory devices ( e . g ., eeproms , roms , proms , rams , drams , srams , flash memory , firmware , programmable logic , etc . ), etc . the code implementing the described operations may further be implemented as hardware logic in a hardware device ( e . g ., an integrated circuit chip , programmable gate array ( pga ), application specific integrated circuit ( asic ), etc .). still further , the code implementing the described operations may be implemented in “ transmission signals ”, where transmission signals may propagate through space or through a transmission media , such as an optical fiber , copper wire , etc . the transmission signals in which the code or logic is encoded may further comprise a wireless signal , satellite transmission , radio waves , infrared signals , bluetooth , etc . the transmission signals in which the code or logic is encoded is capable of being transmitted by a transmitting station and received by a receiving station , where the code or logic encoded in the transmission signal may be decoded and stored in hardware or a computer readable medium at the receiving and transmitting stations or devices . an “ article of manufacture ” comprises computer readable medium , hardware logic , and / or transmission signals in which code may be implemented . a device in which the code implementing the described embodiments of operations is encoded may comprise a computer readable medium or hardware logic . of course , those skilled in the art will recognize that many modifications may be made to this configuration without departing from the scope of the present invention , and that the article of manufacture may comprise suitable information bearing medium known in the art . in the described operations of fig4 and 5 , the storage manager performs error checking with respect to addressable blocks indicated in both a background operation list 10 and a recently modified list 12 . in an alternative embodiment , the storage manager may not perform a background error check of all the addressable blocks and may only error check modified addressable blocks indicated in the recently modified list 12 . alternatively , the storage manager may not use a list 12 , and may immediately error check an addressable block after updating the checksum and data for an addressable block . in the described embodiments , raid algorithms are used to write user data and checksum data to storage . in an alternative embodiment , different storage algorithms may be used to write user and checksum data to storage in different arrangements than shown in fig1 and 2 . the terms “ an embodiment ”, “ embodiment ”, “ embodiments ”, “ the embodiment ”, “ the embodiments ”, “ one or more embodiments ”, “ some embodiments ”, and “ one embodiment ” mean “ one or more ( but not all ) embodiments of the present invention ( s )” unless expressly specified otherwise . the terms “ including ”, “ comprising ”, “ having ” and variations thereof mean “ including but not limited to ”, unless expressly specified otherwise . the enumerated listing of items does not imply that any or all of the items are mutually exclusive , unless expressly specified otherwise . the terms “ a ”, “ an ” and “ the ” mean “ one or more ”, unless expressly specified otherwise . the variables “ n ” and “ m ” when used to represent a variable number of an element may indicate any number of instances of the element , and may indicate different integer numbers when used with different elements . devices that are in communication with each other need not be in continuous communication with each other , unless expressly specified otherwise . in addition , devices that are in communication with each other may communicate directly or indirectly through one or more intermediaries . a description of an embodiment with several components in communication with each other does not imply that all such components are required . on the contrary a variety of optional components are described to illustrate the wide variety of possible embodiments of the present invention . further , although process steps , method steps , algorithms or the like may be described in a sequential order , such processes , methods and algorithms may be configured to work in alternate orders . in other words , any sequence or order of steps that may be described does not necessarily indicate a requirement that the steps be performed in that order . the steps of processes described herein may be performed in any order practical . further , some steps may be performed simultaneously . when a single device or article is described herein , it will be readily apparent that more than one device / article ( whether or not they cooperate ) may be used in place of a single device / article . similarly , where more than one device or article is described herein ( whether or not they cooperate ), it will be readily apparent that a single device / article may be used in place of the more than one device or article or a different number of devices / articles may be used instead of the shown number of devices or programs . the functionality and / or the features of a device may be alternatively embodied by one or more other devices which are not explicitly described as having such functionality / features . thus , other embodiments of the present invention need not include the device itself . the illustrated operations of fig3 , 4 , and 5 show certain events occurring in a certain order . in alternative embodiments , certain operations may be performed in a different order , modified or removed . moreover , steps may be added to the above described logic and still conform to the described embodiments . further , operations described herein may occur sequentially or certain operations may be processed in parallel . yet further , operations may be performed by a single processing unit or by distributed processing units . the foregoing description of various embodiments of the invention has been presented for the purposes of illustration and description . it is not intended to be exhaustive or to limit the invention to the precise form disclosed . many modifications and variations are possible in light of the above teaching . it is intended that the scope of the invention be limited not by this detailed description , but rather by the claims appended hereto . the above specification , examples and data provide a complete description of the manufacture and use of the composition of the invention . since many embodiments of the invention can be made without departing from the spirit and scope of the invention , the invention resides in the claims hereinafter appended .