From owner-svn-src-head@freebsd.org Sat Feb 17 06:57:24 2018 Return-Path: Delivered-To: svn-src-head@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 345D2F1435F; Sat, 17 Feb 2018 06:57:24 +0000 (UTC) (envelope-from imp@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 091996A980; Sat, 17 Feb 2018 06:57:21 +0000 (UTC) (envelope-from imp@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id D198F1943E; Sat, 17 Feb 2018 06:57:21 +0000 (UTC) (envelope-from imp@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w1H6vLQE027602; Sat, 17 Feb 2018 06:57:21 GMT (envelope-from imp@FreeBSD.org) Received: (from imp@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w1H6vLsG027601; Sat, 17 Feb 2018 06:57:21 GMT (envelope-from imp@FreeBSD.org) Message-Id: <201802170657.w1H6vLsG027601@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: imp set sender to imp@FreeBSD.org using -f From: Warner Losh Date: Sat, 17 Feb 2018 06:57:21 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r329441 - head/etc/rc.d X-SVN-Group: head X-SVN-Commit-Author: imp X-SVN-Commit-Paths: head/etc/rc.d X-SVN-Commit-Revision: 329441 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 17 Feb 2018 06:57:24 -0000 Author: imp Date: Sat Feb 17 06:57:21 2018 New Revision: 329441 URL: https://svnweb.freebsd.org/changeset/base/329441 Log: If we're passed an argument, then treat it as a single NOMATCH event to parse rather than searching for all events. Pass with new -p arg to devmatch. devmatch will use that one event rather than walking the entire tree. kldload will stop at the first failure. So we need to loop. Also, symbolic links may confused kldload into trying (and failing) to load multiple modules at once, so guard against that. Noticed by: hps (with similar patch) Sponsored by: Netflix Modified: head/etc/rc.d/devmatch Modified: head/etc/rc.d/devmatch ============================================================================== --- head/etc/rc.d/devmatch Sat Feb 17 06:57:17 2018 (r329440) +++ head/etc/rc.d/devmatch Sat Feb 17 06:57:21 2018 (r329441) @@ -37,17 +37,26 @@ desc="Use devmatch(8) to load kernel modules" start_cmd="${name}_start" stop_cmd=':' +[ -n "$2" ] && one_nomatch="-p '$2'" devmatch_start() { local x - x=$(devmatch | sort -u) + x=$(devmatch ${one_nomatch} | sort -u) [ -n "$x" ] || return + # While kldload can accept multiple modules + # on the line at once, we loop here in case + # there's some weird error with one of them. + # We also optimize against the false positives + # or drivers that have symbolic links that + # confuse devmatch by running it -n. echo "Autoloading modules: ${x}" - kldload ${x} + for m in ${x}; do + kldload -n ${m} + done } load_rc_config $name