Browse Source

ppc64-diag package update

Signed-off-by: basebuilder_pel7ppc64bebuilder0 <basebuilder@powerel.org>
master
basebuilder_pel7ppc64bebuilder0 7 years ago
parent
commit
77057e758b
  1. 20
      SOURCES/ppc64-diag-2.4.2-chkconfig.patch
  2. 56
      SOURCES/ppc64-diag-2.7.4-fix-build-warning.patch
  3. 57
      SOURCES/ppc64-diag-2.7.4-lpdscriptloc.patch
  4. 77
      SOURCES/ppc64-diag-2.7.4-messagecatalog-location.patch
  5. 122
      SOURCES/ppc64-diag-2.7.4-scriptlocation.patch
  6. 27
      SOURCES/ppc64-diag-tmpraces.patch
  7. 107
      SOURCES/ppc64-diag-v2.7.4-create-diag_disk-log-directory-manually-if-not-present.patch
  8. 12
      SOURCES/ppc64-diag-v2.7.4-fix-service-scripts.patch
  9. 38
      SOURCES/ppc64-diag-v2.7.4-increase-buffer-length-size-to-read-complete-system-vpd-infomation.patch
  10. 52
      SOURCES/ppc64-diag-v2.7.4-remove-timestamp-from-disk-health-log-file.patch
  11. 258
      SPECS/ppc64-diag.spec

20
SOURCES/ppc64-diag-2.4.2-chkconfig.patch

@ -0,0 +1,20 @@
diff --git a/scripts/rtas_errd b/scripts/rtas_errd
index d5d40fe..dff1445 100755
--- a/scripts/rtas_errd
+++ b/scripts/rtas_errd
@@ -30,11 +30,14 @@
# 8 - 199 reserved
#
+# chkconfig: - 95 5
+# description: Daemon to retrieve platform errors
+
### BEGIN INIT INFO
# Provides: rtas_errd
# Required-Start: $local_fs $syslog $time
# Required-Stop:
-# Default-Start: 2 3 5
+# Default-Start:
# Default-Stop: 0 1 4 6
# Short-Description: Daemon to retrieve platform errors
# Description: Starts rtas_errd daemon to retrieve platform errors

56
SOURCES/ppc64-diag-2.7.4-fix-build-warning.patch

@ -0,0 +1,56 @@
commit ce22168173e63d77a566f753b3d697288f62fbcc
Author: Ankit Kumar <ankit@linux.vnet.ibm.com>
Date: Mon Dec 4 11:48:55 2017 +0530

Fixes build warning
This patch fixes ppc64-diag build warning.
Signed-off-by: Ankit Kumar <ankit@linux.vnet.ibm.com>
Signed-off-by: Vasant Hegde <hegdevasant@linux.vnet.ibm.com>

diff --git a/diags/homerun.c b/diags/homerun.c
index cdae58b..d9a6fc9 100644
--- a/diags/homerun.c
+++ b/diags/homerun.c
@@ -274,8 +274,7 @@ hr_report_faults_to_svclog(int fd, struct dev_vpd *vpd,
build_srn(srn, SRN_RC_TEMP_THRESHOLD);
callouts = NULL;
create_esm_callout(&callouts, location, i, fd);
- if (rc == 0)
- servevent(srn, sev, description, vpd, callouts);
+ servevent(srn, sev, description, vpd, callouts);
}
/* ESM electronics */
diff --git a/rtas_errd/dump.c b/rtas_errd/dump.c
index 6f8e2dc..237def4 100644
--- a/rtas_errd/dump.c
+++ b/rtas_errd/dump.c
@@ -315,7 +315,12 @@ check_platform_dump(struct event *event)
setup_sigchld_handler();
return;
}
- fgets(filename, DUMP_MAX_FNAME_LEN + 20, f);
+ if (!fgets(filename, DUMP_MAX_FNAME_LEN + 20, f)) {
+ dbg("Failed to collect filename info");
+ spclose(f, cpid);
+ setup_sigchld_handler();
+ return;
+ }
rc = spclose(f, cpid);
setup_sigchld_handler();
diff --git a/rtas_errd/ela.c b/rtas_errd/ela.c
index d9bfcc3..939f3ce 100644
--- a/rtas_errd/ela.c
+++ b/rtas_errd/ela.c
@@ -1922,7 +1922,7 @@ process_v2_epow(struct event *event, int error_type)
{
int rc = 1;
int class;
- int *reg, rlen, ext_epow;
+ int *reg, rlen, ext_epow = 0;
class = error_type & 0xFF;

57
SOURCES/ppc64-diag-2.7.4-lpdscriptloc.patch

@ -0,0 +1,57 @@
diff --git a/lpd/scripts/lp_diag_notify b/lpd/scripts/lp_diag_notify
index 52dc242..f500299 100755
--- a/lpd/scripts/lp_diag_notify
+++ b/lpd/scripts/lp_diag_notify
@@ -1,4 +1,4 @@
-#!/usr/bin/perl -I /etc/ppc64-diag
+#!/usr/bin/perl -I /usr/libexec/ppc64-diag
# @file lp_diag_notify
#
# This script is to be registered with servicelog as a notification tool.
diff --git a/lpd/scripts/lp_diag_setup b/lpd/scripts/lp_diag_setup
index 8dabb75..4b4d0a2 100755
--- a/lpd/scripts/lp_diag_setup
+++ b/lpd/scripts/lp_diag_setup
@@ -1,4 +1,4 @@
-#!/usr/bin/perl -I /etc/ppc64-diag
+#!/usr/bin/perl -I /usr/libexec/ppc64-diag
# @file lp_diag_setup
# @brief Register/unregister Light Path notification tools
# with servicelog
@@ -91,10 +91,10 @@ sub unregister {
}
@notification_tools = (
- ["/etc/ppc64-diag/lp_diag_notify -e",
+ ["/usr/libexec/ppc64-diag/lp_diag_notify -e",
"--match='disposition>=1 and severity>=4 and serviceable=1' ".
"--type=EVENT --method=num_arg"],
- ["/etc/ppc64-diag/lp_diag_notify -r",
+ ["/usr/libexec/ppc64-diag/lp_diag_notify -r",
"--type=REPAIR --method=num_arg"],
);
diff -up ppc64-diag-2.7.4/lpd/Makefile.am.than ppc64-diag-2.7.4/lpd/Makefile.am
--- ppc64-diag-2.7.4/lpd/Makefile.am.than 2017-09-15 19:08:58.247913980 +0200
+++ ppc64-diag-2.7.4/lpd/Makefile.am 2017-09-15 19:10:12.941556817 +0200
@@ -46,16 +46,16 @@ all-local-lpd:
AM_LOCALS += all-local-lpd
install-exec-hook-lpd:
- install -d --mode=755 $(DESTDIR)/etc/ppc64-diag
- install -D --mode=744 $(LPD_SCRIPT) $(DESTDIR)/etc/ppc64-diag/
+ install -d --mode=755 $(DESTDIR)/usr/libexec/ppc64-diag
+ install -D --mode=744 $(LPD_SCRIPT) $(DESTDIR)/usr/libexec/ppc64-diag/
$(LN_S) $(sbindir)/usysident $(DESTDIR)/$(sbindir)/usysattn
$(LN_S) $(sbindir)/usysident $(DESTDIR)/$(sbindir)/usysfault
INSTALL_EXEC_HOOKS += install-exec-hook-lpd
uninstall-hook-lpd:
- rm -f $(DESTDIR)/etc/ppc64-diag/lp_diag_setup
- rm -f $(DESTDIR)/etc/ppc64-diag/lp_diag_notify
+ rm -f $(DESTDIR)/usr/libexec/ppc64-diag/lp_diag_setup
+ rm -f $(DESTDIR)/usr/libexec/ppc64-diag/lp_diag_notify
rm -f $(sbindir)/usysattn
rm -f $(sbindir)/usysfault

77
SOURCES/ppc64-diag-2.7.4-messagecatalog-location.patch

@ -0,0 +1,77 @@
diff --git a/ela/catalogs.h b/ela/catalogs.h
index ce68a86..f77ee01 100644
--- a/ela/catalogs.h
+++ b/ela/catalogs.h
@@ -34,7 +34,7 @@ using namespace std;
#include <stdio.h>
#include <regex.h>
-#define ELA_CATALOG_DIR "/etc/ppc64-diag/message_catalog"
+#define ELA_CATALOG_DIR "/usr/share/ppc64-diag/message_catalog"
class Parser {
protected:
diff --git a/ela/explain_syslog.cpp b/ela/explain_syslog.cpp
index f2ecc25..fc96334 100644
--- a/ela/explain_syslog.cpp
+++ b/ela/explain_syslog.cpp
@@ -97,7 +97,7 @@ print_help(void)
printf(
"-b begin_time\tIgnore messages with timestamps prior to begin_time.\n"
"-C catalog_dir\tUse message catalog in catalog_dir. Defaults to\n"
-"\t\t\t/etc/ppc64-diag/message_catalog.\n"
+"\t\t\t/usr/share/ppc64-diag/message_catalog.\n"
"-d\t\tPrint debugging output on stderr.\n"
"-e end_time\tStop upon reading message with timestamp after end_time.\n"
"-h\t\tPrint this help text and exit.\n"
diff --git a/ela/syslog_to_svclog.cpp b/ela/syslog_to_svclog.cpp
index ca5cd2f..69a8db9 100644
--- a/ela/syslog_to_svclog.cpp
+++ b/ela/syslog_to_svclog.cpp
@@ -682,7 +682,7 @@ print_help(void)
printf(
"-b begin_time\tIgnore messages with timestamps prior to begin_time.\n"
"-C catalog_dir\tUse message catalog in catalog_dir. Defaults to\n"
-"\t\t\t/etc/ppc64-diag/message_catalog.\n"
+"\t\t\t/usr/share/ppc64-diag/message_catalog.\n"
"-d\t\tPrint debugging output on stderr.\n"
"-e end_time\tStop upon reading message with timestamp after end_time.\n"
"-F\t\tDon't stop at EOF; process newly logged messages as they occur.\n"
diff -up ppc64-diag-2.7.4/ela/catalogs.h.than ppc64-diag-2.7.4/ela/catalogs.h
diff -up ppc64-diag-2.7.4/ela/Makefile.am.than ppc64-diag-2.7.4/ela/Makefile.am
--- ppc64-diag-2.7.4/ela/Makefile.am.than 2017-09-15 18:56:29.914492445 +0200
+++ ppc64-diag-2.7.4/ela/Makefile.am 2017-09-15 19:00:31.470337345 +0200
@@ -68,22 +68,22 @@ clean-local-ela:
CLEAN_LOCALS += clean-local-ela
install-exec-hook-ela:
- install -d --mode=755 $(DESTDIR)/etc/ppc64-diag/message_catalog/with_regex/
- install -D --mode=744 $(CATALOG) $(DESTDIR)/etc/ppc64-diag/message_catalog/
+ install -d --mode=755 $(DESTDIR)/usr/share/ppc64-diag/message_catalog/with_regex/
+ install -D --mode=744 $(CATALOG) $(DESTDIR)/usr/share/ppc64-diag/message_catalog/
install -D --mode=744 $(CATALOG_REGEX) \
- $(DESTDIR)/etc/ppc64-diag/message_catalog/with_regex/
+ $(DESTDIR)/usr/share/ppc64-diag/message_catalog/with_regex/
INSTALL_EXEC_HOOKS += install-exec-hook-ela
uninstall-hook-ela:
- rm -f $(DESTDIR)/etc/ppc64-diag/message_catalog/cxgb3
- rm -f $(DESTDIR)/etc/ppc64-diag/message_catalog/e1000e
- rm -f $(DESTDIR)/etc/ppc64-diag/message_catalog/exceptions
- rm -f $(DESTDIR)/etc/ppc64-diag/message_catalog/reporters
- rm -f $(DESTDIR)/etc/ppc64-diag/message_catalog/gpfs
- rm -f $(DESTDIR)/etc/ppc64-diag/message_catalog/with_regex/cxgb3
- rm -f $(DESTDIR)/etc/ppc64-diag/message_catalog/with_regex/e1000e
- rm -f $(DESTDIR)/etc/ppc64-diag/message_catalog/with_regex/gpfs
+ rm -f $(DESTDIR)/usr/share/ppc64-diag/message_catalog/cxgb3
+ rm -f $(DESTDIR)/usr/share/ppc64-diag/message_catalog/e1000e
+ rm -f $(DESTDIR)/usr/share/ppc64-diag/message_catalog/exceptions
+ rm -f $(DESTDIR)/usr/share/ppc64-diag/message_catalog/reporters
+ rm -f $(DESTDIR)/usr/share/ppc64-diag/message_catalog/gpfs
+ rm -f $(DESTDIR)/usr/share/ppc64-diag/message_catalog/with_regex/cxgb3
+ rm -f $(DESTDIR)/usr/share/ppc64-diag/message_catalog/with_regex/e1000e
+ rm -f $(DESTDIR)/usr/share/ppc64-diag/message_catalog/with_regex/gpfs
UNINSTALL_HOOKS += uninstall-hook-ela

122
SOURCES/ppc64-diag-2.7.4-scriptlocation.patch

@ -0,0 +1,122 @@
diff -up ppc64-diag-2.7.4/scripts/Makefile.am.script_loc ppc64-diag-2.7.4/scripts/Makefile.am
--- ppc64-diag-2.7.4/scripts/Makefile.am.script_loc 2017-07-24 00:43:44.000000000 -0400
+++ ppc64-diag-2.7.4/scripts/Makefile.am 2017-09-16 10:21:58.786296122 -0400
@@ -11,21 +11,22 @@ INIT_FILES = scripts/rtas_errd scripts/o
SERVICE_SCRIPT = scripts/rtas_errd.service scripts/opal_errd.service
install-exec-hook-scripts:
+ install -d --mode=755 $(DESTDIR)/usr/libexec/ppc64-diag/
+ install -D --mode=744 $(PPC64_DIAG_SCRIPT) $(DESTDIR)/usr/libexec/ppc64-diag/
install -d --mode=755 $(DESTDIR)/etc/ppc64-diag/
- install -D --mode=744 $(PPC64_DIAG_SCRIPT) $(DESTDIR)/etc/ppc64-diag/
- install -D --mode=644 $(CONFIG_FILE) $(DESTDIR)/etc/ppc64-diag
+ install -D --mode=644 $(CONFIG_FILE) $(DESTDIR)/etc/ppc64-diag/
install -d --mode=755 $(DESTDIR)/usr/libexec/ppc64-diag/
install -D --mode=755 $(INIT_FILES) $(DESTDIR)/usr/libexec/ppc64-diag/
install -d --mode=755 $(DESTDIR)/usr/lib/systemd/system/
install -D --mode=644 $(SERVICE_SCRIPT) $(DESTDIR)/usr/lib/systemd/system/
uninstall-hook-scripts:
- rm -f $(DESTDIR)/etc/ppc64-diag/ppc64_diag_setup
- rm -f $(DESTDIR)/etc/ppc64-diag/ppc64_diag_mkrsrc
- rm -f $(DESTDIR)/etc/ppc64-diag/ppc64_diag_notify
- rm -f $(DESTDIR)/etc/ppc64-diag/ppc64_diag_migrate
- rm -f $(DESTDIR)/etc/ppc64-diag/servevent_parse.pl
- rm -f $(DESTDIR)/etc/ppc64-diag/ppc64-diag.config
+ rm -f $(DESTDIR)/usr/libexec/ppc64-diag/ppc64_diag_setup
+ rm -f $(DESTDIR)/usr/libexec/ppc64-diag/ppc64_diag_mkrsrc
+ rm -f $(DESTDIR)/usr/libexec/ppc64-diag/ppc64_diag_notify
+ rm -f $(DESTDIR)/usr/libexec/ppc64-diag/ppc64_diag_migrate
+ rm -f $(DESTDIR)/usr/libexec/ppc64-diag/servevent_parse.pl
+ rm -f $(DESTDIR)/usr/libexec/ppc64-diag/ppc64-diag.config
rm -f $(DESTDIR)/usr/libexec/ppc64-diag/rtas_errd
rm -f $(DESTDIR)/usr/libexec/ppc64-diag/opal_errd
rm -f $(DESTDIR)/usr/lib/systemd/system/rtas_errd.service
diff -up ppc64-diag-2.7.4/scripts/ppc64_diag_mkrsrc.script_loc ppc64-diag-2.7.4/scripts/ppc64_diag_mkrsrc
--- ppc64-diag-2.7.4/scripts/ppc64_diag_mkrsrc.script_loc 2017-07-24 00:43:44.000000000 -0400
+++ ppc64-diag-2.7.4/scripts/ppc64_diag_mkrsrc 2017-09-16 10:21:15.736295426 -0400
@@ -1,4 +1,4 @@
-#! /usr/bin/perl -I /etc/ppc64-diag
+#! /usr/bin/perl -I /usr/libexec/ppc64-diag
#
# This script is to be registered with servicelog as a notification tool. It
# is responsible for creating a new IBM.ServiceEvent RMC resource when a
@@ -27,7 +27,7 @@
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-require "/etc/ppc64-diag/servevent_parse.pl";
+require "/usr/libexec/ppc64-diag/servevent_parse.pl";
# Check to make sure that devices.chrp.base.ServiceRM is installed
$rc = system("which rpm >/dev/null 2>&1");
diff -up ppc64-diag-2.7.4/scripts/ppc64_diag_notify.script_loc ppc64-diag-2.7.4/scripts/ppc64_diag_notify
--- ppc64-diag-2.7.4/scripts/ppc64_diag_notify.script_loc 2017-07-24 00:43:44.000000000 -0400
+++ ppc64-diag-2.7.4/scripts/ppc64_diag_notify 2017-09-16 10:21:15.736295426 -0400
@@ -1,4 +1,4 @@
-#! /usr/bin/perl -I /etc/ppc64-diag
+#! /usr/bin/perl -I /usr/libexec/ppc64-diag
#
# This script is to be registered with servicelog as a notification tool. It
# is responsible for sending out e-mail notifications of new ppc64 platform
@@ -22,7 +22,7 @@
use Getopt::Long;
-require "/etc/ppc64-diag/servevent_parse.pl";
+require "/usr/libexec/ppc64-diag/servevent_parse.pl";
sub usage {
print "$0 [OPTIONS]\n";
diff -up ppc64-diag-2.7.4/scripts/ppc64_diag_servagent.script_loc ppc64-diag-2.7.4/scripts/ppc64_diag_servagent
--- ppc64-diag-2.7.4/scripts/ppc64_diag_servagent.script_loc 2017-07-24 00:43:44.000000000 -0400
+++ ppc64-diag-2.7.4/scripts/ppc64_diag_servagent 2017-09-16 10:21:15.736295426 -0400
@@ -1,4 +1,4 @@
-#! /usr/bin/perl -I /etc/ppc64-diag
+#! /usr/bin/perl -I /usr/libexec/ppc64-diag
#
# This script is to be registered with servicelog as a notification tool. It
# is responsible for invoking Electronic Service Agent in response to a
@@ -25,7 +25,7 @@
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-require "/etc/ppc64-diag/servevent_parse.pl";
+require "/usr/libexec/ppc64-diag/servevent_parse.pl";
if (!-e "/usr/svcagent/bin/callsa2") {
# eSA is not installed; exit quietly
diff -up ppc64-diag-2.7.4/scripts/ppc64_diag_setup.script_loc ppc64-diag-2.7.4/scripts/ppc64_diag_setup
--- ppc64-diag-2.7.4/scripts/ppc64_diag_setup.script_loc 2017-07-24 00:43:44.000000000 -0400
+++ ppc64-diag-2.7.4/scripts/ppc64_diag_setup 2017-09-16 10:21:15.736295426 -0400
@@ -89,15 +89,15 @@ sub unregister {
@notification_tools = (
- ["/etc/ppc64-diag/ppc64_diag_notify -q -e root -l /var/log/platform",
+ ["/usr/libexec/ppc64-diag/ppc64_diag_notify -q -e root -l /var/log/platform",
"--match='serviceable=1' ".
"--type=EVENT --method=pairs_stdin"],
- ["/etc/ppc64-diag/ppc64_diag_mkrsrc",
+ ["/usr/libexec/ppc64-diag/ppc64_diag_mkrsrc",
"--match='serviceable=1' ".
"--type=EVENT --method=pairs_stdin"],
- ["/etc/ppc64-diag/ppc64_diag_migrate",
+ ["/usr/libexec/ppc64-diag/ppc64_diag_migrate",
"--match=\'refcode=\"#MIGRATE\" and serviceable=0\' ".
"--type=EVENT --method=pairs_stdin"],
);
diff -up ppc64-diag-2.7.4/scripts/rtas_errd.script_loc ppc64-diag-2.7.4/scripts/rtas_errd
--- ppc64-diag-2.7.4/scripts/rtas_errd.script_loc 2017-09-16 10:21:15.726295425 -0400
+++ ppc64-diag-2.7.4/scripts/rtas_errd 2017-09-16 10:21:15.736295426 -0400
@@ -69,7 +69,7 @@ case "$1" in
echo "registering ppc64-diag with system"
rm -f /var/cache/ppc64-diag.registered
mkdir -v /var/cache/ppc64-diag.registered
- /etc/ppc64-diag/ppc64_diag_setup --register
+ /usr/libexec/ppc64-diag/ppc64_diag_setup --register
fi
echo -n "Starting rtas_errd (platform error handling) daemon: "
if [ $INSSERV -eq 1 ]; then

27
SOURCES/ppc64-diag-tmpraces.patch

@ -0,0 +1,27 @@
diff --git a/lpd/test/lpd_ela_test.sh b/lpd/test/lpd_ela_test.sh
index 0e0ebea..8f0c751 100755
--- a/lpd/test/lpd_ela_test.sh
+++ b/lpd/test/lpd_ela_test.sh
@@ -22,7 +22,7 @@ EXECUTION_LOG="$LOG_DIR/$SCRIPT_NAME.log"
ERROR_LOG="$LOG_DIR/$SCRIPT_NAME.err"
TMP_DIR="/var/tmp/ras"
-mkdir -p $TMP_DIR
+mkdir $TMP_DIR || exit 1
MESSAGE_FILE="$TMP_DIR/messages"
TMP_FILE="$TMP_DIR/$SCRIPT_NAME.tmp"
diff --git a/scripts/ppc64_diag_mkrsrc b/scripts/ppc64_diag_mkrsrc
index 6023a71..4df8b72 100755
--- a/scripts/ppc64_diag_mkrsrc
+++ b/scripts/ppc64_diag_mkrsrc
@@ -149,7 +149,7 @@ if (-e "/proc/device-tree/ibm,converged-loc-codes") {
}
# Retrieve Extended Error Data (EED)
-mkdir "/tmp/diagSEsnap", 0775;
+mkdir "/tmp/diagSEsnap", 0700 || die "mkdir failed: $!";
$general_eed_file = "/tmp/diagSEsnap/snapH.tar.gz";
system("/usr/sbin/snap -o $general_eed_file 2>/dev/null 1>&2");
$cstop_eed_file = "";

107
SOURCES/ppc64-diag-v2.7.4-create-diag_disk-log-directory-manually-if-not-present.patch

@ -0,0 +1,107 @@
--- a/diags/diag_disk.c
+++ b/diags/diag_disk.c
@@ -38,7 +38,8 @@
#include "encl_util.h"
-#define OUTPUT_PATH "/var/log/ppc64-diag/diag_disk"
+#define DIAG_OUTPUT_PATH "/var/log/ppc64-diag/"
+#define DISK_OUTPUT_PATH DIAG_OUTPUT_PATH"diag_disk"
#define SYSFS_SG_PATH "/sys/class/scsi_generic"
#define DEVICE_TREE "/proc/device-tree/"
#define DEVICE_TREE_SYSTEM_ID DEVICE_TREE"system-id"
@@ -142,12 +143,53 @@
return 0;
}
-static inline int open_output_xml_file(const char *xml_filename)
+static inline void dir_sync(char * path)
+{
+ int dir_fd;
+
+ dir_fd = open(path, O_RDONLY|O_DIRECTORY);
+ if (dir_fd >= 0) {
+ fsync(dir_fd);
+ close(dir_fd);
+ }
+}
+
+static int open_output_xml_file(const char *xml_filename)
{
char filename[PATH_MAX];
+ int rc;
+
+ rc = access(DISK_OUTPUT_PATH, W_OK);
+ if (rc) {
+ /* Return if it fails with error code other than ENOENT */
+ if (errno != ENOENT)
+ return -1;
+
+ /* Check for the existence of parent directory */
+ rc = access(DIAG_OUTPUT_PATH, W_OK);
+ if (rc) {
+ if (errno != ENOENT)
+ return -1;
+
+ rc = mkdir(DIAG_OUTPUT_PATH,
+ S_IRGRP | S_IRUSR | S_IWGRP | S_IWUSR | S_IXUSR);
+ if (rc)
+ return -1;
+
+ dir_sync(DIAG_OUTPUT_PATH);
+ }
+
+ rc = mkdir(DISK_OUTPUT_PATH,
+ S_IRGRP | S_IRUSR | S_IWGRP | S_IWUSR | S_IXUSR);
+ if (rc)
+ return -1;
+
+ dir_sync(DISK_OUTPUT_PATH);
+ }
+
snprintf(filename, sizeof(filename) - 1, "%s/%s",
- OUTPUT_PATH, xml_filename);
+ DISK_OUTPUT_PATH, xml_filename);
result_file = fopen(filename, "w");
if (!result_file)
@@ -349,9 +391,8 @@
DIR *d;
struct dirent *namelist;
char filename[PATH_MAX];
- int dir_fd;
-
- d = opendir(OUTPUT_PATH);
+
+ d = opendir(DISK_OUTPUT_PATH);
if (!d)
return -errno;
@@ -359,22 +400,17 @@
if (namelist->d_name[0] == '.')
continue;
- snprintf(filename, sizeof(filename) - 1, "%s/%s", OUTPUT_PATH,
- namelist->d_name);
+ snprintf(filename, sizeof(filename) - 1, "%s/%s",
+ DISK_OUTPUT_PATH, namelist->d_name);
if (unlink(filename) < 0) {
fprintf(stderr,
"\nUnable to remove old log file[%s]. continuing.\n\n",
filename);
}
}
+
closedir(d);
-
- dir_fd = open(OUTPUT_PATH, O_RDONLY|O_DIRECTORY);
- if (dir_fd >= 0) {
- fsync(dir_fd);
- close(dir_fd);
- }
-
+ dir_sync(DISK_OUTPUT_PATH);
return 0;
}

12
SOURCES/ppc64-diag-v2.7.4-fix-service-scripts.patch

@ -0,0 +1,12 @@
--- a/scripts/rtas_errd.service
+++ b/scripts/rtas_errd.service
@@ -1,7 +1,7 @@
[Unit]
Description=ppc64-diag rtas_errd (platform error handling) Service
-ConditionPathExists=|!/proc/ppc64/rtas/error_log
-ConditionPathExists=|!/proc/ppc64/error_log
+ConditionPathExists=|/proc/ppc64/rtas/error_log
+ConditionPathExists=|/proc/ppc64/error_log
After=syslog.target
[Service]

38
SOURCES/ppc64-diag-v2.7.4-increase-buffer-length-size-to-read-complete-system-vpd-infomation.patch

@ -0,0 +1,38 @@
--- a/diags/diag_disk.c
+++ b/diags/diag_disk.c
@@ -44,6 +44,7 @@
#define DEVICE_TREE_SYSTEM_ID DEVICE_TREE"system-id"
#define DEVICE_TREE_MODEL DEVICE_TREE"model"
+#define BUFFER_LENGTH 16
#define SERIAL_NUM_LEN 8
#define MACHINE_MODEL_LEN 8
@@ -196,15 +197,15 @@
int device_fd;
int rc;
int start_index = 0;
- char serial[SERIAL_NUM_LEN + 1] = {0};
- char model[MACHINE_MODEL_LEN + 1] = {0};
+ char serial[BUFFER_LENGTH] = {0};
+ char model[BUFFER_LENGTH] = {0};
char *temp;
device_fd = open(DEVICE_TREE_SYSTEM_ID, O_RDONLY);
if (device_fd < 0)
return -1;
- rc = read(device_fd, serial, SERIAL_NUM_LEN);
+ rc = read(device_fd, serial, BUFFER_LENGTH);
close(device_fd);
if (rc <= 0)
return -1;
@@ -218,7 +219,7 @@
if (device_fd < 0)
return -1;
- rc = read(device_fd, model, MACHINE_MODEL_LEN);
+ rc = read(device_fd, model, BUFFER_LENGTH);
close(device_fd);
if (rc <= 0)
return -1;

52
SOURCES/ppc64-diag-v2.7.4-remove-timestamp-from-disk-health-log-file.patch

@ -0,0 +1,52 @@
--- a/diags/diag_disk.c
+++ b/diags/diag_disk.c
@@ -344,7 +344,7 @@
return rc;
}
-static int remove_old_log_file(char *xml_filename)
+static int remove_old_log_file(void)
{
DIR *d;
struct dirent *namelist;
@@ -357,9 +357,6 @@
while ((namelist = readdir(d)) != NULL) {
if (namelist->d_name[0] == '.')
- continue;
-
- if (!strcmp(xml_filename, namelist->d_name))
continue;
snprintf(filename, sizeof(filename) - 1, "%s/%s", OUTPUT_PATH,
@@ -416,10 +413,11 @@
/* file format */
snprintf(xml_filename, sizeof(xml_filename) - 1,
- "%s~%s~%s~diskAnalytics~%d%02d%02d%02d%02d%02d.xml",
- mach_type_model, mach_model, serial_num,
- tm.tm_year + 1900, tm.tm_mon + 1, tm.tm_mday,
- tm.tm_hour, tm.tm_min, tm.tm_sec);
+ "%s~%s~%s~diskAnalytics.xml",
+ mach_type_model, mach_model, serial_num);
+
+ /* Try to remove old log file. We will continue even if this fails */
+ remove_old_log_file();
/* open file */
ret = open_output_xml_file(xml_filename);
@@ -441,12 +439,5 @@
/* close output xml file descriptor */
close_output_xml_file();
- /* remove old log file */
- ret = remove_old_log_file(xml_filename);
- if (ret) {
- fprintf(stderr, "Unable to remove old output log file.\n");
- return -1;
- }
-
- return 0;
-}
+ return 0;
+}

258
SPECS/ppc64-diag.spec

@ -0,0 +1,258 @@
Name: ppc64-diag
Version: 2.7.4
Release: 3%{?dist}
Summary: PowerLinux Platform Diagnostics
URL: http://sourceforge.net/projects/linux-diag/files/ppc64-diag/
Group: System Environment/Base
License: GPLv2
ExclusiveArch: ppc64 ppc64le
BuildRequires: libservicelog-devel, flex, perl, byacc, librtas-devel >= 1.4.0
BuildRequires: libvpd-devel, systemd, systemd-devel
BuildRequires: ncurses-devel
BuildRequires: autoconf automake libtool
Requires(post): systemd
Requires(preun): systemd
Requires: servicelog, lsvpd >= 1.7.1
# PRRN RTAS event notification handler depends on below librtas
# and powerpc-utils versions.
Requires: librtas
Requires: powerpc-utils >= 1.3.2
Source0: http://downloads.sourceforge.net/project/linux-diag/ppc64-diag/v%{version}/%{name}-%{version}.tar.gz
Source1: rtas_errd.service

Patch0: ppc64-diag-2.7.4-messagecatalog-location.patch
Patch1: ppc64-diag-2.4.2-chkconfig.patch
Patch2: ppc64-diag-2.7.4-scriptlocation.patch
Patch4: ppc64-diag-2.7.4-lpdscriptloc.patch
# patch5-patch9 fix bz#1525443, disk diagnostics issues
Patch5: ppc64-diag-v2.7.4-fix-service-scripts.patch
Patch6: ppc64-diag-v2.7.4-increase-buffer-length-size-to-read-complete-system-vpd-infomation.patch
Patch7: ppc64-diag-v2.7.4-remove-timestamp-from-disk-health-log-file.patch
Patch8: ppc64-diag-v2.7.4-create-diag_disk-log-directory-manually-if-not-present.patch
Patch9: ppc64-diag-2.7.4-fix-build-warning.patch
# patch from https://bugzilla.novell.com/show_bug.cgi?id=882667
# attachment https://bugzilla.novell.com/attachment.cgi?id=599147
# resolving https://bugzilla.redhat.com/show_bug.cgi?id=1109371
Patch10: ppc64-diag-tmpraces.patch

%description
This package contains various diagnostic tools for PowerLinux.
These tools captures the diagnostic events from Power Systems
platform firmware, SES enclosures and device drivers, and
write events to servicelog database. It also provides automated
responses to urgent events such as environmental conditions and
predictive failures, if appropriate modifies the FRUs fault
indicator(s) and provides event notification to system
administrators or connected service frameworks.

# BZ#860040:
%global __requires_exclude %{?__requires_exclude:%__requires_exclude|}\/usr\/libexec\/ppc64-diag\/servevent_parse.pl

%prep
%setup -q
%patch0 -p1 -b .msg_loc
%patch1 -p1 -b .chkconfig
%patch2 -p1 -b .script_loc
%patch4 -p1 -b .lpdscriptloc
%patch5 -p1 -b .fix-service-scripts
%patch6 -p1 -b .increase-buffer-length-size-to-read-complete-system-vpd-infomation
%patch7 -p1 -b .remove-timestamp-from-disk-health-log-file
%patch8 -p1 -b .create-diag_disk-log-directory-manually-if-not-present
%patch9 -p1 -b .fix-build-warning.patch
%patch10 -p1 -b .tmpraces

%build
%global optflags %{optflags} -fno-strict-aliasing
./autogen.sh
%configure
make V=1 %{?_smp_mflags}

%install
make install DESTDIR=$RPM_BUILD_ROOT
chmod 644 COPYING
rm -f $RPM_BUILD_ROOT/usr/share/doc/packages/ppc64-diag/COPYING
mkdir -p $RPM_BUILD_ROOT/%{_unitdir}
install -m644 %{SOURCE1} $RPM_BUILD_ROOT/%{_unitdir}
mkdir $RPM_BUILD_ROOT/%{_sysconfdir}/%{name}/ses_pages
mkdir -p $RPM_BUILD_ROOT/%{_var}/log/dump
#pushd $RPM_BUILD_ROOT/%{_sbindir}/
#ln -sf usysattn usysfault
#ln -sf usysident usysattn
#popd
#rm -f $RPM_BUILD_ROOT%{_docdir}/%{name}/COPYING $RPM_BUILD_ROOT%{_docdir}/%{name}/README

%files
%defattr (-,root,root,-)
%doc %{_docdir}/%{name}/COPYING
%doc %{_docdir}/%{name}/README
%dir %{_sysconfdir}/%{name}
%dir %{_sysconfdir}/%{name}/ses_pages
%dir %{_var}/log/ppc64-diag/diag_disk
%dir %{_var}/log/dump
%dir %{_datadir}/%{name}
%dir %{_datadir}/%{name}/message_catalog
%config(noreplace) %{_sysconfdir}/%{name}/ppc64-diag.config
%{_sbindir}/*
%{_mandir}/man8/*
%attr(755,root,root) %{_libexecdir}/%{name}/ppc64_diag_migrate
%attr(755,root,root) %{_libexecdir}/%{name}/ppc64_diag_mkrsrc
%attr(755,root,root) %{_libexecdir}/%{name}/ppc64_diag_notify
%attr(755,root,root) %{_libexecdir}/%{name}/ppc64_diag_setup
%attr(755,root,root) %{_libexecdir}/%{name}/lp_diag_setup
%attr(755,root,root) %{_libexecdir}/%{name}/lp_diag_notify
%attr(644,root,root) %{_libexecdir}/%{name}/servevent_parse.pl
%attr(644,root,root) %{_datadir}/%{name}/message_catalog/cxgb3
%attr(644,root,root) %{_datadir}/%{name}/message_catalog/e1000e
%attr(644,root,root) %{_datadir}/%{name}/message_catalog/exceptions
%attr(644,root,root) %{_datadir}/%{name}/message_catalog/gpfs
%attr(644,root,root) %{_datadir}/%{name}/message_catalog/reporters
%attr(644,root,root) %{_datadir}/%{name}/message_catalog/with_regex/*
%attr(755,root,root) %{_sysconfdir}/rc.powerfail
%attr(755,root,root) %{_libexecdir}/%{name}/rtas_errd
%attr(755,root,root) %{_libexecdir}/%{name}/opal_errd
%attr(644,root,root) %{_unitdir}/rtas_errd.service
%attr(644,root,root) %{_unitdir}/opal_errd.service
%attr(755,root,root) /etc/cron.daily/run_diag_encl

%post
# Post-install script --------------------------------------------------
%{_libexecdir}/%{name}/lp_diag_setup --register >/dev/null
%{_libexecdir}/%{name}/ppc64_diag_setup --register >/dev/null
systemctl daemon-reload >/dev/null 2>&1 || :
if [ "$1" = "1" ]; then # first install
systemctl -q enable opal_errd.service >/dev/null 2>&1 || :
systemctl -q enable rtas_errd.service >/dev/null 2>&1 || :
systemctl start opal_errd.service >/dev/null 2>&1 || :
systemctl start rtas_errd.service >/dev/null 2>&1 || :
elif [ "$1" = "2" ]; then # upgrade
systemctl try-restart opal_errd.service >/dev/null 2>&1 || :
systemctl try-restart rtas_errd.service >/dev/null 2>&1 || :
fi

%preun
# Pre-uninstall script -------------------------------------------------
if [ "$1" = "0" ]; then # last uninstall
systemctl stop opal_errd.service >/dev/null 2>&1 || :
systemctl stop rtas_errd.service >/dev/null 2>&1 || :
systemctl -q disable opal_errd.service >/dev/null 2>&1 || :
systemctl -q disable rtas_errd.service >/dev/null 2>&1 || :
%{_libexecdir}/%{name}/ppc64_diag_setup --unregister >/dev/null
%{_libexecdir}/%{name}/lp_diag_setup --unregister >/dev/null
fi

%triggerin -- librtas
# trigger on librtas upgrades ------------------------------------------
if [ "$2" = "2" ]; then
systemctl try-restart opal_errd.service >/dev/null 2>&1 || :
systemctl try-restart rtas_errd.service >/dev/null 2>&1 || :
fi


%changelog
* Wed Dec 13 2017 Than Ngo <than@redhat.com> - 2.7.4-3
- Resolves: #1525443 - resolve disk diagnostics issues

* Sat Sep 16 2017 Than Ngo <than@redhat.com> - 2.7.4-2
- Related: #1456537 - make verbose and build with -fno-strict-aliasing

* Fri Sep 15 2017 Than Ngo <than@redhat.com> - 2.7.4-1
- Resolves: #1456537 - update to 2.7.4

* Fri May 19 2017 Than Ngo <than@redhat.com> - 2.7.3-3
- Resolves: #1452130 - display help and version information

* Wed Mar 22 2017 Sinny Kumari <skumari@redhat.com> - 2.7.3-2
- Related: #1380656 - Rebuild due to soname change in librtas package

* Mon Jan 23 2017 Rafael Fonseca <rdossant@redhat.com> - 2.7.3-1
- Resolves: #1380649 - Update to 2.7.3

* Thu Jun 09 2016 Rafael Fonseca <rdossant@redhat.com> - 2.7.1-2
- Resolves: #1343992 - opal_errd service fails to start

* Wed May 18 2016 Rafael Fonseca <rdossant@redhat.com> - 2.7.1-1
- Rebase to 2.7.1
- Resolves: #1274398 - [7.3 FEAT] ppc64-diag package update - ppc64/ppc64le
- Resolves: #1302730 - [LEGAL] License change from EPL to the GNU GPL license

* Thu Aug 27 2015 Jakub Čajka <jcajka@redhat.com> - 2.6.9-2
- Resolves: #1257504 - opal-elog-parse -a does not display any results

* Tue Jun 30 2015 Jakub Čajka <jcajka@redhat.com> - 2.6.9-1
- Resolves: #1182027 - [7.2 FEAT] ppc64-diag package update - ppc64/ppc64le

* Tue Jun 16 2015 Jakub Čajka <jcajka@redhat.com> - 2.6.8-1
- Resolves: #1182027 - [7.2 FEAT] ppc64-diag package update - ppc64/ppc64le

* Fri Jan 02 2015 Jakub Čajka <jcajka@redhat.com> - 2.6.7-6
- Resolves: #1175808 - missing /var/log/dump directory

* Thu Dec 04 2014 Jakub Čajka <jcajka@redhat.com> - 2.6.7-5
- Resolves: #1170146 - ppc64-diag: rtas_errd is not started by default

* Fri Nov 14 2014 Jakub Čajka <jcajka@redhat.com> - 2.6.7-4
- Resolves: #1164148 - CVE-2014-4039 CVE-2014-4038 ppc64-diag: multiple temporary file races [rhel-7.1]

* Mon Nov 10 2014 Jakub Čajka <jcajka@redhat.com> - 2.6.7-3
- Related: #1160352 - use -fno-strict-aliasing during build

* Mon Nov 10 2014 Jakub Čajka <jcajka@redhat.com> - 2.6.7-2
- Resolves: #1160352 - ppc64-diag: please integrate additional LE fixes

* Mon Aug 25 2014 Jakub Čajka <jcajka@redhat.com> - 2.6.7-1
- Resolves: #1088493 - [7.1 FEAT] ppc64-diag package update - ppc64
- Resolves: #1084062 - ppc64-diag: add support for hotplugging of qemu pci virtio devices
- Resolves: #1124007 - ppc64-diag needs ppc64le added to ExclusiveArch

* Mon Mar 03 2014 Dan Horák <dhorak@redhat.com> - 2.6.1-4
- modernize spec a bit and switch to verbose build in Makefiles
- use system-wide CFLAGS during build (#1070784)
- Resolves: #1070784

* Fri Dec 27 2013 Daniel Mach <dmach@redhat.com> - 2.6.1-3
- Mass rebuild 2013-12-27

* Tue May 21 2013 Vasant Hegde <hegdevasant@linux.vnet.ibm.com> - 2.6.1-2
- Add ncurses-devel as build dependency
- Fix script location issue

* Mon May 20 2013 Vasant Hegde <hegdevasant@linux.vnet.ibm.com> - 2.6.1
- Update to latest upstream 2.6.1

* Thu Feb 14 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2.4.3-7
- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild

* Wed Sep 26 2012 Karsten Hopp <karsten@redhat.com> 2.4.3-6
- revert permissions fix, filter requirement instead

* Mon Sep 24 2012 karsten Hopp <karsten@redhat.com> 2.4.3-4
- fix permissions of servevent_parse.pl

* Fri Jul 27 2012 Lukáš Nykrýn <lnykryn@redhat.com> - 2.4.3-3
- rename .service file
- auto start rtas_errd (#843471)

* Sat Jul 21 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2.4.3-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild

* Fri May 04 2012 Karsten Hopp <karsten@redhat.com> 2.4.3-1
- update to 2.4.3

* Wed Feb 15 2012 Karsten Hopp <karsten@redhat.com> 2.4.2-5
- don't strip binaries
- fix some build issues

* Thu Sep 22 2011 Karsten Hopp <karsten@redhat.com> 2.4.2-4
- fix preun and post install scriptlets

* Fri Sep 09 2011 Karsten Hopp <karsten@redhat.com> 2.4.2-3
- add buildrequirement systemd-units for _unitdir rpm macro
- move helper scripts to libexecdir/ppc64-diag

* Wed Sep 07 2011 Karsten Hopp <karsten@redhat.com> 2.4.2-2
- additional fixes for Fedora package review (bugzilla #736062)

* Wed Aug 17 2011 Karsten Hopp <karsten@redhat.com> 2.4.2-1
- initial Fedora version, based on IBM spec file with rpmlint cleanups
- move scripts to /usr/share/ppc-diag
- don't start service automatically after install
Loading…
Cancel
Save