On Mon, Jul 09, 2018 at 09:02:02PM -0400, Brian Foster wrote: > It looks to me that if the page itself isn't uptodate, we > overwrite a block of that page and then the writepage fails, clearing > the buffer uptodate status means that the next read would return what is > on disk (not what was just written to the page). With iomap we never clear the uptodate bit, and we only set it when the part of the page contains valid data. With buffer heads we might indeed clear the uptodate bit after a write error. Now if the whole page is set uptodate we won't re-read it, but if the whole page wasn't uptodate it seems like the buffer head code will lose data in that case, which looks wrong to me. > I'm not sure that's > what happens if the page was already uptodate before the > overwrite/writepage, however, I didn't notice anything that cleared page > uptodate status on a writepage I/O error..? Yes, the buffer head code seems inconsistent in how it treats the buffer vs page uptodate bits.