Hello community,

here is the log from the commit of package irqd for openSUSE:Factory checked in 
at 2014-08-06 11:42:38
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/irqd (Old)
 and      /work/SRC/openSUSE:Factory/.irqd.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "irqd"

Changes:
--------
--- /work/SRC/openSUSE:Factory/irqd/irqd.changes        2014-02-11 
11:58:48.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.irqd.new/irqd.changes   2014-08-06 
11:42:41.000000000 +0200
@@ -1,0 +2,7 @@
+Wed Aug  6 04:50:04 UTC 2014 - [email protected]
+
+- Update to new upstream release 0.7.2
+* Improve distribution of the "evenly" scheduler
+* cpu: fix handling of busy CPUs if not part of cpuset
+
+-------------------------------------------------------------------

Old:
----
  irqd-0.7.0.g41.tar.xz
  irqd.init

New:
----
  irqd-0.7.2.tar.xz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ irqd.spec ++++++
--- /var/tmp/diff_new_pack.HSTyOU/_old  2014-08-06 11:42:42.000000000 +0200
+++ /var/tmp/diff_new_pack.HSTyOU/_new  2014-08-06 11:42:42.000000000 +0200
@@ -17,15 +17,15 @@
 
 
 Name:           irqd
-Version:        0.7.0.g41
+Version:        0.7.2
 Release:        0
 Summary:        Multiqueue and RPS-aware IRQ affinity balancer
 License:        GPL-2.0
 Group:          System/Daemons
+Url:            http://github.com/vaesoo/irqd
 
 #Git-Clone:    git://github.com/vaesoo/irqd
 Source:         %name-%version.tar.xz
-Source2:        irqd.init
 Source3:        irqd.service
 BuildRoot:      %{_tmppath}/%{name}-%{version}-build
 BuildRequires:  autoconf
@@ -33,9 +33,7 @@
 BuildRequires:  bison
 BuildRequires:  flex
 BuildRequires:  libtool
-%if 0%{?suse_version} >= 1210
-BuildRequires:  systemd
-%endif
+BuildRequires:  systemd-rpm-macros
 BuildRequires:  xz
 BuildRequires:  pkgconfig(glib-2.0)
 BuildRequires:  pkgconfig(libnl-route-3.0) >= 3.2
@@ -49,12 +47,7 @@
 RPS is not available.
 
 %prep
-%if 0%{?__xz:1}
 %setup -qn %name
-%else
-tar -xf "%{S:0}" --use=xz;
-%setup -DTqn %name
-%endif
 
 %build
 if [ ! -e configure ]; then
@@ -66,45 +59,27 @@
 %install
 b="%buildroot";
 make install DESTDIR="$b";
-%if 0%{?rhel_version}
-mkdir -p "$b/%_initrddir";
-install -pm0755 "%{S:2}" "$b/%_initrddir/irqd";
-%endif
-%if 0%{?_unitdir:1}
-mkdir -p "$b/%_unitdir";
+mkdir -p "$b/%_unitdir" "$b/%_sbindir"
 install -pm0644 "%{S:3}" "$b/%_unitdir/irqd.service";
-%endif
+ln -s service "$b/%_sbindir/rcirqd"
 
-%if 0%{?_unitdir:1}
 %pre
 %service_add_pre irqd.service
-%endif
 
 %post
-%if 0%{?_unitdir:1}
 %service_add_post irqd.service
-%endif
-%restart_on_update irqd
 
-%if 0%{?_unitdir:1}
 %preun
 %service_del_preun irqd.service
-%endif
 
-%if 0%{?_unitdir:1}
 %postun
 %service_del_postun irqd.service
-%endif
 
 %files
 %defattr(-,root,root)
-%if 0%{?rhel_version}
-%_initrddir/irqd
-%endif
-%if 0%{?_unitdir:1}
-%_unitdir
-%endif
+%_unitdir/*
 %_sbindir/irqd
+%_sbindir/rcirqd
 %doc DESIGN README
 
 %changelog

++++++ irqd-0.7.0.g41.tar.xz -> irqd-0.7.2.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/irqd/configure.ac new/irqd/configure.ac
--- old/irqd/configure.ac       2012-11-29 17:20:16.000000000 +0100
+++ new/irqd/configure.ac       2014-08-06 06:49:56.000000000 +0200
@@ -1,4 +1,4 @@
-AC_INIT([irqd], [0.7.0])
+AC_INIT([irqd], [0.7.2])
 AC_PROG_INSTALL
 AM_INIT_AUTOMAKE([-Wall foreign])
 AC_PROG_CC
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/irqd/cpu.c new/irqd/cpu.c
--- old/irqd/cpu.c      2014-01-30 15:42:14.000000000 +0100
+++ new/irqd/cpu.c      2014-08-06 06:49:56.000000000 +0200
@@ -42,8 +42,8 @@
        const struct cpu_info *a = __a, *b = __b;
 
        if (b->ci_num_queues != a->ci_num_queues)
-               return b->ci_num_queues - a->ci_num_queues;
-       return b->ci_num - a->ci_num;
+               return a->ci_num_queues - b->ci_num_queues;
+       return a->ci_num - b->ci_num;
 }
 
 void
@@ -83,20 +83,21 @@
        log("%s", buf);
 }
 
-static struct cpu_info *
+static int
 add_queue(struct cpu_info *ci, struct if_queue_info *qi)
 {
        struct cpuset *set = ci->ci_cpuset;
 
+       ci->ci_num_queues++;
+
        set->cs_cpu_lru_list = g_slist_remove_link(set->cs_cpu_lru_list,
                set->cs_cpu_lru_list);
        set->cs_cpu_lru_list = g_slist_insert_sorted(set->cs_cpu_lru_list, ci,
                                                                                
                 cpu_cmp);
 
        ci->ci_queues = g_slist_append(ci->ci_queues, qi);
-       ci->ci_num_queues++;
 
-       return ci;
+       return 0;
 }
 
 struct cpu_info *
@@ -105,7 +106,9 @@
        struct cpu_info *ci = cpu_nth(cpu);
        struct if_queue_info *qi = if_queue(iface, queue);
 
-       return add_queue(ci, qi);
+       if (add_queue(ci, qi) < 0)
+               return NULL;
+       return ci;
 }
 
 /* assign queue to CPU, select most idle CPU from a cpuset */
@@ -116,8 +119,9 @@
        struct cpu_info *ci = set->cs_cpu_lru_list->data;
        struct if_queue_info *qi = if_queue(iface, queue);
 
-       BUG_ON(!ci);
-       return add_queue(ci, qi);
+       if (add_queue(ci, qi) < 0)
+               return NULL;
+       return ci;
 }
 
 int
@@ -129,10 +133,7 @@
        BUG_ON(!ci || ci->ci_num_queues == 0);
        ci->ci_queues = g_slist_remove(ci->ci_queues, qi);
        ci->ci_num_queues--;
-
-       set->cs_cpu_lru_list = g_slist_remove(set->cs_cpu_lru_list, ci);
-       set->cs_cpu_lru_list = g_slist_insert_sorted(set->cs_cpu_lru_list, ci,
-                                                                               
                 cpu_cmp);
+       set->cs_cpu_lru_list = g_slist_sort(set->cs_cpu_lru_list, cpu_cmp);
 
        return -1;
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/irqd/evenly.c new/irqd/evenly.c
--- old/irqd/evenly.c   2014-01-30 15:42:14.000000000 +0100
+++ new/irqd/evenly.c   2014-08-06 06:49:56.000000000 +0200
@@ -73,7 +73,6 @@
        const struct cpuset *cset = iface->if_cpuset;
        const struct if_queue_info *qi_first = if_queue(iface, 0);
        int cpu, first_used = cpu_bitmask_ffs(qi_first->qi_cpu_bitmask);
-       struct cpu_info *ci;
 
        BUG_ON(first_used < 0);
        cpu = cpuset_first_cpu(cset) + (first_used + queue) % cpuset_len(cset);
@@ -81,6 +80,25 @@
        return cpu_add_queue(cpu, iface, queue);
 }
 
+static void
+check_cpuset_lru(const struct cpuset *set)
+{
+       GSList *node;
+       int min = INT_MAX, max = 0;
+
+       for (node = set->cs_cpu_lru_list; node; node = node->next) {
+               const struct cpu_info *ci = node->data;
+
+               if (min > ci->ci_num_queues)
+                       min = ci->ci_num_queues;
+               if (max < ci->ci_num_queues)
+                       max = ci->ci_num_queues;
+       }
+
+       if (max - min > 1)
+               err("uneven distribution detected for '%s'", set->cs_name);
+}
+
 static int
 evenly_balance_queue(struct interface *iface, int queue)
 {
@@ -114,6 +132,8 @@
                }
        }
 
+       check_cpuset_lru(ci->ci_cpuset);
+
        return 0;
 }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/irqd/interface.c new/irqd/interface.c
--- old/irqd/interface.c        2014-01-30 15:42:14.000000000 +0100
+++ new/irqd/interface.c        2014-08-06 06:49:56.000000000 +0200
@@ -811,10 +811,9 @@
                        ci->ci_ss[OLD].time_squeeze, 
ci->ci_ss[NEW].time_squeeze);
 #endif /* 0 */
 
-               /* FIXME there may be CPUs not being part of a cpuset, they
-                  are unbalanced */
-               if (ci->ci_si_load > REBALANCE_SI_THRESH
-                       || CPU_SS_DIFF(ci, dropped) > 0)
+               /* Not all CPUs are part of a cpuset */
+               if ((ci->ci_si_load > REBALANCE_SI_THRESH
+                        || CPU_SS_DIFF(ci, dropped) > 0) && set != NULL)
                        cpuset_cpu_busy(set, ci);
        }
 

-- 
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to