From d10306ddc241b2fdd4fa4dc16615911b9de3bd1d Mon Sep 17 00:00:00 2001 From: CentOS Sources Date: May 07 2019 10:00:18 +0000 Subject: import irqbalance-1.4.0-2.el8 --- diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9ee7832 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +SOURCES/irqbalance-1.4.0.tar.gz diff --git a/.irqbalance.metadata b/.irqbalance.metadata new file mode 100644 index 0000000..678d9c9 --- /dev/null +++ b/.irqbalance.metadata @@ -0,0 +1 @@ +4eb861313d6b93b3be5d5933a7f45ee7b51c7ddb SOURCES/irqbalance-1.4.0.tar.gz diff --git a/SOURCES/irqbalance-1.0.4-env-file-path.patch b/SOURCES/irqbalance-1.0.4-env-file-path.patch new file mode 100644 index 0000000..450d755 --- /dev/null +++ b/SOURCES/irqbalance-1.0.4-env-file-path.patch @@ -0,0 +1,12 @@ +diff -up ./misc/irqbalance.service.path ./misc/irqbalance.service +--- ./misc/irqbalance.service.path 2017-11-14 13:09:56.011146473 -0500 ++++ ./misc/irqbalance.service 2017-11-14 13:10:13.480075654 -0500 +@@ -4,7 +4,7 @@ After=syslog.target + ConditionVirtualization=!container + + [Service] +-EnvironmentFile=/path/to/irqbalance.env ++EnvironmentFile=/etc/sysconfig/irqbalance + ExecStart=/usr/sbin/irqbalance --foreground $IRQBALANCE_ARGS + + [Install] diff --git a/SOURCES/irqbalance-1.4.0-Fix-an-possible-overflow-error.patch b/SOURCES/irqbalance-1.4.0-Fix-an-possible-overflow-error.patch new file mode 100644 index 0000000..26816e6 --- /dev/null +++ b/SOURCES/irqbalance-1.4.0-Fix-an-possible-overflow-error.patch @@ -0,0 +1,34 @@ +From 16cb6df56960f58df61ec35ef3be45286eb3c788 Mon Sep 17 00:00:00 2001 +From: Kairui Song +Date: Sun, 2 Sep 2018 23:40:45 +0800 +Subject: [PATCH 2/4] Fix an possible overflow error + +Got: +"specified bound 2048 exceeds the size 19 of the destination" +when -O2 is used, and a "*** buffer overflow detected ***" error output +with no backtrace. + +With -O0, it's gone, guess it's some gcc optimization problem, and the +size there is wrong anyway, this patch could fix it. +--- + irqbalance.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/irqbalance.c b/irqbalance.c +index 4b3de54..c89c3c0 100644 +--- a/irqbalance.c ++++ b/irqbalance.c +@@ -457,8 +457,8 @@ gboolean sock_handle(gint fd, GIOCondition condition, gpointer user_data __attri + } + if (!strncmp(buff, "setup", strlen("setup"))) { + char banned[512]; +- char *setup = calloc(strlen("SLEEP ") + 11 +1, 1); +- snprintf(setup, 2048, "SLEEP %d ", sleep_interval); ++ char *setup = calloc(strlen("SLEEP ") + 11 + 1, 1); ++ snprintf(setup, strlen("SLEEP ") + 11 + 1, "SLEEP %d ", sleep_interval); + if(g_list_length(cl_banned_irqs) > 0) { + for_each_irq(cl_banned_irqs, get_irq_data, setup); + } +-- +2.17.1 + diff --git a/SOURCES/irqbalance-1.4.0-Fix-several-memleak-problems-found-by-covscan.patch b/SOURCES/irqbalance-1.4.0-Fix-several-memleak-problems-found-by-covscan.patch new file mode 100644 index 0000000..bd0a844 --- /dev/null +++ b/SOURCES/irqbalance-1.4.0-Fix-several-memleak-problems-found-by-covscan.patch @@ -0,0 +1,253 @@ +From 9ed5c269bd59c95f41829aedf0520930c97b08d3 Mon Sep 17 00:00:00 2001 +From: Kairui Song +Date: Thu, 30 Aug 2018 17:45:53 +0800 +Subject: Fix several memleak problems found by covscan + +Some memleak issues is found by static analysis tools, and can confirm +irqbalance is leaking memory slowly when there are incomming connection +to socket. + +This patch could solve the memleak problem. +--- + irqbalance.c | 16 ++++++++++++---- + ui/irqbalance-ui.c | 31 +++++++++++++++++++++++++++---- + ui/ui.c | 2 ++ + 3 files changed, 41 insertions(+), 8 deletions(-) + +diff --git a/irqbalance.c b/irqbalance.c +index 6412447..4b3de54 100644 +--- a/irqbalance.c ++++ b/irqbalance.c +@@ -385,11 +385,11 @@ gboolean sock_handle(gint fd, GIOCondition condition, gpointer user_data __attri + sock = accept(fd, NULL, NULL); + if (sock < 0) { + log(TO_ALL, LOG_WARNING, "Connection couldn't be accepted.\n"); +- return TRUE; ++ goto out; + } + if ((recv_size = recvmsg(sock, &msg, 0)) < 0) { + log(TO_ALL, LOG_WARNING, "Error while receiving data.\n"); +- return TRUE; ++ goto out; + } + cmsg = CMSG_FIRSTHDR(&msg); + if ((cmsg->cmsg_level == SOL_SOCKET) && +@@ -401,7 +401,7 @@ gboolean sock_handle(gint fd, GIOCondition condition, gpointer user_data __attri + } + if (!valid_user) { + log(TO_ALL, LOG_INFO, "Permission denied for user to connect to socket.\n"); +- return TRUE; ++ goto out; + } + + if (!strncmp(buff, "stats", strlen("stats"))) { +@@ -421,6 +421,7 @@ gboolean sock_handle(gint fd, GIOCondition condition, gpointer user_data __attri + if (new_iterval >= 1) { + sleep_interval = new_iterval; + } ++ free(sleep_string); + } else if (!(strncmp(buff + strlen("settings "), "ban irqs ", + strlen("ban irqs ")))) { + char *end; +@@ -432,12 +433,14 @@ gboolean sock_handle(gint fd, GIOCondition condition, gpointer user_data __attri + cl_banned_irqs = NULL; + need_rescan = 1; + if (!strncmp(irq_string, "NONE", strlen("NONE"))) { +- return TRUE; ++ free(irq_string); ++ goto out; + } + int irq = strtoul(irq_string, &end, 10); + do { + add_cl_banned_irq(irq); + } while((irq = strtoul(end, &end, 10))); ++ free(irq_string); + } else if (!(strncmp(buff + strlen("settings "), "cpus ", + strlen("cpus")))) { + char *cpu_ban_string = malloc( +@@ -449,6 +452,7 @@ gboolean sock_handle(gint fd, GIOCondition condition, gpointer user_data __attri + banned_cpumask_from_ui = NULL; + } + need_rescan = 1; ++ free(cpu_ban_string); + } + } + if (!strncmp(buff, "setup", strlen("setup"))) { +@@ -463,10 +467,14 @@ gboolean sock_handle(gint fd, GIOCondition condition, gpointer user_data __attri + snprintf(setup + strlen(setup), strlen(banned) + 7 + 1, + "BANNED %s", banned); + send(sock, setup, strlen(setup), 0); ++ free(setup); + } + + close(sock); + } ++ ++out: ++ free(msg.msg_control); + return TRUE; + } + +diff --git a/ui/irqbalance-ui.c b/ui/irqbalance-ui.c +index 3fc46af..99f2ca2 100644 +--- a/ui/irqbalance-ui.c ++++ b/ui/irqbalance-ui.c +@@ -41,6 +41,7 @@ struct msghdr * create_credentials_msg() + cmsg->cmsg_len = CMSG_LEN(sizeof(struct ucred)); + memcpy(CMSG_DATA(cmsg), credentials, sizeof(struct ucred)); + ++ free(credentials); + return msg; + } + +@@ -87,6 +88,8 @@ void send_settings(char *data) + sendmsg(socket_fd, msg, 0); + + close(socket_fd); ++ free(msg->msg_control); ++ free(msg); + } + + char * get_data(char *string) +@@ -115,6 +118,8 @@ char * get_data(char *string) + int len = recv(socket_fd, data, 8192, 0); + close(socket_fd); + data[len] = '\0'; ++ free(msg->msg_control); ++ free(msg); + return data; + } + +@@ -123,6 +128,7 @@ void parse_setup(char *setup_data) + char *token, *ptr; + int i,j; + char *copy; ++ irq_t *new_irq = NULL; + if((setup_data == NULL) || (strlen(setup_data) == 0)) return; + copy = strdup(setup_data); + if (!copy) +@@ -136,7 +142,7 @@ void parse_setup(char *setup_data) + token = strtok_r(NULL, " ", &ptr); + /* Parse banned IRQ data */ + while(!strncmp(token, "IRQ", strlen("IRQ"))) { +- irq_t *new_irq = malloc(sizeof(irq_t)); ++ new_irq = malloc(sizeof(irq_t)); + new_irq->vector = strtol(strtok_r(NULL, " ", &ptr), NULL, 10); + token = strtok_r(NULL, " ", &ptr); + if(strncmp(token, "LOAD", strlen("LOAD"))) goto out; +@@ -151,6 +157,7 @@ void parse_setup(char *setup_data) + new_irq->assigned_to = NULL; + setup.banned_irqs = g_list_append(setup.banned_irqs, new_irq); + token = strtok_r(NULL, " ", &ptr); ++ new_irq = NULL; + } + + if(strncmp(token, "BANNED", strlen("BANNED"))) goto out; +@@ -165,6 +172,7 @@ void parse_setup(char *setup_data) + banned_cpu); + } + } ++ free(map); + + } + free(copy); +@@ -173,6 +181,9 @@ void parse_setup(char *setup_data) + out: { + /* Invalid data presented */ + printf("Invalid data sent. Unexpected token: %s", token); ++ if (new_irq) { ++ free(new_irq); ++ } + free(copy); + g_list_free(tree); + exit(1); +@@ -240,7 +251,9 @@ void parse_into_tree(char *data) + cpu_node_t *parent = NULL; + char *copy; + tree = NULL; +- ++ irq_t *new_irq = NULL; ++ cpu_node_t *new = NULL; ++ + if (!data || strlen(data) == 0) + return; + +@@ -255,7 +268,7 @@ void parse_into_tree(char *data) + free(copy); + goto out; + } +- cpu_node_t *new = malloc(sizeof(cpu_node_t)); ++ new = malloc(sizeof(cpu_node_t)); + new->irqs = NULL; + new->children = NULL; + new->cpu_list = NULL; +@@ -279,7 +292,7 @@ void parse_into_tree(char *data) + + /* Parse assigned IRQ data */ + while((token != NULL) && (!strncmp(token, "IRQ", strlen("IRQ")))) { +- irq_t *new_irq = malloc(sizeof(irq_t)); ++ new_irq = malloc(sizeof(irq_t)); + new_irq->vector = strtol(strtok_r(NULL, " ", &ptr), NULL, 10); + token = strtok_r(NULL, " ", &ptr); + if(strncmp(token, "LOAD", strlen("LOAD"))) goto out; +@@ -293,6 +306,7 @@ void parse_into_tree(char *data) + new_irq->is_banned = 0; + new->irqs = g_list_append(new->irqs, new_irq); + token = strtok_r(NULL, " ", &ptr); ++ new_irq = NULL; + } + + if((token == NULL) || (strncmp(token, "IRQ", strlen("IRQ")))) { +@@ -306,6 +320,8 @@ void parse_into_tree(char *data) + parent = new; + } + } ++ ++ new = NULL; + } + free(copy); + for_each_node(tree, assign_cpu_lists, NULL); +@@ -315,6 +331,12 @@ void parse_into_tree(char *data) + out: { + /* Invalid data presented */ + printf("Invalid data sent. Unexpected token: %s\n", token); ++ if (new_irq) { ++ free(new_irq); ++ } ++ if (new) { ++ free(new); ++ } + g_list_free(tree); + exit(1); + } +@@ -330,6 +352,7 @@ gboolean rescan_tree(gpointer data __attribute__((unused))) + display_tree(); + } + free(setup_data); ++ free(irqbalance_data); + return TRUE; + } + +diff --git a/ui/ui.c b/ui/ui.c +index 4054f0e..06ec472 100644 +--- a/ui/ui.c ++++ b/ui/ui.c +@@ -71,6 +71,7 @@ char * check_control_in_sleep_input(int max_len, int column_offest, int line_off + attrset(COLOR_PAIR(6)); + break; + case 27: ++ free(input_to); + return NULL; + default: + input_to[iteration] = new; +@@ -115,6 +116,7 @@ int get_valid_sleep_input(int column_offest) + input); + refresh(); + } ++ free(input); + } + + attrset(COLOR_PAIR(1)); +-- +2.17.1 + diff --git a/SOURCES/irqbalance-1.4.0-procinterrupts-check-xen-dyn-event-more-flexible.patch b/SOURCES/irqbalance-1.4.0-procinterrupts-check-xen-dyn-event-more-flexible.patch new file mode 100644 index 0000000..23bb4dd --- /dev/null +++ b/SOURCES/irqbalance-1.4.0-procinterrupts-check-xen-dyn-event-more-flexible.patch @@ -0,0 +1,72 @@ +From 3eae2edd136540898f8e51546eedfb56729f938d Mon Sep 17 00:00:00 2001 +From: Xiao Liang +Date: Thu, 18 Oct 2018 21:50:33 +0800 +Subject: procinterrupts: check xen-dyn-event more flexible + +In current /proc/interrupts, the 'xen-dyn-event' was split to 'xen-dyn -event'. +It causes interrupts not balanced inside xen guest. + +Below result is without this patch: + 70: 29 0 0 0 xen-dyn -event vif0-q0-tx + 71: 120 0 0 0 xen-dyn -event vif0-q0-rx + 72: 586350 0 0 0 xen-dyn -event vif0-q1-tx + 73: 44 0 0 0 xen-dyn -event vif0-q1-rx + 74: 19 0 0 0 xen-dyn -event vif0-q2-tx + 75: 179 0 0 0 xen-dyn -event vif0-q2-rx + 76: 67 0 0 0 xen-dyn -event vif0-q3-tx + 77: 299637 0 0 0 xen-dyn -event vif0-q3-rx + +Below result is with this patch: +[root@dhcp-3-194 ~]# grep vif0 /proc/interrupts + 70: 30 0 0 0 xen-dyn -event vif0-q0-tx + 71: 305 0 11 0 xen-dyn -event vif0-q0-rx + 72: 586354 0 27 0 xen-dyn -event vif0-q1-tx + 73: 49 7 5 0 xen-dyn -event vif0-q1-rx + 74: 27 0 0 509373 xen-dyn -event vif0-q2-tx + 75: 420 0 5 0 xen-dyn -event vif0-q2-rx + 76: 179 0 38 0 xen-dyn -event vif0-q3-tx + 77: 299803 281433 0 0 xen-dyn -event vif0-q3-rx + +Signed-off-by: Xiao Liang +--- + procinterrupts.c | 7 ++++++- + 1 file changed, 6 insertions(+), 1 deletion(-) + +diff --git a/procinterrupts.c b/procinterrupts.c +index eb84a1c..ca9533b 100644 +--- a/procinterrupts.c ++++ b/procinterrupts.c +@@ -167,6 +167,7 @@ GList* collect_full_irq_list() + + while (!feof(file)) { + int number; ++ int is_xen_dyn = 0; + struct irq_info *info; + char *c; + char savedline[1024]; +@@ -187,9 +188,13 @@ GList* collect_full_irq_list() + + strncpy(savedline, line, sizeof(savedline)); + irq_name = strtok_r(savedline, " ", &savedptr); ++ if (strstr(irq_name, "xen-dyn") != NULL) ++ is_xen_dyn = 1; + last_token = strtok_r(NULL, " ", &savedptr); + while ((p = strtok_r(NULL, " ", &savedptr))) { + irq_name = last_token; ++ if (strstr(irq_name, "xen-dyn") != NULL) ++ is_xen_dyn = 1; + last_token = p; + } + +@@ -209,7 +214,7 @@ GList* collect_full_irq_list() + info = calloc(sizeof(struct irq_info), 1); + if (info) { + info->irq = number; +- if (strstr(irq_name, "xen-dyn-event") != NULL) { ++ if (strstr(irq_name, "-event") != NULL && is_xen_dyn == 1) { + info->type = IRQ_TYPE_VIRT_EVENT; + info->class = IRQ_VIRT_EVENT; + } else { +-- +2.17.1 + diff --git a/SOURCES/irqbalance-1.5.0-Don-t-leak-socket-fd-on-connection-error.patch b/SOURCES/irqbalance-1.5.0-Don-t-leak-socket-fd-on-connection-error.patch new file mode 100644 index 0000000..225d47c --- /dev/null +++ b/SOURCES/irqbalance-1.5.0-Don-t-leak-socket-fd-on-connection-error.patch @@ -0,0 +1,65 @@ +From ce71f0cc2255aba072eabb2af26f6cb0e31f8189 Mon Sep 17 00:00:00 2001 +From: Kairui Song +Date: Tue, 6 Nov 2018 10:37:15 +0800 +Subject: Don't leak socket fd on connection error + +Signed-off-by: Kairui Song +--- + irqbalance.c | 7 ++++--- + ui/irqbalance-ui.c | 1 + + 2 files changed, 5 insertions(+), 3 deletions(-) + +diff --git a/irqbalance.c b/irqbalance.c +index c89c3c0..a77f842 100644 +--- a/irqbalance.c ++++ b/irqbalance.c +@@ -389,7 +389,7 @@ gboolean sock_handle(gint fd, GIOCondition condition, gpointer user_data __attri + } + if ((recv_size = recvmsg(sock, &msg, 0)) < 0) { + log(TO_ALL, LOG_WARNING, "Error while receiving data.\n"); +- goto out; ++ goto out_close; + } + cmsg = CMSG_FIRSTHDR(&msg); + if ((cmsg->cmsg_level == SOL_SOCKET) && +@@ -401,7 +401,7 @@ gboolean sock_handle(gint fd, GIOCondition condition, gpointer user_data __attri + } + if (!valid_user) { + log(TO_ALL, LOG_INFO, "Permission denied for user to connect to socket.\n"); +- goto out; ++ goto out_close; + } + + if (!strncmp(buff, "stats", strlen("stats"))) { +@@ -434,7 +434,7 @@ gboolean sock_handle(gint fd, GIOCondition condition, gpointer user_data __attri + need_rescan = 1; + if (!strncmp(irq_string, "NONE", strlen("NONE"))) { + free(irq_string); +- goto out; ++ goto out_close; + } + int irq = strtoul(irq_string, &end, 10); + do { +@@ -470,6 +470,7 @@ gboolean sock_handle(gint fd, GIOCondition condition, gpointer user_data __attri + free(setup); + } + ++out_close: + close(sock); + } + +diff --git a/ui/irqbalance-ui.c b/ui/irqbalance-ui.c +index 99f2ca2..6d4c845 100644 +--- a/ui/irqbalance-ui.c ++++ b/ui/irqbalance-ui.c +@@ -62,6 +62,7 @@ int init_connection() + + if(connect(socket_fd, (struct sockaddr *)&addr, + sizeof(sa_family_t) + strlen(socket_name) + 1) < 0) { ++ close(socket_fd); + return 0; + } + +-- +2.17.1 + diff --git a/SOURCES/irqbalance.sysconfig b/SOURCES/irqbalance.sysconfig new file mode 100644 index 0000000..8ac7a29 --- /dev/null +++ b/SOURCES/irqbalance.sysconfig @@ -0,0 +1,28 @@ +# irqbalance is a daemon process that distributes interrupts across +# CPUS on SMP systems. The default is to rebalance once every 10 +# seconds. This is the environment file that is specified to systemd via the +# EnvironmentFile key in the service unit file (or via whatever method the init +# system you're using has. +# +# ONESHOT=yes +# after starting, wait for a minute, then look at the interrupt +# load and balance it once; after balancing exit and do not change +# it again. +#IRQBALANCE_ONESHOT= + +# +# IRQBALANCE_BANNED_CPUS +# 64 bit bitmask which allows you to indicate which cpu's should +# be skipped when reblancing irqs. Cpu numbers which have their +# corresponding bits set to one in this mask will not have any +# irq's assigned to them on rebalance +# +#IRQBALANCE_BANNED_CPUS= + +# +# IRQBALANCE_ARGS +# append any args here to the irqbalance daemon as documented in the man page +# +#IRQBALANCE_ARGS= + + diff --git a/SPECS/irqbalance.spec b/SPECS/irqbalance.spec new file mode 100644 index 0000000..d47417c --- /dev/null +++ b/SPECS/irqbalance.spec @@ -0,0 +1,373 @@ +Name: irqbalance +Version: 1.4.0 +Release: 2%{?dist} +Epoch: 2 +Summary: IRQ balancing daemon + +Group: System Environment/Base +License: GPLv2 +Url: https://github.com/Irqbalance/irqbalance +Source0: https://github.com/Irqbalance/irqbalance/archive/irqbalance-%{version}.tar.gz +Source1: irqbalance.sysconfig + +BuildRequires: autoconf automake libtool libcap-ng +BuildRequires: glib2-devel pkgconf libcap-ng-devel +BuildRequires: systemd ncurses-devel +Requires: ncurses-libs +%ifnarch %{arm} +BuildRequires: numactl-devel +Requires: numactl-libs +%endif + +%define _hardened_build 1 + +ExcludeArch: s390 s390x + +Patch1: irqbalance-1.0.4-env-file-path.patch +Patch2: irqbalance-1.4.0-Fix-several-memleak-problems-found-by-covscan.patch +Patch3: irqbalance-1.4.0-Fix-an-possible-overflow-error.patch +Patch4: irqbalance-1.5.0-Don-t-leak-socket-fd-on-connection-error.patch +Patch5: irqbalance-1.4.0-procinterrupts-check-xen-dyn-event-more-flexible.patch + +%description +irqbalance is a daemon that evenly distributes IRQ load across +multiple CPUs for enhanced performance. + +%prep +%setup -q +%patch1 -p1 +%patch2 -p1 +%patch3 -p1 +%patch4 -p1 +%patch5 -p1 + +%build +./autogen.sh +%configure +CFLAGS="%{optflags}" make %{?_smp_mflags} + +%install +install -D -p -m 0755 %{name} %{buildroot}%{_sbindir}/%{name} +install -D -p -m 0644 ./misc/irqbalance.service %{buildroot}/%{_unitdir}/irqbalance.service +install -D -p -m 0644 %{SOURCE1} %{buildroot}%{_sysconfdir}/sysconfig/%{name} + +install -d %{buildroot}%{_mandir}/man1/ +install -p -m 0644 ./irqbalance.1 %{buildroot}%{_mandir}/man1/ + +%check +make check + +%files +%doc COPYING AUTHORS +%{_sbindir}/irqbalance +%{_unitdir}/irqbalance.service +%{_mandir}/man1/* +%config(noreplace) %{_sysconfdir}/sysconfig/irqbalance + +%post +%systemd_post irqbalance.service + +%preun +%systemd_preun irqbalance.service + +%postun +%systemd_postun_with_restart irqbalance.service + +%triggerun -- irqbalance < 2:0.56-3 +if /sbin/chkconfig --level 3 irqbalance ; then + /bin/systemctl enable irqbalance.service >/dev/null 2>&1 || : +fi +/sbin/chkconfig --del irqbalance >/dev/null 2>&1 || : + +%changelog +* Tue Nov 6 2018 Kairui Song 2:1.4.0-2 +- Fix several memleak problems found by covscan (bz1606969) +- Fix an possible overflow error (bz1606969) +- Don't leak socket fd on connection error (bz1606969) +- Check xen-dyn-event more flexible (bz1576164) + +* Mon May 14 2018 Neil Horman 2:1.4.0-1 +- Update to latest upstream release +- Add CI harness + +* Wed Feb 07 2018 Fedora Release Engineering - 2:1.3.0-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild + +* Tue Nov 14 2017 Neil Horman - 2:1.3.0-1 +- Update to latest upstream +* Wed Aug 02 2017 Fedora Release Engineering - 2:1.2.0-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild + +* Wed Jul 26 2017 Fedora Release Engineering - 2:1.2.0-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild + +* Fri Feb 10 2017 Fedora Release Engineering - 2:1.2.0-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild + +* Fri Jan 13 2017 Petr Holasek - 2:1.2.0-1 +- Rebased to v1.2.0 (bz1411554) + +* Thu Feb 04 2016 Fedora Release Engineering - 2:1.1.0-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild + +* Tue Dec 15 2015 Marcin Juszkiewicz - 2:1.1.0-2 +- Fixed AArch64 support. + +* Mon Dec 07 2015 Petr Holasek - 2:1.1.0-1 +- Rebased to v1.1.0 (bz1288674) + +* Wed Jun 17 2015 Fedora Release Engineering - 2:1.0.9-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild + +* Wed Mar 18 2015 Petr Holasek - 2:1.0.9-1 +- Rebased to v1.0.9 + +* Mon Jan 05 2015 Petr Holasek - 2:1.0.8-1 +- Rebased to v1.0.8 (bz1176898) + +* Sat Aug 16 2014 Fedora Release Engineering - 2:1.0.7-8 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild + +* Sat Jun 07 2014 Fedora Release Engineering - 2:1.0.7-7 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild + +* Sun May 11 2014 Peter Robinson 2:1.0.7-6 +- Switch ExclusiveArch to ExcludeArch as all but s390 is supported (also build for aarch64) + +* Thu May 08 2014 Petr Holasek - 2:1.0.7-5 +- Fixed memory leak (bz1095915) + +* Mon Feb 10 2014 Petr Holasek - 2:1.0.7-4 +- Missing autogen.sh call fixed + +* Mon Feb 10 2014 Petr Holasek - 2:1.0.7-3 +- Irqbalance website address was fixed + +* Fri Jan 10 2014 Petr Holasek - 2:1.0.7-2 +- ppc64le architecture support was enabled + +* Fri Oct 11 2013 Petr Holasek - 2:1.0.7-1 +- Rebased to version 1.0.7 + +* Sat Aug 03 2013 Fedora Release Engineering - 2:1.0.6-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild + +* Mon Jul 22 2013 Peter Robinson 2:1.0.6-3 +- Fix FTBFS on ARM, minor spec cleanups + +* Thu Jul 18 2013 Petr Holasek - 2:1.0.6-2 +- Hardened build + +* Mon Jun 10 2013 Petr Holasek - 2:1.0.6-1 +- Rebased to version 1.0.6 + +* Thu Feb 14 2013 Fedora Release Engineering - 2:1.0.5-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild + +* Mon Jan 21 2013 Petr Holasek - 2:1.0.5-1 +- Rebased to version 1.0.5 + +* Wed Aug 29 2012 Petr Holasek - 2:1.0.4-2 +- Env file path edited + +* Mon Aug 27 2012 Petr Holasek - 2:1.0.4-1 +- Rebased to version 1.0.4 + +* Wed Aug 22 2012 Petr Holasek - 2:1.0.3-5 +- Make irqbalance scan for new irqs when it detects new irqs (bz832815) +- Fixes SIGFPE crash for some banning configuration (bz849792) +- Fixes affinity_hint values processing (bz832815) +- Adds banirq and bansript options (bz837049) +- imake isn't needed for building any more (bz844359) +- Fixes clogging of syslog (bz837646) +- Added IRQBALANCE_ARGS variable for passing arguments via systemd(bz837048) +- Fixes --hint-policy=subset behavior (bz844381) + +* Sun Apr 15 2012 Petr Holasek - 2:1.0.3-4 +- Updated libnuma dependencies + +* Sun Feb 5 2012 Peter Robinson - 2:1.0.3-3 +- Build on ARM + +* Fri Jan 13 2012 Fedora Release Engineering - 2:1.0.3-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild + +* Fri Dec 02 2011 Neil Horman - 2:1.0.3-1 +- Updated to latest upstream release + +* Fri Nov 04 2011 Neil Horman - 2:1.0.2-1 +- Updated to latest upstream release + +* Wed Oct 26 2011 Fedora Release Engineering - 2:1.0-4 +- Rebuilt for glibc bug#747377 + +* Fri Oct 21 2011 Neil Horman - 2:1.0-3 +- Fix another crash on non-numa systems (bz 748070) + +* Mon Oct 17 2011 Neil Horman - 2:1.0-2 +- Fix crash for systems with no numa node support + +* Wed Oct 12 2011 Neil Horman - 2:1.0-1 +- Update irqbalance to latest upstream version + +* Fri May 6 2011 Bill Nottingham - 2:0.56-4 +- fix upgrade trigger + +* Fri Apr 8 2011 Peter Robinson - 2:0.56-3 +- Fix build in rawhide +- Add license file to rpm +- Cleanup spec file + +* Fri Mar 25 2011 Anton Arapov - 2:0.56-3 +- rework init in order to respect systemd. (bz 659622) + +* Wed Feb 09 2011 Fedora Release Engineering - 2:0.56-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild + +* Thu Jun 10 2010 Neil Horman - 2:0.56-1 +- Updated to latest upstream version + +* Wed Sep 09 2009 Neil Horman - 2:0.55-25 +- Fixing BuildRequires + +* Fri Sep 04 2009 Neil Horman - 2:0.55-24 +- Fixing irqbalance initscript (bz 521246) + +* Wed Sep 02 2009 Neil Horman - 2:0.55-23 +- Fixing BuildRequires for new config script + +* Tue Sep 01 2009 Neil Horman - 2:0.55-22 +- Fixing BuildRequires for new config script + +* Tue Sep 01 2009 Neil Horman - 2:0.55-21 +- Fixing BuildRequires for new config script + +* Tue Sep 01 2009 Neil Horman - 2:0.55-20 +- Fixing BuildRequires for new config script + +* Tue Sep 01 2009 Neil Horman - 2:0.55-19 +- Incorporate capng (bz 520699) + +* Fri Jul 31 2009 Peter Lemenkov - 2:0.55-18 +- Added back accidentaly forgotten imake + +* Fri Jul 31 2009 Peter Lemenkov - 2:0.55-17 +- Cosmetic fixes in spec-file +- Fixed rpmlint error in the init-script + +* Tue Jul 28 2009 Peter Lemenkov - 2:0.55-16 +- Many imrovements in spec-file + +* Fri Jul 24 2009 Fedora Release Engineering - 2:0.55-15 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild + +* Fri Mar 6 2009 Neil Horman +- Update spec file to build for i586 as per new build guidelines (bz 488849) + +* Wed Feb 25 2009 Fedora Release Engineering - 2:0.55-13 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild + +* Fri Dec 12 2008 Neil Norman - 2:0.55-12 +- Remove odd Netorking dependence from irqbalance (bz 476179) + +* Fri Aug 01 2008 Tom "spot" Callaway - 2:0.55-11 +- fix license tag + +* Wed Jun 04 2008 Neil Horman - 2:0.55-10 +- Update man page to explain why irqbalance exits on single cache (bz 449949) + +* Tue Mar 18 2008 Neil Horman - 2:0.55-9 +- Rediff pid-file patch to not remove initial parse_cpu_tree (bz 433270) + +* Tue Feb 19 2008 Fedora Release Engineering - 2:0.55-8 +- Autorebuild for GCC 4.3 + +* Thu Nov 01 2007 Neil Horman - 2:0.55-7 +- Update to properly hadndle pid files (bz 355231) + +* Thu Oct 04 2007 Neil Horman - 2:0.55-6 +- Fix irqbalance init script (bz 317219) + +* Fri Sep 28 2007 Neil Horman - 2:0.55-5 +- Install pie patch +- Grab Ulis cpuparse cleanup (bz 310821) + +* Wed Aug 29 2007 Fedora Release Engineering - 2:0.55-4 +- Rebuild for selinux ppc32 issue. + +* Thu Jul 05 2007 Neil Horman - 0.55.3 +- Fixing LSB requirements (bz 246959) + +* Tue Dec 12 2006 Neil Horman - 0.55-2 +- Fixing typos in spec file (bz 219301) + +* Tue Dec 12 2006 Neil Horman - 0.55-1 +- Updating to version 0.55 + +* Mon Dec 11 2006 Neil Horman - 0.54-1 +- Update irqbalance to new version released at www.irqbalance.org + +* Wed Nov 15 2006 Neil Horman - 1.13-8 +- Add ability to set default affinity mask (bz 211148) + +* Wed Nov 08 2006 Neil Horman - 1.13-7 +- fix up irqbalance to detect multicore (not ht) (bz 211183) + +* Thu Nov 02 2006 Neil Horman - 1.13-6 +- bumping up MAX_INTERRUPTS to support xen kernels +- rediffing patch1 and patch3 to remove fuzz + +* Tue Oct 17 2006 Neil Horman - 1.13-5 +- Making oneshot mean oneshot always (bz 211178) + +* Wed Sep 13 2006 Peter Jones - 1.13-4 +- Fix subsystem locking + +* Fri Aug 18 2006 Jesse Keating - 1.13-2 +- rebuilt with latest binutils to pick up 64K -z commonpagesize on ppc* + (#203001) +- Remove hack to use cvs checkin ID as release as it doesn't follow + packaging guidelines + +* Tue Aug 01 2006 Neil Horman +- Change license to GPL in version 0.13 + +* Sat Jul 29 2006 Dave Jones +- identify a bunch more classes. + +* Fri Jul 14 2006 Jesse Keating +- rebuild + +* Tue Jul 11 2006 Dave Jones +- Further lazy rebalancing tweaks. + +* Sun Feb 26 2006 Dave Jones +- Don't rebalance IRQs where no interrupts have occured. + +* Sun Feb 12 2006 Dave Jones +- Build for ppc[64] too. + +* Thu Feb 09 2006 Dave Jones +- rebuild. + +* Fri Dec 16 2005 Jesse Keating +- rebuilt for new gcj + +* Fri Dec 09 2005 Jesse Keating +- rebuilt + +* Tue Mar 1 2005 Dave Jones +- Rebuild with gcc4 + +* Tue Feb 8 2005 Dave Jones +- Build as pie, also -D_FORTIFY_SOURCE=2 + +* Tue Jan 11 2005 Dave Jones +- Add missing Obsoletes: kernel-utils. + +* Mon Jan 10 2005 Dave Jones +- Start irqbalance in runlevel 2 too. (#102064) + +* Sat Dec 18 2004 Dave Jones +- Initial packaging, based on kernel-utils. +