diff options
author | Kent Overstreet <kent.overstreet@gmail.com> | 2018-05-24 01:36:45 -0400 |
---|---|---|
committer | Kent Overstreet <kent.overstreet@gmail.com> | 2018-06-01 17:28:35 -0400 |
commit | c6c26694cdf686320a2f2688a93d98d21b4b35b4 (patch) | |
tree | 41410b05a6e4e08e1df3d135ae4c1023089d70a9 | |
parent | 8ed1609cb5a78662480c6678bdb9af8e2de6daec (diff) |
bcachefs: fix dio write when faulting in from file we're writing to
-rw-r--r-- | fs/bcachefs/fs-io.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/fs/bcachefs/fs-io.c b/fs/bcachefs/fs-io.c index d4385ca5acde..fe1330e6bd87 100644 --- a/fs/bcachefs/fs-io.c +++ b/fs/bcachefs/fs-io.c @@ -1827,6 +1827,13 @@ static long bch2_dio_write_loop(struct dio_write *dio) if (unlikely(ret < 0)) goto err; + /* gup might have faulted pages back in: */ + ret = write_invalidate_inode_pages_range(mapping, + req->ki_pos + (dio->iop.op.written << 9), + req->ki_pos + iov_iter_count(&dio->iter) - 1); + if (unlikely(ret)) + goto err; + dio->iop.op.pos = POS(inode->v.i_ino, (req->ki_pos >> 9) + dio->iop.op.written); |