Hello community,
here is the log from the commit of package ppc64-diag for openSUSE:Factory checked in at 2017-12-19 10:59:23
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/ppc64-diag (Old)
and /work/SRC/openSUSE:Factory/.ppc64-diag.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ppc64-diag"
Tue Dec 19 10:59:23 2017 rev:40 rq:558183 version:2.7.4
Changes:
--------
--- /work/SRC/openSUSE:Factory/ppc64-diag/ppc64-diag.changes 2017-10-23 16:53:52.927027170 +0200
+++ /work/SRC/openSUSE:Factory/.ppc64-diag.new/ppc64-diag.changes 2017-12-19 10:59:25.982611590 +0100
@@ -1,0 +2,12 @@
+Mon Dec 18 08:55:48 UTC 2017 - jloeser@suse.com
+
+- fix 'diag_encl -d' call (bsc#1072708)
+
+- added patches:
+ * ppc64-diag.bug-1072708_create_diag_disk_log_directory.patch
+ * ppc64-diag.bug-1072708_create_diag_disk_path.patch
+ * ppc64-diag.bug-1072708_fix_service_scripts.patch
+ * ppc64-diag.bug-1072708_increase_buffer_for_vpd.patch
+ * ppc64-diag.bug-1072708_remove_timestamp.patch
+
+-------------------------------------------------------------------
New:
----
ppc64-diag.bug-1072708_create_diag_disk_log_directory.patch
ppc64-diag.bug-1072708_create_diag_disk_path.patch
ppc64-diag.bug-1072708_fix_service_scripts.patch
ppc64-diag.bug-1072708_increase_buffer_for_vpd.patch
ppc64-diag.bug-1072708_remove_timestamp.patch
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ ppc64-diag.spec ++++++
--- /var/tmp/diff_new_pack.SZSbMm/_old 2017-12-19 10:59:26.678577992 +0100
+++ /var/tmp/diff_new_pack.SZSbMm/_new 2017-12-19 10:59:26.682577799 +0100
@@ -53,6 +53,11 @@
Source0: http://downloads.sourceforge.net/project/linux-diag/ppc64-diag/v%{version}/%{name}-%{version}.tar.gz
#PATCH-FIX-OPENSUSE - ppc64-diag.varunused.patch - fix unused variables
Patch1: %{name}.varunused.patch
+Patch2: ppc64-diag.bug-1072708_fix_service_scripts.patch
+Patch3: ppc64-diag.bug-1072708_create_diag_disk_path.patch
+Patch4: ppc64-diag.bug-1072708_increase_buffer_for_vpd.patch
+Patch5: ppc64-diag.bug-1072708_remove_timestamp.patch
+Patch6: ppc64-diag.bug-1072708_create_diag_disk_log_directory.patch
%description
This package contains various diagnostic tools for PowerLinux.
@@ -71,6 +76,11 @@
%prep
%setup -q
%patch1 -p1
+%patch2 -p1
+%patch3 -p1
+%patch4 -p1
+%patch5 -p1
+%patch6 -p1
%build
sed -i 's@/usr/libexec/ppc64-diag@%{_libexecdir}@g' scripts/opal_errd.service
++++++ ppc64-diag.bug-1072708_create_diag_disk_log_directory.patch ++++++
commit d2ec2733829b69f8b935f328f5cc2396e4c2af70
Author: Ankit Kumar
Date: Tue Dec 5 14:56:14 2017 +0530
diags: Create diag_disk log directory manually if not present
disk diagnostics code populates disk health information under
/var/log/ppc64-diag/diag_disk. If above path is not found then
disk diagnostics will fail.
This patch creates /var/log/ppc64-diag/diag_disk/ manually part of
diag_disk code if not already created.
It will help diag_disk code to remove dependency on ppc64-diag installation
process.
Signed-off-by: Ankit Kumar
[Removed inline function, renamed function name and also killed some
of the redundant checks - Vasant]
Signed-off-by: Vasant Hegde
Index: ppc64-diag-2.7.4/diags/diag_disk.c
===================================================================
--- ppc64-diag-2.7.4.orig/diags/diag_disk.c
+++ ppc64-diag-2.7.4/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 @@ static int get_page_34_data(int device_f
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)
@@ -346,9 +388,8 @@ static int remove_old_log_file(void)
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;
@@ -356,22 +397,17 @@ static int remove_old_log_file(void)
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);
- }
+ closedir(d);
+ dir_sync(DISK_OUTPUT_PATH);
return 0;
}
++++++ ppc64-diag.bug-1072708_create_diag_disk_path.patch ++++++
commit d42252e93ea4a80fbad5646399f29ebe2a54013f
Author: Ankit Kumar
Date: Mon Sep 25 12:36:24 2017 +0530
Create diag_disk path part of installation
`make install` creates `/var/log/ppc64-diag/diag_disk` directory.
But rpmbuild will not pick up this directory unless we specify
explicitly under files section.
Signed-off-by: Ankit Kumar
[Updated description - Vasant]
Signed-off-by: Vasant Hegde
Index: ppc64-diag-2.7.4/ppc64-diag.spec.in
===================================================================
--- ppc64-diag-2.7.4.orig/ppc64-diag.spec.in
+++ ppc64-diag-2.7.4/ppc64-diag.spec.in
@@ -61,6 +61,7 @@ mkdir -p $RPM_BUILD_ROOT/var/log/opal-el
/usr/sbin/*
%dir /etc/%{name}
%dir /etc/%{name}/ses_pages
+%dir /var/log/ppc64-diag/diag_disk
%dir /var/log/dump
%dir /var/log/opal-elog
%config /etc/%{name}/*
++++++ ppc64-diag.bug-1072708_fix_service_scripts.patch ++++++
commit 608507ea8ed81209204feacbbde40e234d261141
Author: Vasant Hegde
Date: Wed Sep 13 21:54:45 2017 +0530
scripts: Fix service scripts
By mistake I added wrong condition check which resulted in unnecessary
log messages in PowerNV system. This patch fixes service script properly.
Fixes: 1f49a51c (scripts: Improve service scripts)
Reported-by: Frédéric Bonnard
Signed-off-by: Vasant Hegde
Index: ppc64-diag-2.7.4/scripts/rtas_errd.service
===================================================================
--- ppc64-diag-2.7.4.orig/scripts/rtas_errd.service
+++ ppc64-diag-2.7.4/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]
++++++ ppc64-diag.bug-1072708_increase_buffer_for_vpd.patch ++++++
commit 1837ee17e201c66ed13ae1665a08a92fc42cb347
Author: Ankit Kumar
Date: Tue Dec 5 14:56:12 2017 +0530
diags: Increase buffer length size to read complete system vpd information
System vpd information(system id, model) can have prefix substring
as IBM and hence our buffer must handle those extra string to get
correct serial number and model information.
This patch increased buffer length to 16 bytes(8-serial/model number + 8 - to
capture other substring).
Signed-off-by: Ankit Kumar
Signed-off-by: Vasant Hegde
Index: ppc64-diag-2.7.4/diags/diag_disk.c
===================================================================
--- ppc64-diag-2.7.4.orig/diags/diag_disk.c
+++ ppc64-diag-2.7.4/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 @@ static int get_system_vpd(char *machine_
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 @@ static int get_system_vpd(char *machine_
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;
++++++ ppc64-diag.bug-1072708_remove_timestamp.patch ++++++
commit 7be810122b48af0c095c1d1d5e8bd0b124026ed4
Author: Ankit Kumar
Date: Tue Dec 5 14:56:13 2017 +0530
diags: Remove timestamp from disk health log file
This patch removes timestamp from filename. Function call sequence is
changed as old and new file will have same name.
Signed-off-by: Ankit Kumar
[Modified to continue with file creation even if remove_old_log_file
fails - Vasant]
Signed-off-by: Vasant Hegde
Index: ppc64-diag-2.7.4/diags/diag_disk.c
===================================================================
--- ppc64-diag-2.7.4.orig/diags/diag_disk.c
+++ ppc64-diag-2.7.4/diags/diag_disk.c
@@ -341,7 +341,7 @@ static int sysfs_sg_disk_scan(const char
return rc;
}
-static int remove_old_log_file(char *xml_filename)
+static int remove_old_log_file(void)
{
DIR *d;
struct dirent *namelist;
@@ -356,9 +356,6 @@ static int remove_old_log_file(char *xml
if (namelist->d_name[0] == '.')
continue;
- if (!strcmp(xml_filename, namelist->d_name))
- continue;
-
snprintf(filename, sizeof(filename) - 1, "%s/%s", OUTPUT_PATH,
namelist->d_name);
if (unlink(filename) < 0) {
@@ -413,10 +410,11 @@ int diag_disk(char *disk_name)
/* 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);
@@ -438,12 +436,5 @@ int diag_disk(char *disk_name)
/* 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;
}