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 (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved. 24 */ 25 26/* 27#pragma D option flowindent 28*/ 29 30/* 31 * Usage: ./cifs.d -p `pgrep smbd` 32 * 33 * On multi-processor systems, it may be easier to follow the output 34 * if run on a single processor: see psradm. For example, to disable 35 * the second processor on a dual-processor system: psradm -f 1 36 */ 37 38BEGIN 39{ 40 printf("CIFS Trace Started"); 41 printf("\n\n"); 42} 43 44END 45{ 46 printf("CIFS Trace Ended"); 47 printf("\n\n"); 48} 49 50sdt:smbsrv::-smb_op*-start 51{ 52 sr = (struct smb_request *)arg0; 53 54 printf("cmd=%d [uid=%d tid=%d]", 55 sr->smb_com, sr->smb_uid, sr->smb_tid); 56 57 self->status = 0; 58} 59 60sdt:smbsrv::-smb_op*-done 61{ 62 sr = (struct smb_request *)arg0; 63 64 printf("cmd[%d]: status=0x%08x (class=%d code=%d)", 65 sr->smb_com, sr->smb_error.status, 66 sr->smb_error.errcls, sr->smb_error.errcode); 67 68 self->status = sr->smb_error.status; 69} 70 71sdt:smbsrv::-smb_op-Negotiate-done 72{ 73 sr = (struct smb_request *)arg0; 74 negprot = (smb_arg_negotiate_t *)arg1; 75 76 printf("dialect=%s index=%u caps=0x%08x maxmpx=%u tz=%d time=%u", 77 stringof(negprot->ni_name), 78 negprot->ni_index, 79 negprot->ni_capabilities, 80 negprot->ni_maxmpxcount, 81 negprot->ni_tzcorrection, 82 negprot->ni_servertime.tv_sec); 83 84 printf(" [status=0x%08x (class=%d code=%d)]", 85 sr->smb_error.status, 86 sr->smb_error.errcls, sr->smb_error.errcode); 87 88 self->status = sr->smb_error.status; 89} 90 91sdt:smbsrv::-smb_op-SessionSetupX-start 92{ 93 sr = (struct smb_request *)arg0; 94 ssetup = (smb_arg_sessionsetup_t *)arg1; 95 96 printf("[%s] %s %s %s", 97 (sr->session->s_local_port == 139) ? "NBT" : "TCP", 98 (sr->session->s_local_port == 139) ? 99 stringof(sr->session->workstation) : "", 100 stringof(ssetup->ssi_domain), 101 stringof(ssetup->ssi_user)); 102 103 printf(" maxmpx=%u vc=%u maxbuf=%u", 104 ssetup->ssi_maxmpxcount, 105 sr->session->vcnumber, 106 sr->session->smb_msg_size); 107} 108 109sdt:smbsrv::-smb_op-SessionSetupX-done 110{ 111 sr = (struct smb_request *)arg0; 112 ssetup = (smb_arg_sessionsetup_t *)arg1; 113 114 printf("%s/%s: smbuid=%d (%s)", 115 stringof(sr->uid_user->u_domain), 116 stringof(sr->uid_user->u_name), 117 sr->smb_uid, 118 (ssetup->ssi_guest == 0) ? "user" : "guest"); 119 120 printf(" [status=0x%08x (class=%d code=%d)]", 121 sr->smb_error.status, 122 sr->smb_error.errcls, sr->smb_error.errcode); 123 124 self->status = sr->smb_error.status; 125} 126 127sdt:smbsrv::-smb_op-LogoffX-start 128{ 129 sr = (struct smb_request *)arg0; 130 131 printf("uid %d: %s/%s", sr->smb_uid, 132 stringof(sr->uid_user->u_domain), 133 stringof(sr->uid_user->u_name)); 134} 135 136sdt:smbsrv::-smb_op-TreeConnectX-start 137{ 138 tcon = (struct tcon *)arg1; 139 140 printf("[%s] %s", 141 stringof(tcon->service), 142 stringof(tcon->path)); 143} 144 145sdt:smbsrv::-smb_op-TreeConnectX-done 146{ 147 sr = (struct smb_request *)arg0; 148 149 printf("tid %d: %s", sr->smb_tid, 150 (sr->smb_error.status == 0) ? 151 stringof(sr->tid_tree->t_sharename) : ""); 152 153 printf(" [status=0x%08x (class=%d code=%d)]", 154 sr->smb_error.status, 155 sr->smb_error.errcls, sr->smb_error.errcode); 156} 157 158sdt:smbsrv::-smb_op-TreeDisconnect-start 159{ 160 sr = (struct smb_request *)arg0; 161 162 printf("tid %d: %s", sr->smb_tid, 163 stringof(sr->tid_tree->t_sharename)); 164 discard(self->status); 165} 166 167sdt:smbsrv::-smb_op-Open-start, 168sdt:smbsrv::-smb_op-OpenX-start, 169sdt:smbsrv::-smb_op-Create-start, 170sdt:smbsrv::-smb_op-CreateNew-start, 171sdt:smbsrv::-smb_op-CreateTemporary-start, 172sdt:smbsrv::-smb_op-CreateDirectory-start, 173sdt:smbsrv::-smb_op-NtCreateX-start, 174sdt:smbsrv::-smb_op-NtTransactCreate-start 175{ 176 op = (struct open_param *)arg1; 177 178 printf("%s", stringof(op->fqi.fq_path.pn_path)); 179} 180 181sdt:smbsrv::-smb_op-Open-done, 182sdt:smbsrv::-smb_op-OpenX-done, 183sdt:smbsrv::-smb_op-Create-done, 184sdt:smbsrv::-smb_op-CreateNew-done, 185sdt:smbsrv::-smb_op-CreateTemporary-done, 186sdt:smbsrv::-smb_op-CreateDirectory-done, 187sdt:smbsrv::-smb_op-NtCreateX-done, 188sdt:smbsrv::-smb_op-NtTransactCreate-done 189{ 190 sr = (struct smb_request *)arg0; 191 192 printf("%s: fid=%u", 193 stringof(sr->arg.open.fqi.fq_path.pn_path), sr->smb_fid); 194} 195 196sdt:smbsrv::-smb_op-Read-start, 197sdt:smbsrv::-smb_op-LockAndRead-start, 198sdt:smbsrv::-smb_op-ReadX-start, 199sdt:smbsrv::-smb_op-ReadRaw-start, 200sdt:smbsrv::-smb_op-Write-start, 201sdt:smbsrv::-smb_op-WriteAndClose-start, 202sdt:smbsrv::-smb_op-WriteAndUnlock-start, 203sdt:smbsrv::-smb_op-WriteX-start, 204sdt:smbsrv::-smb_op-WriteRaw-start 205{ 206 sr = (struct smb_request *)arg0; 207 rw = (smb_rw_param_t *)arg1; 208 209 printf("fid=%d: %u bytes at offset %u", 210 sr->smb_fid, rw->rw_count, rw->rw_offset); 211} 212 213sdt:smbsrv::-smb_op-Read-done, 214sdt:smbsrv::-smb_op-LockAndRead-done, 215sdt:smbsrv::-smb_op-ReadX-done, 216sdt:smbsrv::-smb_op-ReadRaw-done 217/self->status == 0/ 218{ 219 sr = (struct smb_request *)arg0; 220 rw = (smb_rw_param_t *)arg1; 221 222 printf("fid=%d: %u bytes at offset %u", 223 sr->smb_fid, rw->rw_count, rw->rw_offset); 224} 225 226sdt:smbsrv::-smb_op-Rename-start 227{ 228 p = (struct dirop *)arg1; 229 230 printf("%s to %s", 231 stringof(p->fqi.fq_path.pn_path), 232 stringof(p->dst_fqi.fq_path.pn_path)); 233} 234 235sdt:smbsrv::-smb_op-CheckDirectory-start, 236sdt:smbsrv::-smb_op-CreateDirectory-start, 237sdt:smbsrv::-smb_op-DeleteDirectory-start, 238sdt:smbsrv::-smb_op-Delete-start 239{ 240 p = (struct dirop *)arg1; 241 242 printf("%s", stringof(p->fqi.fq_path.pn_path)); 243} 244 245/* 246smb_dispatch_request:entry, 247smb_dispatch_request:return, 248smb_pre_*:return, 249smb_com_*:return, 250smb_post_*:return, 251smbsr_status:return, 252smbsr_errno:return 253{ 254} 255 256smb_pre_*:entry, 257smb_com_*:entry, 258smb_post_*:entry 259{ 260 sr = (struct smb_request *)arg0; 261 262 printf("cmd=%d [uid=%d tid=%d]", 263 sr->smb_com, sr->smb_uid, sr->smb_tid); 264} 265 266smbsr_status:entry 267{ 268 printf("status=0x%08x class=%d, code=%d\n", arg1, arg2, arg3); 269} 270 271smbsr_errno:entry 272{ 273 printf("errno=%d\n", arg1); 274} 275*/ 276