With this patch, ovs-vswitchd now crashes with the following error during upgrades.
ovs-vswitchd: pthread_barrier_init failed (Invalid argument) ovs-vswitchd: fork child died before signaling startup (killed (Aborted), core dumped) Note that this happens when ovs-vswitchd is started with: other_config:flow-restore-wait=true (which is true for all package installations) Can you guys please take a look. On Wed, Apr 23, 2014 at 11:24 PM, Ethan Jackson <et...@nicira.com> wrote: > W00t, nice to see this in. > > Ethan > > On Wed, Apr 23, 2014 at 9:32 PM, Joe Stringer <joestrin...@nicira.com> wrote: >> Thanks, I tidied up the comments, added threadsafety annotations for xcache >> and pushed. >> >> >> On 24 April 2014 06:38, Ben Pfaff <b...@nicira.com> wrote: >>> >>> On Tue, Apr 22, 2014 at 04:54:24PM +1200, Joe Stringer wrote: >>> > From: Ethan Jackson <et...@nicira.com> >>> > >>> > Previously, we had a separate flow_dumper thread that fetched flows from >>> > the datapath to distribute to revalidator threads. This patch takes the >>> > logic for dumping and pushes it into the revalidator threads, resulting >>> > in simpler code with similar performance to the current code. >>> > >>> > One thread, the "leader", is responsible for beginning and ending each >>> > flow dump, maintaining the flow_limit, and checking whether the >>> > revalidator threads need to exit. All revalidator threads dump, >>> > revalidate, delete datapath flows and garbage collect ukeys. >>> > >>> > Co-authored-by: Joe Stringer <joestrin...@nicira.com> >>> > Signed-off-by: Joe Stringer <joestrin...@nicira.com> >>> >>> Here in the definition of struct udpif, I would mention that there are >>> n_revalidators member of 'ukeys'. Otherwise the casual reader might >>> guess that there was only one: >>> > + /* During the flow dump phase, revalidators insert into these with >>> > a random >>> > + * distribution. During the garbage collection phase, each >>> > revalidator >>> > + * takes care of garbage collecting one of these hmaps. */ >>> > + struct { >>> > + struct ovs_mutex mutex; /* Guards the following. */ >>> > + struct hmap hmap OVS_GUARDED; /* Datapath flow keys. */ >>> > + } *ukeys; >>> >>> In the definition of struct udpif_key, the synchronization of most of >>> the members is pretty clear, except for 'xcache'. >>> >>> Acked-by: Ben Pfaff <b...@nicira.com> >> >> >> >> _______________________________________________ >> dev mailing list >> dev@openvswitch.org >> http://openvswitch.org/mailman/listinfo/dev >> > _______________________________________________ > dev mailing list > dev@openvswitch.org > http://openvswitch.org/mailman/listinfo/dev _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev