Date: Fri, 21 May 2010 16:27:51 +0200 From: "Ivor Prebeg" <Ivor.Prebeg@fer.hr> To: "Ivor Prebeg" <iprebeg@freebsd.org>, "Perforce Change Reviews" <perforce@freebsd.org>, <zec@icir.org> Subject: RE: PERFORCE change 178588 for review Message-ID: <CBBB81512D1FE445823400465FCCFFF20373A2A6@sluga.fer.hr> References: <201005211405.o4LE5jrZ035935@repoman.freebsd.org>
next in thread | previous in thread | raw e-mail | index | archive | help
Ovak, stvar umre na lockanju vec unistenog mutexa. Nije mi jasno zasto, = jer se MROUTER_LOCK_DESTROY() zove tek na kraju CASE_MOD_UNLOAD, nigdje = prije :/=20 kad ubijem xorpove, ip_mrouter_done odradi sve kako treba za svaki vnet, = a prije nego ih ubijem, uopce ne mogu kldunloadat ip_mroute. Ivor -----Original Message----- From: Ivor Prebeg [mailto:iprebeg@freebsd.org] Sent: Fri 21-May-10 16:05 To: Perforce Change Reviews Subject: PERFORCE change 178588 for review =20 http://p4web.freebsd.org/@@178588?ac=3D10 Change 178588 by iprebeg@iprebeg_zeus on 2010/05/21 14:05:16 Removed ip_mrouter_reset Affected files ... .. //depot/projects/vimage/src/sys/netinet/ip_mroute.c#40 edit Differences ... =3D=3D=3D=3D //depot/projects/vimage/src/sys/netinet/ip_mroute.c#40 = (text+ko) =3D=3D=3D=3D @@ -605,23 +605,6 @@ } =20 static void -ip_mrouter_reset(void) -{ - - /* - V_pim_assert_enabled =3D 0; - V_mrt_api_config =3D 0; - - callout_init(&V_expire_upcalls_ch, CALLOUT_MPSAFE); - - V_bw_upcalls_n =3D 0; - bzero(V_bw_meter_timers, sizeof(V_bw_meter_timers)); - callout_init(&V_bw_upcalls_ch, CALLOUT_MPSAFE); - callout_init(&V_bw_meter_ch, CALLOUT_MPSAFE); - */ -} - -static void if_detached_event(void *arg __unused, struct ifnet *ifp) { vifi_t vifi; @@ -724,7 +707,9 @@ struct ifnet *ifp; struct ifreq ifr; =20 + printf ("V_mcast: before MROUTER LOCK\n"); MROUTER_LOCK(); + printf ("V_mcast: after MROUTER LOCK\n"); =20 if (V_ip_mrouter =3D=3D NULL) { MROUTER_UNLOCK(); @@ -739,7 +724,8 @@ V_mrt_api_config =3D 0; =20 VIF_LOCK(); - +=20 + printf ("V_mcast: after VIF LOCK, before numvifs loop\n"); /* * For each phyint in use, disable promiscuous reception of all IP * multicasts. @@ -759,12 +745,15 @@ bzero((caddr_t)V_viftable, sizeof(V_viftable)); V_numvifs =3D 0; V_pim_assert_enabled =3D 0; - + =20 + printf ("V_mcast: before VIF UNLOCK, after numvifs loop\n"); VIF_UNLOCK(); =20 + printf ("V_mcast: after VIF UNLOCK, before stopping callouts\n"); callout_stop(&V_expire_upcalls_ch); callout_stop(&V_bw_upcalls_ch); callout_stop(&V_bw_meter_ch); + printf ("V_mcast: after stopping callouts\n"); =20 MFC_LOCK(); =20 @@ -2831,18 +2820,15 @@ { =20 MALLOC(V_nexpire, u_char *, mfchashsize, M_MRTABLE, M_WAITOK|M_ZERO); - - /* from ip_mrouter_reset */ - V_pim_assert_enabled =3D 0; - V_mrt_api_config =3D 0; - - callout_init(&V_expire_upcalls_ch, CALLOUT_MPSAFE); - - V_bw_upcalls_n =3D 0; - bzero(V_bw_meter_timers, sizeof(V_bw_meter_timers)); - callout_init(&V_bw_upcalls_ch, CALLOUT_MPSAFE); - callout_init(&V_bw_meter_ch, CALLOUT_MPSAFE); - /* from ip_mrouter_reset */ + V_pim_assert_enabled =3D 0; + V_mrt_api_config =3D 0; +=09 + callout_init(&V_expire_upcalls_ch, CALLOUT_MPSAFE); +=09 + V_bw_upcalls_n =3D 0; + bzero(V_bw_meter_timers, sizeof(V_bw_meter_timers)); + callout_init(&V_bw_upcalls_ch, CALLOUT_MPSAFE); + callout_init(&V_bw_meter_ch, CALLOUT_MPSAFE); } =20 VNET_SYSINIT(vnet_mroute_init, SI_SUB_PSEUDO, SI_ORDER_MIDDLE, = vnet_mroute_init, @@ -2852,9 +2838,7 @@ vnet_mroute_uninit(const void *unused __unused) { =20 -#ifndef VIMAGE X_ip_mrouter_done(); -#endif FREE(V_nexpire, M_MRTABLE); V_nexpire =3D NULL; } @@ -2892,7 +2876,6 @@ pim_squelch_wholepkt =3D 0; TUNABLE_ULONG_FETCH("net.inet.pim.squelch_wholepkt", &pim_squelch_wholepkt); - ip_mrouter_reset(); =20 pim_encap_cookie =3D encap_attach_func(AF_INET, IPPROTO_PIM, pim_encapcheck, &in_pim_protosw, NULL);
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CBBB81512D1FE445823400465FCCFFF20373A2A6>