1 #!/usr/sbin/dtrace -s 2 /* 3 * CDDL HEADER START 4 * 5 * The contents of this file are subject to the terms of the 6 * Common Development and Distribution License (the "License"). 7 * You may not use this file except in compliance with the License. 8 * 9 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 10 * or http://www.opensolaris.org/os/licensing. 11 * See the License for the specific language governing permissions 12 * and limitations under the License. 13 * 14 * When distributing Covered Code, include this CDDL HEADER in each 15 * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 16 * If applicable, add the following below this CDDL HEADER, with the 17 * fields enclosed by brackets "[]" replaced with your own identifying 18 * information: Portions Copyright [yyyy] [name of copyright owner] 19 * 20 * CDDL HEADER END 21 */ 22 /* 23 * Copyright 2010 Sun Microsystems, Inc. All rights reserved. 24 * Use is subject to license terms. 25 */ 26 27 /* 28 #pragma D option flowindent 29 */ 30 31 /* 32 * Usage: ./cifs.d -p `pgrep smbd` 33 * 34 * On multi-processor systems, it may be easier to follow the output 35 * if run on a single processor: see psradm. For example, to disable 36 * the second processor on a dual-processor system: psradm -f 1 37 */ 38 39 BEGIN 40 { 41 printf("CIFS Trace Started"); 42 printf("\n\n"); 43 } 44 45 END 46 { 47 printf("CIFS Trace Ended"); 48 printf("\n\n"); 49 } 50 51 sdt:smbsrv::-smb_op*-start 52 { 53 sr = (struct smb_request *)arg0; 54 55 printf("cmd=%d [uid=%d tid=%d]", 56 sr->smb_com, sr->smb_uid, sr->smb_tid); 57 58 self->status = 0; 59 } 60 61 sdt:smbsrv::-smb_op*-done 62 { 63 sr = (struct smb_request *)arg0; 64 65 printf("cmd[%d]: status=0x%08x (class=%d code=%d)", 66 sr->smb_com, sr->smb_error.status, 67 sr->smb_error.errcls, sr->smb_error.errcode); 68 69 self->status = sr->smb_error.status; 70 } 71 72 sdt:smbsrv::-smb_op-SessionSetupX-start 73 { 74 sr = (struct smb_request *)arg0; 75 76 printf("[%s] %s", 77 (sr->session->s_local_port == 139) ? "NBT" : "TCP", 78 (sr->session->s_local_port == 139) ? 79 stringof(sr->session->workstation) : ""); 80 } 81 82 sdt:smbsrv::-smb_op-SessionSetupX-done, 83 sdt:smbsrv::-smb_op-LogoffX-start 84 { 85 sr = (struct smb_request *)arg0; 86 87 printf("uid %d: %s/%s", sr->smb_uid, 88 stringof(sr->uid_user->u_domain), 89 stringof(sr->uid_user->u_name)); 90 } 91 92 sdt:smbsrv::-smb_op-TreeConnectX-start 93 { 94 tcon = (struct tcon *)arg1; 95 96 printf("[%s] %s", 97 stringof(tcon->service), 98 stringof(tcon->path)); 99 } 100 101 sdt:smbsrv::-smb_op-TreeConnectX-done, 102 sdt:smbsrv::-smb_op-TreeDisconnect-start 103 { 104 sr = (struct smb_request *)arg0; 105 106 printf("tid %d: %s", sr->smb_tid, 107 stringof(sr->tid_tree->t_sharename)); 108 discard(self->status); 109 } 110 111 sdt:smbsrv::-smb_op-Open-start, 112 sdt:smbsrv::-smb_op-OpenX-start, 113 sdt:smbsrv::-smb_op-Create-start, 114 sdt:smbsrv::-smb_op-CreateNew-start, 115 sdt:smbsrv::-smb_op-CreateTemporary-start, 116 sdt:smbsrv::-smb_op-CreateDirectory-start, 117 sdt:smbsrv::-smb_op-NtCreateX-start, 118 sdt:smbsrv::-smb_op-NtTransactCreate-start 119 { 120 op = (struct open_param *)arg1; 121 122 printf("%s", stringof(op->fqi.fq_path.pn_path)); 123 } 124 125 sdt:smbsrv::-smb_op-Open-done, 126 sdt:smbsrv::-smb_op-OpenX-done, 127 sdt:smbsrv::-smb_op-Create-done, 128 sdt:smbsrv::-smb_op-CreateNew-done, 129 sdt:smbsrv::-smb_op-CreateTemporary-done, 130 sdt:smbsrv::-smb_op-CreateDirectory-done, 131 sdt:smbsrv::-smb_op-NtCreateX-done, 132 sdt:smbsrv::-smb_op-NtTransactCreate-done 133 { 134 sr = (struct smb_request *)arg0; 135 136 printf("%s: fid=%u", 137 stringof(sr->arg.open.fqi.fq_path.pn_path), sr->smb_fid); 138 } 139 140 sdt:smbsrv::-smb_op-Read-start, 141 sdt:smbsrv::-smb_op-LockAndRead-start, 142 sdt:smbsrv::-smb_op-ReadX-start, 143 sdt:smbsrv::-smb_op-ReadRaw-start, 144 sdt:smbsrv::-smb_op-Write-start, 145 sdt:smbsrv::-smb_op-WriteAndClose-start, 146 sdt:smbsrv::-smb_op-WriteAndUnlock-start, 147 sdt:smbsrv::-smb_op-WriteX-start, 148 sdt:smbsrv::-smb_op-WriteRaw-start 149 { 150 sr = (struct smb_request *)arg0; 151 rw = (smb_rw_param_t *)arg1; 152 153 printf("fid=%d: %u bytes at offset %u", 154 sr->smb_fid, rw->rw_count, rw->rw_offset); 155 } 156 157 sdt:smbsrv::-smb_op-Read-done, 158 sdt:smbsrv::-smb_op-LockAndRead-done, 159 sdt:smbsrv::-smb_op-ReadX-done, 160 sdt:smbsrv::-smb_op-ReadRaw-done 161 /self->status == 0/ 162 { 163 sr = (struct smb_request *)arg0; 164 rw = (smb_rw_param_t *)arg1; 165 166 printf("fid=%d: %u bytes at offset %u", 167 sr->smb_fid, rw->rw_count, rw->rw_offset); 168 } 169 170 sdt:smbsrv::-smb_op-Rename-start 171 { 172 p = (struct dirop *)arg1; 173 174 printf("%s to %s", 175 stringof(p->fqi.fq_path.pn_path), 176 stringof(p->dst_fqi.fq_path.pn_path)); 177 } 178 179 sdt:smbsrv::-smb_op-CheckDirectory-start, 180 sdt:smbsrv::-smb_op-CreateDirectory-start, 181 sdt:smbsrv::-smb_op-DeleteDirectory-start, 182 sdt:smbsrv::-smb_op-Delete-start 183 { 184 p = (struct dirop *)arg1; 185 186 printf("%s", stringof(p->fqi.fq_path.pn_path)); 187 } 188 189 /* 190 smb_dispatch_request:entry, 191 smb_dispatch_request:return, 192 smb_pre_*:return, 193 smb_com_*:return, 194 smb_post_*:return, 195 smbsr_error:return, 196 smbsr_errno:return 197 { 198 } 199 200 smb_pre_*:entry, 201 smb_com_*:entry, 202 smb_post_*:entry 203 { 204 sr = (struct smb_request *)arg0; 205 206 printf("cmd=%d [uid=%d tid=%d]", 207 sr->smb_com, sr->smb_uid, sr->smb_tid); 208 } 209 210 smbsr_error:entry 211 { 212 printf("status=0x%08x class=%d, code=%d\n", arg1, arg2, arg3); 213 } 214 215 smbsr_errno:entry 216 { 217 printf("errno=%d\n", arg1); 218 } 219 */ 220