From owner-cvs-src@FreeBSD.ORG Wed Jun 21 16:24:08 2006 Return-Path: X-Original-To: cvs-src@FreeBSD.org Delivered-To: cvs-src@FreeBSD.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id C6C4F16A47D; Wed, 21 Jun 2006 16:24:08 +0000 (UTC) (envelope-from flz@FreeBSD.org) Received: from smtp4-g19.free.fr (smtp4-g19.free.fr [212.27.42.30]) by mx1.FreeBSD.org (Postfix) with ESMTP id 5643643D46; Wed, 21 Jun 2006 16:24:07 +0000 (GMT) (envelope-from flz@FreeBSD.org) Received: from smtp.xbsd.org (xbsd.org [82.233.2.192]) by smtp4-g19.free.fr (Postfix) with ESMTP id 9269154E69; Wed, 21 Jun 2006 18:24:06 +0200 (CEST) Received: from localhost (localhost.xbsd.org [127.0.0.1]) by smtp.xbsd.org (Postfix) with ESMTP id E7F61114B5; Wed, 21 Jun 2006 18:24:05 +0200 (CEST) Received: from smtp.xbsd.org ([127.0.0.1]) by localhost (srv1.xbsd.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 83275-08; Wed, 21 Jun 2006 18:23:52 +0200 (CEST) Received: from mayday.esat.net (mayday.esat.net [193.95.134.156]) by smtp.xbsd.org (Postfix) with ESMTP id A3A5B11438; Wed, 21 Jun 2006 18:23:51 +0200 (CEST) From: Florent Thoumie To: Yar Tikhiy In-Reply-To: <20060621122331.GI45947@comp.chem.msu.su> References: <200606210942.k5L9gtAi060504@repoman.freebsd.org> <1150883785.3467.4.camel@mayday.esat.net> <20060621105253.GE45947@comp.chem.msu.su> <1150887909.3467.18.camel@mayday.esat.net> <20060621113901.GG45947@comp.chem.msu.su> <1150890968.3467.39.camel@mayday.esat.net> <20060621122331.GI45947@comp.chem.msu.su> Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="=-6qm72DJR54IufmcWnBTj" Date: Wed, 21 Jun 2006 17:23:49 +0100 Message-Id: <1150907029.3467.49.camel@mayday.esat.net> Mime-Version: 1.0 X-Mailer: Evolution 2.6.2 FreeBSD GNOME Team Port X-Virus-Scanned: amavisd-new at xbsd.org Cc: cvs-src@FreeBSD.org, src-committers@FreeBSD.org, cvs-all@FreeBSD.org Subject: Re: cvs commit: src/etc rc.subr src/share/man/man8 rc.subr.8 X-BeenThere: cvs-src@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: CVS commit messages for the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 21 Jun 2006 16:24:09 -0000 --=-6qm72DJR54IufmcWnBTj Content-Type: text/plain Content-Transfer-Encoding: quoted-printable On Wed, 2006-06-21 at 16:23 +0400, Yar Tikhiy wrote: > On Wed, Jun 21, 2006 at 12:56:08PM +0100, Florent Thoumie wrote: > > On Wed, 2006-06-21 at 15:39 +0400, Yar Tikhiy wrote: > > > On Wed, Jun 21, 2006 at 12:05:09PM +0100, Florent Thoumie wrote: > > > > On Wed, 2006-06-21 at 14:52 +0400, Yar Tikhiy wrote: > > > > > On Wed, Jun 21, 2006 at 10:56:25AM +0100, Florent Thoumie wrote: > > > > > > On Wed, 2006-06-21 at 09:42 +0000, Yar Tikhiy wrote: > > > > > > > yar 2006-06-21 09:42:55 UTC > > > > > > >=20 > > > > > > > FreeBSD src repository > > > > > > >=20 > > > > > > > Modified files: > > > > > > > etc rc.subr=20 > > > > > > > share/man/man8 rc.subr.8=20 > > > > > > > Log: > > > > > > > Quite a number of rc.d scripts try to load kernel modules. = Many > > > > > > > of them do that conditionally depending on kldstat. The co= de is > > > > > > > duplicated all over, but bugs can be uniqie. > > > > > > > =20 > > > > > > > To make the things more consistent, introduce a new rc.subr= function, > > > > > > > load_kld, which takes care of loading a kernel module condi= tionally. > > > > > > > =20 > > > > > > > (Found this lying for a while in my p4 branch for various h= acks.) > > > > > >=20 > > > > > > I added such a function some weeks ago (far more simple though)= . Talking > > > > > > with pjd, I've backed it out to use the somewhat straight-forwa= rd method > > > > > > he used in rc.d/geli. > > > > >=20 > > > > > rc.d/geli doesn't use kldload directlty, so it certainly won't > > > > > benefit from the function I introduced. > > > >=20 > > > > Then I'm not sure what script would benefit from this function. Can= you > > > > point me to an example? > > >=20 > > > abi > > > archdep > > > atm1 > > > hcsecd > > > ipfilter > > > mdconfig > > > mdconfig2 > > > pf > > > pflog > > > pfsync > > > sdpd > > > syscons > > >=20 > > > They all do kldstat then kldload. Some of them do grep or egrep > > > on kldstat output. Some of them don't forget to check status from > > > kldload and emit a error message on failure. Besides, there are > > > scripts that forget to do kldstat in the first place, they just do > > > kldload. Now all this ado can become just a call to my function. > >=20 > > Removing all scripts using 'kldstat -q -m foo', we have: >=20 > Why should we omit them from our consideration? The scripts now > doing 'kldstat -q -m foo' can benefit from my function, too, because > they should do error checking and reporting, the error-handling > code being duplicated inconsistently: some of them warn on error, > others print a message on success and so on. The long line (or its > multi-line equivalent): >=20 > kldstat -q -m foo || kldload foo >/dev/null 2>&1 || echo "Damn! Failed t= o kldload foo :-(" >=20 > becomes just: >=20 > load_kld foo >=20 > Note that egrep is not used to process such a request in load_kld. >=20 > > $ grep kldstat * | grep -v -- "-q -m" | cut -d':' -f1 | sort -u > > abi > > archdep > > atm1 > > ipfilter > > syscons > >=20 > > archdep, atm1 and ipfilter could use this 'kldstat -q -m foo' method, s= o > > that's only two candidates. Most scripts calling kldload without kldsta= t > > first could use this method as well. > >=20 > > But ok, those are definitely scripts I do not read very often. > > > > > > You won't gain anything using grep instead of egrep since they're b= oth > > > > in /usr/bin. > > >=20 > > > Have I ever tried to? > >=20 > > I guessed that's what you meant saying "grep is used with -e only, one > > can avoid using it if egrep isn't available yet." What are you planning > > to do then? >=20 > I meant -e to my function, not to grep. That is, if one doesn't > specify -e to load_kld, it won't try to invoke egrep at all. (FWIW, > grep and egrep are links to the same binary. And grep -e is not > the same as grep -E ;-) >=20 > Without a "-e regex" option, load_kld will just do kldstat. Therefore, > load_kld won't break scripts that aren't broken yet by using grep > or egrep too early in the boot sequence. Makes sense. > BTW, grep can be emulated with /bin/expr if needed: >=20 > _grep() > { > while read _line; do > [ `expr "$_line" : ".*$1"` !=3D 0 ] && echo "$_line" > done > } >=20 > Ditto for "grep -q". I guess we can even just use shell pattern matching with 'case'. --=20 Florent Thoumie flz@FreeBSD.org FreeBSD Committer --=-6qm72DJR54IufmcWnBTj Content-Type: application/pgp-signature; name=signature.asc Content-Description: This is a digitally signed message part -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.3 (FreeBSD) iD8DBQBEmXKVMxEkbVFH3PQRAkTrAJ9IoMAnKjI+vKAYFcnsh1sDurChKgCffEMO W90DtYSG1g6FH6DXI3okXZk= =Z2Ru -----END PGP SIGNATURE----- --=-6qm72DJR54IufmcWnBTj--