From owner-freebsd-rc@FreeBSD.ORG Sun Aug 21 07:38:13 2011 Return-Path: Delivered-To: freebsd-rc@FreeBSD.ORG Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 025021065672 for ; Sun, 21 Aug 2011 07:38:13 +0000 (UTC) (envelope-from delphij@delphij.net) Received: from anubis.delphij.net (anubis.delphij.net [IPv6:2001:470:1:117::25]) by mx1.freebsd.org (Postfix) with ESMTP id DCFF28FC1B for ; Sun, 21 Aug 2011 07:38:12 +0000 (UTC) Received: from delta.delphij.net (c-76-102-50-245.hsd1.ca.comcast.net [76.102.50.245]) (using TLSv1 with cipher DHE-RSA-CAMELLIA256-SHA (256/256 bits)) (No client certificate requested) by anubis.delphij.net (Postfix) with ESMTPSA id B38A495A2; Sun, 21 Aug 2011 00:38:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=delphij.net; s=anubis; t=1313912292; bh=vfqEu6vghkL47n46P6rqOyqOUA8j38JaGTYF6QX47yQ=; h=Message-ID:Date:From:Reply-To:MIME-Version:To:Subject: Content-Type; b=kLoees9XEdR5lvLdjHafYV45rww6yZUj5BwSmOyuv237Rnyns2R9JKITBFf7B0KQI lWu1M4PDdD4qjrjEEXdn69D5y9RRHI/Gy/IH1zP9tEWDXVC96AzBqNou+NGMb5GDLt 6BaiSPDcGcIE2NEw75Hbj19Q00z4eI1dcWSI+cQg= Message-ID: <4E50B5E3.90702@delphij.net> Date: Sun, 21 Aug 2011 00:38:11 -0700 From: Xin LI Organization: The FreeBSD Project MIME-Version: 1.0 To: freebsd-rc@FreeBSD.ORG Content-Type: multipart/mixed; boundary="------------040006000003030000080701" Cc: Subject: [PATCH] Don't test if a service is enabled when it's required X-BeenThere: freebsd-rc@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: d@delphij.net List-Id: "Discussion related to /etc/rc.d design and implementation." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 21 Aug 2011 07:38:13 -0000 This is a multi-part message in MIME format. --------------040006000003030000080701 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Hi, Currently we do a checkyesno before doing forcestatus on a service that is required. However, this way if a dependent service is enabled but stopped, it would not be started. For instance: echo 'mountd_enable="YES"' >> /etc/rc.conf /etc/rc.d/mountd stop /etc/rc.d/nfsd stop /etc/rc.d/nfsd start Would not start mountd. I'd like to propose the attached patch since it doesn't seem to be necessary that we test the enable status before doing forcestatus. Comments? Cheers, -- Xin LI https://www.delphij.net/ FreeBSD - The Power to Serve! Live free or die --------------040006000003030000080701 Content-Type: text/plain; name="rc.d.diff" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="rc.d.diff" SW5kZXg6IGFtZAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBhbWQJKHJldmlzaW9uIDIyNTA1NSkKKysr IGFtZAkod29ya2luZyBjb3B5KQpAQCAtMjMsOCArMjMsNyBAQAogCQlmb3JjZV9kZXBlbmQg bmZzY2xpZW50IHx8IHJldHVybiAxCiAJZmkKIAotCWlmICEgY2hlY2t5ZXNubyBycGNiaW5k X2VuYWJsZSAgJiYgXAotCSAgICAhIC9ldGMvcmMuZC9ycGNiaW5kIGZvcmNlc3RhdHVzIDE+ L2Rldi9udWxsIDI+JjEKKwlpZiAhIC9ldGMvcmMuZC9ycGNiaW5kIGZvcmNlc3RhdHVzIDE+ L2Rldi9udWxsIDI+JjEKIAl0aGVuCiAJCWZvcmNlX2RlcGVuZCBycGNiaW5kIHx8IHJldHVy biAxCiAJZmkKSW5kZXg6IHlwc2V0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHlwc2V0CShyZXZpc2lv biAyMjUwNTUpCisrKyB5cHNldAkod29ya2luZyBjb3B5KQpAQCAtMjAsMTMgKzIwLDExIEBA CiB7CiAJbG9jYWwgX2RvbWFpbgogCi0JaWYgISBjaGVja3llc25vIHJwY2JpbmRfZW5hYmxl ICAmJiBcCi0JICAgICEgL2V0Yy9yYy5kL3JwY2JpbmQgZm9yY2VzdGF0dXMgMT4vZGV2L251 bGwgMj4mMQorCWlmICEgL2V0Yy9yYy5kL3JwY2JpbmQgZm9yY2VzdGF0dXMgMT4vZGV2L251 bGwgMj4mMQogCXRoZW4KIAkJZm9yY2VfZGVwZW5kIHJwY2JpbmQgfHwgcmV0dXJuIDEKIAlm aQotCWlmICEgY2hlY2t5ZXNubyBuaXNfY2xpZW50X2VuYWJsZSAmJiBcCi0JICAgICEgL2V0 Yy9yYy5kL3lwYmluZCBmb3JjZXN0YXR1cyAxPi9kZXYvbnVsbCAyPiYxCisJaWYgISAvZXRj L3JjLmQveXBiaW5kIGZvcmNlc3RhdHVzIDE+L2Rldi9udWxsIDI+JjEKIAl0aGVuCiAJCWZv cmNlX2RlcGVuZCB5cGJpbmQgfHwgcmV0dXJuIDEKIAlmaQpJbmRleDogbW91bnRkCj09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KLS0tIG1vdW50ZAkocmV2aXNpb24gMjI1MDU1KQorKysgbW91bnRkCSh3b3Jr aW5nIGNvcHkpCkBAIC0xOSw4ICsxOSw3IEBACiAKIG1vdW50ZF9wcmVjbWQoKQogewotCWlm ICEgY2hlY2t5ZXNubyBycGNiaW5kX2VuYWJsZSAgJiYgXAotCSAgICAhIC9ldGMvcmMuZC9y cGNiaW5kIGZvcmNlc3RhdHVzIDE+L2Rldi9udWxsIDI+JjEKKwlpZiAhIC9ldGMvcmMuZC9y cGNiaW5kIGZvcmNlc3RhdHVzIDE+L2Rldi9udWxsIDI+JjEKIAl0aGVuCiAJCWZvcmNlX2Rl cGVuZCBycGNiaW5kIHx8IHJldHVybiAxCiAJZmkKSW5kZXg6IHlwcGFzc3dkZAo9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09Ci0tLSB5cHBhc3N3ZGQJKHJldmlzaW9uIDIyNTA1NSkKKysrIHlwcGFzc3dkZAko d29ya2luZyBjb3B5KQpAQCAtMjIsMTMgKzIyLDExIEBACiB7CiAJbG9jYWwgX2RvbWFpbgog Ci0JaWYgISBjaGVja3llc25vIHJwY2JpbmRfZW5hYmxlICAmJiBcCi0JICAgICEgL2V0Yy9y Yy5kL3JwY2JpbmQgZm9yY2VzdGF0dXMgMT4vZGV2L251bGwgMj4mMQorCWlmICEgL2V0Yy9y Yy5kL3JwY2JpbmQgZm9yY2VzdGF0dXMgMT4vZGV2L251bGwgMj4mMQogCXRoZW4KIAkJZm9y Y2VfZGVwZW5kIHJwY2JpbmQgfHwgcmV0dXJuIDEKIAlmaQotCWlmICEgY2hlY2t5ZXNubyBu aXNfc2VydmVyX2VuYWJsZSAmJiBcCi0JICAgICEgL2V0Yy9yYy5kL3lwc2VydiBmb3JjZXN0 YXR1cyAxPi9kZXYvbnVsbCAyPiYxCisJaWYgISAvZXRjL3JjLmQveXBzZXJ2IGZvcmNlc3Rh dHVzIDE+L2Rldi9udWxsIDI+JjEKIAl0aGVuCiAJCWZvcmNlX2RlcGVuZCB5cHNlcnYgfHwg cmV0dXJuIDEKIAlmaQpJbmRleDoga2V5c2Vydgo9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBrZXlzZXJ2 CShyZXZpc2lvbiAyMjUwNTUpCisrKyBrZXlzZXJ2CSh3b3JraW5nIGNvcHkpCkBAIC0xOSw4 ICsxOSw3IEBACiAKIGtleXNlcnZfcHJlc3RhcnQoKQogewotCWlmICEgY2hlY2t5ZXNubyBy cGNiaW5kX2VuYWJsZSAgJiYgXAotCQkhIC9ldGMvcmMuZC9ycGNiaW5kIGZvcmNlc3RhdHVz IDE+L2Rldi9udWxsIDI+JjEKKwlpZiAhIC9ldGMvcmMuZC9ycGNiaW5kIGZvcmNlc3RhdHVz IDE+L2Rldi9udWxsIDI+JjEKIAl0aGVuCiAJCWZvcmNlX2RlcGVuZCBycGNiaW5kIHx8IHJl dHVybiAxCiAJZmkKSW5kZXg6IHlwdXBkYXRlZAo9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB5cHVwZGF0 ZWQJKHJldmlzaW9uIDIyNTA1NSkKKysrIHlwdXBkYXRlZAkod29ya2luZyBjb3B5KQpAQCAt MTgsMTMgKzE4LDExIEBACiB7CiAJbG9jYWwgX2RvbWFpbgogCi0JaWYgISBjaGVja3llc25v IHJwY2JpbmRfZW5hYmxlICAmJiBcCi0JICAgICEgL2V0Yy9yYy5kL3JwY2JpbmQgZm9yY2Vz dGF0dXMgMT4vZGV2L251bGwgMj4mMQorCWlmICEgL2V0Yy9yYy5kL3JwY2JpbmQgZm9yY2Vz dGF0dXMgMT4vZGV2L251bGwgMj4mMQogCXRoZW4KIAkJZm9yY2VfZGVwZW5kIHJwY2JpbmQg fHwgcmV0dXJuIDEKIAlmaQotCWlmICEgY2hlY2t5ZXNubyBuaXNfc2VydmVyX2VuYWJsZSAm JiBcCi0JICAgICEgL2V0Yy9yYy5kL3lwc2VydiBmb3JjZXN0YXR1cyAxPi9kZXYvbnVsbCAy PiYxCisJaWYgISAvZXRjL3JjLmQveXBzZXJ2IGZvcmNlc3RhdHVzIDE+L2Rldi9udWxsIDI+ JjEKIAl0aGVuCiAJCWZvcmNlX2RlcGVuZCB5cHNlcnYgfHwgcmV0dXJuIDEKIAlmaQpJbmRl eDogYXBtZAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09Ci0tLSBhcG1kCShyZXZpc2lvbiAyMjUwNTUpCisrKyBh cG1kCSh3b3JraW5nIGNvcHkpCkBAIC0xOSw5ICsxOSw4IEBACiB7CiAJY2FzZSBgJHtTWVND VExfTn0gaHcubWFjaGluZV9hcmNoYCBpbgogCWkzODYpCi0JCSMgRW5hYmxlIGFwbSBpZiBp dCBpcyBub3QgYWxyZWFkeSBlbmFibGVkCi0JCWlmICEgY2hlY2t5ZXNubyBhcG1fZW5hYmxl ICAmJiBcCi0JCSAgICAhIC9ldGMvcmMuZC9hcG0gZm9yY2VzdGF0dXMgMT4vZGV2L251bGwg Mj4mMQorCQkjIFN0YXJ0IGFwbSBpbiBjYXNlIGl0IHdhcyBub3QgYWxyZWFkeQorCQlpZiAh IC9ldGMvcmMuZC9hcG0gZm9yY2VzdGF0dXMgMT4vZGV2L251bGwgMj4mMQogCQl0aGVuCiAJ CQlmb3JjZV9kZXBlbmQgYXBtIHx8IHJldHVybiAxCiAJCWZpCkluZGV4OiBuZnNkCj09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KLS0tIG5mc2QJKHJldmlzaW9uIDIyNTA1NSkKKysrIG5mc2QJKHdvcmtpbmcg Y29weSkKQEAgLTQzLDggKzQzLDcgQEAKIAkJZmkKIAogCQlpZiBjaGVja3llc25vIG5mc3Y0 X3NlcnZlcl9lbmFibGU7IHRoZW4KLQkJCWlmICEgY2hlY2t5ZXNubyBuZnN1c2VyZF9lbmFi bGUgICYmIFwKLQkJCSAgICAhIC9ldGMvcmMuZC9uZnN1c2VyZCBmb3JjZXN0YXR1cyAxPi9k ZXYvbnVsbCAyPiYxCisJCQlpZiAhIC9ldGMvcmMuZC9uZnN1c2VyZCBmb3JjZXN0YXR1cyAx Pi9kZXYvbnVsbCAyPiYxCiAJCQl0aGVuCiAJCQkJaWYgISBmb3JjZV9kZXBlbmQgbmZzdXNl cmQ7IHRoZW4KIAkJCQkJZXJyIDEgIkNhbm5vdCBydW4gbmZzdXNlcmQiCkBAIC01NiwxNCAr NTUsMTIgQEAKIAkJZmkKIAlmaQogCi0JaWYgISBjaGVja3llc25vIHJwY2JpbmRfZW5hYmxl ICAmJiBcCi0JICAgICEgL2V0Yy9yYy5kL3JwY2JpbmQgZm9yY2VzdGF0dXMgMT4vZGV2L251 bGwgMj4mMQorCWlmICEgL2V0Yy9yYy5kL3JwY2JpbmQgZm9yY2VzdGF0dXMgMT4vZGV2L251 bGwgMj4mMQogCXRoZW4KIAkJZm9yY2VfZGVwZW5kIHJwY2JpbmQgfHwgcmV0dXJuIDEKIAlm aQogCi0JaWYgISBjaGVja3llc25vIG1vdW50ZF9lbmFibGUgICYmIFwKLQkgICAgISAvZXRj L3JjLmQvbW91bnRkIGZvcmNlc3RhdHVzIDE+L2Rldi9udWxsIDI+JjEKKwlpZiAhIC9ldGMv cmMuZC9tb3VudGQgZm9yY2VzdGF0dXMgMT4vZGV2L251bGwgMj4mMQogCXRoZW4KIAkJZm9y Y2VfZGVwZW5kIG1vdW50ZCB8fCByZXR1cm4gMQogCWZpCkluZGV4OiBsb2NrZAo9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09Ci0tLSBsb2NrZAkocmV2aXNpb24gMjI1MDU1KQorKysgbG9ja2QJKHdvcmtpbmcg Y29weSkKQEAgLTMwLDggKzMwLDcgQEAKIAl0aGVuCiAJCXJldD0xCiAJZmkKLQlpZiAhIGNo ZWNreWVzbm8gcnBjYmluZF9lbmFibGUgJiYgXAotCSAgICAhIC9ldGMvcmMuZC9ycGNiaW5k IGZvcmNlc3RhdHVzIDE+L2Rldi9udWxsIDI+JjEKKwlpZiAhIC9ldGMvcmMuZC9ycGNiaW5k IGZvcmNlc3RhdHVzIDE+L2Rldi9udWxsIDI+JjEKIAl0aGVuCiAJCWZvcmNlX2RlcGVuZCBy cGNiaW5kIHx8IHJldD0xCiAJZmkKSW5kZXg6IHN0YXRkCj09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHN0 YXRkCShyZXZpc2lvbiAyMjUwNTUpCisrKyBzdGF0ZAkod29ya2luZyBjb3B5KQpAQCAtMzAs OCArMzAsNyBAQAogCXRoZW4KIAkJcmV0PTEKIAlmaQotCWlmICEgY2hlY2t5ZXNubyBycGNi aW5kX2VuYWJsZSAmJiBcCi0JICAgICEgL2V0Yy9yYy5kL3JwY2JpbmQgZm9yY2VzdGF0dXMg MT4vZGV2L251bGwgMj4mMQorCWlmICEgL2V0Yy9yYy5kL3JwY2JpbmQgZm9yY2VzdGF0dXMg MT4vZGV2L251bGwgMj4mMQogCXRoZW4KIAkJZm9yY2VfZGVwZW5kIHJwY2JpbmQgfHwgcmV0 PTEKIAlmaQpJbmRleDogeXBiaW5kCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHlwYmluZAkocmV2aXNp b24gMjI1MDU1KQorKysgeXBiaW5kCSh3b3JraW5nIGNvcHkpCkBAIC0yMiw4ICsyMiw3IEBA CiB7CiAJbG9jYWwgX2RvbWFpbgogCi0JaWYgISBjaGVja3llc25vIHJwY2JpbmRfZW5hYmxl ICAmJiBcCi0JICAgICEgL2V0Yy9yYy5kL3JwY2JpbmQgZm9yY2VzdGF0dXMgMT4vZGV2L251 bGwgMj4mMQorCWlmICEgL2V0Yy9yYy5kL3JwY2JpbmQgZm9yY2VzdGF0dXMgMT4vZGV2L251 bGwgMj4mMQogCXRoZW4KIAkJZm9yY2VfZGVwZW5kIHJwY2JpbmQgfHwgcmV0dXJuIDEKIAlm aQpJbmRleDogeXBzZXJ2Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHlwc2VydgkocmV2aXNpb24gMjI1 MDU1KQorKysgeXBzZXJ2CSh3b3JraW5nIGNvcHkpCkBAIC0yMSw4ICsyMSw3IEBACiB7CiAJ bG9jYWwgX2RvbWFpbgogCi0JaWYgISBjaGVja3llc25vIHJwY2JpbmRfZW5hYmxlICAmJiBc Ci0JICAgICEgL2V0Yy9yYy5kL3JwY2JpbmQgZm9yY2VzdGF0dXMgMT4vZGV2L251bGwgMj4m MQorCWlmICEgL2V0Yy9yYy5kL3JwY2JpbmQgZm9yY2VzdGF0dXMgMT4vZGV2L251bGwgMj4m MQogCXRoZW4KIAkJZm9yY2VfZGVwZW5kIHJwY2JpbmQgfHwgcmV0dXJuIDEKIAlmaQpJbmRl eDogeXB4ZnJkCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHlweGZyZAkocmV2aXNpb24gMjI1MDU1KQor KysgeXB4ZnJkCSh3b3JraW5nIGNvcHkpCkBAIC0yMCwxMyArMjAsMTEgQEAKIHsKIAlsb2Nh bCBfZG9tYWluCiAKLQlpZiAhIGNoZWNreWVzbm8gcnBjYmluZF9lbmFibGUgICYmIFwKLQkg ICAgISAvZXRjL3JjLmQvcnBjYmluZCBmb3JjZXN0YXR1cyAxPi9kZXYvbnVsbCAyPiYxCisJ aWYgISAvZXRjL3JjLmQvcnBjYmluZCBmb3JjZXN0YXR1cyAxPi9kZXYvbnVsbCAyPiYxCiAJ dGhlbgogCQlmb3JjZV9kZXBlbmQgcnBjYmluZCB8fCByZXR1cm4gMQogCWZpCi0JaWYgISBj aGVja3llc25vIG5pc19zZXJ2ZXJfZW5hYmxlICYmIFwKLQkgICAgISAvZXRjL3JjLmQveXBz ZXJ2IGZvcmNlc3RhdHVzIDE+L2Rldi9udWxsIDI+JjEKKwlpZiAhIC9ldGMvcmMuZC95cHNl cnYgZm9yY2VzdGF0dXMgMT4vZGV2L251bGwgMj4mMQogCXRoZW4KIAkJZm9yY2VfZGVwZW5k IHlwc2VydiB8fCByZXR1cm4gMQogCWZpCg== --------------040006000003030000080701-- From owner-freebsd-rc@FreeBSD.ORG Sun Aug 21 08:14:10 2011 Return-Path: Delivered-To: freebsd-rc@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id D10931065675 for ; Sun, 21 Aug 2011 08:14:10 +0000 (UTC) (envelope-from hrs@FreeBSD.org) Received: from mail.allbsd.org (gatekeeper-int.allbsd.org [IPv6:2001:2f0:104:e002::2]) by mx1.freebsd.org (Postfix) with ESMTP id 25E758FC14 for ; Sun, 21 Aug 2011 08:14:09 +0000 (UTC) Received: from alph.allbsd.org ([IPv6:2001:2f0:104:e010:862b:2bff:febc:8956]) (authenticated bits=128) by mail.allbsd.org (8.14.4/8.14.4) with ESMTP id p7L8DmSl070386; Sun, 21 Aug 2011 17:13:58 +0900 (JST) (envelope-from hrs@FreeBSD.org) Received: from localhost (localhost [IPv6:::1]) (authenticated bits=0) by alph.allbsd.org (8.14.4/8.14.4) with ESMTP id p7L8DirO007175; Sun, 21 Aug 2011 17:13:47 +0900 (JST) (envelope-from hrs@FreeBSD.org) Date: Sun, 21 Aug 2011 17:13:07 +0900 (JST) Message-Id: <20110821.171307.577871683705351328.hrs@allbsd.org> To: d@delphij.net, delphij@delphij.net From: Hiroki Sato In-Reply-To: <4E50B5E3.90702@delphij.net> References: <4E50B5E3.90702@delphij.net> X-PGPkey-fingerprint: BDB3 443F A5DD B3D0 A530 FFD7 4F2C D3D8 2793 CF2D X-Mailer: Mew version 6.3 on Emacs 23.1 / Mule 6.0 (HANACHIRUSATO) Mime-Version: 1.0 Content-Type: Multipart/Signed; protocol="application/pgp-signature"; micalg=pgp-sha1; boundary="--Security_Multipart(Sun_Aug_21_17_13_07_2011_860)--" Content-Transfer-Encoding: 7bit X-Virus-Scanned: clamav-milter 0.97 at gatekeeper.allbsd.org X-Virus-Status: Clean X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.2.3 (mail.allbsd.org [IPv6:2001:2f0:104:e001::32]); Sun, 21 Aug 2011 17:13:58 +0900 (JST) X-Spam-Status: No, score=-104.6 required=13.0 tests=BAYES_00, CONTENT_TYPE_PRESENT, RDNS_NONE, SPF_SOFTFAIL, USER_IN_WHITELIST autolearn=no version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on gatekeeper.allbsd.org Cc: freebsd-rc@FreeBSD.org Subject: Re: [PATCH] Don't test if a service is enabled when it's required X-BeenThere: freebsd-rc@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "Discussion related to /etc/rc.d design and implementation." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 21 Aug 2011 08:14:10 -0000 ----Security_Multipart(Sun_Aug_21_17_13_07_2011_860)-- Content-Type: Text/Plain; charset=us-ascii Content-Transfer-Encoding: 7bit Xin LI wrote in <4E50B5E3.90702@delphij.net>: de> Hi, de> de> Currently we do a checkyesno before doing forcestatus on a service de> that is required. However, this way if a dependent service is enabled de> but stopped, it would not be started. de> de> For instance: de> de> echo 'mountd_enable="YES"' >> /etc/rc.conf de> /etc/rc.d/mountd stop de> /etc/rc.d/nfsd stop de> /etc/rc.d/nfsd start de> de> Would not start mountd. de> de> I'd like to propose the attached patch since it doesn't seem to be de> necessary that we test the enable status before doing forcestatus. de> de> Comments? Looks reasonable, but if we always use forcestatus just before force_depend(), I think adding the status check into force_depend() is simpler. The "force_depend rpcbind" will do forcestatus first, and then do forcestart if it is not running otherwise no-op, for example. -- Hiroki ----Security_Multipart(Sun_Aug_21_17_13_07_2011_860)-- Content-Type: application/pgp-signature Content-Transfer-Encoding: 7bit -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.11 (FreeBSD) iEYEABECAAYFAk5QvhMACgkQTyzT2CeTzy22/gCg2J6IuQPq9nQWj10HPAHddblw 52QAniquOIt17axDLbkLOsPLFkqDlLgm =JBT3 -----END PGP SIGNATURE----- ----Security_Multipart(Sun_Aug_21_17_13_07_2011_860)---- From owner-freebsd-rc@FreeBSD.ORG Sun Aug 21 11:28:55 2011 Return-Path: Delivered-To: freebsd-rc@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 33A6D106566B; Sun, 21 Aug 2011 11:28:55 +0000 (UTC) (envelope-from utisoft@gmail.com) Received: from mail-iy0-f172.google.com (mail-iy0-f172.google.com [209.85.210.172]) by mx1.freebsd.org (Postfix) with ESMTP id BCB978FC08; Sun, 21 Aug 2011 11:28:54 +0000 (UTC) Received: by iye7 with SMTP id 7so16546312iye.17 for ; Sun, 21 Aug 2011 04:28:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc:content-type:content-transfer-encoding; bh=EWcIFhx24Lj3NVOY56CJHujCk6UL2Fz4WI5KUqe71UA=; b=lAbheTjfW8wXvwCox4qtJpzWbiW4B275VH491O3z5QmLqTesjQSJZPaqXTr9cwzJfU LJWYWs9z1xOw4h2YKhcImsgmCOTZM/vVSlpafAxG5riN6bfa4d606U44zSixi/FnFtWi rsNZLJe3N3Wu9ycJqwCydiq7gkV9sRiywjzC8= Received: by 10.42.141.5 with SMTP id m5mr1473748icu.482.1313926134062; Sun, 21 Aug 2011 04:28:54 -0700 (PDT) MIME-Version: 1.0 Received: by 10.231.182.77 with HTTP; Sun, 21 Aug 2011 04:28:24 -0700 (PDT) In-Reply-To: <4E5041CA.3030108@FreeBSD.org> References: <4E5041CA.3030108@FreeBSD.org> From: Chris Rees Date: Sun, 21 Aug 2011 12:28:24 +0100 Message-ID: To: Doug Barton Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Cc: freebsd-rc@freebsd.org, Colin Percival Subject: Re: RC script for spiped (cperciva's latest invention) X-BeenThere: freebsd-rc@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "Discussion related to /etc/rc.d design and implementation." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 21 Aug 2011 11:28:55 -0000 On 21 August 2011 00:22, Doug Barton wrote: > On 08/20/2011 02:41, Chris Rees wrote: >> Hi all, >> >> Colin's submitted a port for his spiped program, with an rc script and >> I figure I should get it reviewed after my tweaks. >> >> Please refer to [1] for the provisional file, and the original PR is at = [2]. >> >> Thanks! >> >> Chris >> >> [1] http://www.bayofrum.net/~crees/patches/spiped-rc-script >> >> [2] http://www.freebsd.org/cgi/query-pr.cgi?pr=3Dports/159899 > > Attached is a patch that includes a couple of minor style issues, and > more importantly local'izing the variables used in the functions. > Otherwise it looks good to me. > > > hth, > > Doug Very much appreciated. Thanks! Chris --=20 Chris Rees =A0 =A0 =A0 =A0 =A0| FreeBSD Developer crees@FreeBSD.org =A0 | http://people.freebsd.org/~crees From owner-freebsd-rc@FreeBSD.ORG Sun Aug 21 13:20:46 2011 Return-Path: Delivered-To: freebsd-rc@FreeBSD.ORG Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id CF782106564A for ; Sun, 21 Aug 2011 13:20:46 +0000 (UTC) (envelope-from jilles@stack.nl) Received: from mx1.stack.nl (relay04.stack.nl [IPv6:2001:610:1108:5010::107]) by mx1.freebsd.org (Postfix) with ESMTP id 73A778FC17 for ; Sun, 21 Aug 2011 13:20:46 +0000 (UTC) Received: from turtle.stack.nl (turtle.stack.nl [IPv6:2001:610:1108:5010::132]) by mx1.stack.nl (Postfix) with ESMTP id A53011DD79C; Sun, 21 Aug 2011 15:20:45 +0200 (CEST) Received: by turtle.stack.nl (Postfix, from userid 1677) id 97F57174D1; Sun, 21 Aug 2011 15:20:45 +0200 (CEST) Date: Sun, 21 Aug 2011 15:20:45 +0200 From: Jilles Tjoelker To: d@delphij.net Message-ID: <20110821132045.GA3940@stack.nl> References: <4E50B5E3.90702@delphij.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4E50B5E3.90702@delphij.net> User-Agent: Mutt/1.5.21 (2010-09-15) Cc: freebsd-rc@FreeBSD.ORG Subject: Re: [PATCH] Don't test if a service is enabled when it's required X-BeenThere: freebsd-rc@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "Discussion related to /etc/rc.d design and implementation." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 21 Aug 2011 13:20:46 -0000 On Sun, Aug 21, 2011 at 12:38:11AM -0700, Xin LI wrote: > Currently we do a checkyesno before doing forcestatus on a service that > is required. However, this way if a dependent service is enabled but > stopped, it would not be started. > For instance: > echo 'mountd_enable="YES"' >> /etc/rc.conf > /etc/rc.d/mountd stop > /etc/rc.d/nfsd stop > /etc/rc.d/nfsd start > Would not start mountd. > I'd like to propose the attached patch since it doesn't seem to be > necessary that we test the enable status before doing forcestatus. > Comments? > Index: amd > =================================================================== > --- amd (revision 225055) > +++ amd (working copy) > @@ -23,8 +23,7 @@ > force_depend nfsclient || return 1 > fi > > - if ! checkyesno rpcbind_enable && \ > - ! /etc/rc.d/rpcbind forcestatus 1>/dev/null 2>&1 > + if ! /etc/rc.d/rpcbind forcestatus 1>/dev/null 2>&1 > then > force_depend rpcbind || return 1 > fi [snip] I don't like that this adds a bunch of unnecessary checks to the boot. If we are booting and the appropriate variable is set, the service is running and it is not necessary to check for a process (unless it failed, in which case there is little point in trying again). Calling checkyesno is much faster than checking status (which forks several times and reads ps output byte-by-byte with the read builtin). -- Jilles Tjoelker From owner-freebsd-rc@FreeBSD.ORG Sun Aug 21 13:54:16 2011 Return-Path: Delivered-To: freebsd-rc@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 88DEB106564A for ; Sun, 21 Aug 2011 13:54:16 +0000 (UTC) (envelope-from utisoft@gmail.com) Received: from mail-iy0-f172.google.com (mail-iy0-f172.google.com [209.85.210.172]) by mx1.freebsd.org (Postfix) with ESMTP id 54DDC8FC0A for ; Sun, 21 Aug 2011 13:54:16 +0000 (UTC) Received: by iye7 with SMTP id 7so16843342iye.17 for ; Sun, 21 Aug 2011 06:54:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; bh=xImnMDsVZPqAesnWMX3PLOWK3yqN5D+sKksbZZa2tgw=; b=PCb9ehDaSlTwPs4JWZhP0nwe3mVGMzQBIK1qE1KxzNY03QkY6Af8q1UrZ5vHtOORKF +OrhwE7qzkogXuo/UZCdzjD3NudvD8/MR3O2lnDCo6esjXyaNeENFW8fmdE/ZXLvq9zh rZ9P5QRuoXrq7RlGIfMmwoUOeYm796J3Is6rc= MIME-Version: 1.0 Received: by 10.42.79.206 with SMTP id s14mr1726333ick.348.1313934855764; Sun, 21 Aug 2011 06:54:15 -0700 (PDT) Received: by 10.231.182.77 with HTTP; Sun, 21 Aug 2011 06:54:15 -0700 (PDT) Received: by 10.231.182.77 with HTTP; Sun, 21 Aug 2011 06:54:15 -0700 (PDT) In-Reply-To: <20110821121509.GA27730@crane.none> References: <20110821121509.GA27730@crane.none> Date: Sun, 21 Aug 2011 14:54:15 +0100 Message-ID: From: Chris Rees To: kilian Content-Type: text/plain; charset=ISO-8859-1 X-Content-Filtered-By: Mailman/MimeDel 2.1.5 Cc: freebsd-hackers@freebsd.org, "freebsd-rc@freebsd.org" Subject: Re: Concurrent execution of rc-scripts with rcorder(8) X-BeenThere: freebsd-rc@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "Discussion related to /etc/rc.d design and implementation." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 21 Aug 2011 13:54:16 -0000 On 21 Aug 2011 13:39, "kilian" wrote: > > Hello, > > the idea to start services concurrently during boot isn't new and the > question why FreeBSD doesn't do it has popped up on the forum and > mailing list occasionally. So, why not give it a shot? > > rcorder(8) is normally used during boot to bring the rc-scripts into a > particular order, so when they are executed linearly by /etc/rc, all > constraints will be satisfied. I modified rcorder(8) to enable it to > run rc-scripts concurrently, while keeping track of the constraints as > rc-scripts start and finish. You can find the code at > https://github.com/kil/rcorder. As it works now, it will fall back to the > current mode of execution if anything goes wrong. So, if worst comes to > worst, booting takes a bit longer. > > If you feel brave, give it a try (Actually, not too much bravery is needed: > on all boots of my machine it worked perfectly every time.) > > I haven't done any measurements yet on how large the speedup is, but booting > feels a bit faster with it. Also, there probably is room for improvement. > Any ideas and feedback are very welcome! > > -kilian > I might suggest moving this to rc@. I'll try it later, looks interesting. Chris From owner-freebsd-rc@FreeBSD.ORG Sun Aug 21 22:39:37 2011 Return-Path: Delivered-To: freebsd-rc@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 300781065673 for ; Sun, 21 Aug 2011 22:39:37 +0000 (UTC) (envelope-from delphij@gmail.com) Received: from mail-yw0-f54.google.com (mail-yw0-f54.google.com [209.85.213.54]) by mx1.freebsd.org (Postfix) with ESMTP id E77058FC0C for ; Sun, 21 Aug 2011 22:39:36 +0000 (UTC) Received: by ywo32 with SMTP id 32so3560330ywo.13 for ; Sun, 21 Aug 2011 15:39:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; bh=R6q8CYhFMt+SUgIlbNL1jp/wDXwYAaYK75hw40Lz2Lc=; b=UImsbxxbz04Z/BQc0SVkrqNeibo8VwwrZzt7aRB0fTt4UZr5AA5+PO8Y4JHxQxGvQq jh8YYfg4T7eSbR2vX9379T1RhTmY4lh9cZPO+bo13ozAu5qkaLOkJxTgGrOW5gwUSrqE GPX9Hve+GpBWIJbaJE7Qtf9GA5x1oYEa9708s= MIME-Version: 1.0 Received: by 10.150.115.7 with SMTP id n7mr1698833ybc.221.1313964992081; Sun, 21 Aug 2011 15:16:32 -0700 (PDT) Received: by 10.150.136.11 with HTTP; Sun, 21 Aug 2011 15:16:32 -0700 (PDT) In-Reply-To: <20110821132045.GA3940@stack.nl> References: <4E50B5E3.90702@delphij.net> <20110821132045.GA3940@stack.nl> Date: Sun, 21 Aug 2011 15:16:32 -0700 Message-ID: From: Xin LI To: Jilles Tjoelker Content-Type: text/plain; charset=UTF-8 Cc: freebsd-rc@freebsd.org Subject: Re: [PATCH] Don't test if a service is enabled when it's required X-BeenThere: freebsd-rc@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "Discussion related to /etc/rc.d design and implementation." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 21 Aug 2011 22:39:37 -0000 On Sun, Aug 21, 2011 at 6:20 AM, Jilles Tjoelker wrote: [snip] > I don't like that this adds a bunch of unnecessary checks to the boot. > If we are booting and the appropriate variable is set, the service is > running and it is not necessary to check for a process (unless it > failed, in which case there is little point in trying again). Calling > checkyesno is much faster than checking status (which forks several > times and reads ps output byte-by-byte with the read builtin). That's good point but isn't the whole point of having forced dependencies to ease use? (For instance, if nfsd requires mountd to be started, why it starts mountd for user when _enabled="NO" and not when _enabled="YES"? I think starting anyway makes more sense...) I'll take a look at whether we can make the 'fast' path skip these checks, e.g. change these checks against _enabled to check rc_fast instead, do you think that would be more sensible solution for this? Cheers, -- Xin LI https://www.delphij.net/ FreeBSD - The Power to Serve! Live free or die From owner-freebsd-rc@FreeBSD.ORG Mon Aug 22 11:07:09 2011 Return-Path: Delivered-To: freebsd-rc@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id C02AC1065687 for ; Mon, 22 Aug 2011 11:07:09 +0000 (UTC) (envelope-from owner-bugmaster@FreeBSD.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2001:4f8:fff6::28]) by mx1.freebsd.org (Postfix) with ESMTP id ADAC28FC0A for ; Mon, 22 Aug 2011 11:07:09 +0000 (UTC) Received: from freefall.freebsd.org (localhost [127.0.0.1]) by freefall.freebsd.org (8.14.4/8.14.4) with ESMTP id p7MB79WI097245 for ; Mon, 22 Aug 2011 11:07:09 GMT (envelope-from owner-bugmaster@FreeBSD.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.14.4/8.14.4/Submit) id p7MB793J097243 for freebsd-rc@FreeBSD.org; Mon, 22 Aug 2011 11:07:09 GMT (envelope-from owner-bugmaster@FreeBSD.org) Date: Mon, 22 Aug 2011 11:07:09 GMT Message-Id: <201108221107.p7MB793J097243@freefall.freebsd.org> X-Authentication-Warning: freefall.freebsd.org: gnats set sender to owner-bugmaster@FreeBSD.org using -f From: FreeBSD bugmaster To: freebsd-rc@FreeBSD.org Cc: Subject: Current problem reports assigned to freebsd-rc@FreeBSD.org X-BeenThere: freebsd-rc@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "Discussion related to /etc/rc.d design and implementation." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 22 Aug 2011 11:07:09 -0000 Note: to view an individual PR, use: http://www.freebsd.org/cgi/query-pr.cgi?pr=(number). The following is a listing of current problems submitted by FreeBSD users. These represent problem reports covering all versions including experimental development code and obsolete releases. S Tracker Resp. Description -------------------------------------------------------------------------------- o conf/159846 rc [rc.conf] routing_stop_inet6() logic doesn't handle ip o conf/158557 rc [patch] /etc/rc.d/pf broken messages o conf/158127 rc [patch] remount_optional option in rc.initdiskless doe o conf/154554 rc [rc.d] [patch] statd and lockd fail to start o conf/153666 rc [rc.d][patch] mount filesystems from fstab over zfs da o conf/153200 rc post-boot /etc/rc.d/network_ipv6 start can miss neighb o conf/153123 rc [rc] [patch] add gsched rc file to automatically inser o conf/152784 rc services provide himself instead providing class of se o conf/150752 rc [rc.subr] [patch] be not needed to eval $_pidcmd on re o conf/150474 rc [patch] rc.d/accounting: Add ability to set location o o conf/149867 rc [PATCH] rc.d script to manage multiple FIBS (kern opti o conf/149831 rc [PATCH] add support to /etc/rc.d/jail for delegating Z o conf/148656 rc rc.firewall(8): {oip} and {iip} variables in rc.firewa o conf/147685 rc [rc.d] [patch] new feature for /etc/rc.d/fsck o conf/147444 rc [rc.d] [patch] /etc/rc.d/zfs stop not called on reboot o conf/146053 rc [patch] [request] shutdown of jails breaks inter-jail o conf/145445 rc [rc.d] error in /etc/rc.d/jail (bad logic) o conf/145440 rc [rc.d] [patch] add multiple fib support (setfib) in /e o conf/145399 rc [patch] rc.d scripts are unable to start/stop programs o conf/145344 rc [patch] Fix kitchen sink approach for rc.d scripts ins o conf/145009 rc [patch] rc.subr(8): rc.conf should allow mac label con o conf/144213 rc [rc.d] [patch] Disappearing zvols on reboot o conf/143637 rc [patch] ntpdate(8) support for ntp-servers supplied by o conf/143085 rc [patch] ftp-proxy(8) rc(8) with multiple instances o conf/143084 rc [jail] [patch]: fix rc.d/jail creating stray softlinks o conf/142973 rc [jail] [patch] Strange counter init value in jail rc o conf/142434 rc [patch] Add cpuset(1) support to rc.subr(8) o conf/142304 rc rc.conf(5): mdconfig and mdconfig2 rc.d scripts lack e o conf/141909 rc rc.subr(8): [patch] add rc.conf.d support to /usr/loca o conf/141907 rc [rc.d] Bug if mtu (maybe others?) is set as first argu o conf/141678 rc [patch] A minor enhancement to how /etc/rc.d/jail dete o conf/141275 rc [request] dhclient(8) rc script should print something o conf/140440 rc [patch] allow local command files in rc.{suspend,resum o conf/140261 rc [patch] Improve flexibility of mdconfig2 startup scrip o conf/138208 rc [rc.d] [patch] Making rc.firewall (workstation) IPv6 a o conf/137629 rc [rc.d] background_dhclient rc.conf option causing doub o conf/137470 rc [PATCH] /etc/rc.d/mdconfig2 : prioritize cli parameter o conf/137271 rc [rc.d] Cannot update /etc/host.conf when root filesyst s conf/136875 rc [request] _flags appending o conf/136624 rc [rc.d] sysctl variables for ipnat are not applied on b o conf/135338 rc [rc.d] pf startup order seems broken [regression] o conf/134918 rc [patch] rc.subr fails to detect perl daemons o conf/134660 rc [patch] rc-script for initializing ng_netflow+ng_ipfw o conf/134333 rc PPP configuration problem in the rc.d scripts in combi o conf/134006 rc [patch] Unload console screensaver kernel modules if s o conf/133890 rc [patch] sshd(8): add multiple profiles to the rc.d scr o conf/132483 rc rc.subr(8) [patch] setfib(1) support for rc.subr o conf/132476 rc [rc.d] [patch] add support setfib(1) in rc.d/routing o conf/128299 rc [patch] /etc/rc.d/geli does not mount partitions using o bin/126562 rc rcorder(8) fails to run unrelated startup scripts when o conf/126392 rc [patch] rc.conf ifconfig_xx keywords cannot be escaped p bin/126324 rc [patch] rc.d/tmp: Prevent mounting /tmp in second tim o conf/124747 rc [patch] savecore can't create dump from encrypted swap o conf/124248 rc [jail] [patch] add support for nice value for rc.d/jai o conf/123734 rc [patch] Chipset VIA CX700 requires extra initializatio o conf/123222 rc [patch] Add rtprio(1)/idprio(1) support to rc.subr(8). o conf/123119 rc [patch] rc script for ipfw does not handle IPv6 o conf/122968 rc [rc.d] /etc/rc.d/addswap: md swapfile multiplication a o conf/122477 rc [patch] /etc/rc.d/mdconfig and mdconfig2 are ignoring o conf/122170 rc [patch] [request] New feature: notify admin via page o o kern/121566 rc [nfs] [request] [patch] ethernet iface should be broug o conf/120431 rc [patch] devfs.rules are not initialized under certain o conf/120406 rc [devd] [patch] Handle newly attached pcm devices (eg. o conf/119874 rc [patch] "/etc/rc.d/pf reload" fails if there are macro o conf/119076 rc [patch] [rc.d] /etc/rc.d/netif tries to remove alias a o bin/118325 rc [patch] [request] new periodic script to test statuses o conf/118255 rc savecore never finding kernel core dumps (rcorder prob o conf/117935 rc [patch] ppp fails to start at boot because of missing o conf/113915 rc [patch] ndis wireless driver fails to associate when i o conf/109980 rc /etc/rc.d/netif restart doesn't destroy cloned_interfa o conf/109562 rc [rc.d] [patch] [request] Make rc.d/devfs usable from c o conf/109272 rc [request] increase default rc shutdown timeout o conf/108589 rc rtsol(8) fails due to default ipfw rules o conf/106009 rc [ppp] [patch] [request] Fix pppoed startup script to p o conf/105689 rc [ppp] [request] syslogd starts too late at boot o conf/105568 rc [patch] [request] Add more flexibility to rc.conf, to o conf/105145 rc [ppp] [patch] [request] add redial function to rc.d/pp o conf/104549 rc [patch] rc.d/nfsd needs special _find_processes functi o conf/102700 rc [geli] [patch] Add encrypted /tmp support to GELI/GBDE o conf/99721 rc [patch] /etc/rc.initdiskless problem copy dotfile in s o conf/99444 rc [patch] Enhancement: rc.subr could easily support star o conf/96343 rc [patch] rc.d order change to start inet6 before pf o conf/93815 rc [patch] Adds in the ability to save ipfw rules to rc.d o conf/92523 rc [patch] allow rc scripts to kill process after a timeo o conf/89870 rc [patch] [request] make netif verbose rc.conf toggle o conf/89061 rc [patch] IPv6 6to4 auto-configuration enhancement o conf/88913 rc [patch] wrapper support for rc.subr o conf/85819 rc [patch] script allowing multiuser mode in spite of fsc o kern/81006 rc ipnat not working with tunnel interfaces on startup o conf/77663 rc Suggestion: add /etc/rc.d/addnetswap after addcritremo o conf/73677 rc [patch] add support for powernow states to power_profi o conf/58939 rc [patch] dumb little hack for /etc/rc.firewall{,6} o conf/56934 rc [patch] rc.firewall rules for natd expect an interface o conf/45226 rc [patch] Fix for rc.network, ppp-user annoyance o conf/44170 rc [patch] Add ability to run multiple pppoed(8) on start 95 problems total. From owner-freebsd-rc@FreeBSD.ORG Tue Aug 23 19:39:31 2011 Return-Path: Delivered-To: freebsd-rc@hub.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 09F57106566C; Tue, 23 Aug 2011 19:39:31 +0000 (UTC) (envelope-from delphij@FreeBSD.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2001:4f8:fff6::28]) by mx1.freebsd.org (Postfix) with ESMTP id D62968FC12; Tue, 23 Aug 2011 19:39:30 +0000 (UTC) Received: from freefall.freebsd.org (localhost [127.0.0.1]) by freefall.freebsd.org (8.14.4/8.14.4) with ESMTP id p7NJdUcu082046; Tue, 23 Aug 2011 19:39:30 GMT (envelope-from delphij@freefall.freebsd.org) Received: (from delphij@localhost) by freefall.freebsd.org (8.14.4/8.14.4/Submit) id p7NJdUoj082042; Tue, 23 Aug 2011 19:39:30 GMT (envelope-from delphij) Date: Tue, 23 Aug 2011 19:39:30 GMT Message-Id: <201108231939.p7NJdUoj082042@freefall.freebsd.org> To: delphij@FreeBSD.org, freebsd-rc@FreeBSD.org, delphij@FreeBSD.org From: delphij@FreeBSD.org Cc: Subject: Re: conf/145344: [patch] Fix kitchen sink approach for rc.d scripts installation X-BeenThere: freebsd-rc@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "Discussion related to /etc/rc.d design and implementation." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 23 Aug 2011 19:39:31 -0000 Synopsis: [patch] Fix kitchen sink approach for rc.d scripts installation Responsible-Changed-From-To: freebsd-rc->delphij Responsible-Changed-By: delphij Responsible-Changed-When: Tue Aug 23 19:39:21 UTC 2011 Responsible-Changed-Why: Take. http://www.freebsd.org/cgi/query-pr.cgi?pr=145344 From owner-freebsd-rc@FreeBSD.ORG Tue Aug 23 20:09:02 2011 Return-Path: Delivered-To: freebsd-rc@FreeBSD.org Received: from mx2.freebsd.org (mx2.freebsd.org [IPv6:2001:4f8:fff6::35]) by hub.freebsd.org (Postfix) with ESMTP id 0EFF11065670; Tue, 23 Aug 2011 20:09:02 +0000 (UTC) (envelope-from dougb@FreeBSD.org) Received: from 172-17-198-245.globalsuite.net (hub.freebsd.org [IPv6:2001:4f8:fff6::36]) by mx2.freebsd.org (Postfix) with ESMTP id D966F157833; Tue, 23 Aug 2011 20:09:01 +0000 (UTC) Message-ID: <4E5408DD.1040508@FreeBSD.org> Date: Tue, 23 Aug 2011 13:09:01 -0700 From: Doug Barton Organization: http://SupersetSolutions.com/ User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:6.0) Gecko/20110819 Thunderbird/6.0 MIME-Version: 1.0 To: delphij@FreeBSD.org References: <201108231939.p7NJdUoj082042@freefall.freebsd.org> In-Reply-To: <201108231939.p7NJdUoj082042@freefall.freebsd.org> X-Enigmail-Version: undefined OpenPGP: id=1A1ABC84 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Cc: freebsd-rc@FreeBSD.org Subject: Re: conf/145344: [patch] Fix kitchen sink approach for rc.d scripts installation X-BeenThere: freebsd-rc@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "Discussion related to /etc/rc.d design and implementation." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 23 Aug 2011 20:09:02 -0000 On 08/23/2011 12:39, delphij@FreeBSD.org wrote: > Synopsis: [patch] Fix kitchen sink approach for rc.d scripts installation > > Responsible-Changed-From-To: freebsd-rc->delphij > Responsible-Changed-By: delphij > Responsible-Changed-When: Tue Aug 23 19:39:21 UTC 2011 > Responsible-Changed-Why: > Take. Thanks for taking this on, just one request ... please ask here for pre-commit review before moving forward. :) I think this is a good project, it just makes me nervous. Doug -- Nothin' ever doesn't change, but nothin' changes much. -- OK Go Breadth of IT experience, and depth of knowledge in the DNS. Yours for the right price. :) http://SupersetSolutions.com/ From owner-freebsd-rc@FreeBSD.ORG Tue Aug 23 20:17:51 2011 Return-Path: Delivered-To: freebsd-rc@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 26320106566B for ; Tue, 23 Aug 2011 20:17:51 +0000 (UTC) (envelope-from jilles@stack.nl) Received: from mx1.stack.nl (relay02.stack.nl [IPv6:2001:610:1108:5010::104]) by mx1.freebsd.org (Postfix) with ESMTP id BCA338FC17 for ; Tue, 23 Aug 2011 20:17:50 +0000 (UTC) Received: from turtle.stack.nl (turtle.stack.nl [IPv6:2001:610:1108:5010::132]) by mx1.stack.nl (Postfix) with ESMTP id 05B0835932F; Tue, 23 Aug 2011 22:17:49 +0200 (CEST) Received: by turtle.stack.nl (Postfix, from userid 1677) id E7006173E1; Tue, 23 Aug 2011 22:17:48 +0200 (CEST) Date: Tue, 23 Aug 2011 22:17:48 +0200 From: Jilles Tjoelker To: Xin LI Message-ID: <20110823201748.GA70915@stack.nl> References: <4E50B5E3.90702@delphij.net> <20110821132045.GA3940@stack.nl> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.21 (2010-09-15) Cc: freebsd-rc@freebsd.org Subject: Re: [PATCH] Don't test if a service is enabled when it's required X-BeenThere: freebsd-rc@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "Discussion related to /etc/rc.d design and implementation." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 23 Aug 2011 20:17:51 -0000 On Sun, Aug 21, 2011 at 03:16:32PM -0700, Xin LI wrote: > On Sun, Aug 21, 2011 at 6:20 AM, Jilles Tjoelker wrote: > [snip] > > I don't like that this adds a bunch of unnecessary checks to the boot. > > If we are booting and the appropriate variable is set, the service is > > running and it is not necessary to check for a process (unless it > > failed, in which case there is little point in trying again). Calling > > checkyesno is much faster than checking status (which forks several > > times and reads ps output byte-by-byte with the read builtin). > That's good point but isn't the whole point of having forced > dependencies to ease use? (For instance, if nfsd requires mountd to > be started, why it starts mountd for user when _enabled="NO" and not > when _enabled="YES"? I think starting anyway makes more sense...) > I'll take a look at whether we can make the 'fast' path skip these > checks, e.g. change these checks against _enabled to check rc_fast > instead, do you think that would be more sensible solution for this? What could work is if { [ -z "$rc_fast" ] || ! checkyesno rpcbind_enable; } && ! /etc/rc.d/rpcbind forcestatus 1>/dev/null 2>&1 then force_depend rpcbind || return 1 fi This means: * If rc_fast is empty, check for a process. * If rc_fast is empty and the rc.conf variable is not set, check for a process (a check is required, since a previous script may have started the service already due to a similar check). * If rc_fast is empty and the rc.conf variable is set, do not check for a process and do not run force_depend. This looks complicated enough that it would be beneficial to move it into (a variant of) force_depend. -- Jilles Tjoelker From owner-freebsd-rc@FreeBSD.ORG Tue Aug 23 20:40:35 2011 Return-Path: Delivered-To: freebsd-rc@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 91A6C1065673 for ; Tue, 23 Aug 2011 20:40:35 +0000 (UTC) (envelope-from kklimek@uos.de) Received: from smtp-auth.serv.Uni-Osnabrueck.DE (vm135.rz.uni-osnabrueck.de [131.173.16.10]) by mx1.freebsd.org (Postfix) with ESMTP id 027568FC12 for ; Tue, 23 Aug 2011 20:40:34 +0000 (UTC) Received: from localhost (dslb-088-071-200-036.pools.arcor-ip.net [88.71.200.36]) (authenticated bits=0) by smtp-auth.serv.Uni-Osnabrueck.DE (8.13.8/8.13.8) with ESMTP id p7NKJaAZ025657 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Tue, 23 Aug 2011 22:19:37 +0200 Date: Tue, 23 Aug 2011 22:18:59 +0200 From: kilian To: freebsd-hackers@freebsd.org, freebsd-rc@freebsd.org Message-ID: <20110823201859.GA78110@crane.none> References: <20110821121509.GA27730@crane.none> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.21 (2010-09-15) X-PMX-Version: 5.6.1.2065439, Antispam-Engine: 2.7.2.376379, Antispam-Data: 2011.8.23.200014 (Univ. Osnabrueck) X-PMX-Spam: Gauge=X, Probability=10%, Report= TO_IN_SUBJECT 0.5, FROM_NAME_ONE_WORD 0.05, BODYTEXTP_SIZE_3000_LESS 0, BODY_SIZE_1500_1599 0, BODY_SIZE_2000_LESS 0, BODY_SIZE_5000_LESS 0, BODY_SIZE_7000_LESS 0, RDNS_BROADBAND 0, RDNS_GENERIC_POOLED 0, RDNS_POOLED 0, RDNS_SUSP 0, RDNS_SUSP_GENERIC 0, RDNS_SUSP_SPECIFIC 0, __ANY_URI 0, __BOUNCE_CHALLENGE_SUBJ 0, __BOUNCE_NDR_SUBJ_EXEMPT 0, __CD 0, __CT 0, __CT_TEXT_PLAIN 0, __HAS_MSGID 0, __MIME_TEXT_ONLY 0, __MIME_VERSION 0, __RDNS_BROADBAND_4 0, __RDNS_POOLED_10 0, __SANE_MSGID 0, __TO_MALFORMED_2 0, __TO_NO_NAME 0, __URI_NO_PATH 0, __URI_NO_WWW 0, __USER_AGENT 0 X-PMX-Spam-Level: X Cc: Subject: Re: Concurrent execution of rc-scripts with rcorder(8) X-BeenThere: freebsd-rc@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "Discussion related to /etc/rc.d design and implementation." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 23 Aug 2011 20:40:35 -0000 On Sun, Aug 21, 2011 at 02:54:15PM +0100, Chris Rees wrote: > On 21 Aug 2011 13:39, "kilian" wrote: > > > > Hello, > > > > the idea to start services concurrently during boot isn't new and the > > question why FreeBSD doesn't do it has popped up on the forum and > > mailing list occasionally. So, why not give it a shot? > > > > rcorder(8) is normally used during boot to bring the rc-scripts into a > > particular order, so when they are executed linearly by /etc/rc, all > > constraints will be satisfied. I modified rcorder(8) to enable it to > > run rc-scripts concurrently, while keeping track of the constraints as > > rc-scripts start and finish. You can find the code at > > https://github.com/kil/rcorder. As it works now, it will fall back to the > > current mode of execution if anything goes wrong. So, if worst comes to > > worst, booting takes a bit longer. > > > > If you feel brave, give it a try (Actually, not too much bravery is > needed: > > on all boots of my machine it worked perfectly every time.) > > > > I haven't done any measurements yet on how large the speedup is, but > booting > > feels a bit faster with it. Also, there probably is room for improvement. > > Any ideas and feedback are very welcome! > > > > -kilian > > > > I might suggest moving this to rc@. I'll try it later, looks interesting. > > Chris For anyone who is interested, updated the README[1] with some numbers, detailing the influence on booting time. [1] https://github.com/kil/rcorder/blob/master/README#L30 From owner-freebsd-rc@FreeBSD.ORG Tue Aug 23 21:21:01 2011 Return-Path: Delivered-To: freebsd-rc@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id EF49F106564A; Tue, 23 Aug 2011 21:21:01 +0000 (UTC) (envelope-from delphij@delphij.net) Received: from anubis.delphij.net (anubis.delphij.net [IPv6:2001:470:1:117::25]) by mx1.freebsd.org (Postfix) with ESMTP id D061F8FC12; Tue, 23 Aug 2011 21:21:01 +0000 (UTC) Received: from delta.delphij.net (drawbridge.ixsystems.com [206.40.55.65]) (using TLSv1 with cipher DHE-RSA-CAMELLIA256-SHA (256/256 bits)) (No client certificate requested) by anubis.delphij.net (Postfix) with ESMTPSA id 21398943D; Tue, 23 Aug 2011 14:21:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=delphij.net; s=anubis; t=1314134461; bh=oySsriLuc2tgyPzSr8AyoqgtPEw2F1sT8B0X4iY0YE8=; h=Message-ID:Date:From:Reply-To:MIME-Version:To:CC:Subject: References:In-Reply-To:Content-Type; b=c2nI6k+bTkPRI0KFqy4S9eL4X/9DrHBlRhG44vWJInppXrxVZONpPoPCZT1P/nLuk +3afGD/zFRJbdxhe1vQo0DjpLXsNfeXyIXDqs/JjFR1C/f/K7kyuN1d6rVCu8bNXSF lOI71xn54Vh5O88tEwpr70KOI/Dc3cL+rgqQyhbc= Message-ID: <4E5419BB.4090901@delphij.net> Date: Tue, 23 Aug 2011 14:20:59 -0700 From: Xin LI Organization: The FreeBSD Project MIME-Version: 1.0 To: Doug Barton References: <201108231939.p7NJdUoj082042@freefall.freebsd.org> <4E5408DD.1040508@FreeBSD.org> In-Reply-To: <4E5408DD.1040508@FreeBSD.org> OpenPGP: id=3FCA37C1; url=http://www.delphij.net/delphij.asc Content-Type: multipart/mixed; boundary="------------060906080502010104080009" Cc: freebsd-rc@FreeBSD.org, delphij@FreeBSD.org Subject: Re: conf/145344: [patch] Fix kitchen sink approach for rc.d scripts installation X-BeenThere: freebsd-rc@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: d@delphij.net List-Id: "Discussion related to /etc/rc.d design and implementation." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 23 Aug 2011 21:21:02 -0000 This is a multi-part message in MIME format. --------------060906080502010104080009 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA256 On 08/23/11 13:09, Doug Barton wrote: > On 08/23/2011 12:39, delphij@FreeBSD.org wrote: >> Synopsis: [patch] Fix kitchen sink approach for rc.d scripts >> installation >> >> Responsible-Changed-From-To: freebsd-rc->delphij >> Responsible-Changed-By: delphij Responsible-Changed-When: Tue Aug >> 23 19:39:21 UTC 2011 Responsible-Changed-Why: Take. > > Thanks for taking this on, just one request ... please ask here > for pre-commit review before moving forward. :) I think this is a > good project, it just makes me nervous. Sure. I've actually redone the patch and here is a WIP snapshot (it's WIP and is not final, just what the patch would look like). Question: A few scripts that are optional but were hardcoded in other rc.d scripts. How should we handle with these cases? Do we want to 'edit' other scripts so they don't put REQUIRE with them? Cheers, - -- Xin LI https://www.delphij.net/ FreeBSD - The Power to Serve! Live free or die -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.18 (FreeBSD) iQEcBAEBCAAGBQJOVBm7AAoJEATO+BI/yjfBooAIANFqb/ExLjobxCgqhMweAO13 1NQR2wa2vjZVMvrVU8p2xwVcHFdgvxXtU1A5tMwJp5lo6uIbanJZlpninzj97GIU 4Ynhm0dW2D+nJZ/PwnXTbJkG6OTbNSihU+tsTZelEnUWu1EsnvhXAZCOSOR8XJcd 79hkjM9IGDTvZxoJFWqaysSIvJfh6ULx581HSHVLQnMwcCjy/W7f86p9Bq2MxDU+ BmD7uojdRZg5C70Qf8QHzex6Aw9UuN50AShUDurBuqsI4JgkEYtGIHDDkZ0mPCRA zYzgkgcKzol74RY9S+FGR1UcZsOznt/1q495w8TQlQjEoLuJFWams66A0nNxIu8= =0Bxo -----END PGP SIGNATURE----- --------------060906080502010104080009 Content-Type: text/plain; name="rc-optional.diff" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="rc-optional.diff" Index: etc/rc.d/Makefile =================================================================== --- etc/rc.d/Makefile (revision 225120) +++ etc/rc.d/Makefile (working copy) @@ -2,50 +2,194 @@ .include -FILES= DAEMON FILESYSTEMS LOGIN NETWORKING SERVERS \ - abi accounting addswap adjkerntz amd \ - apm apmd archdep atm1 atm2 atm3 auditd \ - bgfsck bluetooth bootparams bridge bsnmpd bthidd \ - ccd cleanvar cleartmp cron \ - ddb defaultroute devd devfs dhclient \ - dmesg dumpon \ - encswap \ - faith fsck ftp-proxy ftpd \ - gbde geli geli2 gptboot gssd \ - hastd hcsecd \ - hostapd hostid hostid_save hostname \ - inetd initrandom \ - ip6addrctl ipfilter ipfs ipfw ipmon \ - ipnat ipsec \ - jail \ - kadmind kerberos keyserv kld kldxref kpasswdd \ - ldconfig local localpkg lockd lpd \ - mixer motd mountcritlocal mountcritremote mountlate \ - mdconfig mdconfig2 mountd moused mroute6d mrouted msgs \ - named natd netif netoptions netwait \ - newsyslog nfsclient nfscbd nfsd \ - nfsuserd nisdomain nsswitch ntpd ntpdate \ - othermta \ - pf pflog pfsync \ - powerd power_profile ppp pppoed pwcheck \ - quota \ - random rarpd rctl resolv rfcomm_pppd_server root \ - route6d routed routing rpcbind rtadvd rtsold rwho \ - savecore sdpd securelevel sendmail \ - serial sppp statd static_arp stf swap1 \ - syscons sysctl syslogd \ - timed tmp \ - ugidfw \ - var virecover \ - watchdogd wpa_supplicant \ - ypbind yppasswdd ypserv \ - ypset ypupdated ypxfrd \ - zfs zvol +FILES= DAEMON FILESYSTEMS LOGIN NETWORKING SERVERS +FILES+= abi +FILES+= addswap +FILES+= adjkerntz +FILES+= archdep +FILES+= bgfsck +FILES+= bootparams +FILES+= bridge +FILES+= ccd +FILES+= cleanvar +FILES+= cleartmp +FILES+= cron +FILES+= ddb +FILES+= defaultroute +FILES+= devd +FILES+= devfs +FILES+= dhclient +FILES+= dmesg +FILES+= dumpon +FILES+= encswap +FILES+= faith +FILES+= fsck +FILES+= ftpd +FILES+= gbde +FILES+= geli +FILES+= geli2 +FILES+= gptboot +FILES+= gssd +FILES+= hastd +FILES+= hostid +FILES+= hostid_save +FILES+= hostname +FILES+= inetd +FILES+= initrandom +FILES+= ipsec +FILES+= kld +FILES+= kldxref +FILES+= ldconfig +FILES+= local +FILES+= localpkg +FILES+= lockd +FILES+= lpd +FILES+= mdconfig +FILES+= mdconfig2 +FILES+= mixer +FILES+= motd +FILES+= mountcritlocal +FILES+= mountcritremote +FILES+= mountd +FILES+= mountlate +FILES+= moused +FILES+= msgs +FILES+= netif +FILES+= netoptions +FILES+= netwait +FILES+= newsyslog +FILES+= nfscbd +FILES+= nfsclient +FILES+= nfsd +FILES+= nfsuserd +FILES+= nsswitch +FILES+= othermta +FILES+= power_profile +FILES+= powerd +FILES+= ppp +FILES+= pwcheck +FILES+= quota +FILES+= random +FILES+= rarpd +FILES+= rctl +FILES+= resolv +FILES+= root +FILES+= routing +FILES+= rpcbind +FILES+= savecore +FILES+= securelevel +FILES+= serial +FILES+= statd +FILES+= static_arp +FILES+= stf +FILES+= swap1 +FILES+= syscons +FILES+= sysctl +FILES+= syslogd +FILES+= timed +FILES+= tmp +FILES+= ugidfw +FILES+= var +FILES+= virecover +FILES+= watchdogd + +.if ${MK_ACCT} != "no" +FILES+= accounting +.endif + +.if ${MK_AMD} != "no" +FILES+= amd +.endif + +.if ${MK_APM} != "no" +FILES+= apm +FILES+= apmd +.endif + +.if ${MK_ATM} != "no" +FILES+= atm1 +FILES+= atm2 +FILES+= atm3 +.endif + +.if ${MK_AUDIT} != "no" +FILES+= auditd +.endif + +.if ${MK_BLUETOOTH} != "no" +FILES+= bluetooth +FILES+= bthidd +FILES+= hcsecd +FILES+= rfcomm_pppd_server +FILES+= sdpd +FILES+= ubthidhci +.endif + +.if ${MK_BSNMP} != "no" +FILES+= bsnmpd +.endif + +.if ${MK_INET6} != "no" +FILES+= mroute6d +FILES+= route6d +FILES+= rtadvd +FILES+= rtsold +.endif + +.if ${MK_INET6_SUPPORT} != "no" +FILES+= ip6addrctl +.endif + +.if ${MK_IPFILTER} != "no" +FILES+= ipfilter +FILES+= ipfs +FILES+= ipmon +FILES+= ipnat +.endif + +.if ${MK_IPFW} != "no" +FILES+= ipfw +FILES+= natd +.endif + .if ${MK_IPX} != "no" FILES+= ipxrouted .endif +.if ${MK_JAIL} != "no" +FILES+= jail +.endif + +.if ${MK_KERBEROS} != "no" +FILES+= kadmind +FILES+= kerberos +FILES+= kpasswdd +.endif + +.if ${MK_BIND_NAMED} != "no" +FILES+= named +.endif + +.if ${MK_NIS} != "no" +FILES+= nisdomain +FILES+= ypbind +FILES+= yppasswdd +FILES+= ypserv +FILES+= ypset +FILES+= ypupdated +FILES+= ypxfrd +.endif + +.if ${MK_NS_CACHING} != "no" +FILES+= nscd +.endif + +.if ${MK_NTP} != "no" +FILES+= ntpd +FILES+= ntpdate +.endif + .if ${MK_OFED} != "no" FILES+= opensm .endif @@ -54,14 +198,45 @@ FILES+= opensm FILES+= sshd .endif -.if ${MK_NS_CACHING} != "no" -FILES+= nscd +.if ${MK_OPENSSL} != "no" +FILES+= keyserv .endif -.if ${MK_BLUETOOTH} != "no" -FILES+= ubthidhci +.if ${MK_PF} != "no" +FILES+= ftp-proxy +FILES+= pf +FILES+= pflog +FILES+= pfsync .endif +.if ${MK_PPP} != "no" +FILES+= pppoed +FILES+= sppp +.endif + +.if ${MK_RCMDS} != "no" +FILES+= rwho +.endif + +.if ${MK_ROUTED} != "no" +FILES+= mrouted +FILES+= routed +.endif + +.if ${MK_SENDMAIL} != "no" +FILES+= sendmail +.endif + +.if ${MK_WIRELESS} != "no" +FILES+= hostapd +FILES+= wpa_supplicant +.endif + +.if ${MK_ZFS} != "no" +FILES+= zfs +FILES+= zvol +.endif + FILESDIR= /etc/rc.d FILESMODE= ${BINMODE} --------------060906080502010104080009-- From owner-freebsd-rc@FreeBSD.ORG Tue Aug 23 21:23:23 2011 Return-Path: Delivered-To: freebsd-rc@FreeBSD.ORG Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id D0658106566B for ; Tue, 23 Aug 2011 21:23:23 +0000 (UTC) (envelope-from delphij@delphij.net) Received: from anubis.delphij.net (anubis.delphij.net [IPv6:2001:470:1:117::25]) by mx1.freebsd.org (Postfix) with ESMTP id B2BDD8FC13 for ; Tue, 23 Aug 2011 21:23:23 +0000 (UTC) Received: from delta.delphij.net (drawbridge.ixsystems.com [206.40.55.65]) (using TLSv1 with cipher DHE-RSA-CAMELLIA256-SHA (256/256 bits)) (No client certificate requested) by anubis.delphij.net (Postfix) with ESMTPSA id 2304C9473; Tue, 23 Aug 2011 14:23:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=delphij.net; s=anubis; t=1314134603; bh=s/185whl8xY0I4A8wKwZcZarC4HND/GaPlnSYaYgZ1I=; h=Message-ID:Date:From:Reply-To:MIME-Version:To:CC:Subject: References:In-Reply-To:Content-Type; b=l5mDnsH8cG/nP9TlbEU4QeTxNZcf9n5n5zrf1JUBZ4FYhu1wKPHuLvrzUAky9W6aP 8OwRBsCIl3gtXWm4mInbHDfk+oGEwF82mboi4YWtHZXh17Q8mYoJcMVKafPM4VOQ12 6uGtFdp+CxSV6dURS3GARswswUZaD8tx04nJIMMM= Message-ID: <4E541A49.9050207@delphij.net> Date: Tue, 23 Aug 2011 14:23:21 -0700 From: Xin LI Organization: The FreeBSD Project MIME-Version: 1.0 To: Jilles Tjoelker References: <4E50B5E3.90702@delphij.net> <20110821132045.GA3940@stack.nl> In-Reply-To: <20110821132045.GA3940@stack.nl> OpenPGP: id=3FCA37C1; url=http://www.delphij.net/delphij.asc Content-Type: multipart/mixed; boundary="------------030003050005080606030507" Cc: freebsd-rc@FreeBSD.ORG, d@delphij.net Subject: Re: [PATCH] Don't test if a service is enabled when it's required X-BeenThere: freebsd-rc@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: d@delphij.net List-Id: "Discussion related to /etc/rc.d design and implementation." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 23 Aug 2011 21:23:23 -0000 This is a multi-part message in MIME format. --------------030003050005080606030507 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA256 Hi, Thanks for Jilles' comments. I've added a new procedure called fast_depend (poor name perhaps?) with a proposed changeset to all these rc.d scripts that uses force_depend. Comments? Cheers, - -- Xin LI https://www.delphij.net/ FreeBSD - The Power to Serve! Live free or die -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.18 (FreeBSD) iQEcBAEBCAAGBQJOVBpJAAoJEATO+BI/yjfBP0oIANOfSLNtqPhCL4QixTgDOknw UVlMdk1yqr9nYsyC21rQZoGIkKb2a9BplW0ZNbRYmwCZEGhG0JJE4Tm52rhISdqe 1ITd/T+eU1I9lQ37Weo6dEjywCX/1kVl7Hd7i6v0Mmuc3ZTIjwP8ZBKbZj/9P/0C Wd/slxaAzl8m/AOO4MknP4Vq5Dktz1wR8wWItP9fiKHKFFDqv/n7kXE+uAmfBRl7 0X/bUVILVRRTsX7dJIZINwMBNtxHUUlIU/HCu7/T2jLg+SsMW6Z0JaS2w7lenoPk XTZAqk18qPZjkT7L834SNBXnPy1iAEumM8kdOP/YZ7MZfgc8mGhRJ2CR6JrjelE= =9nGD -----END PGP SIGNATURE----- --------------030003050005080606030507 Content-Type: text/plain; name="rc-fastdepend.diff" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="rc-fastdepend.diff" Index: etc/rc.d/amd =================================================================== --- etc/rc.d/amd (revision 225122) +++ etc/rc.d/amd (working copy) @@ -19,16 +19,9 @@ amd_precmd() { - if ! checkyesno nfs_client_enable; then - force_depend nfsclient || return 1 - fi + fast_depend nfsclient nfs_client_enable || return 1 + fast_depend rpcbind || return 1 - if ! checkyesno rpcbind_enable && \ - ! /etc/rc.d/rpcbind forcestatus 1>/dev/null 2>&1 - then - force_depend rpcbind || return 1 - fi - case ${amd_map_program} in [Nn][Oo] | '') ;; Index: etc/rc.d/ypset =================================================================== --- etc/rc.d/ypset (revision 225122) +++ etc/rc.d/ypset (working copy) @@ -20,16 +20,8 @@ { local _domain - if ! checkyesno rpcbind_enable && \ - ! /etc/rc.d/rpcbind forcestatus 1>/dev/null 2>&1 - then - force_depend rpcbind || return 1 - fi - if ! checkyesno nis_client_enable && \ - ! /etc/rc.d/ypbind forcestatus 1>/dev/null 2>&1 - then - force_depend ypbind || return 1 - fi + fast_depend rpcbind || return 1 + fast_depend ypbind nis_client_enable || return 1 _domain=`domainname` if [ -z "$_domain" ]; then Index: etc/rc.d/mountd =================================================================== --- etc/rc.d/mountd (revision 225122) +++ etc/rc.d/mountd (working copy) @@ -19,11 +19,7 @@ mountd_precmd() { - if ! checkyesno rpcbind_enable && \ - ! /etc/rc.d/rpcbind forcestatus 1>/dev/null 2>&1 - then - force_depend rpcbind || return 1 - fi + fast_depend rpcbind || return 1 # mountd flags will differ depending on rc.conf settings # Index: etc/rc.d/yppasswdd =================================================================== --- etc/rc.d/yppasswdd (revision 225122) +++ etc/rc.d/yppasswdd (working copy) @@ -22,16 +22,9 @@ { local _domain - if ! checkyesno rpcbind_enable && \ - ! /etc/rc.d/rpcbind forcestatus 1>/dev/null 2>&1 - then - force_depend rpcbind || return 1 - fi - if ! checkyesno nis_server_enable && \ - ! /etc/rc.d/ypserv forcestatus 1>/dev/null 2>&1 - then - force_depend ypserv || return 1 - fi + fast_depend rpcbind || return 1 + fast_depend ypserv nis_server_enable || return 1 + _domain=`domainname` if [ -z "$_domain" ]; then warn "NIS domainname(1) is not set." Index: etc/rc.d/keyserv =================================================================== --- etc/rc.d/keyserv (revision 225122) +++ etc/rc.d/keyserv (working copy) @@ -19,11 +19,7 @@ keyserv_prestart() { - if ! checkyesno rpcbind_enable && \ - ! /etc/rc.d/rpcbind forcestatus 1>/dev/null 2>&1 - then - force_depend rpcbind || return 1 - fi + fast_depend rpcbind || return 1 return 0 } Index: etc/rc.d/ypupdated =================================================================== --- etc/rc.d/ypupdated (revision 225122) +++ etc/rc.d/ypupdated (working copy) @@ -18,16 +18,8 @@ { local _domain - if ! checkyesno rpcbind_enable && \ - ! /etc/rc.d/rpcbind forcestatus 1>/dev/null 2>&1 - then - force_depend rpcbind || return 1 - fi - if ! checkyesno nis_server_enable && \ - ! /etc/rc.d/ypserv forcestatus 1>/dev/null 2>&1 - then - force_depend ypserv || return 1 - fi + fast_depend rpcbind || return 1 + fast_depend ypserv nis_server_enable || return 1 _domain=`domainname` if [ -z "$_domain" ]; then Index: etc/rc.d/apmd =================================================================== --- etc/rc.d/apmd (revision 225122) +++ etc/rc.d/apmd (working copy) @@ -20,11 +20,7 @@ case `${SYSCTL_N} hw.machine_arch` in i386) # Enable apm if it is not already enabled - if ! checkyesno apm_enable && \ - ! /etc/rc.d/apm forcestatus 1>/dev/null 2>&1 - then - force_depend apm || return 1 - fi + fast_depend apm || return 1 # Warn user about acpi apm compatibility support which # does not work with apmd. Index: etc/rc.d/nfsd =================================================================== --- etc/rc.d/nfsd (revision 225122) +++ etc/rc.d/nfsd (working copy) @@ -43,30 +43,16 @@ fi if checkyesno nfsv4_server_enable; then - if ! checkyesno nfsuserd_enable && \ - ! /etc/rc.d/nfsuserd forcestatus 1>/dev/null 2>&1 - then - if ! force_depend nfsuserd; then - err 1 "Cannot run nfsuserd" - fi - fi + fast_depend nfsuserd || err 1 "Cannot run nfsuserd" else echo 'NFSv4 is disabled' sysctl vfs.nfsd.server_max_nfsvers=3 > /dev/null fi fi - if ! checkyesno rpcbind_enable && \ - ! /etc/rc.d/rpcbind forcestatus 1>/dev/null 2>&1 - then - force_depend rpcbind || return 1 - fi + fast_depend rpcbind || return 1 + fast_depend mountd || return 1 - if ! checkyesno mountd_enable && \ - ! /etc/rc.d/mountd forcestatus 1>/dev/null 2>&1 - then - force_depend mountd || return 1 - fi return 0 } Index: etc/rc.d/lockd =================================================================== --- etc/rc.d/lockd (revision 225122) +++ etc/rc.d/lockd (working copy) @@ -30,11 +30,7 @@ then ret=1 fi - if ! checkyesno rpcbind_enable && \ - ! /etc/rc.d/rpcbind forcestatus 1>/dev/null 2>&1 - then - force_depend rpcbind || ret=1 - fi + fast_depend rpcbind || ret=1 rc_flags=${rpc_lockd_flags} return ${ret} } Index: etc/rc.d/statd =================================================================== --- etc/rc.d/statd (revision 225122) +++ etc/rc.d/statd (working copy) @@ -30,11 +30,7 @@ then ret=1 fi - if ! checkyesno rpcbind_enable && \ - ! /etc/rc.d/rpcbind forcestatus 1>/dev/null 2>&1 - then - force_depend rpcbind || ret=1 - fi + fast_depend rpcbind || ret=1 rc_flags=${rpc_statd_flags} return ${ret} } Index: etc/rc.d/ypbind =================================================================== --- etc/rc.d/ypbind (revision 225122) +++ etc/rc.d/ypbind (working copy) @@ -22,11 +22,7 @@ { local _domain - if ! checkyesno rpcbind_enable && \ - ! /etc/rc.d/rpcbind forcestatus 1>/dev/null 2>&1 - then - force_depend rpcbind || return 1 - fi + fast_depend rpcbind || return 1 _domain=`domainname` if [ -z "$_domain" ]; then Index: etc/rc.d/ypserv =================================================================== --- etc/rc.d/ypserv (revision 225122) +++ etc/rc.d/ypserv (working copy) @@ -21,11 +21,7 @@ { local _domain - if ! checkyesno rpcbind_enable && \ - ! /etc/rc.d/rpcbind forcestatus 1>/dev/null 2>&1 - then - force_depend rpcbind || return 1 - fi + fast_depend rpcbind || return 1 _domain=`domainname` if [ -z "$_domain" ]; then warn "NIS domainname(1) is not set." Index: etc/rc.d/ypxfrd =================================================================== --- etc/rc.d/ypxfrd (revision 225122) +++ etc/rc.d/ypxfrd (working copy) @@ -20,16 +20,8 @@ { local _domain - if ! checkyesno rpcbind_enable && \ - ! /etc/rc.d/rpcbind forcestatus 1>/dev/null 2>&1 - then - force_depend rpcbind || return 1 - fi - if ! checkyesno nis_server_enable && \ - ! /etc/rc.d/ypserv forcestatus 1>/dev/null 2>&1 - then - force_depend ypserv || return 1 - fi + fast_depend rpcbind || return 1 + fast_depend ypserv nis_server_enable || return 1 _domain=`domainname` if [ -z "$_domain" ]; then Index: etc/rc.subr =================================================================== --- etc/rc.subr (revision 225119) +++ etc/rc.subr (working copy) @@ -159,6 +159,29 @@ } # +# fast_depend script [var] [prefix] +# Force a service to start if it's not already, regardless +# if it's enabled. Intended for use by services +# to resolve dependency issues. When rc_fast is set, +# only force the dependency if var is set to "NO". +# $1 - script name +# $2 - variable name if the variable to test is not ${1}_enable +# $3 - prefix path if not the default /etc/rc.d +# +fast_depend() +{ + _script="$1" + _variable="${2:-${1}_enable}" + _prefix="${3:-/etc/rc.d}" + + if { [ -z "${rc_fast}" ] || ! checkyesno ${_variable}; } && + ! ${_prefix}/${_script} forcestatus 1>/dev/null 2>&1 + then + force_depend ${_script} || return 1 + fi +} + +# # reverse_list list # print the list in reverse order # --------------030003050005080606030507-- From owner-freebsd-rc@FreeBSD.ORG Wed Aug 24 09:12:00 2011 Return-Path: Delivered-To: freebsd-rc@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 4A667106566B; Wed, 24 Aug 2011 09:12:00 +0000 (UTC) (envelope-from dirkx@webweaving.org) Received: from pikmeer.webweaving.org (unknown [IPv6:2001:1af8:4100:b040::20]) by mx1.freebsd.org (Postfix) with ESMTP id DFF2E8FC12; Wed, 24 Aug 2011 09:11:59 +0000 (UTC) Received: from neep.home (host81-159-211-94.range81-159.btcentralplus.com [81.159.211.94]) (authenticated bits=0) by pikmeer.webweaving.org (8.14.4/8.14.4) with ESMTP id p7O9BrdR048866 (version=TLSv1/SSLv3 cipher=AES128-SHA bits=128 verify=NO); Wed, 24 Aug 2011 09:11:53 GMT (envelope-from dirkx@webweaving.org) Mime-Version: 1.0 (Apple Message framework v1244.3) Content-Type: text/plain; charset=us-ascii From: Dirk-Willem van Gulik In-Reply-To: Date: Wed, 24 Aug 2011 10:11:59 +0100 Content-Transfer-Encoding: 7bit Message-Id: <236FDE42-804C-4ADE-AD3C-2EF8D43522EA@webweaving.org> References: <20110821121509.GA27730@crane.none> To: Vitaly Magerya X-Mailer: Apple Mail (2.1244.3) X-Greylist: Sender succeeded SMTP AUTH, not delayed by milter-greylist-4.2.5 (pikmeer.webweaving.org [178.18.23.51]); Wed, 24 Aug 2011 09:11:54 +0000 (UTC) Cc: freebsd-rc@freebsd.org, freebsd-hackers@freebsd.org, kilian Subject: Re: Concurrent execution of rc-scripts with rcorder(8) X-BeenThere: freebsd-rc@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "Discussion related to /etc/rc.d design and implementation." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 24 Aug 2011 09:12:00 -0000 On 24 Aug 2011, at 10:08, Vitaly Magerya wrote: > One thing to try is to attach a diagnostics feature that will produce > data about rc script dependencies and execution times, which can > be used to visualize which scripts take most time, and how to > reorganize dependencies to improve boot time (one example I noticed > is moused: it is only started after network is up, which is a shame, > since it could easily start while DHCP negotiation is in progress). Perhaps https://github.com/buganini/rcexecr may be a good start. Dw From owner-freebsd-rc@FreeBSD.ORG Wed Aug 24 09:39:16 2011 Return-Path: Delivered-To: freebsd-rc@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id E90F1106566B for ; Wed, 24 Aug 2011 09:39:16 +0000 (UTC) (envelope-from vmagerya@gmail.com) Received: from mail-vx0-f182.google.com (mail-vx0-f182.google.com [209.85.220.182]) by mx1.freebsd.org (Postfix) with ESMTP id A665A8FC1A for ; Wed, 24 Aug 2011 09:39:16 +0000 (UTC) Received: by vxh11 with SMTP id 11so1098066vxh.13 for ; Wed, 24 Aug 2011 02:39:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; bh=kc+2lkLFzpRMfD+lWpnZpmPwCitv+4UwdXC+hKL4tXk=; b=cJiEukFrDI8Vb3DAh02IGX1bYWDZ7S07cl4C/z9s5DQtqlCjty8VW7qWp9mX1s+6rw 95tb5R/nVhsI4pwrhBqYaT8syrDVO8GUW86Iprb/FAARDkMI8KNcQaEU6LYuTarYFMK6 KchQF5TIue15OBy/Tx9JLXMyZj98qMspsYDxM= MIME-Version: 1.0 Received: by 10.52.175.164 with SMTP id cb4mr4675212vdc.381.1314176921782; Wed, 24 Aug 2011 02:08:41 -0700 (PDT) Received: by 10.52.160.39 with HTTP; Wed, 24 Aug 2011 02:08:41 -0700 (PDT) In-Reply-To: <20110821121509.GA27730@crane.none> References: <20110821121509.GA27730@crane.none> Date: Wed, 24 Aug 2011 12:08:41 +0300 Message-ID: From: Vitaly Magerya To: kilian Content-Type: text/plain; charset=UTF-8 Cc: freebsd-hackers@freebsd.org, freebsd-rc@freebsd.org Subject: Re: Concurrent execution of rc-scripts with rcorder(8) X-BeenThere: freebsd-rc@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "Discussion related to /etc/rc.d design and implementation." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 24 Aug 2011 09:39:17 -0000 > the idea to start services concurrently during boot isn't new and the > question why FreeBSD doesn't do it has popped up on the forum and > mailing list occasionally. So, why not give it a shot? As someone who uses FreeBSD on hist laptop and is constantly annoyed by the lack of suspend-to-disk, every second trimmed of from boot time is a win. In line of the recent FreeBSD problems & solutions discussion, would any commiter take time to review and commit this? "FreeBSD 9.1 introduces concurrent startup, improves boot speed" is the kind of buzz we're after. > Any ideas and feedback are very welcome! One thing to try is to attach a diagnostics feature that will produce data about rc script dependencies and execution times, which can be used to visualize which scripts take most time, and how to reorganize dependencies to improve boot time (one example I noticed is moused: it is only started after network is up, which is a shame, since it could easily start while DHCP negotiation is in progress). From owner-freebsd-rc@FreeBSD.ORG Wed Aug 24 14:03:02 2011 Return-Path: Delivered-To: freebsd-rc@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 4056A106566B for ; Wed, 24 Aug 2011 14:03:02 +0000 (UTC) (envelope-from buganini@gmail.com) Received: from mail-iy0-f172.google.com (mail-iy0-f172.google.com [209.85.210.172]) by mx1.freebsd.org (Postfix) with ESMTP id 0B6FD8FC19 for ; Wed, 24 Aug 2011 14:03:01 +0000 (UTC) Received: by iye7 with SMTP id 7so4342929iye.17 for ; Wed, 24 Aug 2011 07:03:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; bh=8oKn6Vuc2tGXMy4TwvE0Cfz9iFCRNnniH55D2gZ+zRo=; b=cTXhGXs31uNZPXZA9QWFAEmRGpB4XKZS5++xIJ/9s1Mim/woF/0PY7LhTQ+S55WyqF AVvaFK2xrhBOB9ZR0T1+7RxdBpo339JgbiXRK5oOITaDHyaI4T9gM4h8zBxIa1LTDFiN ul/L940qb9hPW3BymPsKmDnQZYDuWP9Gf5Y1k= MIME-Version: 1.0 Received: by 10.231.20.136 with SMTP id f8mr10432347ibb.32.1314192720844; Wed, 24 Aug 2011 06:32:00 -0700 (PDT) Received: by 10.231.31.140 with HTTP; Wed, 24 Aug 2011 06:32:00 -0700 (PDT) In-Reply-To: <236FDE42-804C-4ADE-AD3C-2EF8D43522EA@webweaving.org> References: <20110821121509.GA27730@crane.none> <236FDE42-804C-4ADE-AD3C-2EF8D43522EA@webweaving.org> Date: Wed, 24 Aug 2011 21:32:00 +0800 Message-ID: From: Buganini To: Dirk-Willem van Gulik Content-Type: text/plain; charset=UTF-8 Cc: freebsd-hackers@freebsd.org, kilian , freebsd-rc@freebsd.org, Vitaly Magerya Subject: Re: Concurrent execution of rc-scripts with rcorder(8) X-BeenThere: freebsd-rc@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "Discussion related to /etc/rc.d design and implementation." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 24 Aug 2011 14:03:02 -0000 rcexecr generate time table like this: # env ARG0=\? ARG1=start rcexecr /etc/rc.d/* 1 beg /etc/rc.d/dhclient start 1 beg /etc/rc.d/rctl start 1 beg /etc/rc.d/natd start 1 beg /etc/rc.d/ugidfw start 1 beg /etc/rc.d/sysctl start 2 end /etc/rc.d/sysctl 3 beg /etc/rc.d/hostid start 4 end /etc/rc.d/hostid 5 beg /etc/rc.d/zvol start 6 end /etc/rc.d/zvol 7 beg /etc/rc.d/dumpon start 8 end /etc/rc.d/dumpon 9 beg /etc/rc.d/ddb start 10 end /etc/rc.d/ddb 11 beg /etc/rc.d/initrandom start 12 end /etc/rc.d/initrandom 13 beg /etc/rc.d/gbde start 13 beg /etc/rc.d/ccd start 13 beg /etc/rc.d/encswap start 13 beg /etc/rc.d/geli start 14 end /etc/rc.d/gbde 14 end /etc/rc.d/encswap 14 end /etc/rc.d/geli 14 end /etc/rc.d/ccd 15 beg /etc/rc.d/swap1 start 16 end /etc/rc.d/swap1 17 beg /etc/rc.d/fsck start 18 end /etc/rc.d/fsck 19 beg /etc/rc.d/root start 20 end /etc/rc.d/root 21 beg /etc/rc.d/serial start 21 beg /etc/rc.d/mdconfig start 21 beg /etc/rc.d/sppp start 21 beg /etc/rc.d/nsswitch start 21 beg /etc/rc.d/gssd start 21 beg /etc/rc.d/hostid_save start 21 beg /etc/rc.d/atm1 start 22 end /etc/rc.d/hostid_save 22 end /etc/rc.d/mdconfig 23 beg /etc/rc.d/mountcritlocal start 24 end /etc/rc.d/mountcritlocal 25 beg /etc/rc.d/zfs start 26 end /etc/rc.d/zfs 27 beg /etc/rc.d/FILESYSTEMS start 28 end /etc/rc.d/FILESYSTEMS 29 beg /etc/rc.d/hostname start 29 beg /etc/rc.d/ip6addrctl start 29 beg /etc/rc.d/geli2 start 29 beg /etc/rc.d/kldxref start 29 beg /etc/rc.d/kld start 29 beg /etc/rc.d/ipfilter start 29 beg /etc/rc.d/netoptions start 29 beg /etc/rc.d/addswap start 29 beg /etc/rc.d/ipsec start 30 end /etc/rc.d/ipfilter 30 end /etc/rc.d/kld 31 beg /etc/rc.d/ipnat start 31 beg /etc/rc.d/var start 32 end /etc/rc.d/ipnat 32 end /etc/rc.d/var 33 beg /etc/rc.d/ipfs start 33 beg /etc/rc.d/random start 33 beg /etc/rc.d/cleanvar start 34 end /etc/rc.d/hostname 34 end /etc/rc.d/random 35 beg /etc/rc.d/ipmon start 35 beg /etc/rc.d/adjkerntz start 35 beg /etc/rc.d/mixer start 36 end /etc/rc.d/atm1 36 end /etc/rc.d/serial 36 end /etc/rc.d/ip6addrctl 36 end /etc/rc.d/netoptions 36 end /etc/rc.d/adjkerntz 36 end /etc/rc.d/kldxref 36 end /etc/rc.d/sppp 36 end /etc/rc.d/ipfs 36 end /etc/rc.d/cleanvar 37 beg /etc/rc.d/netif start 38 end /etc/rc.d/netif 39 beg /etc/rc.d/ppp start 39 beg /etc/rc.d/rtsold start 39 beg /etc/rc.d/faith start 39 beg /etc/rc.d/pfsync start 39 beg /etc/rc.d/pflog start 39 beg /etc/rc.d/devd start 39 beg /etc/rc.d/static_arp start 39 beg /etc/rc.d/stf start 39 beg /etc/rc.d/bridge start 39 beg /etc/rc.d/resolv start 39 beg /etc/rc.d/atm2 start 40 end /etc/rc.d/devd 40 end /etc/rc.d/atm2 40 end /etc/rc.d/pfsync 40 end /etc/rc.d/pflog 41 beg /etc/rc.d/defaultroute start 41 beg /etc/rc.d/atm3 start 41 beg /etc/rc.d/pf start 41 beg /etc/rc.d/ipfw start 42 end /etc/rc.d/faith 42 end /etc/rc.d/ppp 42 end /etc/rc.d/stf 42 end /etc/rc.d/pf 43 beg /etc/rc.d/routing start 44 end /etc/rc.d/routing 45 beg /etc/rc.d/mroute6d start 45 beg /etc/rc.d/route6d start 45 beg /etc/rc.d/routed start 45 beg /etc/rc.d/mrouted start 46 end /etc/rc.d/routed 46 end /etc/rc.d/resolv 46 end /etc/rc.d/rtsold 46 end /etc/rc.d/ipfw 46 end /etc/rc.d/mroute6d 46 end /etc/rc.d/nsswitch 46 end /etc/rc.d/defaultroute 46 end /etc/rc.d/mrouted 46 end /etc/rc.d/route6d 47 beg /etc/rc.d/NETWORKING start 48 end /etc/rc.d/NETWORKING 49 beg /etc/rc.d/pppoed start 49 beg /etc/rc.d/kerberos start 49 beg /etc/rc.d/netwait start 49 beg /etc/rc.d/nfsuserd start 50 end /etc/rc.d/kerberos 50 end /etc/rc.d/ipsec 50 end /etc/rc.d/netwait 51 beg /etc/rc.d/mountcritremote start 51 beg /etc/rc.d/nfscbd start 51 beg /etc/rc.d/kadmind start 52 end /etc/rc.d/kadmind 52 end /etc/rc.d/mountcritremote 53 beg /etc/rc.d/motd start 53 beg /etc/rc.d/wpa_supplicant start 53 beg /etc/rc.d/tmp start 53 beg /etc/rc.d/newsyslog start 53 beg /etc/rc.d/mdconfig2 start 53 beg /etc/rc.d/ldconfig start 53 beg /etc/rc.d/kpasswdd start 53 beg /etc/rc.d/hostapd start 53 beg /etc/rc.d/gptboot start 53 beg /etc/rc.d/dmesg start 53 beg /etc/rc.d/devfs start 53 beg /etc/rc.d/archdep start 53 beg /etc/rc.d/accounting start 54 end /etc/rc.d/newsyslog 54 end /etc/rc.d/tmp 54 end /etc/rc.d/archdep 55 beg /etc/rc.d/virecover start 55 beg /etc/rc.d/syslogd start 55 beg /etc/rc.d/cleartmp start 55 beg /etc/rc.d/abi start 56 end /etc/rc.d/syslogd 57 beg /etc/rc.d/savecore start 57 beg /etc/rc.d/localpkg start 57 beg /etc/rc.d/power_profile start 57 beg /etc/rc.d/auditd start 57 beg /etc/rc.d/pwcheck start 57 beg /etc/rc.d/bsnmpd start 57 beg /etc/rc.d/hastd start 58 end /etc/rc.d/mdconfig2 58 end /etc/rc.d/savecore 58 end /etc/rc.d/abi 58 end /etc/rc.d/devfs 58 end /etc/rc.d/ldconfig 58 end /etc/rc.d/ipmon 59 beg /etc/rc.d/SERVERS start 60 end /etc/rc.d/SERVERS 61 beg /etc/rc.d/ipxrouted start 61 beg /etc/rc.d/named start 62 end /etc/rc.d/named 63 beg /etc/rc.d/ntpdate start 64 end /etc/rc.d/ntpdate 65 beg /etc/rc.d/rpcbind start 66 end /etc/rc.d/rpcbind 67 beg /etc/rc.d/nisdomain start 67 beg /etc/rc.d/nfsclient start 68 end /etc/rc.d/nisdomain 69 beg /etc/rc.d/ypserv start 70 end /etc/rc.d/ypserv 71 beg /etc/rc.d/ypxfrd start 71 beg /etc/rc.d/ypupdated start 71 beg /etc/rc.d/ypbind start 72 end /etc/rc.d/ypbind 73 beg /etc/rc.d/ypset start 74 end /etc/rc.d/ypset 74 end /etc/rc.d/nfsclient 75 beg /etc/rc.d/yppasswdd start 75 beg /etc/rc.d/keyserv start 75 beg /etc/rc.d/quota start 75 beg /etc/rc.d/amd start 76 end /etc/rc.d/quota 77 beg /etc/rc.d/mountd start 78 end /etc/rc.d/nfsuserd 78 end /etc/rc.d/gssd 78 end /etc/rc.d/mountd 79 beg /etc/rc.d/nfsd start 80 end /etc/rc.d/nfsd 81 beg /etc/rc.d/statd start 82 end /etc/rc.d/statd 83 beg /etc/rc.d/lockd start 84 end /etc/rc.d/virecover 84 end /etc/rc.d/cleartmp 84 end /etc/rc.d/hastd 84 end /etc/rc.d/dmesg 84 end /etc/rc.d/kpasswdd 84 end /etc/rc.d/keyserv 84 end /etc/rc.d/auditd 84 end /etc/rc.d/pppoed 84 end /etc/rc.d/pwcheck 84 end /etc/rc.d/lockd 84 end /etc/rc.d/amd 84 end /etc/rc.d/ipxrouted 84 end /etc/rc.d/accounting 84 end /etc/rc.d/atm3 85 beg /etc/rc.d/DAEMON start 86 end /etc/rc.d/DAEMON 87 beg /etc/rc.d/ftp-proxy start 87 beg /etc/rc.d/sdpd start 87 beg /etc/rc.d/rwho start 87 beg /etc/rc.d/rtadvd start 87 beg /etc/rc.d/timed start 87 beg /etc/rc.d/ubthidhci start 87 beg /etc/rc.d/hcsecd start 87 beg /etc/rc.d/rarpd start 87 beg /etc/rc.d/bootparams start 87 beg /etc/rc.d/watchdogd start 87 beg /etc/rc.d/powerd start 87 beg /etc/rc.d/ntpd start 87 beg /etc/rc.d/apm start 87 beg /etc/rc.d/nscd start 87 beg /etc/rc.d/moused start 87 beg /etc/rc.d/mountlate start 87 beg /etc/rc.d/lpd start 87 beg /etc/rc.d/local start 88 end /etc/rc.d/sdpd 88 end /etc/rc.d/apm 88 end /etc/rc.d/ubthidhci 88 end /etc/rc.d/hcsecd 89 beg /etc/rc.d/rfcomm_pppd_server start 89 beg /etc/rc.d/bthidd start 89 beg /etc/rc.d/apmd start 89 beg /etc/rc.d/bluetooth start 90 end /etc/rc.d/rfcomm_pppd_server 90 end /etc/rc.d/mountlate 90 end /etc/rc.d/motd 90 end /etc/rc.d/lpd 90 end /etc/rc.d/local 90 end /etc/rc.d/nscd 90 end /etc/rc.d/ntpd 90 end /etc/rc.d/powerd 90 end /etc/rc.d/rarpd 90 end /etc/rc.d/rctl 90 end /etc/rc.d/rtadvd 90 end /etc/rc.d/rwho 90 end /etc/rc.d/timed 90 end /etc/rc.d/ugidfw 90 end /etc/rc.d/bthidd 90 end /etc/rc.d/bootparams 90 end /etc/rc.d/apmd 90 end /etc/rc.d/yppasswdd 91 beg /etc/rc.d/LOGIN start 92 end /etc/rc.d/LOGIN 93 beg /etc/rc.d/othermta start 93 beg /etc/rc.d/ftpd start 93 beg /etc/rc.d/msgs start 93 beg /etc/rc.d/inetd start 93 beg /etc/rc.d/sshd start 93 beg /etc/rc.d/syscons start 93 beg /etc/rc.d/sendmail start 93 beg /etc/rc.d/cron start 93 beg /etc/rc.d/jail start 94 end /etc/rc.d/cron 94 end /etc/rc.d/localpkg 94 end /etc/rc.d/jail 95 beg /etc/rc.d/bgfsck start 95 beg /etc/rc.d/securelevel start 95 end /etc/rc.d/gptboot 95 end /etc/rc.d/hostapd 95 end /etc/rc.d/mixer 95 end /etc/rc.d/inetd 95 end /etc/rc.d/ypupdated 95 end /etc/rc.d/bsnmpd 95 end /etc/rc.d/bridge 95 end /etc/rc.d/bluetooth 95 end /etc/rc.d/bgfsck 95 end /etc/rc.d/power_profile 95 end /etc/rc.d/othermta 95 end /etc/rc.d/watchdogd 95 end /etc/rc.d/wpa_supplicant 95 end /etc/rc.d/ypxfrd 95 end /etc/rc.d/nfscbd 95 end /etc/rc.d/moused 95 end /etc/rc.d/addswap 95 end /etc/rc.d/natd 95 end /etc/rc.d/ftp-proxy 95 end /etc/rc.d/securelevel 95 end /etc/rc.d/sendmail 95 end /etc/rc.d/sshd 95 end /etc/rc.d/ftpd 95 end /etc/rc.d/dhclient 95 end /etc/rc.d/geli2 95 end /etc/rc.d/static_arp 95 end /etc/rc.d/syscons 95 end /etc/rc.d/msgs 2011/8/24 Dirk-Willem van Gulik : > > On 24 Aug 2011, at 10:08, Vitaly Magerya wrote: > >> One thing to try is to attach a diagnostics feature that will produce >> data about rc script dependencies and execution times, which can >> be used to visualize which scripts take most time, and how to >> reorganize dependencies to improve boot time (one example I noticed >> is moused: it is only started after network is up, which is a shame, >> since it could easily start while DHCP negotiation is in progress). > > Perhaps https://github.com/buganini/rcexecr may be a good start. > > Dw > > _______________________________________________ > freebsd-hackers@freebsd.org mailing list > http://lists.freebsd.org/mailman/listinfo/freebsd-hackers > To unsubscribe, send any mail to "freebsd-hackers-unsubscribe@freebsd.org" > From owner-freebsd-rc@FreeBSD.ORG Wed Aug 24 15:47:19 2011 Return-Path: Delivered-To: freebsd-rc@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id B55CF1065675; Wed, 24 Aug 2011 15:47:19 +0000 (UTC) (envelope-from buganini@gmail.com) Received: from mail-iy0-f172.google.com (mail-iy0-f172.google.com [209.85.210.172]) by mx1.freebsd.org (Postfix) with ESMTP id 7394E8FC0A; Wed, 24 Aug 2011 15:47:19 +0000 (UTC) Received: by iye7 with SMTP id 7so4626891iye.17 for ; Wed, 24 Aug 2011 08:47:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; bh=Hl8Zsm8RU3vPdb99OpMbtWJz8zc8+yQtcfFdu0kJZ54=; b=q6qs71oMPHnHT0hDVVKMyN1Vxrc7rkmwfWk40ZRyJhuUszFL2J5iZ0M0mRnZX/bUGO WMP9vxZOcmRqAqf3u5ubFeBxUT8sCdGEjA8yDJhP7tbxVTX7vUcugEmsMGDXkLLoncW5 TETxF50edMsUer+I6TtvFPqN5yVpsefhCLv/U= MIME-Version: 1.0 Received: by 10.231.20.136 with SMTP id f8mr10662050ibb.32.1314200838933; Wed, 24 Aug 2011 08:47:18 -0700 (PDT) Received: by 10.231.31.140 with HTTP; Wed, 24 Aug 2011 08:47:18 -0700 (PDT) In-Reply-To: References: <20110821121509.GA27730@crane.none> <236FDE42-804C-4ADE-AD3C-2EF8D43522EA@webweaving.org> Date: Wed, 24 Aug 2011 23:47:18 +0800 Message-ID: From: Buganini To: Dirk-Willem van Gulik Content-Type: text/plain; charset=UTF-8 Cc: freebsd-hackers@freebsd.org, kilian , freebsd-rc@freebsd.org, Vitaly Magerya Subject: Re: Concurrent execution of rc-scripts with rcorder(8) X-BeenThere: freebsd-rc@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "Discussion related to /etc/rc.d design and implementation." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 24 Aug 2011 15:47:19 -0000 Further optimization in rc.d: splitting non-networking DAEMON (eg. moused) Critical issue in rcexecr: stop_boot (in /etc/rc.subr) doesn't stop rcexecr it might need a check before involving /usr/local/etc/rc.d/*, or just kill child processes? --Buganini From owner-freebsd-rc@FreeBSD.ORG Thu Aug 25 12:44:57 2011 Return-Path: Delivered-To: freebsd-rc@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 9949D1065675 for ; Thu, 25 Aug 2011 12:44:57 +0000 (UTC) (envelope-from joris.dedieu@gmail.com) Received: from mail-yw0-f54.google.com (mail-yw0-f54.google.com [209.85.213.54]) by mx1.freebsd.org (Postfix) with ESMTP id 574D88FC22 for ; Thu, 25 Aug 2011 12:44:57 +0000 (UTC) Received: by ywo32 with SMTP id 32so2005022ywo.13 for ; Thu, 25 Aug 2011 05:44:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :content-type; bh=AyogGOCaUlRYaX/U5uz0oDr21Nw/8RtMwPyiKFZ0BRs=; b=onUSiwfcj3eSbd6OiTlkXPrbOBQ81jGFYnGCdwPp2KsPuuKwAvPF0VMB2EllFEXp7S PxHhdAC4r15Ivz0rwPhgrLm4T91w66vnrVYXyB7Cofw/acnq55cs0lsMS3z1y4u4C7W8 0rNGYPCo6tZwI+6Bm0+zEl/IWcPMRMlNmdq+s= MIME-Version: 1.0 Received: by 10.231.56.75 with SMTP id x11mr12649551ibg.98.1314274898239; Thu, 25 Aug 2011 05:21:38 -0700 (PDT) Received: by 10.231.37.76 with HTTP; Thu, 25 Aug 2011 05:21:38 -0700 (PDT) In-Reply-To: References: <20110821121509.GA27730@crane.none> Date: Thu, 25 Aug 2011 14:21:38 +0200 Message-ID: From: joris dedieu To: freebsd-hackers@freebsd.org, freebsd-rc@freebsd.org Content-Type: multipart/mixed; boundary=000e0cd3592e7261ed04ab5378bb Cc: Subject: Re: Concurrent execution of rc-scripts with rcorder(8) X-BeenThere: freebsd-rc@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "Discussion related to /etc/rc.d design and implementation." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 25 Aug 2011 12:44:57 -0000 --000e0cd3592e7261ed04ab5378bb Content-Type: text/plain; charset=ISO-8859-1 2011/8/24 Vitaly Magerya : >> the idea to start services concurrently during boot isn't new and the >> question why FreeBSD doesn't do it has popped up on the forum and >> mailing list occasionally. So, why not give it a shot? > > As someone who uses FreeBSD on hist laptop and is constantly annoyed > by the lack of suspend-to-disk, every second trimmed of from boot > time is a win. > > In line of the recent FreeBSD problems & solutions discussion, would > any commiter take time to review and commit this? "FreeBSD 9.1 > introduces concurrent startup, improves boot speed" is the kind of > buzz we're after. > >> Any ideas and feedback are very welcome! > > One thing to try is to attach a diagnostics feature that will produce > data about rc script dependencies and execution times, which can > be used to visualize which scripts take most time, and how to > reorganize dependencies to improve boot time (one example I noticed > is moused: it is only started after network is up, which is a shame, > since it could easily start while DHCP negotiation is in progress). Perhaps background_dhclient="YES" should solve it ? I think background approach (which is current archlinux one [1] ) is not so bad. It's clearly less powerful than automagic parallelization but it's maybe less invasive and more flexible for sysadmins. I gave it a try with a little patch for rc.subr that introduces a background keyword (eg: moused_enable="background"). It's surly buggy with some variables like rc_quiet. I have to check more. [1] https://wiki.archlinux.org/index.php/DAEMONS Joris > _______________________________________________ > freebsd-hackers@freebsd.org mailing list > http://lists.freebsd.org/mailman/listinfo/freebsd-hackers > To unsubscribe, send any mail to "freebsd-hackers-unsubscribe@freebsd.org" > --000e0cd3592e7261ed04ab5378bb Content-Type: text/x-patch; charset=US-ASCII; name="rc.subr.patch" Content-Disposition: attachment; filename="rc.subr.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_grrp50nw0 LS0tIC9ldGMvcmMuc3VicgkyMDExLTA1LTAyIDA4OjQ5OjExLjAwMDAwMDAwMCArMDIwMAorKysg cmMuc3VicgkyMDExLTA4LTI1IDEzOjUwOjI5LjMwMDI3NTc4MyArMDIwMApAQCAtMTQyLDggKzE0 Miw5IEBACiAJZGVidWcgImNoZWNreWVzbm86ICQxIGlzIHNldCB0byAkX3ZhbHVlLiIKIAljYXNl ICRfdmFsdWUgaW4KIAotCQkjCSJ5ZXMiLCAidHJ1ZSIsICJvbiIsIG9yICIxIgotCVtZeV1bRWVd W1NzXXxbVHRdW1JyXVtVdV1bRWVdfFtPb11bTm5dfDEpCisJCSMJInllcyIsICJ0cnVlIiwgIm9u IiwgIjEiLCAiYmciIG9yICJiYWNrZ3JvdW5kIgorCVtZeV1bRWVdW1NzXXxbVHRdW1JyXVtVdV1b RWVdfFtPb11bTm5dfDF8W0JiXVtHZ118XAorW0JiXVtBYV1bQ2NdW0trXVtHZ11bUnJdW09vXVtV dV1bTm5dW0RkXSkKIAkJcmV0dXJuIDAKIAkJOzsKIApAQCAtMTU5LDYgKzE2MCwyNSBAQAogfQog CiAjCisjIGNoZWNrYmcgdmFyCisjCVRlc3QgJDEgdmFyaWFibGUsIGFuZCByZXR1cm4gMCBpZiBp dCdzIGJhY2tncm91bmQgb3IgYmcuCisjCVJldHVybiBub256ZXJvIG90aGVyd2lzZS4KKyMKK2No ZWNrYmcoKQoreworCWV2YWwgX3ZhbHVlPVwkJHsxfQorCWRlYnVnICJjaGVja2JnOiAkMSBpcyBz ZXQgdG8gJF92YWx1ZS4iCisJY2FzZSAkX3ZhbHVlIGluCisJW0JiXVtHZ118W0JiXVtBYV1bQ2Nd W0trXVtHZ11bUnJdW09vXVtVdV1bTm5dW0RkXSkKKwkJcmV0dXJuIDAKKwkJOzsKKwkqKQorCQly ZXR1cm4gMQorCQk7OworCWVzYWMKK30KKworIwogIyByZXZlcnNlX2xpc3QgbGlzdAogIwlwcmlu dCB0aGUgbGlzdCBpbiByZXZlcnNlIG9yZGVyCiAjCkBAIC03MzUsNTQgKzc1NSwxMSBAQAogCQkJ OzsKIAogCQlzdGFydCkKLQkJCWlmIFsgLXogIiRyY19mYXN0IiAtYSAtbiAiJHJjX3BpZCIgXTsg dGhlbgotCQkJCWVjaG8gMT4mMiAiJHtuYW1lfSBhbHJlYWR5IHJ1bm5pbmc/IChwaWQ9JHJjX3Bp ZCkuIgotCQkJCXJldHVybiAxCisJCQlpZiBjaGVja2JnICR7cmN2YXJ9OyB0aGVuCisJCQkJZXZh bCBfcnVuX3JjX3N0YXJ0ICYKKwkJCWVsc2UgCisJCQkJX3J1bl9yY19zdGFydAogCQkJZmkKLQot CQkJaWYgWyAhIC14ICR7X2Nocm9vdH0ke19jaHJvb3Q6KyIvIn0ke2NvbW1hbmR9IF07IHRoZW4K LQkJCQl3YXJuICJydW5fcmNfY29tbWFuZDogY2Fubm90IHJ1biAkY29tbWFuZCIKLQkJCQlyZXR1 cm4gMQotCQkJZmkKLQotCQkJaWYgISBfcnVuX3JjX3ByZWNtZDsgdGhlbgotCQkJCXdhcm4gImZh aWxlZCBwcmVjbWQgcm91dGluZSBmb3IgJHtuYW1lfSIKLQkJCQlyZXR1cm4gMQotCQkJZmkKLQot CQkJCQkjIHNldHVwIHRoZSBmdWxsIGNvbW1hbmQgdG8gcnVuCi0JCQkJCSMKLQkJCWNoZWNrX3N0 YXJ0bXNncyAmJiBlY2hvICJTdGFydGluZyAke25hbWV9LiIKLQkJCWlmIFsgLW4gIiRfY2hyb290 IiBdOyB0aGVuCi0JCQkJX2RvaXQ9IlwKLSR7X25pY2U6K25pY2UgLW4gJF9uaWNlIH1cCi1jaHJv b3QgJHtfdXNlcjorLXUgJF91c2VyIH0ke19ncm91cDorLWcgJF9ncm91cCB9JHtfZ3JvdXBzOist RyAkX2dyb3VwcyB9XAotJF9jaHJvb3QgJGNvbW1hbmQgJHJjX2ZsYWdzICRjb21tYW5kX2FyZ3Mi Ci0JCQllbHNlCi0JCQkJX2RvaXQ9IlwKLSR7X2NoZGlyOitjZCAkX2NoZGlyICYmIH1cCi0kY29t bWFuZCAkcmNfZmxhZ3MgJGNvbW1hbmRfYXJncyIKLQkJCQlpZiBbIC1uICIkX3VzZXIiIF07IHRo ZW4KLQkJCQkgICAgX2RvaXQ9InN1IC1tICRfdXNlciAtYyAnc2ggLWMgXCIkX2RvaXRcIiciCi0J CQkJZmkKLQkJCQlpZiBbIC1uICIkX25pY2UiIF07IHRoZW4KLQkJCQkJaWYgWyAteiAiJF91c2Vy IiBdOyB0aGVuCi0JCQkJCQlfZG9pdD0ic2ggLWMgXCIkX2RvaXRcIiIKLQkJCQkJZmkKLQkJCQkJ X2RvaXQ9Im5pY2UgLW4gJF9uaWNlICRfZG9pdCIKLQkJCQlmaQotCQkJZmkKLQotCQkJCQkjIHJ1 biB0aGUgZnVsbCBjb21tYW5kCi0JCQkJCSMKLQkJCWlmICEgX3J1bl9yY19kb2l0ICIkX2RvaXQi OyB0aGVuCi0JCQkJd2FybiAiZmFpbGVkIHRvIHN0YXJ0ICR7bmFtZX0iCi0JCQkJcmV0dXJuIDEK LQkJCWZpCi0KLQkJCQkJIyBmaW5hbGx5LCBydW4gcG9zdGNtZAotCQkJCQkjCi0JCQlfcnVuX3Jj X3Bvc3RjbWQKIAkJCTs7CiAKIAkJc3RvcCkKQEAgLTk4NSw2ICs5NjIsNTkgQEAKIAllY2hvICIk X2NtZCIKIH0KIAorX3J1bl9yY19zdGFydCgpCit7CisJaWYgWyAteiAiJHJjX2Zhc3QiIC1hIC1u ICIkcmNfcGlkIiBdOyB0aGVuCisJCWVjaG8gMT4mMiAiJHtuYW1lfSBhbHJlYWR5IHJ1bm5pbmc/ IChwaWQ9JHJjX3BpZCkuIgorCQlyZXR1cm4gMQorCWZpCisKKwlpZiBbICEgLXggJHtfY2hyb290 fSR7X2Nocm9vdDorIi8ifSR7Y29tbWFuZH0gXTsgdGhlbgorCQl3YXJuICJydW5fcmNfY29tbWFu ZDogY2Fubm90IHJ1biAkY29tbWFuZCIKKwkJcmV0dXJuIDEKKwlmaQorCisJaWYgISBfcnVuX3Jj X3ByZWNtZDsgdGhlbgorCQl3YXJuICJmYWlsZWQgcHJlY21kIHJvdXRpbmUgZm9yICR7bmFtZX0i CisJCXJldHVybiAxCisJZmkKKworCSMgc2V0dXAgdGhlIGZ1bGwgY29tbWFuZCB0byBydW4KKwkj CisJY2hlY2tfc3RhcnRtc2dzICYmIGVjaG8gIlN0YXJ0aW5nICR7bmFtZX0uIgorCWlmIFsgLW4g IiRfY2hyb290IiBdOyB0aGVuCisJCQkJX2RvaXQ9IlwKKyR7X25pY2U6K25pY2UgLW4gJF9uaWNl IH1cCitjaHJvb3QgJHtfdXNlcjorLXUgJF91c2VyIH0ke19ncm91cDorLWcgJF9ncm91cCB9JHtf Z3JvdXBzOistRyAkX2dyb3VwcyB9XAorJF9jaHJvb3QgJGNvbW1hbmQgJHJjX2ZsYWdzICRjb21t YW5kX2FyZ3MiCisJCQllbHNlCisJCQkJX2RvaXQ9IlwKKyR7X2NoZGlyOitjZCAkX2NoZGlyICYm IH1cCiskY29tbWFuZCAkcmNfZmxhZ3MgJGNvbW1hbmRfYXJncyIKKwkJaWYgWyAtbiAiJF91c2Vy IiBdOyB0aGVuCisJCQlfZG9pdD0ic3UgLW0gJF91c2VyIC1jICdzaCAtYyBcIiRfZG9pdFwiJyIK KwkJZmkKKwkJaWYgWyAtbiAiJF9uaWNlIiBdOyB0aGVuCisJCQlpZiBbIC16ICIkX3VzZXIiIF07 IHRoZW4KKwkJCQlfZG9pdD0ic2ggLWMgXCIkX2RvaXRcIiIKKwkJCWZpCisJCQlfZG9pdD0ibmlj ZSAtbiAkX25pY2UgJF9kb2l0IgorCQlmaQorCWZpCisKKwkjIHJ1biB0aGUgZnVsbCBjb21tYW5k CisJIworCWlmICEgX3J1bl9yY19kb2l0ICIkX2RvaXQiOyB0aGVuCisJCXdhcm4gImZhaWxlZCB0 byBzdGFydCAke25hbWV9IgorCXJldHVybiAxCisJZmkKKworCSMgZmluYWxseSwgcnVuIHBvc3Rj bWQKKwkjCisJX3J1bl9yY19wb3N0Y21kCit9CisKKwogIwogIyBydW5fcmNfc2NyaXB0IGZpbGUg YXJnCiAjCVN0YXJ0IHRoZSBzY3JpcHQgYGZpbGUnIHdpdGggYGFyZycsIGFuZCBjb3JyZWN0bHkg aGFuZGxlIHRoZQo= --000e0cd3592e7261ed04ab5378bb-- From owner-freebsd-rc@FreeBSD.ORG Fri Aug 26 12:22:19 2011 Return-Path: Delivered-To: freebsd-rc@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 26485106564A for ; Fri, 26 Aug 2011 12:22:19 +0000 (UTC) (envelope-from zeus@relay.ibs.dn.ua) Received: from relay.ibs.dn.ua (relay.ibs.dn.ua [91.216.196.25]) by mx1.freebsd.org (Postfix) with ESMTP id 768188FC0C for ; Fri, 26 Aug 2011 12:22:18 +0000 (UTC) Received: from relay.ibs.dn.ua (localhost [127.0.0.1]) by relay.ibs.dn.ua with ESMTP id p7QC61cU099557; Fri, 26 Aug 2011 15:06:01 +0300 (EEST) Received: (from zeus@localhost) by relay.ibs.dn.ua (8.14.4/8.14.4/Submit) id p7QC61Fm099556; Fri, 26 Aug 2011 15:06:01 +0300 (EEST) Date: Fri, 26 Aug 2011 15:06:01 +0300 From: Zeus V Panchenko To: freebsd-net@freebsd.org Message-ID: <20110826120601.GA18070@relay.ibs.dn.ua> Mail-Followup-To: freebsd-net@freebsd.org, freebsd-rc@freebsd.org References: <20101112070759.GA36248@relay.ibs.dn.ua> <20101112230000.GD22460@michelle.cdnetworks.com> <20110121125917.GA48950@relay.ibs.dn.ua> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline In-Reply-To: <20110121125917.GA48950@relay.ibs.dn.ua> User-Agent: Mutt/1.4.2.3i X-Operating-System: FreeBSD 8.1-RELEASE X-Editor: GNU Emacs 23.2.1 X-Face: iVBORw0KGgoAAAANSUhEUgAAACoAAAAqBAMAAAA37dRoAAAAFVBMVEWjjoiZhHDWzcZuW1U wOT+RcGxziJxEN0lIAAABrklEQVQokV2STXLbMAyFQaraE3a5dzSTfR1IF7CQrM3QuECn9z9DH0 gxzgSyFvr88PBD0uJxoR6BE+e8LtRgohE5ZB50sODP/REbfUnte/z12+llCekLUSKenFIMke6Be WinE8H0RJHSN71rUQp64gFDmtDDhRk0zam3FzpNVFprhwPGaFo6oY9wDBJQ9Qz6EuKyROJjDGa+ uza4VOTa8iHlN58Yv5BF9+4BGl0LA5pUD5xKXg4aQlVZm0co3NKxCGxQpu3aC352Gv3DZONmwQd tkrlaylV3YSew7bWtwAZF/zi9jblmprPoL7ktzeFSxmarVNmWRi+Bmxg7Y7tbGtR8XZUxLTo86G thANsssetjp3POuBvMBRlw6jRa5pKN7yVlP+F2lyiZGSMf5hnSU6eAVupmtfjRcxy0momwpxDnz 06hwnOWvBnUdR8U2/KX7cq26u1Jy5xFZMPOVONRbRUrwey8Qar6cWgf12xSymQuVX0DfYd4R8kN Hg0qCtLeaYZcj8B90M2N0cEX1P0vKSxw7NLy/3X8Qeriusu66jNA37P4Mn5QRTG2hz4d9D/6E3a EX852nwAAAABJRU5ErkJggg== Cc: freebsd-rc@freebsd.org Subject: lagg(4) and alises X-BeenThere: freebsd-rc@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: zeus@ibs.dn.ua List-Id: "Discussion related to /etc/rc.d design and implementation." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 26 Aug 2011 12:22:19 -0000 Hi, i need advice, please? while trying to set lagg(4) interface i faced some difficulty ... i need advice to optimize/correct the configuration ... mine current configuration is: igb2 igb3 | | igb0 +----------+---------+--------+ igb1 x.x.x.x ---+ FreeBSD 8.1-STABLE #4 amd64 +--- y.y.y.y/30 /29 +-------+---------+-----------+ | | em0 em1 | | switch00 -+- lagg0 -+- switch01 + + z.z.z.z/26 + + | | | | | +------ trunk 1 -----+ | +-------- trunk 2 -------+ /etc/rc.conf ... ifconfig_igb0="inet x.x.x.x/29 media autoselect" ifconfig_igb1="inet y.y.y.y/30 media autoselect" ifconfig_em0="UP" ifconfig_em1="UP" ifconfig_lagg0="laggproto lacp laggport em0 laggport em1" ipv4_addrs_lagg0="z.z.z.z/26" # only this forced it work, # ifconfig_lagg0 assigns # the address but it doesn't work ... now i need to set additional three ip addresses on lagg0 ... and everything i was trying was not working ... i was trying to add this to /etc/rc.conf: ifconfig_lagg0_alias0="inet 91.216.196.10/26" ifconfig_lagg0_alias1="inet 91.216.196.11/26" ifconfig_lagg0_alias2="inet 91.216.196.12/26" after reboot addresses are assigned but ifconfig lagg0 shows status: no carrier so, here is the question: how is it correct to set aliases on lagg(4) interface (aggregation protocol `lacp') in /etc/rc.conf file? -- Zeus V. Panchenko JID:zeus@gnu.org.ua GMT+2 (EET) From owner-freebsd-rc@FreeBSD.ORG Fri Aug 26 21:44:59 2011 Return-Path: Delivered-To: freebsd-rc@FreeBSD.ORG Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id A8D701065676 for ; Fri, 26 Aug 2011 21:44:59 +0000 (UTC) (envelope-from jilles@stack.nl) Received: from mx1.stack.nl (relay04.stack.nl [IPv6:2001:610:1108:5010::107]) by mx1.freebsd.org (Postfix) with ESMTP id 4C05A8FC1A for ; Fri, 26 Aug 2011 21:44:59 +0000 (UTC) Received: from turtle.stack.nl (turtle.stack.nl [IPv6:2001:610:1108:5010::132]) by mx1.stack.nl (Postfix) with ESMTP id 99F7D1DD73F; Fri, 26 Aug 2011 23:44:56 +0200 (CEST) Received: by turtle.stack.nl (Postfix, from userid 1677) id 834DF174D1; Fri, 26 Aug 2011 23:44:56 +0200 (CEST) Date: Fri, 26 Aug 2011 23:44:56 +0200 From: Jilles Tjoelker To: d@delphij.net Message-ID: <20110826214456.GA41095@stack.nl> References: <4E50B5E3.90702@delphij.net> <20110821132045.GA3940@stack.nl> <4E541A49.9050207@delphij.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4E541A49.9050207@delphij.net> User-Agent: Mutt/1.5.21 (2010-09-15) Cc: freebsd-rc@FreeBSD.ORG Subject: Re: [PATCH] Don't test if a service is enabled when it's required X-BeenThere: freebsd-rc@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "Discussion related to /etc/rc.d design and implementation." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 26 Aug 2011 21:44:59 -0000 On Tue, Aug 23, 2011 at 02:23:21PM -0700, Xin LI wrote: > Thanks for Jilles' comments. I've added a new procedure called > fast_depend (poor name perhaps?) with a proposed changeset to all > these rc.d scripts that uses force_depend. > Comments? This looks like it avoids the extra forks, good. The scripts look cleaner now. > Index: etc/rc.subr > =================================================================== > --- etc/rc.subr (revision 225119) > +++ etc/rc.subr (working copy) > @@ -159,6 +159,29 @@ > } > > # > +# fast_depend script [var] [prefix] > +# Force a service to start if it's not already, regardless > +# if it's enabled. Intended for use by services > +# to resolve dependency issues. When rc_fast is set, > +# only force the dependency if var is set to "NO". It seems useful here to say why: because it will have been started anyway if var is set to "YES". > +# $1 - script name > +# $2 - variable name if the variable to test is not ${1}_enable > +# $3 - prefix path if not the default /etc/rc.d While useful, an alternate script directory cannot work because force_depend does not support it. > +# > +fast_depend() > +{ > + _script="$1" > + _variable="${2:-${1}_enable}" > + _prefix="${3:-/etc/rc.d}" > + > + if { [ -z "${rc_fast}" ] || ! checkyesno ${_variable}; } && > + ! ${_prefix}/${_script} forcestatus 1>/dev/null 2>&1 > + then > + force_depend ${_script} || return 1 > + fi > +} > + > +# > # reverse_list list > # print the list in reverse order > # -- Jilles Tjoelker From owner-freebsd-rc@FreeBSD.ORG Fri Aug 26 22:06:47 2011 Return-Path: Delivered-To: freebsd-rc@FreeBSD.ORG Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id B7C6B106564A for ; Fri, 26 Aug 2011 22:06:47 +0000 (UTC) (envelope-from delphij@delphij.net) Received: from anubis.delphij.net (anubis.delphij.net [IPv6:2001:470:1:117::25]) by mx1.freebsd.org (Postfix) with ESMTP id 98BEE8FC12 for ; Fri, 26 Aug 2011 22:06:47 +0000 (UTC) Received: from delta.delphij.net (drawbridge.ixsystems.com [206.40.55.65]) (using TLSv1 with cipher DHE-RSA-CAMELLIA256-SHA (256/256 bits)) (No client certificate requested) by anubis.delphij.net (Postfix) with ESMTPSA id 3B9B5EE85; Fri, 26 Aug 2011 15:06:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=delphij.net; s=anubis; t=1314396407; bh=oW6aBM6BhSl3Nl9V88qae3/HFlL/j35BAmfGrNEjx3Q=; h=Message-ID:Date:From:Reply-To:MIME-Version:To:CC:Subject: References:In-Reply-To:Content-Type; b=VsnzGek155DjdHqozbMjWgN0mWuz9MiaQjUeWB/GixTVaJe5lWIbkLkcnzHeypF1n 4YZN563VRXvOlfL602mSZO8iZ863YLzBUGS3cg+qO88v+XB2baqxyw9tG+Qb0npsD0 EHqcd0phs/NtJl9S9EDPPWI4/Y237IitQdd3Jwgg= Message-ID: <4E5818F5.809@delphij.net> Date: Fri, 26 Aug 2011 15:06:45 -0700 From: Xin LI Organization: The FreeBSD Project MIME-Version: 1.0 To: Jilles Tjoelker References: <4E50B5E3.90702@delphij.net> <20110821132045.GA3940@stack.nl> <4E541A49.9050207@delphij.net> <20110826214456.GA41095@stack.nl> In-Reply-To: <20110826214456.GA41095@stack.nl> OpenPGP: id=3FCA37C1; url=http://www.delphij.net/delphij.asc Content-Type: multipart/mixed; boundary="------------080006030205030708020100" Cc: freebsd-rc@FreeBSD.ORG, d@delphij.net Subject: Re: [PATCH] Don't test if a service is enabled when it's required X-BeenThere: freebsd-rc@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: d@delphij.net List-Id: "Discussion related to /etc/rc.d design and implementation." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 26 Aug 2011 22:06:47 -0000 This is a multi-part message in MIME format. --------------080006030205030708020100 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA256 Hi, Jilles, Thanks for your comments, I've revised the patchset based on these comments for further review. Cheers, - -- Xin LI https://www.delphij.net/ FreeBSD - The Power to Serve! Live free or die -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.18 (FreeBSD) iQEcBAEBCAAGBQJOWBj1AAoJEATO+BI/yjfBIn8IALkfN3D+CRJO0eXvcW3GcXvX U1DWvKQ9y0cs6Ieo7no4B8d6UC/pz/EjXc0+lYuHNsKOv0zmkthTdz85xIVr6yOo 0Thx5uRQodNKs74LuL1iFp5vRXfNfihTSjhYuF77Rk4Urz7YkehYXO1EiD5727Oq eVql2Krvt+m71HzZddAOAH1Pc7FQDKMYGV05RhieX8CUtaYYaUfRmlDvfN2CuIES 1VWG54Bp46IDktYHwzzGMzxyX9Y3y1E0FGeppcHPTvuZBP+smkY4dQY1Hir5GIeY /SJQH22VFl9GhtHQ6KSV/GvVR80Lv7m0y8crgbFmYDXQvnovXVABTX0z0LWBWCM= =TDNh -----END PGP SIGNATURE----- --------------080006030205030708020100 Content-Type: text/plain; name="rc-fastdepend-2.diff" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="rc-fastdepend-2.diff" Index: etc/rc.d/amd =================================================================== --- etc/rc.d/amd (revision 225199) +++ etc/rc.d/amd (working copy) @@ -19,16 +19,9 @@ extra_commands="reload" amd_precmd() { - if ! checkyesno nfs_client_enable; then - force_depend nfsclient || return 1 - fi + fast_depend nfsclient nfs_client_enable || return 1 + fast_depend rpcbind || return 1 - if ! checkyesno rpcbind_enable && \ - ! /etc/rc.d/rpcbind forcestatus 1>/dev/null 2>&1 - then - force_depend rpcbind || return 1 - fi - case ${amd_map_program} in [Nn][Oo] | '') ;; Index: etc/rc.d/ypset =================================================================== --- etc/rc.d/ypset (revision 225199) +++ etc/rc.d/ypset (working copy) @@ -20,16 +20,8 @@ ypset_precmd() { local _domain - if ! checkyesno rpcbind_enable && \ - ! /etc/rc.d/rpcbind forcestatus 1>/dev/null 2>&1 - then - force_depend rpcbind || return 1 - fi - if ! checkyesno nis_client_enable && \ - ! /etc/rc.d/ypbind forcestatus 1>/dev/null 2>&1 - then - force_depend ypbind || return 1 - fi + fast_depend rpcbind || return 1 + fast_depend ypbind nis_client_enable || return 1 _domain=`domainname` if [ -z "$_domain" ]; then Index: etc/rc.d/mountd =================================================================== --- etc/rc.d/mountd (revision 225199) +++ etc/rc.d/mountd (working copy) @@ -19,11 +19,7 @@ extra_commands="reload" mountd_precmd() { - if ! checkyesno rpcbind_enable && \ - ! /etc/rc.d/rpcbind forcestatus 1>/dev/null 2>&1 - then - force_depend rpcbind || return 1 - fi + fast_depend rpcbind || return 1 # mountd flags will differ depending on rc.conf settings # Index: etc/rc.d/yppasswdd =================================================================== --- etc/rc.d/yppasswdd (revision 225199) +++ etc/rc.d/yppasswdd (working copy) @@ -22,16 +22,9 @@ yppasswdd_precmd() { local _domain - if ! checkyesno rpcbind_enable && \ - ! /etc/rc.d/rpcbind forcestatus 1>/dev/null 2>&1 - then - force_depend rpcbind || return 1 - fi - if ! checkyesno nis_server_enable && \ - ! /etc/rc.d/ypserv forcestatus 1>/dev/null 2>&1 - then - force_depend ypserv || return 1 - fi + fast_depend rpcbind || return 1 + fast_depend ypserv nis_server_enable || return 1 + _domain=`domainname` if [ -z "$_domain" ]; then warn "NIS domainname(1) is not set." Index: etc/rc.d/keyserv =================================================================== --- etc/rc.d/keyserv (revision 225199) +++ etc/rc.d/keyserv (working copy) @@ -19,11 +19,7 @@ start_precmd="keyserv_prestart" keyserv_prestart() { - if ! checkyesno rpcbind_enable && \ - ! /etc/rc.d/rpcbind forcestatus 1>/dev/null 2>&1 - then - force_depend rpcbind || return 1 - fi + fast_depend rpcbind || return 1 return 0 } Index: etc/rc.d/ypupdated =================================================================== --- etc/rc.d/ypupdated (revision 225199) +++ etc/rc.d/ypupdated (working copy) @@ -18,16 +18,8 @@ rpc_ypupdated_precmd() { local _domain - if ! checkyesno rpcbind_enable && \ - ! /etc/rc.d/rpcbind forcestatus 1>/dev/null 2>&1 - then - force_depend rpcbind || return 1 - fi - if ! checkyesno nis_server_enable && \ - ! /etc/rc.d/ypserv forcestatus 1>/dev/null 2>&1 - then - force_depend ypserv || return 1 - fi + fast_depend rpcbind || return 1 + fast_depend ypserv nis_server_enable || return 1 _domain=`domainname` if [ -z "$_domain" ]; then Index: etc/rc.d/apmd =================================================================== --- etc/rc.d/apmd (revision 225199) +++ etc/rc.d/apmd (working copy) @@ -20,11 +20,7 @@ apmd_prestart() case `${SYSCTL_N} hw.machine_arch` in i386) # Enable apm if it is not already enabled - if ! checkyesno apm_enable && \ - ! /etc/rc.d/apm forcestatus 1>/dev/null 2>&1 - then - force_depend apm || return 1 - fi + fast_depend apm || return 1 # Warn user about acpi apm compatibility support which # does not work with apmd. Index: etc/rc.d/nfsd =================================================================== --- etc/rc.d/nfsd (revision 225199) +++ etc/rc.d/nfsd (working copy) @@ -43,30 +43,16 @@ nfsd_precmd() fi if checkyesno nfsv4_server_enable; then - if ! checkyesno nfsuserd_enable && \ - ! /etc/rc.d/nfsuserd forcestatus 1>/dev/null 2>&1 - then - if ! force_depend nfsuserd; then - err 1 "Cannot run nfsuserd" - fi - fi + fast_depend nfsuserd || err 1 "Cannot run nfsuserd" else echo 'NFSv4 is disabled' sysctl vfs.nfsd.server_max_nfsvers=3 > /dev/null fi fi - if ! checkyesno rpcbind_enable && \ - ! /etc/rc.d/rpcbind forcestatus 1>/dev/null 2>&1 - then - force_depend rpcbind || return 1 - fi + fast_depend rpcbind || return 1 + fast_depend mountd || return 1 - if ! checkyesno mountd_enable && \ - ! /etc/rc.d/mountd forcestatus 1>/dev/null 2>&1 - then - force_depend mountd || return 1 - fi return 0 } Index: etc/rc.d/lockd =================================================================== --- etc/rc.d/lockd (revision 225199) +++ etc/rc.d/lockd (working copy) @@ -30,11 +30,7 @@ lockd_precmd() then ret=1 fi - if ! checkyesno rpcbind_enable && \ - ! /etc/rc.d/rpcbind forcestatus 1>/dev/null 2>&1 - then - force_depend rpcbind || ret=1 - fi + fast_depend rpcbind || ret=1 rc_flags=${rpc_lockd_flags} return ${ret} } Index: etc/rc.d/statd =================================================================== --- etc/rc.d/statd (revision 225199) +++ etc/rc.d/statd (working copy) @@ -30,11 +30,7 @@ statd_precmd() then ret=1 fi - if ! checkyesno rpcbind_enable && \ - ! /etc/rc.d/rpcbind forcestatus 1>/dev/null 2>&1 - then - force_depend rpcbind || ret=1 - fi + fast_depend rpcbind || ret=1 rc_flags=${rpc_statd_flags} return ${ret} } Index: etc/rc.d/ypbind =================================================================== --- etc/rc.d/ypbind (revision 225199) +++ etc/rc.d/ypbind (working copy) @@ -22,11 +22,7 @@ ypbind_precmd() { local _domain - if ! checkyesno rpcbind_enable && \ - ! /etc/rc.d/rpcbind forcestatus 1>/dev/null 2>&1 - then - force_depend rpcbind || return 1 - fi + fast_depend rpcbind || return 1 _domain=`domainname` if [ -z "$_domain" ]; then Index: etc/rc.d/ypserv =================================================================== --- etc/rc.d/ypserv (revision 225199) +++ etc/rc.d/ypserv (working copy) @@ -21,11 +21,7 @@ ypserv_prestart() { local _domain - if ! checkyesno rpcbind_enable && \ - ! /etc/rc.d/rpcbind forcestatus 1>/dev/null 2>&1 - then - force_depend rpcbind || return 1 - fi + fast_depend rpcbind || return 1 _domain=`domainname` if [ -z "$_domain" ]; then warn "NIS domainname(1) is not set." Index: etc/rc.d/ypxfrd =================================================================== --- etc/rc.d/ypxfrd (revision 225199) +++ etc/rc.d/ypxfrd (working copy) @@ -20,16 +20,8 @@ ypxfrd_precmd() { local _domain - if ! checkyesno rpcbind_enable && \ - ! /etc/rc.d/rpcbind forcestatus 1>/dev/null 2>&1 - then - force_depend rpcbind || return 1 - fi - if ! checkyesno nis_server_enable && \ - ! /etc/rc.d/ypserv forcestatus 1>/dev/null 2>&1 - then - force_depend ypserv || return 1 - fi + fast_depend rpcbind || return 1 + fast_depend ypserv nis_server_enable || return 1 _domain=`domainname` if [ -z "$_domain" ]; then Index: etc/rc.subr =================================================================== --- etc/rc.subr (revision 225199) +++ etc/rc.subr (working copy) @@ -159,6 +159,29 @@ checkyesno() } # +# fast_depend script [var] +# Force a service to start if it's not already, regardless +# if it's enabled. Intended for use by services +# to resolve dependency issues. When rc_fast is set, +# only force the dependency if var is set to "NO", +# as the dependency must already been started otherwise. +# +# $1 - script name +# $2 - variable name if the variable to test is not ${1}_enable +# +fast_depend() +{ + _script="$1" + _variable="${2:-${1}_enable}" + + if { [ -z "${rc_fast}" ] || ! checkyesno ${_variable}; } && + ! /etc/rc.d/${_script} forcestatus 1>/dev/null 2>&1 + then + force_depend ${_script} || return 1 + fi +} + +# # reverse_list list # print the list in reverse order # --------------080006030205030708020100-- From owner-freebsd-rc@FreeBSD.ORG Sat Aug 27 18:03:42 2011 Return-Path: Delivered-To: freebsd-rc@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id C0C491065672; Sat, 27 Aug 2011 18:03:42 +0000 (UTC) (envelope-from Devin.Teske@fisglobal.com) Received: from mx1.fisglobal.com (mx1.fisglobal.com [199.200.24.190]) by mx1.freebsd.org (Postfix) with ESMTP id 84D2C8FC13; Sat, 27 Aug 2011 18:03:42 +0000 (UTC) Received: from SBHFISLREXT03 ([10.132.254.62]) by SCSFISLTC02 (8.14.3/8.14.3) with ESMTP id p7RHlGYR023236; Sat, 27 Aug 2011 12:47:16 -0500 Received: from sbhfisltcgw01.FNFIS.COM (Not Verified[10.132.248.121]) by SBHFISLREXT03 with MailMarshal (v6, 5, 4, 7535) id ; Sat, 27 Aug 2011 12:47:43 -0500 Received: from smtp.fisglobal.com ([10.132.206.31]) by sbhfisltcgw01.FNFIS.COM with Microsoft SMTPSVC(6.0.3790.4675); Sat, 27 Aug 2011 12:47:15 -0500 Received: from [10.0.0.104] (10.14.152.54) by smtp.fisglobal.com (10.132.206.31) with Microsoft SMTP Server (TLS) id 14.1.289.1; Sat, 27 Aug 2011 12:47:08 -0500 From: Devin Teske Content-Type: multipart/mixed; boundary="Apple-Mail-25--994899661" Date: Sat, 27 Aug 2011 10:47:12 -0700 Message-ID: To: FreeBSD Hackers MIME-Version: 1.0 (Apple Message framework v1084) X-Mailer: Apple Mail (2.1084) X-Originating-IP: [10.14.152.54] X-OriginalArrivalTime: 27 Aug 2011 17:47:15.0198 (UTC) FILETIME=[5B7909E0:01CC64E1] Cc: Julian Elischer , FreeBSD Jail , FreeBSD RC Subject: [PATCH] Add /etc/rc.d/vimage startup script for creating vnet jails X-BeenThere: freebsd-rc@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "Discussion related to /etc/rc.d design and implementation." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 27 Aug 2011 18:03:42 -0000 --Apple-Mail-25--994899661 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="ISO-8859-1" Hi All, I'd like to submit a patch for review (attached) that adds a new /etc/rc.d = script named "vimage". _____________ The information contained in this message is proprietary and/or confidentia= l. If you are not the intended recipient, please: (i) delete the message an= d all copies; (ii) do not disclose, distribute or use the message in any ma= nner; and (iii) notify the sender immediately. In addition, please be aware= that any message addressed to our domain is subject to archiving and revie= w by persons other than the intended recipient. Thank you. _____________ --Apple-Mail-25--994899661 Content-Disposition: attachment; filename="vimage_rc.20110827104104.patch" Content-Type: application/octet-stream; name="vimage_rc.20110827104104.patch" Content-Transfer-Encoding: 7bit --- etc/defaults/rc.conf.orig Fri Aug 26 20:36:52 2011 +++ etc/defaults/rc.conf Sat Aug 27 10:34:54 2011 @@ -697,6 +697,43 @@ #jail_example_flags="-l -U root" # flags for jail(8) ############################################################## +### Vimage Configuration ##################################### +############################################################## +vimage_enable="NO" # Set to NO to disable starting of any vimages +vimage_parallel_start="NO" # Start vimages in the background +vimage_list="" # Space separated list of names of vimages +vimage_set_hostname_allow="YES" # Allow root user in a vimage to change its hostname +vimage_socket_unixiproute_only="NO" # Route only TCP/IP within a vimage +vimage_sysvipc_allow="YES" # Allow SystemV IPC use from within a vimage + +# +# To use rc's built-in vimage infrastructure create entries for +# each vimage, specified in vimage_list, with the following variables. +# NOTES: +# - replace 'example' with the vimage's name. +# - except rootdir, and hostname, all of the following variables may be made +# global vimage variables if you don't specify a vimage name (ie. +# vimage_fib, vimage_devfs_ruleset). +# +#vimage_example_rootdir="/usr/jail/default" # Vimage's root directory +#vimage_example_hostname="default.domain.com" # Vimage's hostname +#vimage_example_vnets="epair0b" # Vimage's vnet interfaces +#vimage_example_exec_start="/bin/sh /etc/rc" # command to execute in vimage for starting +#vimage_example_services="sshd ipfw zfs" # services to start after starting vimage +#vimage_example_exec_afterstart0="/bin/sh command" # command to execute after the one for + # starting the vimage. More than one can + # be specified using a trailing number +#vimage_example_exec_stop="/bin/sh /etc/rc.shutdown" # command to execute in vimage for stopping +#vimage_example_devfs_enable="NO" # mount devfs in the vimage +#vimage_example_devfs_ruleset="ruleset_name" # devfs ruleset to apply to vimage - + # usually you want "devfsrules_jail". +#vimage_example_fdescfs_enable="NO" # mount fdescfs in the vimage +#vimage_example_procfs_enable="NO" # mount procfs in vimage +#vimage_example_mount_enable="NO" # mount/umount vimage's fs +#vimage_example_fstab="" # fstab(5) for mount/umount +#vimage_example_flags="-l -U root" # flags for jail(8) + +############################################################## ### Define source_rc_confs, the mechanism used by /etc/rc.* ## ### scripts to source rc_conf_files overrides safely. ## ############################################################## --- etc/rc.d/vimage.orig Sat Aug 27 10:26:53 2011 +++ etc/rc.d/vimage Sat Aug 27 10:36:03 2011 @@ -0,0 +1,551 @@ +#!/bin/sh +# +# $FreeBSD$ +# + +# PROVIDE: vimage +# REQUIRE: LOGIN cleanvar +# BEFORE: securelevel +# KEYWORD: nojail shutdown + +# WARNING: This script deals with untrusted data (the data and +# processes inside the vimage) and care must be taken when changing the +# code related to this! If you have any doubt whether a change is +# correct and have security impact, please get the patch reviewed by +# the FreeBSD Security Team prior to commit. + +. /etc/rc.subr + +name="vimage" +rcvar=`set_rcvar` + +start_precmd="vimage_prestart" +start_cmd="vimage_start" +stop_cmd="vimage_stop" + +# init_variables _v +# Initialize the various vimage variables for vimage _v. +# +init_variables() +{ + _v="$1" + + if [ -z "$_v" ]; then + warn "init_variables: you must specify a vimage" + return + fi + + eval _rootdir=\"\$vimage_${_v}_rootdir\" + _devdir="${_rootdir}/dev" + _fdescdir="${_devdir}/fd" + _procdir="${_rootdir}/proc" + eval _hostname=\"\$vimage_${_v}_hostname\" + eval _vnets=\"\$vimage_${_v}_vnets\" + eval _exec=\"\$vimage_${_v}_exec\" + + i=0 + while : ; do + eval _exec_prestart${i}=\"\${vimage_${_v}_exec_prestart${i}:-\${vimage_exec_prestart${i}}}\" + [ -z "$(eval echo \"\$_exec_prestart${i}\")" ] && break + i=$((i + 1)) + done + + eval _exec_start=\"\${vimage_${_v}_exec_start:-${vimage_exec_start}}\" + eval _services=\"\${vimage_${_v}_services:-${vimage_services}}\" + + i=1 + while : ; do + eval _exec_afterstart${i}=\"\${vimage_${_v}_exec_afterstart${i}:-\${vimage_exec_afterstart${i}}}\" + [ -z "$(eval echo \"\$_exec_afterstart${i}\")" ] && break + i=$((i + 1)) + done + + i=0 + while : ; do + eval _exec_poststart${i}=\"\${vimage_${_v}_exec_poststart${i}:-\${vimage_exec_poststart${i}}}\" + [ -z "$(eval echo \"\$_exec_poststart${i}\")" ] && break + i=$((i + 1)) + done + + i=0 + while : ; do + eval _exec_prestop${i}=\"\${vimage_${_v}_exec_prestop${i}:-\${vimage_exec_prestop${i}}}\" + [ -z "$(eval echo \"\$_exec_prestop${i}\")" ] && break + i=$((i + 1)) + done + + eval _exec_stop=\"\${vimage_${_v}_exec_stop:-${vimage_exec_stop}}\" + + i=0 + while : ; do + eval _exec_poststop${i}=\"\${vimage_${_v}_exec_poststop${i}:-\${vimage_exec_poststop${i}}}\" + [ -z "$(eval echo \"\$_exec_poststop${i}\")" ] && break + i=$((i + 1)) + done + + if [ -n "${_exec}" ]; then + # simple/backward-compatible execution + _exec_start="${_exec}" + _exec_stop="" + else + # flexible execution + if [ -z "${_exec_start}" ]; then + _exec_start="/bin/sh /etc/rc" + if [ -z "${_exec_stop}" ]; then + _exec_stop="/bin/sh /etc/rc.shutdown" + fi + fi + fi + + # The default jail ruleset will be used by rc.subr if none is specified. + eval _ruleset=\"\${vimage_${_v}_devfs_ruleset:-${vimage_devfs_ruleset}}\" + eval _devfs=\"\${vimage_${_v}_devfs_enable:-${vimage_devfs_enable}}\" + [ -z "${_devfs}" ] && _devfs="NO" + eval _fdescfs=\"\${vimage_${_v}_fdescfs_enable:-${vimage_fdescfs_enable}}\" + [ -z "${_fdescfs}" ] && _fdescfs="NO" + eval _procfs=\"\${vimage_${_v}_procfs_enable:-${vimage_procfs_enable}}\" + [ -z "${_procfs}" ] && _procfs="NO" + + eval _mount=\"\${vimage_${_v}_mount_enable:-${vimage_mount_enable}}\" + [ -z "${_mount}" ] && _mount="NO" + # "/etc/fstab.${_v}" will be used for {,u}mount(8) if none is specified. + eval _fstab=\"\${vimage_${_v}_fstab:-${vimage_fstab}}\" + [ -z "${_fstab}" ] && _fstab="/etc/fstab.${_v}" + eval _flags=\"\${vimage_${_v}_flags:-${vimage_flags}}\" + [ -z "${_flags}" ] && _flags="-l -U root" + eval _consolelog=\"\${vimage_${_v}_consolelog:-${vimage_consolelog}}\" + [ -z "${_consolelog}" ] && _consolelog="/var/log/vimage_${_v}_console.log" + + # Debugging aid + # + debug "$_v devfs enable: $_devfs" + debug "$_v fdescfs enable: $_fdescfs" + debug "$_v procfs enable: $_procfs" + debug "$_v mount enable: $_mount" + debug "$_v hostname: $_hostname" + debug "$_v vnets: $_vnets" + debug "$_v services: $_services" + debug "$_v root: $_rootdir" + debug "$_v devdir: $_devdir" + debug "$_v fdescdir: $_fdescdir" + debug "$_v procdir: $_procdir" + debug "$_v ruleset: $_ruleset" + debug "$_v fstab: $_fstab" + + i=0 + while : ; do + eval out=\"\${_exec_prestart${i}:-''}\" + if [ -z "$out" ]; then + break + fi + debug "$_v exec pre-start #${i}: ${out}" + i=$((i + 1)) + done + + debug "$_v exec start: $_exec_start" + + i=1 + while : ; do + eval out=\"\${_exec_afterstart${i}:-''}\" + + if [ -z "$out" ]; then + break; + fi + + debug "$_v exec after start #${i}: ${out}" + i=$((i + 1)) + done + + i=0 + while : ; do + eval out=\"\${_exec_poststart${i}:-''}\" + if [ -z "$out" ]; then + break + fi + debug "$_v exec post-start #${i}: ${out}" + i=$((i + 1)) + done + + i=0 + while : ; do + eval out=\"\${_exec_prestop${i}:-''}\" + if [ -z "$out" ]; then + break + fi + debug "$_v exec pre-stop #${i}: ${out}" + i=$((i + 1)) + done + + debug "$_v exec stop: $_exec_stop" + + i=0 + while : ; do + eval out=\"\${_exec_poststop${i}:-''}\" + if [ -z "$out" ]; then + break + fi + debug "$_v exec post-stop #${i}: ${out}" + i=$((i + 1)) + done + + debug "$_v flags: $_flags" + debug "$_v consolelog: $_consolelog" + + if [ -z "${_hostname}" ]; then + err 3 "$name: No hostname has been defined for ${_v}" + fi + if [ -z "${_rootdir}" ]; then + err 3 "$name: No root directory has been defined for ${_v}" + fi +} + +# set_sysctl rc_knob mib msg +# If the mib sysctl is set according to what rc_knob +# specifies, this function does nothing. However if +# rc_knob is set differently than mib, then the mib +# is set accordingly and msg is displayed followed by +# an '=" sign and the word 'YES' or 'NO'. +# +set_sysctl() +{ + _knob="$1" + _mib="$2" + _msg="$3" + + _current=`${SYSCTL} -n $_mib 2>/dev/null` + if checkyesno $_knob ; then + if [ "$_current" -ne 1 ]; then + echo -n " ${_msg}=YES" + ${SYSCTL} 1>/dev/null ${_mib}=1 + fi + else + if [ "$_current" -ne 0 ]; then + echo -n " ${_msg}=NO" + ${SYSCTL} 1>/dev/null ${_mib}=0 + fi + fi +} + +# is_current_mountpoint() +# Is the directory mount point for a currently mounted file +# system? +# +is_current_mountpoint() +{ + local _dir _dir2 + + _dir=$1 + + _dir=`echo $_dir | sed -Ee 's#//+#/#g' -e 's#/$##'` + [ ! -d "${_dir}" ] && return 1 + _dir2=`df ${_dir} | tail +2 | awk '{ print $6 }'` + [ "${_dir}" = "${_dir2}" ] + return $? +} + +# is_symlinked_mountpoint() +# Is a mount point, or any of its parent directories, a symlink? +# +is_symlinked_mountpoint() +{ + local _dir + + _dir=$1 + + [ -L "$_dir" ] && return 0 + [ "$_dir" = "/" ] && return 1 + is_symlinked_mountpoint `dirname $_dir` + return $? +} + +# secure_umount +# Try to unmount a mount point without being vulnerable to +# symlink attacks. +# +secure_umount() +{ + local _dir + + _dir=$1 + + if is_current_mountpoint ${_dir}; then + umount -f ${_dir} >/dev/null 2>&1 + else + debug "Nothing mounted on ${_dir} - not unmounting" + fi +} + + +# vimage_umount_fs +# This function unmounts certain special filesystems in the +# currently selected vimage. The caller must call the init_variables() +# routine before calling this one. +# +vimage_umount_fs() +{ + local _device _mountpt _rest + + if checkyesno _fdescfs; then + if [ -d "${_fdescdir}" ] ; then + secure_umount ${_fdescdir} + fi + fi + if checkyesno _devfs; then + if [ -d "${_devdir}" ] ; then + secure_umount ${_devdir} + fi + fi + if checkyesno _procfs; then + if [ -d "${_procdir}" ] ; then + secure_umount ${_procdir} + fi + fi + if checkyesno _mount; then + [ -f "${_fstab}" ] || warn "${_fstab} does not exist" + tail -r ${_fstab} | while read _device _mountpt _rest; do + case ":${_device}" in + :#* | :) + continue + ;; + esac + secure_umount ${_mountpt} + done + fi +} + +# vimage_mount_fstab() +# Mount file systems from a per vimage fstab while trying to +# secure against symlink attacks at the mount points. +# +# If we are certain we cannot secure against symlink attacks we +# do not mount all of the file systems (since we cannot just not +# mount the file system with the problematic mount point). +# +# The caller must call the init_variables() routine before +# calling this one. +# +vimage_mount_fstab() +{ + local _device _mountpt _rest + + while read _device _mountpt _rest; do + case ":${_device}" in + :#* | :) + continue + ;; + esac + if is_symlinked_mountpoint ${_mountpt}; then + warn "${_mountpt} has symlink as parent - not mounting from ${_fstab}" + return + fi + done <${_fstab} + mount -a -F "${_fstab}" +} + +vimage_prestart() +{ + if checkyesno vimage_parallel_start; then + command_args="&" + fi +} + +vimage_start() +{ + echo -n 'Configuring vimages:' + set_sysctl vimage_set_hostname_allow \ + security.jail.set_hostname_allowed \ + set_hostname_allow + set_sysctl vimage_socket_unixiproute_only \ + security.jail.socket_unixiproute_only unixiproute_only + set_sysctl vimage_sysvipc_allow security.jail.sysvipc_allowed \ + sysvipc_allow + echo '.' + + echo -n 'Starting vimages:' + _tmp_dir=`mktemp -d /tmp/vimage.XXXXXXXX` || \ + err 3 "$name: Can't create temp dir, exiting..." + for _vimage in ${vimage_list} + do + init_variables $_vimage + if [ -f /var/run/vimage_${_vimage}.id ]; then + echo -n " [${_hostname} already running (/var/run/vimage_${_vimage}.id exists)]" + continue; + fi + if checkyesno _mount; then + info "Mounting fstab for vimage ${_vimage} (${_fstab})" + if [ ! -f "${_fstab}" ]; then + err 3 "$name: ${_fstab} does not exist" + fi + vimage_mount_fstab + fi + if checkyesno _devfs; then + # If devfs is already mounted here, skip it. + df -t devfs "${_devdir}" >/dev/null + if [ $? -ne 0 ]; then + if is_symlinked_mountpoint ${_devdir}; then + warn "${_devdir} has symlink as parent - not starting vimage ${_vimage}" + continue + fi + info "Mounting devfs on ${_devdir}" + devfs_mount_jail "${_devdir}" ${_ruleset} + # Transitional symlink for old binaries + if [ ! -L "${_devdir}/log" ]; then + __pwd="`pwd`" + cd "${_devdir}" + ln -sf ../var/run/log log + cd "$__pwd" + fi + fi + + # XXX - It seems symlinks don't work when there + # is a devfs(5) device of the same name. + # Jail console output + # __pwd="`pwd`" + # cd "${_devdir}" + # ln -sf ../var/log/console console + # cd "$__pwd" + fi + if checkyesno _fdescfs; then + if is_symlinked_mountpoint ${_fdescdir}; then + warn "${_fdescdir} has symlink as parent, not mounting" + else + info "Mounting fdescfs on ${_fdescdir}" + mount -t fdescfs fdesc "${_fdescdir}" + fi + fi + if checkyesno _procfs; then + if is_symlinked_mountpoint ${_procdir}; then + warn "${_procdir} has symlink as parent, not mounting" + else + info "Mounting procfs onto ${_procdir}" + if [ -d "${_procdir}" ] ; then + mount -t procfs proc "${_procdir}" + fi + fi + fi + _tmp_vimage=${_tmp_dir}/vimage.$$ + + i=0 + while : ; do + eval out=\"\${_exec_prestart${i}:-''}\" + [ -z "$out" ] && break + ${out} + i=$((i + 1)) + done + + eval jail ${_flags} -i -c vnet name=\"${_vimage}\" \ + host.hostname=\"${_hostname}\" \ + path=\"${_rootdir}\" persist > ${_tmp_vimage} 2>&1 + + if [ "$?" -eq 0 ] ; then + _vimage_id=$(head -1 ${_tmp_vimage}) + + for _vnet in ${_vnets}; do + ifconfig ${_vnet} vnet "${_vimage_id}" \ + > /dev/null 2>&1 + + case ${_vnet} in + epair[0-9]*[ab]) + ifconfig ${_vnet%?}a up \ + > /dev/null 2>&1;; + esac + done + + eval jexec \"${_vimage_id}\" \ + ${_exec_start} >> ${_tmp_vimage} 2>&1 + + for _service in netif routing ${_services}; do + eval jexec \"${_vimage_id}\" /bin/sh \ + /usr/sbin/service ${_service} start \ + >> ${_tmp_vimage} 2>&1 + done + + i=1 + while : ; do + eval out=\"\${_exec_afterstart${i}:-''}\" + + if [ -z "$out" ]; then + break; + fi + + jexec "${_vimage_id}" ${out} + i=$((i + 1)) + done + + echo -n " $_hostname" + tail +2 ${_tmp_vimage} >${_consolelog} + echo ${_vimage_id} > /var/run/vimage_${_vimage}.id + + i=0 + while : ; do + eval out=\"\${_exec_poststart${i}:-''}\" + [ -z "$out" ] && break + ${out} + i=$((i + 1)) + done + else + vimage_umount_fs + echo " cannot start vimage \"${_vimage}\": " + tail +2 ${_tmp_vimage} + fi + rm -f ${_tmp_vimage} + done + rmdir ${_tmp_dir} + echo '.' +} + +vimage_stop() +{ + echo -n 'Stopping vimages:' + for _vimage in ${vimage_list} + do + if [ -f "/var/run/vimage_${_vimage}.id" ]; then + _vimage_id=$(cat /var/run/vimage_${_vimage}.id) + if [ ! -z "${_vimage_id}" ]; then + init_variables $_vimage + + i=0 + while : ; do + eval out=\"\${_exec_prestop${i}:-''}\" + [ -z "$out" ] && break + ${out} + i=$((i + 1)) + done + + if [ -n "${_exec_stop}" ]; then + eval env -i /usr/sbin/jexec ${_vimage_id} ${_exec_stop} \ + >> ${_consolelog} 2>&1 + fi + killall -j ${_vimage_id} -TERM > /dev/null 2>&1 + sleep 1 + killall -j ${_vimage_id} -KILL > /dev/null 2>&1 + vimage_umount_fs + echo -n " $_hostname" + + i=0 + while : ; do + eval out=\"\${_exec_poststop${i}:-''}\" + [ -z "$out" ] && break + ${out} + i=$((i + 1)) + done + fi + rm /var/run/vimage_${_vimage}.id + jail -r ${_vimage} + else + echo " cannot stop vimage ${_vimage}. No vimage id in /var/run" + fi + done + echo '.' +} + +load_rc_config $name +cmd="$1" +if [ $# -gt 0 ]; then + shift +fi +if [ -n "$*" ]; then + vimage_list="$*" +fi + +run_rc_command "${cmd}" --Apple-Mail-25--994899661 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="us-ascii" Essentially, a hand-tweaked version of /etc/rc.d/jail with added/removed = features. Here's how we're using it in /etc/rc.conf to successfully start up = vimage jails at boot time: =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D BEGIN EXCERPT =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= # # Vimages # vimage_enable=3D"YES" # Set to NO to disable starting of any vimages vimage_list=3D" vnettest " # Space-separated list of names of vimages clone_interfaces=3D"" # Initialize list of epair/bridge interfaces = to create # # Global settings for all Vimages # vimage_services=3D"sshd" ####################### VIMAGE: vnettest cloned_interfaces=3D"$cloned_interfaces epair0 bridge0" ifconfig_bridge0=3D"addm fxp0 addm epair0a" vimage_vnettest_rootdir=3D"/usr/jails/vnettest" # root = directory vimage_vnettest_hostname=3D"vnettest.jbsd.vicor.com" # hostname vimage_vnettest_devfs_enable=3D"YES" # mount devfs vimage_vnettest_vnets=3D"epair0b" # network = interfaces ####################### VIMAGE: {name} #cloned_interfaces=3D"$cloned_interfaces epair{N} bridge{N}" #ifconfig_bridge{N}=3D"addm {iface} addm epair{N}a" #vimage_{name}_rootdir=3D"/usr/jails/{name}" # root = directory #vimage_{name}_hostname=3D"{hostname}" # hostname #vimage_{name}_devfs_enable=3D"YES" # mount devfs #vimage_{name}_vnets=3D"epair{N}b" # network = interfaces =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D END EXCERPT =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --=20 Cheers, Devin= --Apple-Mail-25--994899661-- From owner-freebsd-rc@FreeBSD.ORG Sat Aug 27 18:44:02 2011 Return-Path: Delivered-To: freebsd-rc@hub.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id C5915106566C; Sat, 27 Aug 2011 18:44:02 +0000 (UTC) (envelope-from linimon@FreeBSD.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2001:4f8:fff6::28]) by mx1.freebsd.org (Postfix) with ESMTP id 9D5968FC08; Sat, 27 Aug 2011 18:44:02 +0000 (UTC) Received: from freefall.freebsd.org (localhost [127.0.0.1]) by freefall.freebsd.org (8.14.4/8.14.4) with ESMTP id p7RIi2jF022926; Sat, 27 Aug 2011 18:44:02 GMT (envelope-from linimon@freefall.freebsd.org) Received: (from linimon@localhost) by freefall.freebsd.org (8.14.4/8.14.4/Submit) id p7RIi2bf022922; Sat, 27 Aug 2011 18:44:02 GMT (envelope-from linimon) Date: Sat, 27 Aug 2011 18:44:02 GMT Message-Id: <201108271844.p7RIi2bf022922@freefall.freebsd.org> To: linimon@FreeBSD.org, freebsd-bugs@FreeBSD.org, freebsd-rc@FreeBSD.org From: linimon@FreeBSD.org Cc: Subject: Re: conf/160240: rc.d/mdconfig and mdconfig2 should autoset $_type to vnode, when only -f is passed X-BeenThere: freebsd-rc@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "Discussion related to /etc/rc.d design and implementation." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 27 Aug 2011 18:44:02 -0000 Old Synopsis: rc.d/mdconfig(2) should autoset $_type to vnode, when only -f is passed New Synopsis: rc.d/mdconfig and mdconfig2 should autoset $_type to vnode, when only -f is passed Responsible-Changed-From-To: freebsd-bugs->freebsd-rc Responsible-Changed-By: linimon Responsible-Changed-When: Sat Aug 27 18:43:43 UTC 2011 Responsible-Changed-Why: Over to maintainer(s). http://www.freebsd.org/cgi/query-pr.cgi?pr=160240