diff --git a/keepalived-fix-file-descriptor-errors-on-reload.patch b/keepalived-fix-file-descriptor-errors-on-reload.patch deleted file mode 100644 index 1530517..0000000 --- a/keepalived-fix-file-descriptor-errors-on-reload.patch +++ /dev/null @@ -1,164 +0,0 @@ -From 1c3c8eefd0a40d4938d6f05969c886988116a425 Mon Sep 17 00:00:00 2001 -From: Quentin Armitage -Date: Wed, 6 Nov 2019 23:15:23 +0000 -Subject: [PATCH] Resolve file descriptor errors on reload - -If a read or write thread was on the thread reaady queue when a -reload was processed, the file descriptor was not removed from the -epoll instance. - -This commit ensures that file descriptors relating to threads on -the thread ready queue are removed from the epoll instance during -a reload. - -Signed-off-by: Quentin Armitage ---- - keepalived/bfd/bfd_scheduler.c | 2 +- - keepalived/check/check_bfd.c | 2 +- - keepalived/vrrp/vrrp_scheduler.c | 2 +- - lib/scheduler.c | 31 +++++++++++++++++++------------ - lib/scheduler.h | 3 ++- - 5 files changed, 24 insertions(+), 16 deletions(-) - -diff --git a/keepalived/bfd/bfd_scheduler.c b/keepalived/bfd/bfd_scheduler.c -index 5c3d0691..d51d420f 100644 ---- a/keepalived/bfd/bfd_scheduler.c -+++ b/keepalived/bfd/bfd_scheduler.c -@@ -908,7 +908,7 @@ bfd_receiver_thread(thread_ref_t thread) - data->thread_in = NULL; - - /* Ignore THREAD_READ_TIMEOUT */ -- if (thread->type == THREAD_READY_FD) { -+ if (thread->type == THREAD_READY_READ_FD) { - if (!bfd_receive_packet(&pkt, fd, bfd_buffer, BFD_BUFFER_SIZE)) - bfd_handle_packet(&pkt); - } -diff --git a/keepalived/check/check_bfd.c b/keepalived/check/check_bfd.c -index 4bd8af23..f9590c30 100644 ---- a/keepalived/check/check_bfd.c -+++ b/keepalived/check/check_bfd.c -@@ -290,7 +290,7 @@ bfd_check_thread(thread_ref_t thread) - bfd_thread = thread_add_read(master, bfd_check_thread, NULL, - thread->u.f.fd, TIMER_NEVER, false); - -- if (thread->type != THREAD_READY_FD) -+ if (thread->type != THREAD_READY_READ_FD) - return 0; - - while (read(thread->u.f.fd, &evt, sizeof(bfd_event_t)) != -1) -diff --git a/keepalived/vrrp/vrrp_scheduler.c b/keepalived/vrrp/vrrp_scheduler.c -index 91a4898c..7e6da60a 100644 ---- a/keepalived/vrrp/vrrp_scheduler.c -+++ b/keepalived/vrrp/vrrp_scheduler.c -@@ -762,7 +762,7 @@ vrrp_bfd_thread(thread_ref_t thread) - bfd_thread = thread_add_read(master, vrrp_bfd_thread, NULL, - thread->u.f.fd, TIMER_NEVER, false); - -- if (thread->type != THREAD_READY_FD) -+ if (thread->type != THREAD_READY_READ_FD) - return 0; - - while (read(thread->u.f.fd, &evt, sizeof(bfd_event_t)) != -1) -diff --git a/lib/scheduler.c b/lib/scheduler.c -index 8fc2a032..3cd7b65a 100644 ---- a/lib/scheduler.c -+++ b/lib/scheduler.c -@@ -116,7 +116,8 @@ get_thread_type_str(thread_type_t id) - if (id == THREAD_CHILD_TERMINATED) return "CHILD_TERMINATED"; - if (id == THREAD_TERMINATE_START) return "TERMINATE_START"; - if (id == THREAD_TERMINATE) return "TERMINATE"; -- if (id == THREAD_READY_FD) return "READY_FD"; -+ if (id == THREAD_READY_READ_FD) return "READY_READ_FD"; -+ if (id == THREAD_READY_WRITE_FD) return "READY_WRITE_FD"; - if (id == THREAD_READ_ERROR) return "READ_ERROR"; - if (id == THREAD_WRITE_ERROR) return "WRITE_ERROR"; - #ifdef USE_SIGNAL_THREADS -@@ -859,7 +860,8 @@ thread_destroy_rb(thread_master_t *m, rb_root_cached_t *root) - - if (thread->type == THREAD_READ || - thread->type == THREAD_WRITE || -- thread->type == THREAD_READY_FD || -+ thread->type == THREAD_READY_READ_FD || -+ thread->type == THREAD_READY_WRITE_FD || - thread->type == THREAD_READ_TIMEOUT || - thread->type == THREAD_WRITE_TIMEOUT || - thread->type == THREAD_READ_ERROR || -@@ -1409,14 +1411,18 @@ thread_cancel(thread_ref_t thread_cp) - rb_erase_cached(&thread->n, &m->child); - rb_erase(&thread->rb_data, &m->child_pid); - break; -- case THREAD_READY_FD: -+ case THREAD_READY_READ_FD: - case THREAD_READ_TIMEOUT: -+ if (thread->event) -+ thread_event_del(thread, THREAD_FL_EPOLL_READ_BIT); -+ list_head_del(&thread->next); -+ break; -+ case THREAD_READY_WRITE_FD: - case THREAD_WRITE_TIMEOUT: -- if (thread->event) { -- rb_erase(&thread->event->n, &m->io_events); -- FREE(thread->event); -- } -- /* ... falls through ... */ -+ if (thread->event) -+ thread_event_del(thread, THREAD_FL_EPOLL_WRITE_BIT); -+ list_head_del(&thread->next); -+ break; - case THREAD_EVENT: - case THREAD_READY: - #ifdef USE_SIGNAL_THREADS -@@ -1735,7 +1741,7 @@ thread_fetch_next_queue(thread_master_t *m) - , ev->fd, ep_ev->events); - continue; - } -- thread_move_ready(m, &m->read, ev->read, THREAD_READY_FD); -+ thread_move_ready(m, &m->read, ev->read, THREAD_READY_READ_FD); - ev->read = NULL; - } - -@@ -1746,7 +1752,7 @@ thread_fetch_next_queue(thread_master_t *m) - , ev->fd, ep_ev->events); - continue; - } -- thread_move_ready(m, &m->write, ev->write, THREAD_READY_FD); -+ thread_move_ready(m, &m->write, ev->write, THREAD_READY_WRITE_FD); - ev->write = NULL; - } - } -@@ -1804,7 +1810,8 @@ process_threads(thread_master_t *m) - * snmp_read, bfd_receiver, bfd pipe in vrrp/check, dbus pipe or netlink fds. */ - thread = thread_trim_head(thread_list); - if (!shutting_down || -- (thread->type == THREAD_READY_FD && -+ ((thread->type == THREAD_READY_READ_FD || -+ thread->type == THREAD_READY_WRITE_FD) && - (thread->u.f.fd == m->timer_fd || - thread->u.f.fd == m->signal_fd - #ifdef _WITH_SNMP_ -@@ -1823,7 +1830,7 @@ process_threads(thread_master_t *m) - shutting_down = true; - } - -- m->current_event = (thread->type == THREAD_READY_FD) ? thread->event : NULL; -+ m->current_event = (thread->type == THREAD_READY_READ_FD || thread->type == THREAD_READY_WRITE_FD) ? thread->event : NULL; - thread_type = thread->type; - thread_add_unuse(master, thread); - -diff --git a/lib/scheduler.h b/lib/scheduler.h -index 69324fe0..fea99cd0 100644 ---- a/lib/scheduler.h -+++ b/lib/scheduler.h -@@ -56,7 +56,8 @@ typedef enum { - THREAD_CHILD_TERMINATED, - THREAD_TERMINATE_START, - THREAD_TERMINATE, -- THREAD_READY_FD, -+ THREAD_READY_READ_FD, -+ THREAD_READY_WRITE_FD, - THREAD_READ_ERROR, - THREAD_WRITE_ERROR, - #ifdef USE_SIGNAL_THREADS --- -2.23.0 - diff --git a/keepalived-fix-track_process-with-pids-32767.patch b/keepalived-fix-track_process-with-pids-32767.patch deleted file mode 100644 index 35b7025..0000000 --- a/keepalived-fix-track_process-with-pids-32767.patch +++ /dev/null @@ -1,49 +0,0 @@ -From 23a5b8113bf0b8ec4718443df0406882e8e4d831 Mon Sep 17 00:00:00 2001 -From: Quentin Armitage -Date: Sat, 9 Nov 2019 10:07:48 +0000 -Subject: [PATCH] Fix track_process with PIDs > 32767 - -Signed-off-by: Quentin Armitage ---- - keepalived/core/track_process.c | 4 ++-- - lib/scheduler.c | 2 +- - 2 files changed, 3 insertions(+), 3 deletions(-) - -diff --git a/keepalived/core/track_process.c b/keepalived/core/track_process.c -index 550254b1..76ff6009 100644 ---- a/keepalived/core/track_process.c -+++ b/keepalived/core/track_process.c -@@ -341,7 +341,7 @@ check_process(pid_t pid, char *comm, tracked_process_instance_t *tpi) - * swapped in to read it. */ - if (!have_comm) { - if (vrrp_data->vrrp_use_process_cmdline) { -- snprintf(cmdline, sizeof(cmdline), "/proc/%hd/cmdline", pid); -+ snprintf(cmdline, sizeof(cmdline), "/proc/%d/cmdline", pid); - - if ((fd = open(cmdline, O_RDONLY)) == -1) - return; -@@ -358,7 +358,7 @@ check_process(pid_t pid, char *comm, tracked_process_instance_t *tpi) - } - - if (vrrp_data->vrrp_use_process_comm) { -- snprintf(cmdline, sizeof(cmdline), "/proc/%hd/comm", pid); -+ snprintf(cmdline, sizeof(cmdline), "/proc/%d/comm", pid); - - fd = open(cmdline, O_RDONLY); - if (fd == -1) { -diff --git a/lib/scheduler.c b/lib/scheduler.c -index 3cd7b65a..de92c7d4 100644 ---- a/lib/scheduler.c -+++ b/lib/scheduler.c -@@ -441,7 +441,7 @@ report_child_status(int status, pid_t pid, char const *prog_name) - prog_id = child_finder_name(pid); - - if (!prog_id) { -- snprintf(pid_buf, sizeof(pid_buf), "pid %hd", pid); -+ snprintf(pid_buf, sizeof(pid_buf), "pid %d", pid); - prog_id = pid_buf; - } - --- -2.23.0 - diff --git a/keepalived.spec b/keepalived.spec index 6069a14..3925e7f 100644 --- a/keepalived.spec +++ b/keepalived.spec @@ -10,16 +10,13 @@ Name: keepalived Summary: High Availability monitor built upon LVS, VRRP and service pollers Version: 2.0.20 -Release: 1%{?dist} +Release: 2%{?dist} License: GPLv2+ URL: http://www.keepalived.org/ Source0: http://www.keepalived.org/software/keepalived-%{version}.tar.gz Source1: keepalived.service -Patch0: keepalived-fix-track_process-with-pids-32767.patch -Patch1: keepalived-fix-file-descriptor-errors-on-reload.patch - Requires(post): systemd Requires(preun): systemd Requires(postun): systemd @@ -54,8 +51,6 @@ infrastructures. %prep %setup -q -%patch0 -p1 -%patch1 -p1 %build %configure \ @@ -105,7 +100,10 @@ mkdir -p %{buildroot}%{_libexecdir}/keepalived %{_mandir}/man8/keepalived.8* %changelog -* Wed Feb 12 2019 Ryan O'Hara - 2.0.20-1 +* Thu Feb 13 2020 Ryan O'Hara - 2.0.20-2 +- Remove unused patches + +* Wed Feb 12 2020 Ryan O'Hara - 2.0.20-1 - Update to 2.0.20 (#1794135) * Wed Jan 29 2020 Fedora Release Engineering - 2.0.19-5