> write() > kernel attempts to write back page and fails > page is marked clean and evicted from the cache > read() > > Now your write is gone and there were no calls between the write and > read. > > The question we still need to answer is this: > > When we attempt to write back some data from the cache and that fails, > what should happen to the dirty pages? Why do you care about the content of the pages at that point. The only options are to use the data (todays model), or to report that you are on fire. If you are going to error you don't need to use the data so you could in fact compress dramatically the amount of stuff you need to save somewhere. You need the page information so you can realize what page this is, but you can point the data into oblivion somewhere because you are no longer going to give it to anyone (assuming you can successfully force unmap it from everyone once it's not locked by a DMA or similar). In the real world though it's fairly unusual to just lose a bit of I/O. Flash devices in particular have a nasty tendancy to simply go *poof* and the first you know about an I/O error is the last data the drive ever gives you short of jtag. NFS is an exception and NFS soft timeouts are nasty. Alan