On Fri, May 25, 2018 at 07:35:33AM -0400, Brian Foster wrote: > That comment is what I'm basing on... > > > /* > > * We can end up here with no error and nothing to write if we > > * race with a partial page truncate on a sub-page block sized > > * filesystem. In that case we need to mark the page clean. > > */ > > > > So we can correctly end up with nothing to write on a dirty page, but it > presumes a race with truncate. So suppose we end up with a dirty page, > > at least one uptodate block, count is zero (i.e., due to holes) and > i_size is beyond the page. Would that not be completely bogus? If bogus, > I think that would at least detect the dumb example I posted earlier. The trivial file_offset >= i_size_read assert explodes pretty soon in generic/091, and already does so with the existing mainline code. I'd rather not open another can of worms right now..