mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-20 10:44:23 +08:00
Three pstore fixes related to compression:
1) Better adjustment of size of compression buffer (was too big for EFIVARS backend resulting in compression failure 2) Use zlib_inflateInit2 instead of zlib_inflateInit 3) Don't print messages about compression failure. They will waste space that may better be used to log console output leading to the crash. -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.12 (GNU/Linux) iQIcBAABAgAGBQJSOeAIAAoJEKurIx+X31iBq8wP/1MthA3CDTVFl2beFNXEo8G/ Sq3YAfTHj61f+UKT2489WSyYwc6Q3y4iEia+shCu28DkuQZMifH8KoDfsoJAKF1X SVsm5MkelhXEDlmt94AnEXmNIgQMnJ1c5uToTanNz/UbpUZdsdVzP+c4ifUC1mX3 m+uARA2oy7obVm0RihXEzRhMZAOdkq0TXxL4TVaZShjDPuxN5BSQGlNB13+6LAEM Q54HI/j9RHVFiIxT7INttyOMvDps2zDNJtsVgiphp0bBQBWzY1puJJykM/T64ZJV /UMsycoKLJdLi3pnwWtZ1USTk4EwkjjVWCtUHtan6wEt1rDbrkWaMU1RvTASBz9Z 418EUAob0FZuL0ZdaN4WgYc04xwgc748S/PcUtkFfvk8KqhQbmkgbdVu6cs/mJmQ Jbi+ATJda1zmCEQXZBLENfe7o4yiGgKjOWWy5/tbtMi8a6cpMIPUn9phNXNoRvBb II0iMKwZetuOkDDqJAtZwPUiYNdRHWLosn+66AjpYARXqrCnRfi87x4WMWYJ4CVR RMxrn6YQT3DIDxnBd00zVepdK9ee8It10t7k07f6Ve/EdvOJZK9lSg/FUp9MhL5a N6S9X2gQ0R2wDHjFNRyL8p0xIoe45zFXPICLYaqcDxEcC0G7bd1AxGZ5y9v+/qvK 76dJvg0f1E/TsoqhQw79 =E5IH -----END PGP SIGNATURE----- Merge tag 'please-pull-pstore' of git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux Pull pstore/compression fixes from Tony Luck: "Three pstore fixes related to compression: 1) Better adjustment of size of compression buffer (was too big for EFIVARS backend resulting in compression failure 2) Use zlib_inflateInit2 instead of zlib_inflateInit 3) Don't print messages about compression failure. They will waste space that may better be used to log console output leading to the crash" * tag 'please-pull-pstore' of git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux: pstore: Remove the messages related to compression failure pstore: Use zlib_inflateInit2 instead of zlib_inflateInit pstore: Adjust buffer size for compression for smaller registered buffers
This commit is contained in:
commit
9baa505948
@ -168,7 +168,7 @@ static int pstore_decompress(void *in, void *out, size_t inlen, size_t outlen)
|
||||
int err, ret;
|
||||
|
||||
ret = -EIO;
|
||||
err = zlib_inflateInit(&stream);
|
||||
err = zlib_inflateInit2(&stream, WINDOW_BITS);
|
||||
if (err != Z_OK)
|
||||
goto error;
|
||||
|
||||
@ -195,8 +195,29 @@ error:
|
||||
static void allocate_buf_for_compression(void)
|
||||
{
|
||||
size_t size;
|
||||
size_t cmpr;
|
||||
|
||||
big_oops_buf_sz = (psinfo->bufsize * 100) / 45;
|
||||
switch (psinfo->bufsize) {
|
||||
/* buffer range for efivars */
|
||||
case 1000 ... 2000:
|
||||
cmpr = 56;
|
||||
break;
|
||||
case 2001 ... 3000:
|
||||
cmpr = 54;
|
||||
break;
|
||||
case 3001 ... 3999:
|
||||
cmpr = 52;
|
||||
break;
|
||||
/* buffer range for nvram, erst */
|
||||
case 4000 ... 10000:
|
||||
cmpr = 45;
|
||||
break;
|
||||
default:
|
||||
cmpr = 60;
|
||||
break;
|
||||
}
|
||||
|
||||
big_oops_buf_sz = (psinfo->bufsize * 100) / cmpr;
|
||||
big_oops_buf = kmalloc(big_oops_buf_sz, GFP_KERNEL);
|
||||
if (big_oops_buf) {
|
||||
size = max(zlib_deflate_workspacesize(WINDOW_BITS, MEM_LEVEL),
|
||||
@ -295,10 +316,6 @@ static void pstore_dump(struct kmsg_dumper *dumper,
|
||||
compressed = true;
|
||||
total_len = zipped_len;
|
||||
} else {
|
||||
pr_err("pstore: compression failed for Part %d"
|
||||
" returned %d\n", part, zipped_len);
|
||||
pr_err("pstore: Capture uncompressed"
|
||||
" oops/panic report of Part %d\n", part);
|
||||
compressed = false;
|
||||
total_len = copy_kmsg_to_buffer(hsize, len);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user