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