summarylogtreecommitdiffstats
path: root/0102-iomap-iomap_bmap-should-accept-unwritten-maps.patch
diff options
context:
space:
mode:
authordingjingmaster2020-09-24 20:40:56 +0800
committerdingjingmaster2020-09-24 20:40:56 +0800
commit1872ea3a3b8c1bc9f696c250675064569e438f2b (patch)
tree0777f88509464742455290aa77923bd182ad52bf /0102-iomap-iomap_bmap-should-accept-unwritten-maps.patch
downloadaur-1872ea3a3b8c1bc9f696c250675064569e438f2b.tar.gz
yay
Diffstat (limited to '0102-iomap-iomap_bmap-should-accept-unwritten-maps.patch')
-rw-r--r--0102-iomap-iomap_bmap-should-accept-unwritten-maps.patch38
1 files changed, 38 insertions, 0 deletions
diff --git a/0102-iomap-iomap_bmap-should-accept-unwritten-maps.patch b/0102-iomap-iomap_bmap-should-accept-unwritten-maps.patch
new file mode 100644
index 000000000000..9ca50277e88c
--- /dev/null
+++ b/0102-iomap-iomap_bmap-should-accept-unwritten-maps.patch
@@ -0,0 +1,38 @@
+From: Yuxuan Shui <yshuiv7@gmail.com>
+To: viro@zeniv.linux.org.uk
+Cc: linux-fsdevel@vger.kernel.org, Yuxuan Shui <yshuiv7@gmail.com>
+Subject: [PATCH] iomap: iomap_bmap should accept unwritten maps
+Date: Tue, 5 May 2020 19:36:08 +0100
+Message-ID: <20200505183608.10280-1-yshuiv7@gmail.com> (raw)
+
+commit ac58e4fb03f9d111d733a4ad379d06eef3a24705 moved ext4_bmap from
+generic_block_bmap to iomap_bmap, this introduced a regression which
+prevents some user from using previously working swapfiles. The kernel
+will complain about holes while there is none.
+
+What is happening here is that the swapfile has unwritten mappings,
+which is rejected by iomap_bmap, but was accepted by ext4_get_block.
+
+This commit makes sure iomap_bmap would accept unwritten mappings as
+well.
+
+Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
+---
+ fs/iomap/fiemap.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/fs/iomap/fiemap.c b/fs/iomap/fiemap.c
+index d55e8f491a5e..fb488dcfa8c7 100644
+--- a/fs/iomap/fiemap.c
++++ b/fs/iomap/fiemap.c
+@@ -115,7 +115,7 @@ iomap_bmap_actor(struct inode *inode, loff_t pos, loff_t length,
+ {
+ sector_t *bno = data, addr;
+
+- if (iomap->type == IOMAP_MAPPED) {
++ if (iomap->type == IOMAP_MAPPED || iomap->type == IOMAP_UNWRITTEN) {
+ addr = (pos - iomap->offset + iomap->addr) >> inode->i_blkbits;
+ *bno = addr;
+ }
+--
+2.26.2