Compare commits

...

No commits in common. "imports/c8-beta/qatzip-1.0.9-1.el8" and "c8s" have entirely different histories.

9 changed files with 129 additions and 7 deletions

3
.gitignore vendored
View File

@ -1 +1,2 @@
SOURCES/qatzip-1.0.9.tar.gz
SOURCES/qatzip-*.tar.gz
/qatzip-*.tar.gz

View File

@ -1 +0,0 @@
50c6dfb8f3eb44bd098588ffcbbe84911346bbc0 SOURCES/qatzip-1.0.9.tar.gz

6
gating.yaml Normal file
View File

@ -0,0 +1,6 @@
--- !Policy
product_versions:
- rhel-8
decision_context: osci_compose_gate
rules:
- !PassingTestCaseRule {test_case_name: osci.brew-build.tier0.functional}

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

@ -4,21 +4,23 @@
%global libqatzip_soversion 3
Name: qatzip
Version: 1.0.9
Release: 1%{?dist}
Version: 1.1.2
Release: 3%{?dist}
Summary: Intel QuickAssist Technology (QAT) QATzip Library
License: BSD
License: BSD-3-Clause
URL: https://github.com/intel/%{githubname}
Source0: %{url}/archive/%{version}/%{name}-%{version}.tar.gz
BuildRequires: gcc >= 4.8.5
BuildRequires: zlib-devel >= 1.2.7
BuildRequires: qatlib-devel >= 22.07.0
BuildRequires: qatlib-devel >= 23.08.0
BuildRequires: autoconf automake libtool make lz4-devel
# The purpose of the package is to support hardware that only exists on x86_64 platforms
# 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 -p0 -n %{githubname}-%{version}
%autosetup -p1 -n %{githubname}-%{version}
%build
%set_build_flags
@ -83,8 +85,21 @@ rm -vf %{buildroot}%{_mandir}/*.pdf
%doc docs/QATzip-man.pdf
%{_includedir}/qatzip.h
%{_libdir}/libqatzip.so
%{_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)
* Wed Mar 29 2023 Vladis Dronov <vdronov@redhat.com> - 1.1.2-1
- Update to qatzip 1.1.2 (bz 2082439)
- Update README, update driver configure files
- Fix some bugs
- Add support for pkgconfig
* Mon Aug 08 2022 Vladis Dronov <vdronov@redhat.com> - 1.0.9-1
- Rebuild for qatzip v1.0.9 (bz 2048039)
- Update to require qatlib-devel >= 22.07.0 due to soversion bump

1
sources Normal file
View File

@ -0,0 +1 @@
SHA512 (qatzip-1.1.2.tar.gz) = 88d2695227e1ce034ae58d2b7d6c4fba4da19aeba2493336acc23b80fd1de33a31ad7cab72eb84dee2ee03fa774a33f7eb30763f1d16b4b120fd84bf38e01d15

21
tests/README Normal file
View File

@ -0,0 +1,21 @@
these tests should be configured as BaseOS CI tests (not as OSCI tests), as
they require an x86_64 machine with QAT_4XXX (or later) hardware, so should
be run in Beaker.
see: https://docs.engineering.redhat.com/display/RTT/Onboarding+gating+tests
and: https://docs.engineering.redhat.com/pages/viewpage.action?pageId=53110084
and: https://docs.engineering.redhat.com/display/RTT/Creating+and+Updating+beaker+test
see https://bugzilla.redhat.com/show_bug.cgi?id=1747500#c50 for the details:
> Test QATzip [ https://github.com/intel/QATzip/blob/master/README.md#test-qatzip ]
> Performance Test With QATzip [ https://github.com/intel/QATzip/blob/master/README.md#performance-test-with-qatzip ]
>
> The first one - “Test QATzip” provides the basic usage of qzip binary, the compression binary.
> You can perform basic test such as compression and decompression with this binary to check
> the installation of QATzip binary.
>
> The second one, whose binary is in the test directory of source code, mentioned in
> the performance test section, can be used for the verification of installation of QATzip lib.
> However, this test binary is not packaged in the rpm package, from an aspect that the user
> do not need to verify the installation... Since QATlib provides a different way of configuring
> QAT hardware from the original out of tree driver, some of the performance test cases are deprecated.

6
tests/nulltest.sh Executable file
View File

@ -0,0 +1,6 @@
#!/bin/bash
# we cannot test this since there is no machine with QAT_4XXX hardware in Beaker as of now
# Intel promised us to provide OtherQA for qatlib, qatengine, qatzip and QAT kernel patchsets
echo QATZip nulltest is PASS
exit 0

10
tests/tests.yml Normal file
View File

@ -0,0 +1,10 @@
---
- hosts: localhost
roles:
- role: standard-test-basic
tags:
- classic
tests:
- nulltest:
dir: .
run: nulltest.sh