!67 update to 12.7.4

From: @zppzhangpan 
Reviewed-by: @t_feng, @yanan-rock 
Signed-off-by: @t_feng, @yanan-rock
This commit is contained in:
openeuler-ci-bot 2023-08-03 02:53:47 +00:00 committed by Gitee
commit 36cc9fafa4
No known key found for this signature in database
GPG Key ID: 173E9B9CA92EEF8F
7 changed files with 11 additions and 361 deletions

View File

@ -1,42 +0,0 @@
From 954ff2e2673cef48f0ed44668c466eab041db387 Mon Sep 17 00:00:00 2001
From: Pavel Kopylov <pkopylov@cloudlinux.com>
Date: Wed, 17 May 2023 11:33:45 +0200
Subject: [PATCH] Fix an overflow which is still possible for some values.
Reference:https://github.com/sysstat/sysstat/commit/6f8dc568e6ab072bb8205b732f04e685bf9237c0
Conflict:Adaptation Context
---
common.c | 16 +++++++++-------
1 file changed, 9 insertions(+), 7 deletions(-)
diff --git a/common.c b/common.c
index a3d31a5..8c3d28a 100644
--- a/common.c
+++ b/common.c
@@ -447,15 +447,17 @@ int check_dir(char *dirname)
void check_overflow(unsigned int val1, unsigned int val2,
unsigned int val3)
{
- if ((unsigned long long) val1 * (unsigned long long) val2 *
- (unsigned long long) val3 > UINT_MAX) {
+ if ((val1 != 0) && (val2 != 0) && (val3 != 0) &&
+ (((unsigned long long) UINT_MAX / (unsigned long long) val1 <
+ (unsigned long long) val2) ||
+ ((unsigned long long) UINT_MAX / ((unsigned long long) val1 * (unsigned long long) val2) <
+ (unsigned long long) val3))) {
#ifdef DEBUG
- fprintf(stderr, "%s: Overflow detected (%llu). Aborting...\n",
- __FUNCTION__, (unsigned long long) val1 * (unsigned long long) val2 *
- (unsigned long long) val3);
+ fprintf(stderr, "%s: Overflow detected (%u,%u,%u). Aborting...\n",
+ __FUNCTION__, val1, val2, val3);
#endif
- exit(4);
- }
+ exit(4);
+ }
}
#ifndef SOURCE_SADC
--
2.33.0

View File

@ -1,112 +0,0 @@
From c43167cca3d27940e81bfed06f6645a864d00216 Mon Sep 17 00:00:00 2001
From: Sebastien GODARD <sysstat@users.noreply.github.com>
Date: Sun, 7 May 2023 10:16:40 +0200
Subject: [PATCH] iostat: Try to avoid negative values (#355)
Check for negative values to avoir displaying large numbers.
Signed-off-by: Sebastien GODARD <sysstat@users.noreply.github.com>
Reference:https://github.com/sysstat/sysstat/commit/c43167cca3d27940e81bfed06f6645a864d00216
Conflict:NA
---
iostat.c | 32 ++++++++++++++++++++++++--------
rd_stats.c | 4 +++-
2 files changed, 27 insertions(+), 9 deletions(-)
diff --git a/iostat.c b/iostat.c
index 8174a93..bd21eb4 100644
--- a/iostat.c
+++ b/iostat.c
@@ -1189,6 +1189,7 @@ void write_plain_ext_stat(unsigned long long itv, int fctr, int hpart,
if ((hpart == 1) || !hpart) {
/* r/s */
cprintf_f(NO_UNIT, 1, 7, 2,
+ ioi->rd_ios < ioj->rd_ios ? 0.0 :
S_VALUE(ioj->rd_ios, ioi->rd_ios, itv));
/* rkB/s */
if (!DISPLAY_UNIT(flags)) {
@@ -1212,6 +1213,7 @@ void write_plain_ext_stat(unsigned long long itv, int fctr, int hpart,
if ((hpart == 2) || !hpart) {
/* w/s */
cprintf_f(NO_UNIT, 1, 7, 2,
+ ioi->wr_ios < ioj->wr_ios ? 0.0 :
S_VALUE(ioj->wr_ios, ioi->wr_ios, itv));
/* wkB/s */
if (!DISPLAY_UNIT(flags)) {
@@ -1235,6 +1237,7 @@ void write_plain_ext_stat(unsigned long long itv, int fctr, int hpart,
if ((hpart == 3) || !hpart) {
/* d/s */
cprintf_f(NO_UNIT, 1, 7, 2,
+ ioi->dc_ios < ioj->dc_ios ? 0.0 :
S_VALUE(ioj->dc_ios, ioi->dc_ios, itv));
/* dkB/s */
if (!DISPLAY_UNIT(flags)) {
@@ -1258,6 +1261,7 @@ void write_plain_ext_stat(unsigned long long itv, int fctr, int hpart,
if ((hpart == 4) || !hpart) {
/* f/s */
cprintf_f(NO_UNIT, 1, 7, 2,
+ ioi->fl_ios < ioj->fl_ios ? 0.0 :
S_VALUE(ioj->fl_ios, ioi->fl_ios, itv));
/* f_await */
cprintf_f(NO_UNIT, 1, 7, 2,
@@ -1343,10 +1347,14 @@ void write_json_ext_stat(int tab, unsigned long long itv, int fctr,
}
else {
printf("\"r/s\": %.2f, \"w/s\": %.2f, \"d/s\": %.2f, \"f/s\": %.2f, ",
- S_VALUE(ioj->rd_ios, ioi->rd_ios, itv),
- S_VALUE(ioj->wr_ios, ioi->wr_ios, itv),
- S_VALUE(ioj->dc_ios, ioi->dc_ios, itv),
- S_VALUE(ioj->fl_ios, ioi->fl_ios, itv));
+ ioi->rd_ios < ioj->rd_ios ? 0.0
+ : S_VALUE(ioj->rd_ios, ioi->rd_ios, itv),
+ ioi->wr_ios < ioj->wr_ios ? 0.0
+ : S_VALUE(ioj->wr_ios, ioi->wr_ios, itv),
+ ioi->dc_ios < ioj->dc_ios ? 0.0
+ : S_VALUE(ioj->dc_ios, ioi->dc_ios, itv),
+ ioi->fl_ios < ioj->fl_ios ? 0.0
+ : S_VALUE(ioj->fl_ios, ioi->fl_ios, itv));
if (DISPLAY_MEGABYTES(flags)) {
sprintf(line, "\"rMB/s\": %%.2f, \"wMB/s\": %%.2f, \"dMB/s\": %%.2f, ");
}
@@ -1454,10 +1462,18 @@ void write_ext_stat(unsigned long long itv, int fctr, int hpart,
compute_ext_disk_stats(&sdc, &sdp, itv, &xds);
}
- /* rkB/s wkB/s dkB/s */
- xios.rsectors = S_VALUE(ioj->rd_sectors, ioi->rd_sectors, itv);
- xios.wsectors = S_VALUE(ioj->wr_sectors, ioi->wr_sectors, itv);
- xios.dsectors = S_VALUE(ioj->dc_sectors, ioi->dc_sectors, itv);
+ /*
+ * rkB/s wkB/s dkB/s
+ * Note: We've already tried to determine if a device had been
+ * removed then added again (see write_stats() function).
+ * Anyway we need to check again for possible negative values.
+ */
+ xios.rsectors = ioi->rd_sectors < ioj->rd_sectors ? 0.0 :
+ S_VALUE(ioj->rd_sectors, ioi->rd_sectors, itv);
+ xios.wsectors = ioi->wr_sectors < ioj->wr_sectors ? 0.0 :
+ S_VALUE(ioj->wr_sectors, ioi->wr_sectors, itv);
+ xios.dsectors = ioi->dc_sectors < ioj->dc_sectors ? 0.0 :
+ S_VALUE(ioj->dc_sectors, ioi->dc_sectors, itv);
if (DISPLAY_SHORT_OUTPUT(flags)) {
xios.sectors = xios.rsectors + xios.wsectors + xios.dsectors;
diff --git a/rd_stats.c b/rd_stats.c
index 245dc74..9c91dac 100644
--- a/rd_stats.c
+++ b/rd_stats.c
@@ -377,7 +377,9 @@ void read_uptime(unsigned long long *uptime)
void compute_ext_disk_stats(struct stats_disk *sdc, struct stats_disk *sdp,
unsigned long long itv, struct ext_disk_stats *xds)
{
- xds->util = S_VALUE(sdp->tot_ticks, sdc->tot_ticks, itv);
+ xds->util = sdc->tot_ticks < sdp->tot_ticks ?
+ 0.0 :
+ S_VALUE(sdp->tot_ticks, sdc->tot_ticks, itv);
/*
* Kernel gives ticks already in milliseconds for all platforms
* => no need for further scaling.
--
2.33.0

View File

@ -1,196 +0,0 @@
From 3442cec3872d6c07eda21d147ebdd35ef2fea620 Mon Sep 17 00:00:00 2001
From: Sebastien GODARD <sysstat@users.noreply.github.com>
Date: Sat, 27 May 2023 16:31:05 +0200
Subject: [PATCH] iostat: Try to avoid some more negative values (#355)
Signed-off-by: Sebastien GODARD <sysstat@users.noreply.github.com>
Reference:https://github.com/sysstat/sysstat/commit/3442cec3872d6c07eda21d147ebdd35ef2fea620
Conflict:NA
---
iostat.c | 42 ++++++++++++++++++++++++++++++------------
rd_stats.c | 4 ++--
2 files changed, 32 insertions(+), 14 deletions(-)
diff --git a/iostat.c b/iostat.c
index bd21eb4..9787e09 100644
--- a/iostat.c
+++ b/iostat.c
@@ -1158,6 +1158,8 @@ void write_plain_ext_stat(unsigned long long itv, int fctr, int hpart,
/* tps */
/* Origin (unmerged) flush operations are counted as writes */
cprintf_f(NO_UNIT, 1, 8, 2,
+ ioi->rd_ios + ioi->wr_ios + ioi->dc_ios < ioj->rd_ios + ioj->wr_ios + ioj->dc_ios ?
+ 0.0 :
S_VALUE(ioj->rd_ios + ioj->wr_ios + ioj->dc_ios,
ioi->rd_ios + ioi->wr_ios + ioi->dc_ios, itv));
/* kB/s */
@@ -1168,6 +1170,8 @@ void write_plain_ext_stat(unsigned long long itv, int fctr, int hpart,
xios->sectors);
/* rqm/s */
cprintf_f(NO_UNIT, 1, 8, 2,
+ ioi->rd_merges + ioi->wr_merges + ioi->dc_merges < ioj->rd_merges + ioj->wr_merges + ioj->dc_merges ?
+ 0.0 :
S_VALUE(ioj->rd_merges + ioj->wr_merges + ioj->dc_merges,
ioi->rd_merges + ioi->wr_merges + ioi->dc_merges, itv));
/* await */
@@ -1178,6 +1182,7 @@ void write_plain_ext_stat(unsigned long long itv, int fctr, int hpart,
xds->arqsz / 2);
/* aqu-sz */
cprintf_f(NO_UNIT, 1, 7, 2,
+ ioi->rq_ticks < ioj->rq_ticks ? 0.0 :
S_VALUE(ioj->rq_ticks, ioi->rq_ticks, itv) / 1000.0);
/*
* %util
@@ -1199,6 +1204,7 @@ void write_plain_ext_stat(unsigned long long itv, int fctr, int hpart,
xios->rsectors);
/* rrqm/s */
cprintf_f(NO_UNIT, 1, 8, 2,
+ ioi->rd_merges < ioj->rd_merges ? 0.0 :
S_VALUE(ioj->rd_merges, ioi->rd_merges, itv));
/* %rrqm */
cprintf_pc(DISPLAY_UNIT(flags), 1, 6, 2,
@@ -1223,6 +1229,7 @@ void write_plain_ext_stat(unsigned long long itv, int fctr, int hpart,
xios->wsectors);
/* wrqm/s */
cprintf_f(NO_UNIT, 1, 8, 2,
+ ioi->wr_merges < ioj->wr_merges ? 0.0 :
S_VALUE(ioj->wr_merges, ioi->wr_merges, itv));
/* %wrqm */
cprintf_pc(DISPLAY_UNIT(flags), 1, 6, 2,
@@ -1247,6 +1254,7 @@ void write_plain_ext_stat(unsigned long long itv, int fctr, int hpart,
xios->dsectors);
/* drqm/s */
cprintf_f(NO_UNIT, 1, 8, 2,
+ ioi->dc_merges < ioj->dc_merges ? 0.0 :
S_VALUE(ioj->dc_merges, ioi->dc_merges, itv));
/* %drqm */
cprintf_pc(DISPLAY_UNIT(flags), 1, 6, 2,
@@ -1268,6 +1276,7 @@ void write_plain_ext_stat(unsigned long long itv, int fctr, int hpart,
xios->f_await);
/* aqu-sz */
cprintf_f(NO_UNIT, 1, 7, 2,
+ ioi->rq_ticks < ioj->rq_ticks ? 0.0 :
S_VALUE(ioj->rq_ticks, ioi->rq_ticks, itv) / 1000.0);
/*
* %util
@@ -1325,6 +1334,8 @@ void write_json_ext_stat(int tab, unsigned long long itv, int fctr,
if (DISPLAY_SHORT_OUTPUT(flags)) {
printf("\"tps\": %.2f, \"",
/* Origin (unmerged) flush operations are counted as writes */
+ ioi->rd_ios + ioi->wr_ios + ioi->dc_ios < ioj->rd_ios + ioj->wr_ios + ioj->dc_ios ?
+ 0.0 :
S_VALUE(ioj->rd_ios + ioj->wr_ios + ioj->dc_ios,
ioi->rd_ios + ioi->wr_ios + ioi->dc_ios, itv));
if (DISPLAY_MEGABYTES(flags)) {
@@ -1339,11 +1350,14 @@ void write_json_ext_stat(int tab, unsigned long long itv, int fctr,
printf("\": %.2f, \"rqm/s\": %.2f, \"await\": %.2f, "
"\"areq-sz\": %.2f, \"aqu-sz\": %.2f, ",
xios->sectors /= fctr,
+ ioi->rd_merges + ioi->wr_merges + ioi->dc_merges < ioj->rd_merges + ioj->wr_merges + ioj->dc_merges ?
+ 0.0 :
S_VALUE(ioj->rd_merges + ioj->wr_merges + ioj->dc_merges,
ioi->rd_merges + ioi->wr_merges + ioi->dc_merges, itv),
xds->await,
xds->arqsz / 2,
- S_VALUE(ioj->rq_ticks, ioi->rq_ticks, itv) / 1000.0);
+ ioi->rq_ticks < ioj->rq_ticks ? 0.0
+ : S_VALUE(ioj->rq_ticks, ioi->rq_ticks, itv) / 1000.0);
}
else {
printf("\"r/s\": %.2f, \"w/s\": %.2f, \"d/s\": %.2f, \"f/s\": %.2f, ",
@@ -1373,9 +1387,12 @@ void write_json_ext_stat(int tab, unsigned long long itv, int fctr,
"\"r_await\": %.2f, \"w_await\": %.2f, \"d_await\": %.2f, \"f_await\": %.2f, "
"\"rareq-sz\": %.2f, \"wareq-sz\": %.2f, \"dareq-sz\": %.2f, "
"\"aqu-sz\": %.2f, ",
- S_VALUE(ioj->rd_merges, ioi->rd_merges, itv),
- S_VALUE(ioj->wr_merges, ioi->wr_merges, itv),
- S_VALUE(ioj->dc_merges, ioi->dc_merges, itv),
+ ioi->rd_merges < ioj->rd_merges ? 0.0
+ : S_VALUE(ioj->rd_merges, ioi->rd_merges, itv),
+ ioi->wr_merges < ioj->wr_merges ? 0.0
+ : S_VALUE(ioj->wr_merges, ioi->wr_merges, itv),
+ ioi->dc_merges < ioj->dc_merges ? 0.0
+ : S_VALUE(ioj->dc_merges, ioi->dc_merges, itv),
xios->rrqm_pc,
xios->wrqm_pc,
xios->drqm_pc,
@@ -1386,7 +1403,8 @@ void write_json_ext_stat(int tab, unsigned long long itv, int fctr,
xios->rarqsz / 2,
xios->warqsz / 2,
xios->darqsz / 2,
- S_VALUE(ioj->rq_ticks, ioi->rq_ticks, itv) / 1000.0);
+ ioi->rq_ticks < ioj->rq_ticks ? 0.0
+ : S_VALUE(ioj->rq_ticks, ioi->rq_ticks, itv) / 1000.0);
}
if (d->dev_tp > T_GROUP) {
@@ -1486,11 +1504,11 @@ void write_ext_stat(unsigned long long itv, int fctr, int hpart,
((ioi->rd_merges - ioj->rd_merges) + (ioi->rd_ios - ioj->rd_ios)) * 100 :
0.0;
/* r_await */
- xios.r_await = (ioi->rd_ios - ioj->rd_ios) ?
+ xios.r_await = (ioi->rd_ios > ioj->rd_ios) ?
(ioi->rd_ticks - ioj->rd_ticks) /
((double) (ioi->rd_ios - ioj->rd_ios)) : 0.0;
/* rareq-sz (still in sectors, not kB) */
- xios.rarqsz = (ioi->rd_ios - ioj->rd_ios) ?
+ xios.rarqsz = (ioi->rd_ios > ioj->rd_ios) ?
(ioi->rd_sectors - ioj->rd_sectors) / ((double) (ioi->rd_ios - ioj->rd_ios)) :
0.0;
}
@@ -1501,11 +1519,11 @@ void write_ext_stat(unsigned long long itv, int fctr, int hpart,
((ioi->wr_merges - ioj->wr_merges) + (ioi->wr_ios - ioj->wr_ios)) * 100 :
0.0;
/* w_await */
- xios.w_await = (ioi->wr_ios - ioj->wr_ios) ?
+ xios.w_await = (ioi->wr_ios > ioj->wr_ios) ?
(ioi->wr_ticks - ioj->wr_ticks) /
((double) (ioi->wr_ios - ioj->wr_ios)) : 0.0;
/* wareq-sz (still in sectors, not kB) */
- xios.warqsz = (ioi->wr_ios - ioj->wr_ios) ?
+ xios.warqsz = (ioi->wr_ios > ioj->wr_ios) ?
(ioi->wr_sectors - ioj->wr_sectors) / ((double) (ioi->wr_ios - ioj->wr_ios)) :
0.0;
}
@@ -1516,17 +1534,17 @@ void write_ext_stat(unsigned long long itv, int fctr, int hpart,
((ioi->dc_merges - ioj->dc_merges) + (ioi->dc_ios - ioj->dc_ios)) * 100 :
0.0;
/* d_await */
- xios.d_await = (ioi->dc_ios - ioj->dc_ios) ?
+ xios.d_await = (ioi->dc_ios > ioj->dc_ios) ?
(ioi->dc_ticks - ioj->dc_ticks) /
((double) (ioi->dc_ios - ioj->dc_ios)) : 0.0;
/* dareq-sz (still in sectors, not kB) */
- xios.darqsz = (ioi->dc_ios - ioj->dc_ios) ?
+ xios.darqsz = (ioi->dc_ios > ioj->dc_ios) ?
(ioi->dc_sectors - ioj->dc_sectors) / ((double) (ioi->dc_ios - ioj->dc_ios)) :
0.0;
}
if ((hpart == 4) || !hpart) {
/* f_await */
- xios.f_await = (ioi->fl_ios - ioj->fl_ios) ?
+ xios.f_await = (ioi->fl_ios > ioj->fl_ios) ?
(ioi->fl_ticks - ioj->fl_ticks) /
((double) (ioi->fl_ios - ioj->fl_ios)) : 0.0;
}
diff --git a/rd_stats.c b/rd_stats.c
index 9c91dac..3905ac3 100644
--- a/rd_stats.c
+++ b/rd_stats.c
@@ -385,10 +385,10 @@ void compute_ext_disk_stats(struct stats_disk *sdc, struct stats_disk *sdp,
* => no need for further scaling.
* Origin (unmerged) flush operations are counted as writes.
*/
- xds->await = (sdc->nr_ios - sdp->nr_ios) ?
+ xds->await = (sdc->nr_ios > sdp->nr_ios) ?
((sdc->rd_ticks - sdp->rd_ticks) + (sdc->wr_ticks - sdp->wr_ticks) + (sdc->dc_ticks - sdp->dc_ticks)) /
((double) (sdc->nr_ios - sdp->nr_ios)) : 0.0;
- xds->arqsz = (sdc->nr_ios - sdp->nr_ios) ?
+ xds->arqsz = (sdc->nr_ios > sdp->nr_ios) ?
((sdc->rd_sect - sdp->rd_sect) + (sdc->wr_sect - sdp->wr_sect) + (sdc->dc_sect - sdp->dc_sect)) /
((double) (sdc->nr_ios - sdp->nr_ios)) : 0.0;
}
--
2.33.0

View File

@ -54,11 +54,11 @@ index bc99127..599fbea 100644
@@ -54,6 +54,7 @@
/* Files */
#define SERIAL PRE "/proc/tty/driver/serial"
+#define TTYAMA PRE "/proc/tty/driver/ttyAMA"
#define FDENTRY_STATE PRE "/proc/sys/fs/dentry-state"
#define FFILE_NR PRE "/proc/sys/fs/file-nr"
#define FINODE_STATE PRE "/proc/sys/fs/inode-state"
#define SERIAL PRE "/proc/tty/driver/serial"
+#define TTYAMA PRE "/proc/tty/driver/ttyAMA"
#define FDENTRY_STATE PRE "/proc/sys/fs/dentry-state"
#define FFILE_NR PRE "/proc/sys/fs/file-nr"
#define FINODE_STATE PRE "/proc/sys/fs/inode-state"
--
2.19.1

Binary file not shown.

BIN
sysstat-12.7.4.tar.gz Normal file

Binary file not shown.

View File

@ -1,6 +1,6 @@
Name: sysstat
Version: 12.6.2
Release: 6
Version: 12.7.4
Release: 1
Summary: System performance tools for the Linux operating system
License: GPLv2+
URL: http://sebastien.godard.pagesperso-orange.fr/
@ -13,9 +13,6 @@ Requires(post): systemd
Requires(preun): systemd
Requires(postun): systemd
Patch6000: backport-CVE-2023-33204.patch
Patch6001: backport-Try-to-avoid-negative-values.patch
Patch6002: backport-Try-to-avoid-some-more-negative-values.patch
Patch9000: bugfix-sysstat-10.1.5-read-ttyAMA-first-for-arm64.patch
%description
@ -79,7 +76,7 @@ export compressafter="31"
/usr/bin/systemctl enable sysstat.service >/dev/null 2>&1
%files -f %{name}.lang
%doc CHANGES COPYING CREDITS FAQ.md README.md %{name}-%{version}.lsm
%doc CHANGES COPYING CREDITS FAQ.md README.md
%config(noreplace) %{_sysconfdir}/sysconfig/sysstat
%config(noreplace) %{_sysconfdir}/sysconfig/sysstat.ioconf
%{_bindir}/*
@ -89,6 +86,9 @@ export compressafter="31"
%{_mandir}/man*/*
%changelog
* Thu Jul 20 2023 zhangpan <zhangpan103@h-partners.com> - 12.7.4-1
- update to 12.7.4
* Tue Jun 20 2023 zhouwenpei <zhouwenpei1@h-partners.com> - 12.6.2-6
- Try to avoid negative values