linux/fs/iomap
Matthew Wilcox (Oracle) 4595a298d5 iomap: Set all uptodate bits for an Uptodate page
For filesystems with block size < page size, we need to set all the
per-block uptodate bits if the page was already uptodate at the time
we create the per-block metadata.  This can happen if the page is
invalidated (eg by a write to drop_caches) but ultimately not removed
from the page cache.

This is a data corruption issue as page writeback skips blocks which
are marked !uptodate.

Fixes: 9dc55f1389 ("iomap: add support for sub-pagesize buffered I/O without buffer heads")
Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org>
Reported-by: Qian Cai <cai@redhat.com>
Cc: Brian Foster <bfoster@redhat.com>
Reviewed-by: Gao Xiang <hsiangkao@redhat.com>
Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com>
Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
2020-09-28 08:47:01 -07:00
..
apply.c iomap: Make sure iomap_end is called after iomap_begin 2020-07-06 10:49:27 -07:00
buffered-io.c iomap: Set all uptodate bits for an Uptodate page 2020-09-28 08:47:01 -07:00
direct-io.c iomap: Fix direct I/O write consistency check 2020-09-10 08:26:16 -07:00
fiemap.c fs: handle FIEMAP_FLAG_SYNC in fiemap_prep 2020-06-03 23:16:55 -04:00
Makefile iomap: lift common tracing code from xfs to iomap 2019-10-21 08:51:59 -07:00
seek.c treewide: Use fallthrough pseudo-keyword 2020-08-23 17:36:59 -05:00
swapfile.c iomap: use a srcmap for a read-modify-write I/O 2019-10-21 08:51:59 -07:00
trace.c iomap: lift common tracing code from xfs to iomap 2019-10-21 08:51:59 -07:00
trace.h iomap: fall back to buffered writes for invalidation failures 2020-08-05 09:24:16 -07:00