Messages in this thread | | | Date | Tue, 15 Jul 2008 09:16:52 -0400 (EDT) | From | Mikulas Patocka <> | Subject | Re: [SUGGESTION]: drop virtual merge accounting in I/O requests |
| |
On Tue, 15 Jul 2008, Andi Kleen wrote:
> Mikulas Patocka wrote: >>>> BTW. what should the block device driver do when it receives a mapping >>>> error? (if it aborts the request and it was write request, there will be >>>> data corruption). >>> >>> I'm not sure how a aborted request can corrupt data on disk. >> >> Writes are done by an async daemon and no one checks for their >> completion status. If there are three writes to directory, inode table >> and inode bitmap and one of these writes fail, there's no code to undo >> the other two. So the filesystem will be corrupted on write failure. > > Normally journaling in ordered mode takes care of that. The transaction > is not committed until all earlier data has been successfully written.
And if there was write error, then what happens? Retry? Blocking of any further updates?
> And even the other fs typically turn the file system read only > on IO error to prevent further corruption.
There is no interface how filesystem could query that buffer marked with mark_buffer_dirty was not written. Or is there?
Mikulas
| |