summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLiu Bo <bo.li.liu@oracle.com>2017-07-11 14:43:16 -0600
committerDavid Sterba <dsterba@suse.com>2017-08-16 16:12:02 +0200
commit0d1e0bead62a1778c45f22439cf067e63068faea (patch)
treee2340e7e969bfb8a506ef193adaae243d9d65a08
parent69f03f137a1cb1a5215bc9e64597bfdfcdf22fde (diff)
downloadlinux-0d1e0bead62a1778c45f22439cf067e63068faea.tar.bz2
Btrfs: report errors when checksum is not found
When btrfs fails the checksum check, it'll fill the whole page with "1". However, if %csum_expected is 0 (which means there is no checksum), then for some unknown reason, we just pretend that the read is correct, so userspace would be confused about the dilemma that read is successful but getting a page with all content being "1". This can happen due to a bug in btrfs-convert. This fixes it by always returning errors if checksum doesn't match. Signed-off-by: Liu Bo <bo.li.liu@oracle.com> Reviewed-by: David Sterba <dsterba@suse.com> Signed-off-by: David Sterba <dsterba@suse.com>
-rw-r--r--fs/btrfs/inode.c2
1 files changed, 0 insertions, 2 deletions
diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c
index 95c212037095..97970602c3d5 100644
--- a/fs/btrfs/inode.c
+++ b/fs/btrfs/inode.c
@@ -3159,8 +3159,6 @@ zeroit:
memset(kaddr + pgoff, 1, len);
flush_dcache_page(page);
kunmap_atomic(kaddr);
- if (csum_expected == 0)
- return 0;
return -EIO;
}