Print this page
NEX-15926 msgids make log entries harder to read
Reviewed by: Dan Fields <dan.fields@nexenta.com>
Reviewed by: Roman Strashkin <roman.strashkin@nexenta.com>

Split Close
Expand all
Collapse all
          --- old/usr/src/uts/common/io/log.c
          +++ new/usr/src/uts/common/io/log.c
↓ open down ↓ 73 lines elided ↑ open up ↑
  74   74  {
  75   75          if (ddi_create_minor_node(devi, "conslog", S_IFCHR,
  76   76              LOG_CONSMIN, DDI_PSEUDO, NULL) == DDI_FAILURE ||
  77   77              ddi_create_minor_node(devi, "log", S_IFCHR,
  78   78              LOG_LOGMIN, DDI_PSEUDO, NULL) == DDI_FAILURE) {
  79   79                  ddi_remove_minor_node(devi, NULL);
  80   80                  return (DDI_FAILURE);
  81   81          }
  82   82          log_devi = devi;
  83   83          log_msgid = ddi_getprop(DDI_DEV_T_ANY, log_devi,
  84      -            DDI_PROP_CANSLEEP, "msgid", 1);
       84 +            DDI_PROP_CANSLEEP, "msgid", 0);
  85   85          return (DDI_SUCCESS);
  86   86  }
  87   87  
  88   88  /*
  89   89   * log_open can be called for either /dev/log or dev/conslog.
  90   90   *
  91   91   * In the /dev/conslog case log_alloc() allocates a new minor device from
  92   92   * its cache.
  93   93   *
  94   94   * In the case of /dev/log, LOG_NUMCLONES devices are pre-allocated at zone
↓ open down ↓ 169 lines elided ↑ open up ↑
 264  264  }
 265  265  
 266  266  static int
 267  267  log_rsrv(queue_t *q)
 268  268  {
 269  269          mblk_t *mp;
 270  270          char *msg, *msgid_start, *msgid_end;
 271  271          size_t idlen;
 272  272  
 273  273          while (canputnext(q) && (mp = getq(q)) != NULL) {
 274      -                if (log_msgid == 0) {
 275      -                        /*
 276      -                         * Strip out the message ID.  If it's a kernel
 277      -                         * SL_CONSOLE message, replace msgid with "unix: ".
 278      -                         */
 279      -                        msg = (char *)mp->b_cont->b_rptr;
 280      -                        if ((msgid_start = strstr(msg, "[ID ")) != NULL &&
 281      -                            (msgid_end = strstr(msgid_start, "] ")) != NULL) {
 282      -                                log_ctl_t *lc = (log_ctl_t *)mp->b_rptr;
 283      -                                if ((lc->flags & SL_CONSOLE) &&
 284      -                                    (lc->pri & LOG_FACMASK) == LOG_KERN)
 285      -                                        msgid_start = msg + snprintf(msg,
 286      -                                            7, "unix: ");
 287      -                                idlen = msgid_end + 2 - msgid_start;
 288      -                                ovbcopy(msg, msg + idlen, msgid_start - msg);
 289      -                                mp->b_cont->b_rptr += idlen;
 290      -                        }
      274 +                msg = (char *)mp->b_cont->b_rptr;
      275 +                if (log_msgid == 0 &&
      276 +                    (msgid_start = strstr(msg, "[ID ")) != NULL &&
      277 +                    (msgid_end = strstr(msgid_start, "] ")) != NULL) {
      278 +                        /* Strip out the message ID */
      279 +                        idlen = msgid_end + 2 - msgid_start;
      280 +                        ovbcopy(msg, msg + idlen, msgid_start - msg);
      281 +                        mp->b_cont->b_rptr += idlen;
 291  282                  }
 292  283                  mp->b_band = 0;
 293  284                  putnext(q, mp);
 294  285          }
 295  286          return (0);
 296  287  }
 297  288  
 298  289  static struct module_info logm_info =
 299  290          { LOG_MID, "LOG", LOG_MINPS, LOG_MAXPS, LOG_HIWAT, LOG_LOWAT };
 300  291  
 301  292  static struct qinit logrinit =
 302  293          { NULL, log_rsrv, log_open, log_close, NULL, &logm_info, NULL };
 303  294  
 304  295  static struct qinit logwinit =
 305  296          { log_wput, NULL, NULL, NULL, NULL, &logm_info, NULL };
 306  297  
 307  298  static struct streamtab loginfo = { &logrinit, &logwinit, NULL, NULL };
 308  299  
 309  300  DDI_DEFINE_STREAM_OPS(log_ops, nulldev, nulldev, log_attach, nodev,
 310      -        nodev, log_info, D_NEW | D_MP | D_MTPERMOD, &loginfo,
 311      -        ddi_quiesce_not_needed);
      301 +    nodev, log_info, D_NEW | D_MP | D_MTPERMOD, &loginfo,
      302 +    ddi_quiesce_not_needed);
 312  303  
 313  304  static struct modldrv modldrv =
 314  305          { &mod_driverops, "streams log driver", &log_ops };
 315  306  
 316  307  static struct modlinkage modlinkage = { MODREV_1, (void *)&modldrv, NULL };
 317  308  
 318  309  int
 319  310  _init()
 320  311  {
 321  312          return (mod_install(&modlinkage));
↓ open down ↓ 13 lines elided ↑ open up ↑
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX