16139Sjb150015 #!/usr/sbin/dtrace -s 26139Sjb150015 /* 36139Sjb150015 * CDDL HEADER START 46139Sjb150015 * 56139Sjb150015 * The contents of this file are subject to the terms of the 66139Sjb150015 * Common Development and Distribution License (the "License"). 76139Sjb150015 * You may not use this file except in compliance with the License. 86139Sjb150015 * 96139Sjb150015 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 106139Sjb150015 * or http://www.opensolaris.org/os/licensing. 116139Sjb150015 * See the License for the specific language governing permissions 126139Sjb150015 * and limitations under the License. 136139Sjb150015 * 146139Sjb150015 * When distributing Covered Code, include this CDDL HEADER in each 156139Sjb150015 * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 166139Sjb150015 * If applicable, add the following below this CDDL HEADER, with the 176139Sjb150015 * fields enclosed by brackets "[]" replaced with your own identifying 186139Sjb150015 * information: Portions Copyright [yyyy] [name of copyright owner] 196139Sjb150015 * 206139Sjb150015 * CDDL HEADER END 216139Sjb150015 */ 226139Sjb150015 /* 23*12508Samw@Sun.COM * Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved. 246139Sjb150015 */ 256139Sjb150015 266139Sjb150015 /* 276139Sjb150015 #pragma D option flowindent 286139Sjb150015 */ 296139Sjb150015 306139Sjb150015 /* 316139Sjb150015 * Usage: ./cifs.d -p `pgrep smbd` 326139Sjb150015 * 336139Sjb150015 * On multi-processor systems, it may be easier to follow the output 346139Sjb150015 * if run on a single processor: see psradm. For example, to disable 356139Sjb150015 * the second processor on a dual-processor system: psradm -f 1 366139Sjb150015 */ 376139Sjb150015 386139Sjb150015 BEGIN 396139Sjb150015 { 406139Sjb150015 printf("CIFS Trace Started"); 416139Sjb150015 printf("\n\n"); 426139Sjb150015 } 436139Sjb150015 446139Sjb150015 END 456139Sjb150015 { 466139Sjb150015 printf("CIFS Trace Ended"); 476139Sjb150015 printf("\n\n"); 486139Sjb150015 } 496139Sjb150015 506139Sjb150015 sdt:smbsrv::-smb_op*-start 516139Sjb150015 { 526139Sjb150015 sr = (struct smb_request *)arg0; 536139Sjb150015 546139Sjb150015 printf("cmd=%d [uid=%d tid=%d]", 556139Sjb150015 sr->smb_com, sr->smb_uid, sr->smb_tid); 566139Sjb150015 576139Sjb150015 self->status = 0; 586139Sjb150015 } 596139Sjb150015 606139Sjb150015 sdt:smbsrv::-smb_op*-done 616139Sjb150015 { 626139Sjb150015 sr = (struct smb_request *)arg0; 636139Sjb150015 646139Sjb150015 printf("cmd[%d]: status=0x%08x (class=%d code=%d)", 656139Sjb150015 sr->smb_com, sr->smb_error.status, 666139Sjb150015 sr->smb_error.errcls, sr->smb_error.errcode); 676139Sjb150015 686139Sjb150015 self->status = sr->smb_error.status; 696139Sjb150015 } 706139Sjb150015 71*12508Samw@Sun.COM sdt:smbsrv::-smb_op-Negotiate-done 72*12508Samw@Sun.COM { 73*12508Samw@Sun.COM sr = (struct smb_request *)arg0; 74*12508Samw@Sun.COM negprot = (smb_arg_negotiate_t *)arg1; 75*12508Samw@Sun.COM 76*12508Samw@Sun.COM printf("dialect=%s index=%u caps=0x%08x maxmpx=%u tz=%d time=%u", 77*12508Samw@Sun.COM stringof(negprot->ni_name), 78*12508Samw@Sun.COM negprot->ni_index, 79*12508Samw@Sun.COM negprot->ni_capabilities, 80*12508Samw@Sun.COM negprot->ni_maxmpxcount, 81*12508Samw@Sun.COM negprot->ni_tzcorrection, 82*12508Samw@Sun.COM negprot->ni_servertime.tv_sec); 83*12508Samw@Sun.COM 84*12508Samw@Sun.COM printf(" [status=0x%08x (class=%d code=%d)]", 85*12508Samw@Sun.COM sr->smb_error.status, 86*12508Samw@Sun.COM sr->smb_error.errcls, sr->smb_error.errcode); 87*12508Samw@Sun.COM 88*12508Samw@Sun.COM self->status = sr->smb_error.status; 89*12508Samw@Sun.COM } 90*12508Samw@Sun.COM 916139Sjb150015 sdt:smbsrv::-smb_op-SessionSetupX-start 926139Sjb150015 { 936139Sjb150015 sr = (struct smb_request *)arg0; 94*12508Samw@Sun.COM ssetup = (smb_arg_sessionsetup_t *)arg1; 956139Sjb150015 96*12508Samw@Sun.COM printf("[%s] %s %s %s", 976139Sjb150015 (sr->session->s_local_port == 139) ? "NBT" : "TCP", 986139Sjb150015 (sr->session->s_local_port == 139) ? 99*12508Samw@Sun.COM stringof(sr->session->workstation) : "", 100*12508Samw@Sun.COM stringof(ssetup->ssi_domain), 101*12508Samw@Sun.COM stringof(ssetup->ssi_user)); 102*12508Samw@Sun.COM 103*12508Samw@Sun.COM printf(" maxmpx=%u vc=%u maxbuf=%u", 104*12508Samw@Sun.COM ssetup->ssi_maxmpxcount, 105*12508Samw@Sun.COM sr->session->vcnumber, 106*12508Samw@Sun.COM sr->session->smb_msg_size); 1076139Sjb150015 } 1086139Sjb150015 109*12508Samw@Sun.COM sdt:smbsrv::-smb_op-SessionSetupX-done 110*12508Samw@Sun.COM { 111*12508Samw@Sun.COM sr = (struct smb_request *)arg0; 112*12508Samw@Sun.COM ssetup = (smb_arg_sessionsetup_t *)arg1; 113*12508Samw@Sun.COM 114*12508Samw@Sun.COM printf("%s/%s: smbuid=%d (%s)", 115*12508Samw@Sun.COM stringof(sr->uid_user->u_domain), 116*12508Samw@Sun.COM stringof(sr->uid_user->u_name), 117*12508Samw@Sun.COM sr->smb_uid, 118*12508Samw@Sun.COM (ssetup->ssi_guest == 0) ? "user" : "guest"); 119*12508Samw@Sun.COM 120*12508Samw@Sun.COM printf(" [status=0x%08x (class=%d code=%d)]", 121*12508Samw@Sun.COM sr->smb_error.status, 122*12508Samw@Sun.COM sr->smb_error.errcls, sr->smb_error.errcode); 123*12508Samw@Sun.COM 124*12508Samw@Sun.COM self->status = sr->smb_error.status; 125*12508Samw@Sun.COM } 126*12508Samw@Sun.COM 1276139Sjb150015 sdt:smbsrv::-smb_op-LogoffX-start 1286139Sjb150015 { 1296139Sjb150015 sr = (struct smb_request *)arg0; 1306139Sjb150015 1316139Sjb150015 printf("uid %d: %s/%s", sr->smb_uid, 1326139Sjb150015 stringof(sr->uid_user->u_domain), 1336139Sjb150015 stringof(sr->uid_user->u_name)); 1346139Sjb150015 } 1356139Sjb150015 1366139Sjb150015 sdt:smbsrv::-smb_op-TreeConnectX-start 1376139Sjb150015 { 1386139Sjb150015 tcon = (struct tcon *)arg1; 1396139Sjb150015 1406139Sjb150015 printf("[%s] %s", 1416139Sjb150015 stringof(tcon->service), 1426139Sjb150015 stringof(tcon->path)); 1436139Sjb150015 } 1446139Sjb150015 145*12508Samw@Sun.COM sdt:smbsrv::-smb_op-TreeConnectX-done 146*12508Samw@Sun.COM { 147*12508Samw@Sun.COM sr = (struct smb_request *)arg0; 148*12508Samw@Sun.COM 149*12508Samw@Sun.COM printf("tid %d: %s", sr->smb_tid, 150*12508Samw@Sun.COM (sr->smb_error.status == 0) ? 151*12508Samw@Sun.COM stringof(sr->tid_tree->t_sharename) : ""); 152*12508Samw@Sun.COM 153*12508Samw@Sun.COM printf(" [status=0x%08x (class=%d code=%d)]", 154*12508Samw@Sun.COM sr->smb_error.status, 155*12508Samw@Sun.COM sr->smb_error.errcls, sr->smb_error.errcode); 156*12508Samw@Sun.COM } 157*12508Samw@Sun.COM 1586139Sjb150015 sdt:smbsrv::-smb_op-TreeDisconnect-start 1596139Sjb150015 { 1606139Sjb150015 sr = (struct smb_request *)arg0; 1616139Sjb150015 1626139Sjb150015 printf("tid %d: %s", sr->smb_tid, 1636139Sjb150015 stringof(sr->tid_tree->t_sharename)); 1646139Sjb150015 discard(self->status); 1656139Sjb150015 } 1666139Sjb150015 1676139Sjb150015 sdt:smbsrv::-smb_op-Open-start, 1686139Sjb150015 sdt:smbsrv::-smb_op-OpenX-start, 1696139Sjb150015 sdt:smbsrv::-smb_op-Create-start, 1706139Sjb150015 sdt:smbsrv::-smb_op-CreateNew-start, 1716139Sjb150015 sdt:smbsrv::-smb_op-CreateTemporary-start, 1726139Sjb150015 sdt:smbsrv::-smb_op-CreateDirectory-start, 1736139Sjb150015 sdt:smbsrv::-smb_op-NtCreateX-start, 1746139Sjb150015 sdt:smbsrv::-smb_op-NtTransactCreate-start 1756139Sjb150015 { 1766139Sjb150015 op = (struct open_param *)arg1; 1776139Sjb150015 17811447Samw@Sun.COM printf("%s", stringof(op->fqi.fq_path.pn_path)); 1796139Sjb150015 } 1806139Sjb150015 1816139Sjb150015 sdt:smbsrv::-smb_op-Open-done, 1826139Sjb150015 sdt:smbsrv::-smb_op-OpenX-done, 1836139Sjb150015 sdt:smbsrv::-smb_op-Create-done, 1846139Sjb150015 sdt:smbsrv::-smb_op-CreateNew-done, 1856139Sjb150015 sdt:smbsrv::-smb_op-CreateTemporary-done, 1866139Sjb150015 sdt:smbsrv::-smb_op-CreateDirectory-done, 1876139Sjb150015 sdt:smbsrv::-smb_op-NtCreateX-done, 1886139Sjb150015 sdt:smbsrv::-smb_op-NtTransactCreate-done 1896139Sjb150015 { 1906139Sjb150015 sr = (struct smb_request *)arg0; 1916139Sjb150015 1926139Sjb150015 printf("%s: fid=%u", 19311447Samw@Sun.COM stringof(sr->arg.open.fqi.fq_path.pn_path), sr->smb_fid); 1946139Sjb150015 } 1956139Sjb150015 1966139Sjb150015 sdt:smbsrv::-smb_op-Read-start, 1976139Sjb150015 sdt:smbsrv::-smb_op-LockAndRead-start, 1986139Sjb150015 sdt:smbsrv::-smb_op-ReadX-start, 1996139Sjb150015 sdt:smbsrv::-smb_op-ReadRaw-start, 2006139Sjb150015 sdt:smbsrv::-smb_op-Write-start, 2016139Sjb150015 sdt:smbsrv::-smb_op-WriteAndClose-start, 2026139Sjb150015 sdt:smbsrv::-smb_op-WriteAndUnlock-start, 2036139Sjb150015 sdt:smbsrv::-smb_op-WriteX-start, 2046139Sjb150015 sdt:smbsrv::-smb_op-WriteRaw-start 2056139Sjb150015 { 2066139Sjb150015 sr = (struct smb_request *)arg0; 2076139Sjb150015 rw = (smb_rw_param_t *)arg1; 2086139Sjb150015 2096139Sjb150015 printf("fid=%d: %u bytes at offset %u", 2106139Sjb150015 sr->smb_fid, rw->rw_count, rw->rw_offset); 2116139Sjb150015 } 2126139Sjb150015 2136139Sjb150015 sdt:smbsrv::-smb_op-Read-done, 2146139Sjb150015 sdt:smbsrv::-smb_op-LockAndRead-done, 2156139Sjb150015 sdt:smbsrv::-smb_op-ReadX-done, 2166139Sjb150015 sdt:smbsrv::-smb_op-ReadRaw-done 2176139Sjb150015 /self->status == 0/ 2186139Sjb150015 { 2196139Sjb150015 sr = (struct smb_request *)arg0; 2206139Sjb150015 rw = (smb_rw_param_t *)arg1; 2216139Sjb150015 2226139Sjb150015 printf("fid=%d: %u bytes at offset %u", 2236139Sjb150015 sr->smb_fid, rw->rw_count, rw->rw_offset); 2246139Sjb150015 } 2256139Sjb150015 2266139Sjb150015 sdt:smbsrv::-smb_op-Rename-start 2276139Sjb150015 { 2286139Sjb150015 p = (struct dirop *)arg1; 2296139Sjb150015 2306139Sjb150015 printf("%s to %s", 231*12508Samw@Sun.COM stringof(p->fqi.fq_path.pn_path), 232*12508Samw@Sun.COM stringof(p->dst_fqi.fq_path.pn_path)); 2336139Sjb150015 } 2346139Sjb150015 2356139Sjb150015 sdt:smbsrv::-smb_op-CheckDirectory-start, 2366139Sjb150015 sdt:smbsrv::-smb_op-CreateDirectory-start, 2376139Sjb150015 sdt:smbsrv::-smb_op-DeleteDirectory-start, 2386139Sjb150015 sdt:smbsrv::-smb_op-Delete-start 2396139Sjb150015 { 2406139Sjb150015 p = (struct dirop *)arg1; 2416139Sjb150015 24211447Samw@Sun.COM printf("%s", stringof(p->fqi.fq_path.pn_path)); 2436139Sjb150015 } 2446139Sjb150015 2456139Sjb150015 /* 2466139Sjb150015 smb_dispatch_request:entry, 2476139Sjb150015 smb_dispatch_request:return, 2486139Sjb150015 smb_pre_*:return, 2496139Sjb150015 smb_com_*:return, 2506139Sjb150015 smb_post_*:return, 251*12508Samw@Sun.COM smbsr_status:return, 2526139Sjb150015 smbsr_errno:return 2536139Sjb150015 { 2546139Sjb150015 } 2556139Sjb150015 2566139Sjb150015 smb_pre_*:entry, 2576139Sjb150015 smb_com_*:entry, 2586139Sjb150015 smb_post_*:entry 2596139Sjb150015 { 2606139Sjb150015 sr = (struct smb_request *)arg0; 2616139Sjb150015 2626139Sjb150015 printf("cmd=%d [uid=%d tid=%d]", 2636139Sjb150015 sr->smb_com, sr->smb_uid, sr->smb_tid); 2646139Sjb150015 } 2656139Sjb150015 266*12508Samw@Sun.COM smbsr_status:entry 2676139Sjb150015 { 2686139Sjb150015 printf("status=0x%08x class=%d, code=%d\n", arg1, arg2, arg3); 2696139Sjb150015 } 2706139Sjb150015 2716139Sjb150015 smbsr_errno:entry 2726139Sjb150015 { 2736139Sjb150015 printf("errno=%d\n", arg1); 2746139Sjb150015 } 2756139Sjb150015 */ 276