From nobody@FreeBSD.org  Thu Oct 13 17:57:52 2011
Return-Path: <nobody@FreeBSD.org>
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id D5692106566B
	for <freebsd-gnats-submit@FreeBSD.org>; Thu, 13 Oct 2011 17:57:52 +0000 (UTC)
	(envelope-from nobody@FreeBSD.org)
Received: from red.freebsd.org (red.freebsd.org [IPv6:2001:4f8:fff6::22])
	by mx1.freebsd.org (Postfix) with ESMTP id AC8668FC12
	for <freebsd-gnats-submit@FreeBSD.org>; Thu, 13 Oct 2011 17:57:52 +0000 (UTC)
Received: from red.freebsd.org (localhost [127.0.0.1])
	by red.freebsd.org (8.14.4/8.14.4) with ESMTP id p9DHvq4U081420
	for <freebsd-gnats-submit@FreeBSD.org>; Thu, 13 Oct 2011 17:57:52 GMT
	(envelope-from nobody@red.freebsd.org)
Received: (from nobody@localhost)
	by red.freebsd.org (8.14.4/8.14.4/Submit) id p9DHvql9081419;
	Thu, 13 Oct 2011 17:57:52 GMT
	(envelope-from nobody)
Message-Id: <201110131757.p9DHvql9081419@red.freebsd.org>
Date: Thu, 13 Oct 2011 17:57:52 GMT
From: Arnaud Lacombe <lacombar@gmail.com>
To: freebsd-gnats-submit@FreeBSD.org
Subject: Timestamp missing from msgbuf
X-Send-Pr-Version: www-3.1
X-GNATS-Notify:

>Number:         161553
>Category:       kern
>Synopsis:       Timestamp missing from msgbuf
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    eadler
>State:          closed
>Quarter:        
>Keywords:       
>Date-Required:  
>Class:          change-request
>Submitter-Id:   current-users
>Arrival-Date:   Thu Oct 13 18:00:22 UTC 2011
>Closed-Date:    Tue Apr 10 01:39:11 UTC 2012
>Last-Modified:  Mon Apr 23 22:40:08 UTC 2012
>Originator:     Arnaud Lacombe
>Release:        10-current
>Organization:
n/a
>Environment:
>Description:
There is many case recently when I really wished timestamp were present in the
post-mortem msgbuf. Such situation could be when userland application segfault
potentially triggering a panic/crash, or have information about the time-wise
location of a given message (kernel or userland).
>How-To-Repeat:

>Fix:


>Release-Note:
>Audit-Trail:

From: Arnaud Lacombe <lacombar@gmail.com>
To: bug-followup@FreeBSD.org, lacombar@gmail.com
Cc:  
Subject: Re: kern/161553: Timestamp missing from msgbuf
Date: Thu, 13 Oct 2011 14:07:08 -0400

 --0016e6dab5204d792204af320221
 Content-Type: text/plain; charset=ISO-8859-1
 
 attach patch.
 
 --0016e6dab5204d792204af320221
 Content-Type: text/x-patch; charset=US-ASCII; name="msgbuf-timestamp.diff"
 Content-Disposition: attachment; filename="msgbuf-timestamp.diff"
 Content-Transfer-Encoding: base64
 X-Attachment-Id: f_gtq291ls0
 
 ZGlmZiAtLWdpdCBhL3N5cy9rZXJuL3N1YnJfbXNnYnVmLmMgYi9zeXMva2Vybi9zdWJyX21zZ2J1
 Zi5jCmluZGV4IGNkOWM1NTEuLmIyZjBlMWEgMTAwNjQ0Ci0tLSBhL3N5cy9rZXJuL3N1YnJfbXNn
 YnVmLmMKKysrIGIvc3lzL2tlcm4vc3Vicl9tc2didWYuYwpAQCAtMzQsNiArMzQsNyBAQAogI2lu
 Y2x1ZGUgPHN5cy9sb2NrLmg+CiAjaW5jbHVkZSA8c3lzL211dGV4Lmg+CiAjaW5jbHVkZSA8c3lz
 L21zZ2J1Zi5oPgorI2luY2x1ZGUgPHN5cy9zeXNjdGwuaD4KIAogLyoKICAqIE1heGltdW0gbnVt
 YmVyIGNvbnZlcnNpb24gYnVmZmVyIGxlbmd0aDogdWludG1heF90IGluIGJhc2UgMiwgcGx1cyA8
 PgpAQCAtNDcsNiArNDgsMTMgQEAKIHN0YXRpYyB1X2ludCBtc2didWZfY2tzdW0oc3RydWN0IG1z
 Z2J1ZiAqbWJwKTsKIAogLyoKKyAqCisgKi8KK3N0YXRpYyBpbnQgbXNnYnVmX3Nob3dfdGltZXN0
 YW1wID0gMTsKK1NZU0NUTF9JTlQoX2tlcm4sIE9JRF9BVVRPLCBtc2didWZfc2hvd190aW1lc3Rh
 bXAsIENUTEZMQUdfUlcsCisgICAgJm1zZ2J1Zl9zaG93X3RpbWVzdGFtcCwgMCwgIlNob3cgdGlt
 ZXN0YW1wIGluIG1zZ2J1ZiIpOworCisvKgogICogSW5pdGlhbGl6ZSBhIG1lc3NhZ2UgYnVmZmVy
 IG9mIHRoZSBzcGVjaWZpZWQgc2l6ZSBhdCB0aGUgc3BlY2lmaWVkCiAgKiBsb2NhdGlvbi4gVGhp
 cyBhbHNvIHplcm9zIHRoZSBidWZmZXIgYXJlYS4KICAqLwpAQCAtNjAsNyArNjgsNyBAQCBtc2di
 dWZfaW5pdChzdHJ1Y3QgbXNnYnVmICptYnAsIHZvaWQgKnB0ciwgaW50IHNpemUpCiAJbXNnYnVm
 X2NsZWFyKG1icCk7CiAJbWJwLT5tc2dfbWFnaWMgPSBNU0dfTUFHSUM7CiAJbWJwLT5tc2dfbGFz
 dHByaSA9IC0xOwotCW1icC0+bXNnX25lZWRzbmwgPSAwOworCW1icC0+bXNnX2ZsYWdzID0gMDsK
 IAliemVybygmbWJwLT5tc2dfbG9jaywgc2l6ZW9mKG1icC0+bXNnX2xvY2spKTsKIAltdHhfaW5p
 dCgmbWJwLT5tc2dfbG9jaywgIm1zZ2J1ZiIsIE5VTEwsIE1UWF9TUElOKTsKIH0KQEAgLTk1LDcg
 KzEwMyw3IEBAIG1zZ2J1Zl9yZWluaXQoc3RydWN0IG1zZ2J1ZiAqbWJwLCB2b2lkICpwdHIsIGlu
 dCBzaXplKQogCiAJbWJwLT5tc2dfbGFzdHByaSA9IC0xOwogCS8qIEFzc3VtZSB0aGF0IHRoZSBv
 bGQgbWVzc2FnZSBidWZmZXIgZGlkbid0IGVuZCBpbiBhIG5ld2xpbmUuICovCi0JbWJwLT5tc2df
 bmVlZHNubCA9IDE7CisJbWJwLT5tc2dfZmxhZ3MgfD0gTVNHQlVGX05FRUROTDsKIAliemVybygm
 bWJwLT5tc2dfbG9jaywgc2l6ZW9mKG1icC0+bXNnX2xvY2spKTsKIAltdHhfaW5pdCgmbWJwLT5t
 c2dfbG9jaywgIm1zZ2J1ZiIsIE5VTEwsIE1UWF9TUElOKTsKIH0KQEAgLTEzNCw3ICsxNDIsNyBA
 QCBtc2didWZfZ2V0Y291bnQoc3RydWN0IG1zZ2J1ZiAqbWJwKQogICogVGhlIGNhbGxlciBzaG91
 bGQgaG9sZCB0aGUgbWVzc2FnZSBidWZmZXIgc3BpbmxvY2suCiAgKi8KIHN0YXRpYyBpbmxpbmUg
 dm9pZAotbXNnYnVmX2RvX2FkZGNoYXIoc3RydWN0IG1zZ2J1ZiAqbWJwLCB1X2ludCAqc2VxLCBp
 bnQgYykKK19fbXNnYnVmX2RvX2FkZGNoYXIoc3RydWN0IG1zZ2J1ZiAqbWJwLCB1X2ludCAqc2Vx
 LCBpbnQgYykKIHsKIAl1X2ludCBwb3M7CiAKQEAgLTE0OSw2ICsxNTcsMzQgQEAgbXNnYnVmX2Rv
 X2FkZGNoYXIoc3RydWN0IG1zZ2J1ZiAqbWJwLCB1X2ludCAqc2VxLCBpbnQgYykKIAkqc2VxID0g
 TVNHQlVGX1NFUU5PUk0obWJwLCAqc2VxICsgMSk7CiB9CiAKK3N0YXRpYyBpbmxpbmUgdm9pZAor
 bXNnYnVmX2RvX2FkZGNoYXIoc3RydWN0IG1zZ2J1ZiAqbWJwLCB1X2ludCAqc2VxLCBpbnQgYykK
 K3sKKworCWlmIChtc2didWZfc2hvd190aW1lc3RhbXAgJiYgbWJwLT5tc2dfZmxhZ3MgJiBNU0dC
 VUZfTkVYVF9ORVdfTElORSkgeworCQljaGFyIGJ1ZlszMl0sICpidWZwOworCQlzdHJ1Y3QgdGlt
 ZXNwZWMgdHM7CisJCWludCBlcnI7CisKKwkJYnVmWzBdID0gJ1wwJzsKKwkJZ2V0bmFub3VwdGlt
 ZSgmdHMpOworCQllcnIgPSBzbnByaW50ZihidWYsIHNpemVvZiBidWYsICJbJWQuJWxkXSAiLCB0
 cy50dl9zZWMsIHRzLnR2X25zZWMgLyAxMDAwKTsKKworCQlidWZwID0gYnVmOworCQl3aGlsZSAo
 KmJ1ZnAgIT0gJ1wwJykgeworCQkJX19tc2didWZfZG9fYWRkY2hhcihtYnAsIHNlcSwgKmJ1ZnAp
 OworCQkJYnVmcCsrOworCQl9CisKKwkJbWJwLT5tc2dfZmxhZ3MgJj0gfk1TR0JVRl9ORVhUX05F
 V19MSU5FOworCX0KKworCV9fbXNnYnVmX2RvX2FkZGNoYXIobWJwLCBzZXEsIGMpOworCisJaWYg
 KGMgPT0gJ1xuJykKKwkJbWJwLT5tc2dfZmxhZ3MgfD0gTVNHQlVGX05FWFRfTkVXX0xJTkU7Cit9
 CisKIC8qCiAgKiBBcHBlbmQgYSBjaGFyYWN0ZXIgdG8gYSBtZXNzYWdlIGJ1ZmZlci4KICAqLwpA
 QCAtMjA3LDEwICsyNDMsMTAgQEAgbXNnYnVmX2FkZHN0cihzdHJ1Y3QgbXNnYnVmICptYnAsIGlu
 dCBwcmksIGNoYXIgKnN0ciwgaW50IGZpbHRlcl9jcikKIAkgKiBkaWQgbm90IGVuZCB3aXRoIGEg
 bmV3bGluZS4gIElmIHRoYXQgaXMgdGhlIGNhc2UsIHdlIG5lZWQgdG8KIAkgKiBpbnNlcnQgYSBu
 ZXdsaW5lIGJlZm9yZSB0aGlzIHN0cmluZy4KIAkgKi8KLQlpZiAobWJwLT5tc2dfbGFzdHByaSAh
 PSBwcmkgJiYgbWJwLT5tc2dfbmVlZHNubCAhPSAwKSB7CisJaWYgKG1icC0+bXNnX2xhc3Rwcmkg
 IT0gcHJpICYmIChtYnAtPm1zZ19mbGFncyAmIE1TR0JVRl9ORUVETkwpICE9IDApIHsKIAogCQlt
 c2didWZfZG9fYWRkY2hhcihtYnAsICZzZXEsICdcbicpOwotCQltYnAtPm1zZ19uZWVkc25sID0g
 MDsKKwkJbWJwLT5tc2dfZmxhZ3MgJj0gfk1TR0JVRl9ORUVETkw7CiAJfQogCiAJZm9yIChpID0g
 MDsgaSA8IGxlbjsgaSsrKSB7CkBAIC0yMTksNyArMjU1LDcgQEAgbXNnYnVmX2FkZHN0cihzdHJ1
 Y3QgbXNnYnVmICptYnAsIGludCBwcmksIGNoYXIgKnN0ciwgaW50IGZpbHRlcl9jcikKIAkJICog
 KGFuZCB0aGVyZWZvcmUgcHJlZml4X2xlbiAhPSAwKSwgdGhlbiB3ZSBuZWVkIGEgcHJpb3JpdHkK
 IAkJICogcHJlZml4IGZvciB0aGlzIGxpbmUuCiAJCSAqLwotCQlpZiAobWJwLT5tc2dfbmVlZHNu
 bCA9PSAwICYmIHByZWZpeF9sZW4gIT0gMCkgeworCQlpZiAoKG1icC0+bXNnX2ZsYWdzICYgTVNH
 QlVGX05FRUROTCkgPT0gMCAmJiBwcmVmaXhfbGVuICE9IDApIHsKIAkJCWludCBqOwogCiAJCQlm
 b3IgKGogPSAwOyBqIDwgcHJlZml4X2xlbjsgaisrKQpAQCAtMjQyLDkgKzI3OCw5IEBAIG1zZ2J1
 Zl9hZGRzdHIoc3RydWN0IG1zZ2J1ZiAqbWJwLCBpbnQgcHJpLCBjaGFyICpzdHIsIGludCBmaWx0
 ZXJfY3IpCiAJCSAqIHdlIG5lZWQgdG8gaW5zZXJ0IGEgbmV3IHByZWZpeCBvciBpbnNlcnQgYSBu
 ZXdsaW5lIGxhdGVyLgogCQkgKi8KIAkJaWYgKHN0cltpXSA9PSAnXG4nKQotCQkJbWJwLT5tc2df
 bmVlZHNubCA9IDA7CisJCQltYnAtPm1zZ19mbGFncyAmPSB+TVNHQlVGX05FRUROTDsKIAkJZWxz
 ZQotCQkJbWJwLT5tc2dfbmVlZHNubCA9IDE7CisJCQltYnAtPm1zZ19mbGFncyB8PSBNU0dCVUZf
 TkVFRE5MOwogCiAJCW1zZ2J1Zl9kb19hZGRjaGFyKG1icCwgJnNlcSwgc3RyW2ldKTsKIAl9CmRp
 ZmYgLS1naXQgYS9zeXMvc3lzL21zZ2J1Zi5oIGIvc3lzL3N5cy9tc2didWYuaAppbmRleCA2N2Y4
 MGE1Li42MzllZDcyIDEwMDY0NAotLS0gYS9zeXMvc3lzL21zZ2J1Zi5oCisrKyBiL3N5cy9zeXMv
 bXNnYnVmLmgKQEAgLTQ2LDcgKzQ2LDkgQEAgc3RydWN0IG1zZ2J1ZiB7CiAJdV9pbnQJICAgbXNn
 X2Nrc3VtOwkJLyogY2hlY2tzdW0gb2YgY29udGVudHMgKi8KIAl1X2ludAkgICBtc2dfc2VxbW9k
 OwkJLyogcmFuZ2UgZm9yIHNlcXVlbmNlIG51bWJlcnMgKi8KIAlpbnQJICAgbXNnX2xhc3Rwcmk7
 CQkvKiBzYXZlZCBwcmlvcml0eSB2YWx1ZSAqLwotCWludAkgICBtc2dfbmVlZHNubDsJCS8qIHNl
 dCB3aGVuIG5ld2xpbmUgbmVlZGVkICovCisJdWludDMyX3QgICBtc2dfZmxhZ3M7CisjZGVmaW5l
 IE1TR0JVRl9ORUVETkwJCTB4MDEJLyogc2V0IHdoZW4gbmV3bGluZSBuZWVkZWQgKi8KKyNkZWZp
 bmUgTVNHQlVGX05FWFRfTkVXX0xJTkUJMHgwMgogCXN0cnVjdCBtdHggbXNnX2xvY2s7CQkvKiBt
 dXRleCB0byBwcm90ZWN0IHRoZSBidWZmZXIgKi8KIH07CiAK
 --0016e6dab5204d792204af320221--
Responsible-Changed-From-To: freebsd-bugs->eadler 
Responsible-Changed-By: eadler 
Responsible-Changed-When: Thu Jan 26 02:55:28 UTC 2012 
Responsible-Changed-Why:  
it will be a bit before I get to this one but I'd like to make sure 
someone looks at this PR. 

http://www.freebsd.org/cgi/query-pr.cgi?pr=161553 

From: dfilter@FreeBSD.ORG (dfilter service)
To: bug-followup@FreeBSD.org
Cc:  
Subject: Re: kern/161553: commit references a PR
Date: Thu, 16 Feb 2012 05:11:45 +0000 (UTC)

 Author: eadler
 Date: Thu Feb 16 05:11:35 2012
 New Revision: 231814
 URL: http://svn.freebsd.org/changeset/base/231814
 
 Log:
   Add a timestamp to the msgbuf output in order to determine when when
   messages were printed.
   
   This can be enabled with the kern.msgbuf_show_timestamp sysctl
   
   PR:		kern/161553
   Reviewed by:	avg
   Submitted by:	Arnaud Lacombe <lacombar@gmail.com>
   Approved by:	cperciva
   MFC after:	1 month
 
 Modified:
   head/sys/kern/subr_msgbuf.c
   head/sys/sys/msgbuf.h
 
 Modified: head/sys/kern/subr_msgbuf.c
 ==============================================================================
 --- head/sys/kern/subr_msgbuf.c	Thu Feb 16 05:06:07 2012	(r231813)
 +++ head/sys/kern/subr_msgbuf.c	Thu Feb 16 05:11:35 2012	(r231814)
 @@ -32,8 +32,10 @@
  #include <sys/param.h>
  #include <sys/systm.h>
  #include <sys/lock.h>
 +#include <sys/kernel.h>
  #include <sys/mutex.h>
  #include <sys/msgbuf.h>
 +#include <sys/sysctl.h>
  
  /*
   * Maximum number conversion buffer length: uintmax_t in base 2, plus <>
 @@ -47,6 +49,14 @@
  static u_int msgbuf_cksum(struct msgbuf *mbp);
  
  /*
 + *
 + */
 +static int msgbuf_show_timestamp = 0;
 +SYSCTL_INT(_kern, OID_AUTO, msgbuf_show_timestamp, CTLFLAG_RW | CTLFLAG_TUN,
 +    &msgbuf_show_timestamp, 0, "Show timestamp in msgbuf");
 +TUNABLE_INT("kern.msgbuf_show_timestamp", &msgbuf_show_timestamp);
 +
 +/*
   * Initialize a message buffer of the specified size at the specified
   * location. This also zeros the buffer area.
   */
 @@ -60,7 +70,7 @@ msgbuf_init(struct msgbuf *mbp, void *pt
  	msgbuf_clear(mbp);
  	mbp->msg_magic = MSG_MAGIC;
  	mbp->msg_lastpri = -1;
 -	mbp->msg_needsnl = 0;
 +	mbp->msg_flags = 0;
  	bzero(&mbp->msg_lock, sizeof(mbp->msg_lock));
  	mtx_init(&mbp->msg_lock, "msgbuf", NULL, MTX_SPIN);
  }
 @@ -95,7 +105,7 @@ msgbuf_reinit(struct msgbuf *mbp, void *
  
  	mbp->msg_lastpri = -1;
  	/* Assume that the old message buffer didn't end in a newline. */
 -	mbp->msg_needsnl = 1;
 +	mbp->msg_flags |= MSGBUF_NEEDNL;
  	bzero(&mbp->msg_lock, sizeof(mbp->msg_lock));
  	mtx_init(&mbp->msg_lock, "msgbuf", NULL, MTX_SPIN);
  }
 @@ -134,7 +144,7 @@ msgbuf_getcount(struct msgbuf *mbp)
   * The caller should hold the message buffer spinlock.
   */
  static inline void
 -msgbuf_do_addchar(struct msgbuf *mbp, u_int *seq, int c)
 +__msgbuf_do_addchar(struct msgbuf * const mbp, u_int * const seq, const int c)
  {
  	u_int pos;
  
 @@ -149,6 +159,33 @@ msgbuf_do_addchar(struct msgbuf *mbp, u_
  	*seq = MSGBUF_SEQNORM(mbp, *seq + 1);
  }
  
 +static inline void
 +msgbuf_do_addchar(struct msgbuf * const mbp, u_int * const seq, const int c)
 +{
 +
 +	if (msgbuf_show_timestamp &&
 +	    (mbp->msg_flags & MSGBUF_NEXT_NEW_LINE) != 0) {
 +		char buf[32];
 +		char const *bufp;
 +		struct timespec ts;
 +		int err;
 +
 +		getnanouptime(&ts);
 +		err = snprintf(buf, sizeof (buf), "[%jd.%ld] ",
 +		    (intmax_t)ts.tv_sec, ts.tv_nsec / 1000);
 +
 +		for (bufp = buf; *bufp != '\0'; bufp++)
 +			__msgbuf_do_addchar(mbp, seq, *bufp);
 +
 +		mbp->msg_flags &= ~MSGBUF_NEXT_NEW_LINE;
 +	}
 +
 +	__msgbuf_do_addchar(mbp, seq, c);
 +
 +	if (c == '\n')
 +		mbp->msg_flags |= MSGBUF_NEXT_NEW_LINE;
 +}
 +
  /*
   * Append a character to a message buffer.
   */
 @@ -207,10 +244,10 @@ msgbuf_addstr(struct msgbuf *mbp, int pr
  	 * did not end with a newline.  If that is the case, we need to
  	 * insert a newline before this string.
  	 */
 -	if (mbp->msg_lastpri != pri && mbp->msg_needsnl != 0) {
 +	if (mbp->msg_lastpri != pri && (mbp->msg_flags & MSGBUF_NEEDNL) != 0) {
  
  		msgbuf_do_addchar(mbp, &seq, '\n');
 -		mbp->msg_needsnl = 0;
 +		mbp->msg_flags &= ~MSGBUF_NEEDNL;
  	}
  
  	for (i = 0; i < len; i++) {
 @@ -219,7 +256,7 @@ msgbuf_addstr(struct msgbuf *mbp, int pr
  		 * (and therefore prefix_len != 0), then we need a priority
  		 * prefix for this line.
  		 */
 -		if (mbp->msg_needsnl == 0 && prefix_len != 0) {
 +		if ((mbp->msg_flags & MSGBUF_NEEDNL) == 0 && prefix_len != 0) {
  			int j;
  
  			for (j = 0; j < prefix_len; j++)
 @@ -242,9 +279,9 @@ msgbuf_addstr(struct msgbuf *mbp, int pr
  		 * we need to insert a new prefix or insert a newline later.
  		 */
  		if (str[i] == '\n')
 -			mbp->msg_needsnl = 0;
 +			mbp->msg_flags &= ~MSGBUF_NEEDNL;
  		else
 -			mbp->msg_needsnl = 1;
 +			mbp->msg_flags |= MSGBUF_NEEDNL;
  
  		msgbuf_do_addchar(mbp, &seq, str[i]);
  	}
 
 Modified: head/sys/sys/msgbuf.h
 ==============================================================================
 --- head/sys/sys/msgbuf.h	Thu Feb 16 05:06:07 2012	(r231813)
 +++ head/sys/sys/msgbuf.h	Thu Feb 16 05:11:35 2012	(r231814)
 @@ -46,7 +46,9 @@ struct msgbuf {
  	u_int	   msg_cksum;		/* checksum of contents */
  	u_int	   msg_seqmod;		/* range for sequence numbers */
  	int	   msg_lastpri;		/* saved priority value */
 -	int	   msg_needsnl;		/* set when newline needed */
 +	u_int   msg_flags;
 +#define MSGBUF_NEEDNL		0x01	/* set when newline needed */
 +#define MSGBUF_NEXT_NEW_LINE	0x02
  	struct mtx msg_lock;		/* mutex to protect the buffer */
  };
  
 _______________________________________________
 svn-src-all@freebsd.org mailing list
 http://lists.freebsd.org/mailman/listinfo/svn-src-all
 To unsubscribe, send any mail to "svn-src-all-unsubscribe@freebsd.org"
 
State-Changed-From-To: open->patched 
State-Changed-By: eadler 
State-Changed-When: Thu Feb 16 05:21:31 UTC 2012 
State-Changed-Why:  
committed in r231814 

http://www.freebsd.org/cgi/query-pr.cgi?pr=161553 
State-Changed-From-To: patched->analyzed 
State-Changed-By: eadler 
State-Changed-When: Sat Mar 3 03:23:15 UTC 2012 
State-Changed-Why:  
committed patch is incorrect, awaiting review / approval for new version 

http://www.freebsd.org/cgi/query-pr.cgi?pr=161553 

From: Arnaud Lacombe <lacombar@gmail.com>
To: bug-followup@FreeBSD.org, lacombar@gmail.com
Cc:  
Subject: Re: kern/161553: Timestamp missing from msgbuf
Date: Sat, 3 Mar 2012 00:13:43 -0500

 how incorrect ? What/who are you waiting for ? you do not gives much hints.

From: dfilter@FreeBSD.ORG (dfilter service)
To: bug-followup@FreeBSD.org
Cc:  
Subject: Re: kern/161553: commit references a PR
Date: Tue, 10 Apr 2012 01:20:48 +0000 (UTC)

 Author: eadler
 Date: Tue Apr 10 01:20:32 2012
 New Revision: 234075
 URL: http://svn.freebsd.org/changeset/base/234075
 
 Log:
   MFC 231814 233135:
   	Add a timestamp to the msgbuf output in order to determine when when
   	messages were printed.
   
   	This can be enabled with the kern.msgbuf_show_timestamp sysctl
   
   PR:		kern/161553
   Approved by:	cperciva (implicit)
 
 Modified:
   stable/9/sys/kern/subr_msgbuf.c
   stable/9/sys/sys/msgbuf.h
 Directory Properties:
   stable/9/sys/   (props changed)
 
 Modified: stable/9/sys/kern/subr_msgbuf.c
 ==============================================================================
 --- stable/9/sys/kern/subr_msgbuf.c	Mon Apr  9 22:41:19 2012	(r234074)
 +++ stable/9/sys/kern/subr_msgbuf.c	Tue Apr 10 01:20:32 2012	(r234075)
 @@ -32,8 +32,10 @@
  #include <sys/param.h>
  #include <sys/systm.h>
  #include <sys/lock.h>
 +#include <sys/kernel.h>
  #include <sys/mutex.h>
  #include <sys/msgbuf.h>
 +#include <sys/sysctl.h>
  
  /*
   * Maximum number conversion buffer length: uintmax_t in base 2, plus <>
 @@ -47,6 +49,15 @@
  static u_int msgbuf_cksum(struct msgbuf *mbp);
  
  /*
 + * Timestamps in msgbuf are useful when trying to diagnose when core dumps
 + * or other actions occured.
 + */
 +static int msgbuf_show_timestamp = 0;
 +SYSCTL_INT(_kern, OID_AUTO, msgbuf_show_timestamp, CTLFLAG_RW | CTLFLAG_TUN,
 +    &msgbuf_show_timestamp, 0, "Show timestamp in msgbuf");
 +TUNABLE_INT("kern.msgbuf_show_timestamp", &msgbuf_show_timestamp);
 +
 +/*
   * Initialize a message buffer of the specified size at the specified
   * location. This also zeros the buffer area.
   */
 @@ -60,7 +71,7 @@ msgbuf_init(struct msgbuf *mbp, void *pt
  	msgbuf_clear(mbp);
  	mbp->msg_magic = MSG_MAGIC;
  	mbp->msg_lastpri = -1;
 -	mbp->msg_needsnl = 0;
 +	mbp->msg_flags = 0;
  	bzero(&mbp->msg_lock, sizeof(mbp->msg_lock));
  	mtx_init(&mbp->msg_lock, "msgbuf", NULL, MTX_SPIN);
  }
 @@ -95,7 +106,7 @@ msgbuf_reinit(struct msgbuf *mbp, void *
  
  	mbp->msg_lastpri = -1;
  	/* Assume that the old message buffer didn't end in a newline. */
 -	mbp->msg_needsnl = 1;
 +	mbp->msg_flags |= MSGBUF_NEEDNL;
  	bzero(&mbp->msg_lock, sizeof(mbp->msg_lock));
  	mtx_init(&mbp->msg_lock, "msgbuf", NULL, MTX_SPIN);
  }
 @@ -133,19 +144,17 @@ msgbuf_getcount(struct msgbuf *mbp)
   *
   * The caller should hold the message buffer spinlock.
   */
 -static inline void
 -msgbuf_do_addchar(struct msgbuf *mbp, u_int *seq, int c)
 +
 +static void
 +msgbuf_do_addchar(struct msgbuf * const mbp, u_int * const seq, const int c)
  {
  	u_int pos;
  
  	/* Make sure we properly wrap the sequence number. */
  	pos = MSGBUF_SEQ_TO_POS(mbp, *seq);
 -
 -	mbp->msg_cksum += (u_int)c -
 +	mbp->msg_cksum += (u_int)(u_char)c -
  	    (u_int)(u_char)mbp->msg_ptr[pos];
 -
  	mbp->msg_ptr[pos] = c;
 -
  	*seq = MSGBUF_SEQNORM(mbp, *seq + 1);
  }
  
 @@ -176,7 +185,8 @@ msgbuf_addstr(struct msgbuf *mbp, int pr
  	u_int seq;
  	size_t len, prefix_len;
  	char prefix[MAXPRIBUF];
 -	int nl, i;
 +	char buf[32];
 +	int nl, i, j, needtime;
  
  	len = strlen(str);
  	prefix_len = 0;
 @@ -207,25 +217,36 @@ msgbuf_addstr(struct msgbuf *mbp, int pr
  	 * did not end with a newline.  If that is the case, we need to
  	 * insert a newline before this string.
  	 */
 -	if (mbp->msg_lastpri != pri && mbp->msg_needsnl != 0) {
 +	if (mbp->msg_lastpri != pri && (mbp->msg_flags & MSGBUF_NEEDNL) != 0) {
  
  		msgbuf_do_addchar(mbp, &seq, '\n');
 -		mbp->msg_needsnl = 0;
 +		mbp->msg_flags &= ~MSGBUF_NEEDNL;
  	}
  
 +	needtime = 1;
  	for (i = 0; i < len; i++) {
  		/*
  		 * If we just had a newline, and the priority is not -1
  		 * (and therefore prefix_len != 0), then we need a priority
  		 * prefix for this line.
  		 */
 -		if (mbp->msg_needsnl == 0 && prefix_len != 0) {
 +		if ((mbp->msg_flags & MSGBUF_NEEDNL) == 0 && prefix_len != 0) {
  			int j;
  
  			for (j = 0; j < prefix_len; j++)
  				msgbuf_do_addchar(mbp, &seq, prefix[j]);
  		}
  
 +		if (msgbuf_show_timestamp && needtime == 1 &&
 +		    (mbp->msg_flags & MSGBUF_NEEDNL) == 0) {
 +
 +			snprintf(buf, sizeof(buf), "[%jd] ",
 +			    (intmax_t)time_uptime);
 +			for (j = 0; buf[j] != '\0'; j++)
 +				msgbuf_do_addchar(mbp, &seq, buf[j]);
 +			needtime = 0;
 +		}
 +
  		/*
  		 * Don't copy carriage returns if the caller requested
  		 * filtering.
 @@ -242,9 +263,9 @@ msgbuf_addstr(struct msgbuf *mbp, int pr
  		 * we need to insert a new prefix or insert a newline later.
  		 */
  		if (str[i] == '\n')
 -			mbp->msg_needsnl = 0;
 +			mbp->msg_flags &= ~MSGBUF_NEEDNL;
  		else
 -			mbp->msg_needsnl = 1;
 +			mbp->msg_flags |= MSGBUF_NEEDNL;
  
  		msgbuf_do_addchar(mbp, &seq, str[i]);
  	}
 
 Modified: stable/9/sys/sys/msgbuf.h
 ==============================================================================
 --- stable/9/sys/sys/msgbuf.h	Mon Apr  9 22:41:19 2012	(r234074)
 +++ stable/9/sys/sys/msgbuf.h	Tue Apr 10 01:20:32 2012	(r234075)
 @@ -46,7 +46,8 @@ struct msgbuf {
  	u_int	   msg_cksum;		/* checksum of contents */
  	u_int	   msg_seqmod;		/* range for sequence numbers */
  	int	   msg_lastpri;		/* saved priority value */
 -	int	   msg_needsnl;		/* set when newline needed */
 +	u_int      msg_flags;
 +#define MSGBUF_NEEDNL	0x01	/* set when newline needed */
  	struct mtx msg_lock;		/* mutex to protect the buffer */
  };
  
 _______________________________________________
 svn-src-all@freebsd.org mailing list
 http://lists.freebsd.org/mailman/listinfo/svn-src-all
 To unsubscribe, send any mail to "svn-src-all-unsubscribe@freebsd.org"
 
State-Changed-From-To: analyzed->closed 
State-Changed-By: eadler 
State-Changed-When: Tue Apr 10 01:39:10 UTC 2012 
State-Changed-Why:  
committed to 9; I have no interest in MFCing this to 8 or 7 

http://www.freebsd.org/cgi/query-pr.cgi?pr=161553 

From: dfilter@FreeBSD.ORG (dfilter service)
To: bug-followup@FreeBSD.org
Cc:  
Subject: Re: kern/161553: commit references a PR
Date: Mon, 23 Apr 2012 22:38:08 +0000 (UTC)

 Author: eadler
 Date: Mon Apr 23 22:37:48 2012
 New Revision: 234622
 URL: http://svn.freebsd.org/changeset/base/234622
 
 Log:
   MFC r234132:
   	Make the item numbers match the crypt magic number
   
   PR:		kern/161553
   Approved by:	cperciva (implicit)
 
 Modified:
   stable/9/lib/libcrypt/crypt.3
 Directory Properties:
   stable/9/lib/libcrypt/   (props changed)
 
 Modified: stable/9/lib/libcrypt/crypt.3
 ==============================================================================
 --- stable/9/lib/libcrypt/crypt.3	Mon Apr 23 22:06:57 2012	(r234621)
 +++ stable/9/lib/libcrypt/crypt.3	Mon Apr 23 22:37:48 2012	(r234622)
 @@ -189,6 +189,8 @@ Blowfish
  .It
  NT-Hash
  .It
 +(unused)
 +.It
  SHA-256
  .It
  SHA-512
 _______________________________________________
 svn-src-all@freebsd.org mailing list
 http://lists.freebsd.org/mailman/listinfo/svn-src-all
 To unsubscribe, send any mail to "svn-src-all-unsubscribe@freebsd.org"
 
>Unformatted:
