import CS qatzip-1.1.2-3.el8

This commit is contained in:
Andrew Lukoshko 2025-06-03 09:25:57 +00:00
parent eeb02333a4
commit 0cd9de05be
3 changed files with 71 additions and 2 deletions

1
.qatzip.metadata Normal file
View File

@ -0,0 +1 @@
ecf085e51660d4fe5da588a4144c3295d455555f SOURCES/qatzip-1.1.2.tar.gz

View File

@ -0,0 +1,63 @@
From 906ff19a0bc4d770d0d8cd484bdce8d5fbb1843f Mon Sep 17 00:00:00 2001
From: Xinghong Chen <xinghong.chen@intel.com>
Date: Wed, 31 Jul 2024 22:57:09 -0400
Subject: [PATCH] QATAPP-32528: Fixed the qzip decompress large file issue
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Content-type: text/plain
* The “bytes_processed” only updated when “DATA_ERROR/BUF_ERROR”
happened. Its OK if during each “src buffer”, it would run into
“DATA_ERROR/BUF_ERROR” (This is the majority of cases, for 512M
src buffer, it almost always have “incomplete source buffer”
return). Its also ok, if for each “src buffer”, it never run into
“DATA_ERROR/BUF_ERROR”, so it wouldnt call “fseek”,
then bytes_processed is useless. But, if we mix those tow scenarios,
For some “src buffer” run into “DATA_ERROR/BUF_ERROR” and
others dont. Then “bytes_processed” will miss some process
source for which complete decompression without error issue.
It cause the “fseek” set to incorrect file stream position.
Signed-off-by: Xinghong Chen <xinghong.chen@intel.com>
Signed-off-by: David Qian <david.qian@intel.com>
Signed-off-by: Vladis Dronov <vdronov@redhat.com>
---
utils/qzip.c | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)
diff --git a/utils/qzip.c b/utils/qzip.c
index bd69858..63d3702 100644
--- a/utils/qzip.c
+++ b/utils/qzip.c
@@ -255,7 +255,8 @@ void doProcessFile(QzSession_T *sess, const char *src_file_name,
FILE *src_file = NULL;
FILE *dst_file = NULL;
unsigned int bytes_read = 0;
- unsigned long bytes_processed = 0;
+ unsigned int bytes_lookahead = 0;
+ long offset_revert = 0;
unsigned int ratio_idx = 0;
const unsigned int ratio_limit =
sizeof(g_bufsz_expansion_ratio) / sizeof(unsigned int);
@@ -326,14 +327,15 @@ void doProcessFile(QzSession_T *sess, const char *src_file_name,
puts((is_compress) ? "Compressing..." : "Decompressing...");
+ bytes_lookahead = bytes_read;
ret = doProcessBuffer(sess, src_buffer, &bytes_read, dst_buffer,
dst_buffer_size, time_list_head, dst_file,
&dst_file_size, is_compress);
if (QZ_DATA_ERROR == ret || QZ_BUF_ERROR == ret) {
- bytes_processed += bytes_read;
if (0 != bytes_read) {
- if (-1 == fseek(src_file, bytes_processed, SEEK_SET)) {
+ offset_revert = (long)bytes_read - (long)bytes_lookahead;
+ if (-1 == fseek(src_file, offset_revert, SEEK_CUR)) {
ret = ERROR;
goto exit;
}
--
2.49.0

View File

@ -5,7 +5,7 @@
Name: qatzip
Version: 1.1.2
Release: 2%{?dist}
Release: 3%{?dist}
Summary: Intel QuickAssist Technology (QAT) QATzip Library
License: BSD-3-Clause
URL: https://github.com/intel/%{githubname}
@ -19,6 +19,8 @@ BuildRequires: autoconf automake libtool make lz4-devel
# https://bugzilla.redhat.com/show_bug.cgi?id=1987280
ExclusiveArch: x86_64
Patch1: qatapp-32528-fix-large-files.patch
%description
QATzip is a user space library which builds on top of the Intel
QuickAssist Technology user space library, to provide extended
@ -46,7 +48,7 @@ This package contains headers and libraries required to build
applications that use the QATzip APIs.
%prep
%autosetup -n %{githubname}-%{version}
%autosetup -p1 -n %{githubname}-%{version}
%build
%set_build_flags
@ -86,6 +88,9 @@ rm -vf %{buildroot}%{_mandir}/*.pdf
%{_libdir}/pkgconfig/*.pc
%changelog
* Mon Apr 07 2025 Vladis Dronov <vdronov@redhat.com> - 1.1.2-3
- Fix large files decompression bug QATAPP-32528 (RHEL-35325)
* Mon Nov 20 2023 Vladis Dronov <vdronov@redhat.com> - 1.1.2-2
- Rebuild qatzip 1.1.2 for qatlib 23.11 (RHEL-15637)