Jan Kara wrote: >>By the way, I think the right fix is to keep uptodate flag on write >>error, but it gives a big impact. We have to confirm whether >>over 200 buffer_uptodate's are used for real uptodate check or write >>error check. For now, I adopt the quick-fix solution. > > Yes that needs to be solved. I also looked into it and it's too much work > to do it in a one big sweep. But I think we could do the conversion > filesystem by filesystem - see below. > Admittedly, I don't like your solution very much. It looks strange to > check write_io_error when *reading* the buffer and I'm afraid we could > introduce bugs e.g. by clearing write_io_error bit so that ext3_bread would > then fail to detect the error condition or by some other code deciding to > read the buffer from disk via other function than just ext3_bread. So I > think it would be much better to set back uptodate flag shortly after the > failed write or not clear it at all. > Now here's how I think we could achieve that without having to change all > other filesystems: We could create a new superblock flag which would mean > that "this filesystem handles write_io_error and doesn't want to clear > uptodate flag". Filesystems with this capability would set this flag when > calling get_sb_bdev. And if write IO fails we check this flag > (via bh->b_bdev->bd_super->s_flags) and clear / not clear uptodate flag > accordingly. What do you think? Thanks for your comment! Your suggestion is what I wanted to do ultimately, and it seems to go well. I'll send a rivised patch later. Best regards, -- Hidehiro Kawai Hitachi, Systems Development Laboratory Linux Technology Center -- To unsubscribe from this list: send the line "unsubscribe linux-ext4" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html