forked from pool/u-boot
Accepting request 886585 from hardware👢staging
OBS-URL: https://build.opensuse.org/request/show/886585 OBS-URL: https://build.opensuse.org/package/show/hardware:boot/u-boot?expand=0&rev=142
This commit is contained in:
parent
9998637d2f
commit
d85ab6ca52
72
0014-fs-btrfs-fix-the-false-alert-of-dec.patch
Normal file
72
0014-fs-btrfs-fix-the-false-alert-of-dec.patch
Normal file
@ -0,0 +1,72 @@
|
||||
From 95067913a0d90d37decce6835bababa0f3739275 Mon Sep 17 00:00:00 2001
|
||||
From: Qu Wenruo <wqu@suse.com>
|
||||
Date: Sat, 17 Apr 2021 20:52:13 +0800
|
||||
Subject: [PATCH] fs: btrfs: fix the false alert of decompression failure
|
||||
|
||||
There are some cases where decompressed sectors can have padding zeros.
|
||||
|
||||
In kernel code, we have lines to address such situation:
|
||||
|
||||
/*
|
||||
* btrfs_getblock is doing a zero on the tail of the page too,
|
||||
* but this will cover anything missing from the decompressed
|
||||
* data.
|
||||
*/
|
||||
if (bytes < destlen)
|
||||
memset(kaddr+bytes, 0, destlen-bytes);
|
||||
kunmap_local(kaddr);
|
||||
|
||||
But not in U-boot code, thus we have some reports of U-boot failed to
|
||||
read compressed files in btrfs.
|
||||
|
||||
Fix it by doing the same thing of the kernel, for both inline and
|
||||
regular compressed extents.
|
||||
|
||||
Reported-by: Matwey Kornilov <matwey.kornilov@gmail.com>
|
||||
Link: https://bugzilla.suse.com/show_bug.cgi?id=1183717
|
||||
Fixes: a26a6bedafcf ("fs: btrfs: Introduce btrfs_read_extent_inline() and btrfs_read_extent_reg()")
|
||||
Signed-off-by: Qu Wenruo <wqu@suse.com>
|
||||
---
|
||||
fs/btrfs/inode.c | 16 ++++++++++++++--
|
||||
1 file changed, 14 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c
|
||||
index 019d532a1a..2c2379303d 100644
|
||||
--- a/fs/btrfs/inode.c
|
||||
+++ b/fs/btrfs/inode.c
|
||||
@@ -390,10 +390,16 @@ int btrfs_read_extent_inline(struct btrfs_path *path,
|
||||
csize);
|
||||
ret = btrfs_decompress(btrfs_file_extent_compression(leaf, fi),
|
||||
cbuf, csize, dbuf, dsize);
|
||||
- if (ret < 0 || ret != dsize) {
|
||||
+ if (ret == (u32)-1) {
|
||||
ret = -EIO;
|
||||
goto out;
|
||||
}
|
||||
+ /*
|
||||
+ * The compressed part ends before sector boundary, the remaining needs
|
||||
+ * to be zeroed out.
|
||||
+ */
|
||||
+ if (ret < dsize)
|
||||
+ memset(dbuf + ret, 0, dsize - ret);
|
||||
memcpy(dest, dbuf, dsize);
|
||||
ret = dsize;
|
||||
out:
|
||||
@@ -494,10 +500,16 @@ int btrfs_read_extent_reg(struct btrfs_path *path,
|
||||
|
||||
ret = btrfs_decompress(btrfs_file_extent_compression(leaf, fi), cbuf,
|
||||
csize, dbuf, dsize);
|
||||
- if (ret != dsize) {
|
||||
+ if (ret == (u32)-1) {
|
||||
ret = -EIO;
|
||||
goto out;
|
||||
}
|
||||
+ /*
|
||||
+ * The compressed part ends before sector boundary, the remaining needs
|
||||
+ * to be zeroed out.
|
||||
+ */
|
||||
+ if (ret < dsize)
|
||||
+ memset(dbuf + ret, 0, dsize - ret);
|
||||
/* Then copy the needed part */
|
||||
memcpy(dest, dbuf + btrfs_file_extent_offset(leaf, fi), len);
|
||||
ret = len;
|
@ -1,3 +1,10 @@
|
||||
-------------------------------------------------------------------
|
||||
Mon Apr 19 07:18:23 UTC 2021 - Guillaume GARDET <guillaume.gardet@opensuse.org>
|
||||
|
||||
Patch queue updated from https://github.com/openSUSE/u-boot.git tumbleweed-2021.04
|
||||
* Patches added:
|
||||
0014-fs-btrfs-fix-the-false-alert-of-dec.patch - boo#1183717
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Fri Apr 9 12:43:13 UTC 2021 - Matthias Brugger <mbrugger@suse.com>
|
||||
|
||||
|
@ -233,6 +233,7 @@ Patch0010: 0010-sunxi-Enable-SPI-support-on-Orange-.patch
|
||||
Patch0011: 0011-Disable-CONFIG_CMD_BTRFS-in-xilinx_.patch
|
||||
Patch0012: 0012-smbios-Fix-table-when-no-string-is-.patch
|
||||
Patch0013: 0013-configs-rpi-Enable-SMBIOS-sysinfo-d.patch
|
||||
Patch0014: 0014-fs-btrfs-fix-the-false-alert-of-dec.patch
|
||||
# Patches: end
|
||||
BuildRequires: bc
|
||||
BuildRequires: bison
|
||||
|
Loading…
Reference in New Issue
Block a user