Print this page
    
NEX-15682 Update dtrace scripts
Reviewed by: Matt Barden <matt.barden@nexenta.com>
Reviewed by: Evan Layton <evan.layton@nexenta.com>
NEX-15682 Update dtrace scripts
Reviewed by: Matt Barden <matt.barden@nexenta.com>
Reviewed by: Evan Layton <evan.layton@nexenta.com>
NEX-3620 need upstream cleanups for smbsrv
Reviewed by: Hans Rosenfeld <hans.rosenfeld@nexenta.com>
SMB-95 improve smbsrv developer tools
SMB-50 User-mode SMB server
 Includes work by these authors:
 Thomas Keiser <thomas.keiser@nexenta.com>
 Albert Lee <trisk@nexenta.com>
    
      
        | Split | 
	Close | 
      
      | Expand all | 
      | Collapse all | 
    
    
          --- old/usr/src/cmd/smbsrv/fksmbd/Watch-all.d
          +++ new/usr/src/cmd/smbsrv/fksmbd/Watch-all.d
   1    1  #!/usr/sbin/dtrace -s
   2    2  /*
   3    3   * This file and its contents are supplied under the terms of the
  
    | 
      ↓ open down ↓ | 
    3 lines elided | 
    
      ↑ open up ↑ | 
  
   4    4   * Common Development and Distribution License ("CDDL"), version 1.0.
   5    5   * You may only use this file in accordance with the terms of version
   6    6   * 1.0 of the CDDL.
   7    7   *
   8    8   * A full copy of the text of the CDDL should have accompanied this
   9    9   * source.  A copy of the CDDL is also available via the Internet at
  10   10   * http://www.illumos.org/license/CDDL.
  11   11   */
  12   12  
  13   13  /*
  14      - * Copyright 2014 Nexenta Systems, Inc.  All rights reserved.
       14 + * Copyright 2017 Nexenta Systems, Inc.  All rights reserved.
  15   15   */
  16   16  
  17   17  /*
  18   18   * User-level dtrace for fksmbd
  19   19   * Usage: dtrace -s Watch-all.d -p $PID
  20   20   */
  21   21  
  22      -#pragma D option flowindent
  23      -
  24   22  self int trace;
  25   23  self int mask;
  26   24  
  27   25  /*
  28   26   * Trace almost everything
  29   27   */
  30   28  pid$target:fksmbd::entry,
  31   29  pid$target:libfksmbsrv.so.1::entry,
  32   30  pid$target:libmlsvc.so.1::entry,
  33   31  pid$target:libmlrpc.so.1::entry,
  34   32  pid$target:libsmbns.so.1::entry,
  35   33  pid$target:libsmb.so.1::entry
  36   34  {
  37      -  self->trace++;
       35 +        self->trace++;
  38   36  }
  39   37  
  40   38  /*
  41   39   * If traced and not masked, print entry/return
  42   40   */
  43   41  pid$target:fksmbd::entry,
  44   42  pid$target:libfksmbsrv.so.1::entry,
  45   43  pid$target:libmlsvc.so.1::entry,
  46   44  pid$target:libmlrpc.so.1::entry,
  47   45  pid$target:libsmbns.so.1::entry,
  48   46  pid$target:libsmb.so.1::entry
  49   47  /self->trace > 0 && self->mask == 0/
  50   48  {
  51      -  printf("\t0x%x", arg0);
  52      -  printf("\t0x%x", arg1);
  53      -  printf("\t0x%x", arg2);
  54      -  printf("\t0x%x", arg3);
       49 +        printf("\t0x%x", arg0);
       50 +        printf("\t0x%x", arg1);
       51 +        printf("\t0x%x", arg2);
       52 +        printf("\t0x%x", arg3);
       53 +        printf("\t0x%x", arg4);
       54 +        printf("\t0x%x", arg5);
  55   55  }
  56   56  
  57   57  /*
  58   58   * Mask (don't print) all function calls below these functions.
  59   59   * These make many boring, repetitive function calls like
  60   60   * smb_mbtowc, mbc_marshal_...
  61   61   */
  62   62  pid$target::fop__getxvattr:entry,
  63   63  pid$target::fop__setxvattr:entry,
  64   64  pid$target::smb_mbc_vdecodef:entry,
  65   65  pid$target::smb_mbc_vencodef:entry,
  66   66  pid$target::smb_msgbuf_decode:entry,
  67   67  pid$target::smb_msgbuf_encode:entry,
  68   68  pid$target::smb_strlwr:entry,
  69   69  pid$target::smb_strupr:entry,
  70   70  pid$target::smb_wcequiv_strlen:entry
  71   71  {
  72      -  self->mask++;
       72 +        self->mask++;
  73   73  }
  74   74  
  75   75  /*
  76   76   * Now inverses of above, unwind order.
  77   77   */
  78   78  
  79   79  pid$target::fop__getxvattr:return,
  80   80  pid$target::fop__setxvattr:return,
  81   81  pid$target::smb_mbc_vdecodef:return,
  82   82  pid$target::smb_mbc_vencodef:return,
  83   83  pid$target::smb_msgbuf_decode:return,
  84   84  pid$target::smb_msgbuf_encode:return,
  85   85  pid$target::smb_strlwr:return,
  86   86  pid$target::smb_strupr:return,
  87   87  pid$target::smb_wcequiv_strlen:return
  88   88  {
  89      -  self->mask--;
       89 +        self->mask--;
  90   90  }
  91   91  
  92   92  pid$target:fksmbd::return,
  93   93  pid$target:libfksmbsrv.so.1::return,
  94   94  pid$target:libmlsvc.so.1::return,
  95   95  pid$target:libmlrpc.so.1::return,
  96   96  pid$target:libsmbns.so.1::return,
  97   97  pid$target:libsmb.so.1::return
  98   98  /self->trace > 0 && self->mask == 0/
  99   99  {
 100      -  printf("\t0x%x", arg1);
      100 +        printf("\t0x%x", arg1);
 101  101  }
 102  102  
 103  103  pid$target:fksmbd::return,
 104  104  pid$target:libfksmbsrv.so.1::return,
 105  105  pid$target:libmlsvc.so.1::return,
 106  106  pid$target:libmlrpc.so.1::return,
 107  107  pid$target:libsmbns.so.1::return,
 108  108  pid$target:libsmb.so.1::return
 109  109  {
 110      -  self->trace--;
      110 +        self->trace--;
      111 +}
      112 +
      113 +/*
      114 + * fksmb dtrace provder
      115 + */
      116 +
      117 +fksmb$target:::smb_start
      118 +{
      119 +        this->pn = copyinstr(arg0);
      120 +        this->sr = (userland pid`smb_request_t *)arg1;
      121 +
      122 +        printf(" %s mid=0x%x uid=0x%x tid=0x%x\n",
      123 +            this->pn,
      124 +            this->sr->smb_mid,
      125 +            this->sr->smb_uid,
      126 +            this->sr->smb_tid);
      127 +}
      128 +
      129 +fksmb$target:::smb_done
      130 +{
      131 +        this->pn = copyinstr(arg0);
      132 +        this->sr = (userland pid`smb_request_t *)arg1;
      133 +
      134 +        printf(" %s mid=0x%x status=0x%x\n",
      135 +            this->pn,
      136 +            this->sr->smb_mid,
      137 +            this->sr->smb_error.status);
      138 +}
      139 +
      140 +fksmb$target:::smb2_start
      141 +{
      142 +        this->pn = copyinstr(arg0);
      143 +        this->sr = (userland pid`smb_request_t *)arg1;
      144 +
      145 +        printf(" %s mid=0x%x uid=0x%x tid=0x%x\n",
      146 +            this->pn,
      147 +            this->sr->smb2_messageid,
      148 +            this->sr->smb2_ssnid,
      149 +            this->sr->smb_tid);
      150 +}
      151 +
      152 +fksmb$target:::smb2_done
      153 +{
      154 +        this->pn = copyinstr(arg0);
      155 +        this->sr = (userland pid`smb_request_t *)arg1;
      156 +
      157 +        printf(" %s mid=0x%x status=0x%x\n",
      158 +            this->pn,
      159 +            this->sr->smb2_messageid,
      160 +            this->sr->smb2_status);
 111  161  }
    
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX