Hello community, here is the log from the commit of package ocfs2-tools for openSUSE:Factory checked in at 2017-03-13 15:33:38 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/ocfs2-tools (Old) and /work/SRC/openSUSE:Factory/.ocfs2-tools.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ocfs2-tools" Mon Mar 13 15:33:38 2017 rev:64 rq:478931 version:1.8.5 Changes: -------- --- /work/SRC/openSUSE:Factory/ocfs2-tools/ocfs2-tools.changes 2016-04-28 16:59:14.000000000 +0200 +++ /work/SRC/openSUSE:Factory/.ocfs2-tools.new/ocfs2-tools.changes 2017-03-13 15:35:06.928438335 +0100 @@ -1,0 +2,20 @@ +Thu Mar 9 12:36:30 UTC 2017 - [email protected] + +- Update ocfs2-tools.tar.gz to upstream v1.8.5 (fate#322956) +- Drop patches (merged upstream): + - 0001-libo2dlm-Close-file-description-after-use.patch + - 0002-debugfs.ocfs2-Fix-a-bug-in-process_open_args.patch + - 0003-o2cb-add-build-scripts-for-rhel7.patch + - 0004-add-systemd-support.patch + - 0005-do-not-write-sysconfig-if-status-not-changed.patch + - 0006-o2cb-mount-debugfs-when-load-config.patch + - 0009-o2cb-fix-systemd-o2cb.service-failure.patch +- Add patches (from SLE12SP2): + + force-debug.patch + + extra-debug.patch + + bug-805764-ocfs2-controld.patch + + bnc804707-reduce-RR-priority.patch + + 0004-mkfs.ocfs2-Abort-if-cluster-information-is-not-detec.patch + + 0007-Improve-error-message-if-DLM-service-is-unavailable.patch + +------------------------------------------------------------------- Old: ---- 0001-libo2dlm-Close-file-description-after-use.patch 0002-debugfs.ocfs2-Fix-a-bug-in-process_open_args.patch 0003-o2cb-add-build-scripts-for-rhel7.patch 0004-add-systemd-support.patch 0005-do-not-write-sysconfig-if-status-not-changed.patch 0006-o2cb-mount-debugfs-when-load-config.patch 0009-o2cb-fix-systemd-o2cb.service-failure.patch ocfs2-tools-1.8.4.tar.gz New: ---- 0004-mkfs.ocfs2-Abort-if-cluster-information-is-not-detec.patch 0007-Improve-error-message-if-DLM-service-is-unavailable.patch bnc804707-reduce-RR-priority.patch bug-805764-ocfs2-controld.patch extra-debug.patch force-debug.patch ocfs2-tools-1.8.5.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ ocfs2-tools.spec ++++++ --- /var/tmp/diff_new_pack.Idpfh1/_old 2017-03-13 15:35:08.224255211 +0100 +++ /var/tmp/diff_new_pack.Idpfh1/_new 2017-03-13 15:35:08.228254646 +0100 @@ -1,7 +1,7 @@ # # spec file for package ocfs2-tools # -# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany. +# Copyright (c) 2017 SUSE LINUX GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -17,7 +17,7 @@ Name: ocfs2-tools -Version: 1.8.4 +Version: 1.8.5 Release: 0 Summary: Oracle Cluster File System 2 Core Tools License: GPL-2.0+ @@ -27,6 +27,8 @@ Source1: o2cb.ocf Source2: reflink.tar.bz2 Patch001: auto-setup-pcmk-stack-as-default-if-no-stack-is-setup.patch +Patch101: force-debug.patch +Patch102: extra-debug.patch Patch103: debug-ocfs2_hb_ctl.patch Patch105: bug-470741-debug_start_failures.patch Patch106: ocfs2-devel.diff @@ -36,15 +38,12 @@ Patch204: dont-use-var-lock-subsys.patch Patch205: ocfs2-tools-kernel33.patch Patch206: ocfs2-tools-resource.patch -Patch301: 0001-libo2dlm-Close-file-description-after-use.patch -Patch302: 0002-debugfs.ocfs2-Fix-a-bug-in-process_open_args.patch -Patch401: 0003-o2cb-add-build-scripts-for-rhel7.patch -Patch402: 0004-add-systemd-support.patch -Patch403: 0005-do-not-write-sysconfig-if-status-not-changed.patch -Patch404: 0006-o2cb-mount-debugfs-when-load-config.patch +Patch212: bug-805764-ocfs2-controld.patch +Patch213: bnc804707-reduce-RR-priority.patch +Patch225: 0004-mkfs.ocfs2-Abort-if-cluster-information-is-not-detec.patch +Patch228: 0007-Improve-error-message-if-DLM-service-is-unavailable.patch Patch405: 0007-vendor-Add-vendor-files-for-sles12.patch Patch406: 0008-ocfs2-tools-add-systemd-support-fix.patch -Patch407: 0009-o2cb-fix-systemd-o2cb.service-failure.patch Patch501: bnc#96864-ocfs2console-fix-starting-failure.patch BuildRequires: autoconf @@ -141,6 +140,8 @@ %prep %setup -q -a 2 %patch001 -p1 +%patch101 -p1 +%patch102 -p1 %patch103 -p1 %patch105 -p1 %patch106 -p1 @@ -150,15 +151,12 @@ %patch204 -p1 %patch205 -p1 %patch206 -p1 -%patch301 -p1 -%patch302 -p1 -%patch401 -p1 -%patch402 -p1 -%patch403 -p1 -%patch404 -p1 +%patch212 -p1 +%patch213 -p1 +%patch225 -p1 +%patch228 -p1 %patch405 -p1 %patch406 -p1 -%patch407 -p1 %patch501 -p1 %build ++++++ 0004-mkfs.ocfs2-Abort-if-cluster-information-is-not-detec.patch ++++++ >From f7ea242d2bf76c71cfe7fd9555d44c2486610486 Mon Sep 17 00:00:00 2001 From: Goldwyn Rodrigues <[email protected]> Date: Fri, 27 Dec 2013 10:01:33 -0600 Subject: [PATCH] mkfs.ocfs2: Abort if cluster information is not detected --- mkfs.ocfs2/check.c | 19 +++++++++++++++---- mkfs.ocfs2/mkfs.h | 2 +- 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/mkfs.ocfs2/check.c b/mkfs.ocfs2/check.c index f05dc72..75f0e7b 100644 --- a/mkfs.ocfs2/check.c +++ b/mkfs.ocfs2/check.c @@ -33,7 +33,7 @@ int is_classic_stack(char *stack_name) } /* For ocfs2_fill_cluster_information(). Errors are to be ignored */ -void cluster_fill(char **stack_name, char **cluster_name, uint8_t *stack_flags) +errcode_t cluster_fill(char **stack_name, char **cluster_name, uint8_t *stack_flags) { errcode_t err; struct o2cb_cluster_desc cluster; @@ -44,11 +44,11 @@ void cluster_fill(char **stack_name, char **cluster_name, uint8_t *stack_flags) err = o2cb_init(); if (err) - return; + goto out; err = o2cb_running_cluster_desc(&cluster); if (err) - return; + goto out; if (cluster.c_stack) { /* @@ -59,6 +59,8 @@ void cluster_fill(char **stack_name, char **cluster_name, uint8_t *stack_flags) *cluster_name = cluster.c_cluster; *stack_flags = cluster.c_flags; } +out: + return err; } /* For ocfs2_fill_cluster_information(). Errors are to be ignored */ @@ -132,6 +134,7 @@ int ocfs2_fill_cluster_information(State *s) uint8_t user_stack_flags, o2cb_stack_flags, disk_stack_flags; int clusterinfo = 0, userspace = 0; int ret = -1; + errcode_t err; if (s->mount == MOUNT_LOCAL) return 0; @@ -139,7 +142,15 @@ int ocfs2_fill_cluster_information(State *s) *user_value = *o2cb_value = *disk_value = '\0'; /* get currently active cluster stack */ - cluster_fill(&o2cb_stack_name, &o2cb_cluster_name, &o2cb_stack_flags); + err = cluster_fill(&o2cb_stack_name, &o2cb_cluster_name, &o2cb_stack_flags); + if (err && !s->cluster_stack) { + com_err(s->progname, 0, "Could not determine cluster " + "information.\nEither load the correct kernel module" + ", set the cluster_stack and start cluster " + "services, or provide --cluster-stack and " + "--cluster-name command line arguments.\n"); + return -1; + } /* get cluster stack configured on disk */ disk_fill(s->device_name, &disk_stack_name, &disk_cluster_name, diff --git a/mkfs.ocfs2/mkfs.h b/mkfs.ocfs2/mkfs.h index 13b4fb5..ca2004c 100644 --- a/mkfs.ocfs2/mkfs.h +++ b/mkfs.ocfs2/mkfs.h @@ -243,6 +243,6 @@ struct _State { }; int is_classic_stack(char *stack_name); -void cluster_fill(char **stack_name, char **cluster_name, uint8_t *stack_flags); +errcode_t cluster_fill(char **stack_name, char **cluster_name, uint8_t *stack_flags); int ocfs2_fill_cluster_information(State *s); int ocfs2_check_volume(State *s); -- 1.8.4 ++++++ 0007-Improve-error-message-if-DLM-service-is-unavailable.patch ++++++ >From 15891da74943b0f878b486741ff67507b9bd6177 Mon Sep 17 00:00:00 2001 From: Goldwyn Rodrigues <[email protected]> Date: Fri, 23 May 2014 11:41:24 -0500 Subject: [PATCH 7/7] Improve error message if DLM service is unavailable o2dlm_initialize_fsdlm to return O2DLM_ET_SERVICE_UNAVAILABLE if DLM service is not running (ENOTCONN). --- libo2dlm/o2dlm.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/libo2dlm/o2dlm.c b/libo2dlm/o2dlm.c index dbc642b..c0fbb21 100644 --- a/libo2dlm/o2dlm.c +++ b/libo2dlm/o2dlm.c @@ -1035,6 +1035,9 @@ static errcode_t o2dlm_initialize_fsdlm(const char *domain_name, case EPERM: ret = O2DLM_ET_BAD_DOMAIN_DIR; break; + case ENOTCONN: + ret = O2DLM_ET_SERVICE_UNAVAILABLE; + break; default: ret = O2DLM_ET_INTERNAL_FAILURE; break; -- 1.8.4.5 ++++++ _service ++++++ --- /var/tmp/diff_new_pack.Idpfh1/_old 2017-03-13 15:35:08.296245038 +0100 +++ /var/tmp/diff_new_pack.Idpfh1/_new 2017-03-13 15:35:08.296245038 +0100 @@ -3,7 +3,7 @@ <param name="url">https://github.com/markfasheh/ocfs2-tools.git</param> <param name="scm">git</param> <param name="exclude">.git</param> - <param name="versionformat">1.8.4</param> + <param name="versionformat">1.8.5</param> <param name="revision">master</param> </service> ++++++ auto-setup-pcmk-stack-as-default-if-no-stack-is-setup.patch ++++++ --- /var/tmp/diff_new_pack.Idpfh1/_old 2017-03-13 15:35:08.308243343 +0100 +++ /var/tmp/diff_new_pack.Idpfh1/_new 2017-03-13 15:35:08.308243343 +0100 @@ -1,8 +1,8 @@ -Index: ocfs2-tools-1.8.4/libo2cb/o2cb_abi.c +Index: ocfs2-tools-1.8.5/libo2cb/o2cb_abi.c =================================================================== --- a/libo2cb/o2cb_abi.c +++ b/libo2cb/o2cb_abi.c -@@ -200,7 +200,7 @@ redo: +@@ -201,7 +201,7 @@ redo: } } else if (len == -ENOENT) { if (!setup_performed) { @@ -10,4 +10,4 @@ + o2cb_setup_stack(OCFS2_PCMK_CLUSTER_STACK); setup_performed = 1; goto redo; - } + } else { ++++++ bnc804707-reduce-RR-priority.patch ++++++ Index: ocfs2-tools/ocfs2_controld/main.c =================================================================== --- ocfs2-tools.orig/ocfs2_controld/main.c +++ ocfs2-tools/ocfs2_controld/main.c @@ -1233,7 +1233,7 @@ static void set_scheduler(void) struct sched_param sched_param; int rv; - rv = sched_get_priority_max(SCHED_RR); + rv = sched_get_priority_min(SCHED_RR); if (rv != -1) { sched_param.sched_priority = rv; rv = sched_setscheduler(0, SCHED_RR, &sched_param); ++++++ bug-805764-ocfs2-controld.patch ++++++ Index: ocfs2-tools/ocfs2_controld/main.c =================================================================== --- ocfs2-tools.orig/ocfs2_controld/main.c +++ ocfs2-tools/ocfs2_controld/main.c @@ -948,6 +948,68 @@ static void cpg_joined(int first) } } +static int find_minors(void) +{ + FILE *fl; + char name[256]; + uint32_t number; + int c; + int control_minor = 0; + + if (!(fl = fopen("/proc/misc", "r"))) { + log_error("failed to open /proc/misc: %s", strerror(errno)); + goto out; + } + + while (!feof(fl)) { + if (fscanf(fl, "%d %255s\n", &number, &name[0]) == 2) { + if (!strcmp(name, "ocfs2_control")) + control_minor = number; + } else do { + c = fgetc(fl); + } while (c != EOF && c != '\n'); + + if (control_minor) + break; + } + fclose(fl); + + if (!control_minor) + log_error("Is ocfs2 missing from kernel? No misc devices found"); +out: + return control_minor; +} + +static int find_udev_device(const char *path, uint32_t minor) +{ + struct stat st; + int i; + + for (i = 0; i < 10; i++) { + if (stat(path, &st) == 0 && minor(st.st_rdev) == minor) + return 0; + sleep(1); + } + + log_error("cannot find device %s with minor %d", path, minor); + return -1; +} + +static int setup_misc_device(void) +{ + int rv = -1; + int control_minor = find_minors(); + + if (control_minor) { + rv = find_udev_device("/dev/misc/ocfs2_control", control_minor); + if (rv < 0) + return rv; + log_debug("found /dev/misc/ocfs2_control %u", control_minor); + } + + return rv; +} + static int loop(void) { int rv, i, poll_timeout = -1; @@ -968,6 +1030,10 @@ static int loop(void) if (rv < 0) goto out; + rv = setup_misc_device(); + if (rv < 0) + goto out; + rv = setup_cpg(cpg_joined); if (rv < 0) goto out; ++++++ debug-ocfs2_hb_ctl.patch ++++++ --- /var/tmp/diff_new_pack.Idpfh1/_old 2017-03-13 15:35:08.348237690 +0100 +++ /var/tmp/diff_new_pack.Idpfh1/_new 2017-03-13 15:35:08.352237125 +0100 @@ -87,7 +87,7 @@ struct hb_ctl_options hbo = { .action = HB_ACTION_UNKNOWN, }; - char hbuuid[33]; + char *hbuuid = NULL; + char tmp[1024]; + + openlog("ocfs2_hb_ctl", LOG_CONS|LOG_NDELAY|LOG_PID, LOG_KERN); ++++++ extra-debug.patch ++++++ --- ocfs2_controld/ckpt.c | 2 - ocfs2_controld/main.c | 53 ++++++++++++++++++++++++++++++++++------ ocfs2_controld/mount.c | 2 + ocfs2_controld/ocfs2_controld.h | 1 ocfs2_controld/pacemaker.c | 2 - 5 files changed, 51 insertions(+), 9 deletions(-) Index: ocfs2-tools/ocfs2_controld/ckpt.c =================================================================== --- ocfs2-tools.orig/ocfs2_controld/ckpt.c 2012-08-24 10:02:19.000000000 -0500 +++ ocfs2-tools/ocfs2_controld/ckpt.c 2012-08-24 10:14:42.000000000 -0500 @@ -413,7 +413,7 @@ static int call_section_read(struct ckpt /* -ENOENT is a clean error for the caller to handle */ if (rc == -ENOENT) { - log_debug("Checkpoint \"%.*s\" does not have a " + log_error("Checkpoint \"%.*s\" does not have a " "section named \"%s\"", handle->ch_name.length, handle->ch_name.value, name); Index: ocfs2-tools/ocfs2_controld/main.c =================================================================== --- ocfs2-tools.orig/ocfs2_controld/main.c 2012-08-24 10:02:19.000000000 -0500 +++ ocfs2-tools/ocfs2_controld/main.c 2012-08-24 10:14:42.000000000 -0500 @@ -74,7 +74,7 @@ static int time_to_die = 0; static int sigpipe_write_fd; char *prog_name; -int daemon_debug_opt; +int daemon_debug_opt = 0; char daemon_debug_buf[1024]; char dump_buf[DUMP_SIZE]; int dump_point; @@ -1030,8 +1030,7 @@ static void lockfile(void) fd = open(LOCKFILE_NAME, O_CREAT|O_WRONLY, S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH); if (fd < 0) { - fprintf(stderr, "cannot open/create lock file %s\n", - LOCKFILE_NAME); + log_error("cannot open/create lock file %s", LOCKFILE_NAME); exit(EXIT_FAILURE); } @@ -1042,13 +1041,13 @@ static void lockfile(void) error = fcntl(fd, F_SETLK, &lock); if (error) { - fprintf(stderr, "ocfs2_controld is already running\n"); + log_error("ocfs2_controld is already running"); exit(EXIT_FAILURE); } error = ftruncate(fd, 0); if (error) { - fprintf(stderr, "cannot clear lock file %s\n", LOCKFILE_NAME); + log_error("cannot clear lock file %s", LOCKFILE_NAME); exit(EXIT_FAILURE); } @@ -1056,7 +1055,7 @@ static void lockfile(void) error = write(fd, buf, strlen(buf)); if (error <= 0) { - fprintf(stderr, "cannot write lock file %s\n", LOCKFILE_NAME); + log_error("cannot write lock file %s", LOCKFILE_NAME); exit(EXIT_FAILURE); } } @@ -1066,13 +1065,13 @@ static void daemonize(void) int fd; pid_t pid = fork(); if (pid < 0) { + log_error("main: cannot fork"); perror("main: cannot fork"); exit(EXIT_FAILURE); } if (pid) exit(EXIT_SUCCESS); setsid(); - chdir("/"); umask(0); close(0); close(1); @@ -1143,6 +1142,7 @@ static void decode_arguments(int argc, c break; default: + log_error("unknown option: %c\n", optchar); fprintf(stderr, "unknown option: %c\n", optchar); exit(EXIT_FAILURE); break; @@ -1180,12 +1180,53 @@ static void set_scheduler(void) } } +#include <sys/time.h> +#include <sys/resource.h> + +static int +hack_enable_coredumps(void) +{ + int rc; + struct rlimit rlim; + int doenable = 1; + + if ((rc = getrlimit(RLIMIT_CORE, &rlim)) < 0) { + int errsave = errno; + log_error("Cannot get current core limit value. %d", errsave); + errno = errsave; + return rc; + } + if (rlim.rlim_max == 0 && geteuid() == 0) { + rlim.rlim_max = RLIM_INFINITY; + } + + rlim.rlim_cur = (doenable ? rlim.rlim_max : 0); + + if (doenable && rlim.rlim_max == 0) { + log_error("Not possible to enable core dumps (rlim_max is 0)"); + } + + if ((rc = setrlimit(RLIMIT_CORE, &rlim)) < 0) { + int errsave = errno; + log_error("Unable to enable core dumps: %d", errsave); + errno = errsave; + return rc; + } + chdir("/var/lib/openais"); + log_debug("Core dumps enabled: /var/lib/openais"); + return 0; +} + int main(int argc, char **argv) { errcode_t err; prog_name = argv[0]; const char *stack = NULL; + decode_arguments(argc, argv); + + hack_enable_coredumps(); + init_mounts(); initialize_o2cb_error_table(); @@ -1201,13 +1242,11 @@ int main(int argc, char **argv) return 1; } if (strcmp(stack, stackname)) { - fprintf(stderr, "%s: This daemon supports the \"%s\" stack, but the \"%s\" stack is in use\n", - prog_name, stackname, stack); + log_error("%s: This daemon supports the \"%s\" stack, but the \"%s\" stack is in use", + prog_name, stackname, stack); return 1; } - decode_arguments(argc, argv); - if (!daemon_debug_opt) daemonize(); Index: ocfs2-tools/ocfs2_controld/mount.c =================================================================== --- ocfs2-tools.orig/ocfs2_controld/mount.c 2012-08-24 10:02:19.000000000 -0500 +++ ocfs2-tools/ocfs2_controld/mount.c 2012-08-24 10:14:42.000000000 -0500 @@ -176,6 +176,8 @@ static void notify_mount_client(struct m else mg->mg_mount_notified = 1; + log_debug("Notified client: %d", mg->mg_mount_notified); + /* * XXX If we failed to notify the client, what can we do? I'm * guessing that our main loop will get POLLHUP and we'll clean Index: ocfs2-tools/ocfs2_controld/ocfs2_controld.h =================================================================== --- ocfs2-tools.orig/ocfs2_controld/ocfs2_controld.h 2012-08-24 10:14:40.000000000 -0500 +++ ocfs2-tools/ocfs2_controld/ocfs2_controld.h 2012-08-24 10:14:42.000000000 -0500 @@ -60,6 +60,7 @@ do { \ #define log_error(fmt, args...) \ do { \ log_debug(fmt, ##args); \ + fprintf(stderr, fmt "\n", ##args); \ syslog(LOG_ERR, fmt, ##args); \ } while (0) ++++++ force-debug.patch ++++++ --- ocfs2_controld/ocfs2_controld.h | 7 +++++++ 1 file changed, 7 insertions(+) Index: ocfs2_controld/ocfs2_controld.h =================================================================== --- a/ocfs2_controld/ocfs2_controld.h.orig 2008-10-26 18:10:50.000000000 +0100 +++ b/ocfs2_controld/ocfs2_controld.h 2009-03-10 22:22:52.719197000 +0100 @@ -44,12 +44,19 @@ extern void daemon_dump_save(void); #define log_debug(fmt, args...) \ do { \ + syslog(LOG_DEBUG, fmt, ##args); \ snprintf(daemon_debug_buf, 1023, "%ld %s@%d: " fmt "\n", \ time(NULL), __FUNCTION__, __LINE__, ##args); \ if (daemon_debug_opt) fprintf(stderr, "%s", daemon_debug_buf); \ daemon_dump_save(); \ } while (0) +#define log_info(fmt, args...) \ +do { \ + log_debug(fmt, ##args); \ + syslog(LOG_INFO, fmt, ##args); \ +} while (0) + #define log_error(fmt, args...) \ do { \ log_debug(fmt, ##args); \ ++++++ ocfs2-tools-1.8.4.tar.gz -> ocfs2-tools-1.8.5.tar.gz ++++++ ++++ 3597 lines of diff (skipped)
