Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 8 Aug 2010 18:17:28 +0200
From:      Attilio Rao <attilio@freebsd.org>
To:        Kostik Belousov <kostikbel@gmail.com>
Cc:        svn-src-projects@freebsd.org, src-committers@freebsd.org
Subject:   Re: svn commit: r211076 - projects/sv/sys/net
Message-ID:  <AANLkTi=w%2BYsFx34T--VgxNi95ROjXf%2BwP4j3JyumxeqR@mail.gmail.com>
In-Reply-To: <20100808161342.GF22295@deviant.kiev.zoral.com.ua>
References:  <201008081544.o78FihwX008357@svn.freebsd.org> <20100808161342.GF22295@deviant.kiev.zoral.com.ua>

next in thread | previous in thread | raw e-mail | index | archive | help
Yes, I'm still considering more options for it, like usage of fail(9)
as suggested by emaste.

Thanks,
Attilio


2010/8/8 Kostik Belousov <kostikbel@gmail.com>:
> On Sun, Aug 08, 2010 at 03:44:43PM +0000, Attilio Rao wrote:
>> Author: attilio
>> Date: Sun Aug =C2=A08 15:44:43 2010
>> New Revision: 211076
>> URL: http://svn.freebsd.org/changeset/base/211076
>>
>> Log:
>> =C2=A0 - Compile netdump.debug.force just when NETDUMP_DEBUG in included
>> =C2=A0 - Fix the usage of nd_force_crash which is not necessarilly to ha=
ve
>> =C2=A0 =C2=A0 a static storage
>>
>> Modified:
>> =C2=A0 projects/sv/sys/net/netdump_client.c
>>
>> Modified: projects/sv/sys/net/netdump_client.c
>> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D
>> --- projects/sv/sys/net/netdump_client.c =C2=A0 =C2=A0 =C2=A0Sun Aug =C2=
=A08 15:35:17 2010 =C2=A0 =C2=A0 =C2=A0 =C2=A0(r211075)
>> +++ projects/sv/sys/net/netdump_client.c =C2=A0 =C2=A0 =C2=A0Sun Aug =C2=
=A08 15:44:43 2010 =C2=A0 =C2=A0 =C2=A0 =C2=A0(r211076)
>> @@ -146,7 +146,9 @@ static int =C2=A0 =C2=A0 =C2=A0 =C2=A0 netdump_send_=
arp(void);
>> =C2=A0static void =C2=A0 netdump_trigger(void *arg, int howto);
>> =C2=A0static int =C2=A0 =C2=A0netdump_udp_output(struct mbuf *m);
>>
>> +#ifdef NETDUMP_DEBUG
>> =C2=A0static int =C2=A0 =C2=A0sysctl_force_crash(SYSCTL_HANDLER_ARGS);
>> +#endif
>> =C2=A0static int =C2=A0 =C2=A0sysctl_ip(SYSCTL_HANDLER_ARGS);
>> =C2=A0static int =C2=A0 =C2=A0sysctl_nic(SYSCTL_HANDLER_ARGS);
>>
>> @@ -166,7 +168,6 @@ static int nd_enable =3D 0; =C2=A0/* if we shou
>> =C2=A0static struct in_addr nd_server =3D {INADDR_ANY}; /* server addres=
s */
>> =C2=A0static struct in_addr nd_client =3D {INADDR_ANY}; /* client (our) =
address */
>> =C2=A0struct ifnet *nd_nic =3D NULL;
>> -static int nd_force_crash=3D0;
>> =C2=A0static int nd_polls=3D10000; /* Times to poll the NIC (0.5ms each =
poll) before
>> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 * assuming packetloss occurred: 5s by default */
>> =C2=A0static int nd_retries=3D10; /* Times to retransmit lost packets */
>> @@ -292,16 +293,18 @@ sysctl_nic(SYSCTL_HANDLER_ARGS)
>> =C2=A0 =C2=A0 =C2=A0 return error;
>> =C2=A0}
>>
>> +#ifdef NETDUMP_DEBUG
>> =C2=A0static int
>> =C2=A0sysctl_force_crash(SYSCTL_HANDLER_ARGS)
>> =C2=A0{
>> - =C2=A0 =C2=A0 int error;
>> + =C2=A0 =C2=A0 int error, force_crash;
>>
>> - =C2=A0 =C2=A0 error =3D sysctl_handle_int(oidp, &nd_force_crash, nd_fo=
rce_crash, req);
>> + =C2=A0 =C2=A0 force_crash =3D 0;
>> + =C2=A0 =C2=A0 error =3D sysctl_handle_int(oidp, &force_crash, force_cr=
ash, req);
>> =C2=A0 =C2=A0 =C2=A0 if (error || req->newptr =3D=3D NULL)
>> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 return error;
>>
>> - =C2=A0 =C2=A0 switch (nd_force_crash) {
>> + =C2=A0 =C2=A0 switch (force_crash) {
>> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 case 1:
>> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 printf("\nLivelocking system...\n");
>> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 for (;;);
>> @@ -329,6 +332,7 @@ sysctl_force_crash(SYSCTL_HANDLER_ARGS)
>> =C2=A0 =C2=A0 =C2=A0 }
>> =C2=A0 =C2=A0 =C2=A0 return 0;
>> =C2=A0}
>> +#endif
>>
>> =C2=A0SYSCTL_NODE(_net, OID_AUTO, dump, CTLFLAG_RW, 0, "netdump");
>> =C2=A0SYSCTL_PROC(_net_dump, OID_AUTO, server, CTLTYPE_STRING|CTLFLAG_RW=
, &nd_server,
>> @@ -337,8 +341,6 @@ SYSCTL_PROC(_net_dump, OID_AUTO, client,
>> =C2=A0 =C2=A0 =C2=A0 0, sysctl_ip, "A", "dump client");
>> =C2=A0SYSCTL_PROC(_net_dump, OID_AUTO, nic, CTLTYPE_STRING|CTLFLAG_RW, &=
nd_nic,
>> =C2=A0 =C2=A0 =C2=A0 IFNAMSIZ, sysctl_nic, "A", "NIC to dump on");
>> -SYSCTL_PROC(_net_dump, OID_AUTO, crash, CTLTYPE_INT|CTLFLAG_RW,
>> - =C2=A0 =C2=A0 0, sizeof(nd_force_crash), sysctl_force_crash, "I", "for=
ce crashing");
>> =C2=A0SYSCTL_INT(_net_dump, OID_AUTO, polls, CTLTYPE_INT|CTLFLAG_RW, &nd=
_polls, 0,
>> =C2=A0 =C2=A0 =C2=A0 "times to poll NIC per retry");
>> =C2=A0SYSCTL_INT(_net_dump, OID_AUTO, retries, CTLTYPE_INT|CTLFLAG_RW, &=
nd_retries, 0,
>> @@ -346,6 +348,10 @@ SYSCTL_INT(_net_dump, OID_AUTO, retries,
>> =C2=A0SYSCTL_INT(_net_dump, OID_AUTO, enable, CTLTYPE_INT|CTLFLAG_RW, &n=
d_enable,
>> =C2=A0 =C2=A0 =C2=A0 0, "enable network dump");
>> =C2=A0TUNABLE_INT("net.dump.enable", &nd_enable);
>> +#ifdef NETDUMP_DEBUG
>> +SYSCTL_PROC(_net_dump, OID_AUTO, crash, CTLTYPE_INT|CTLFLAG_RW, 0, size=
of(int),
>> + =C2=A0 =C2=A0sysctl_force_crash, "I", "force crashing");
>> +#endif
>
> We have debug.kdb.panic and friends. Might be, it makes sense to move
> net.dump.crash there ? debug. looks as a more logical choice for most
> sysctls too.
>



--=20
Peace can only be achieved by understanding - A. Einstein



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?AANLkTi=w%2BYsFx34T--VgxNi95ROjXf%2BwP4j3JyumxeqR>