1*b819cea2SGordon Ross #!/usr/sbin/dtrace -s 2*b819cea2SGordon Ross /* 3*b819cea2SGordon Ross * This file and its contents are supplied under the terms of the 4*b819cea2SGordon Ross * Common Development and Distribution License ("CDDL"), version 1.0. 5*b819cea2SGordon Ross * You may only use this file in accordance with the terms of version 6*b819cea2SGordon Ross * 1.0 of the CDDL. 7*b819cea2SGordon Ross * 8*b819cea2SGordon Ross * A full copy of the text of the CDDL should have accompanied this 9*b819cea2SGordon Ross * source. A copy of the CDDL is also available via the Internet at 10*b819cea2SGordon Ross * http://www.illumos.org/license/CDDL. 11*b819cea2SGordon Ross */ 12*b819cea2SGordon Ross 13*b819cea2SGordon Ross /* 14*b819cea2SGordon Ross * Copyright 2014 Nexenta Systems, Inc. All rights reserved. 15*b819cea2SGordon Ross */ 16*b819cea2SGordon Ross 17*b819cea2SGordon Ross /* 18*b819cea2SGordon Ross * User-level dtrace for fksmbd 19*b819cea2SGordon Ross * Usage: dtrace -s Watch-all.d -p $PID 20*b819cea2SGordon Ross */ 21*b819cea2SGordon Ross 22*b819cea2SGordon Ross #pragma D option flowindent 23*b819cea2SGordon Ross 24*b819cea2SGordon Ross self int trace; 25*b819cea2SGordon Ross self int mask; 26*b819cea2SGordon Ross 27*b819cea2SGordon Ross /* 28*b819cea2SGordon Ross * Trace almost everything 29*b819cea2SGordon Ross */ 30*b819cea2SGordon Ross pid$target:fksmbd::entry, 31*b819cea2SGordon Ross pid$target:libfksmbsrv.so.1::entry, 32*b819cea2SGordon Ross pid$target:libmlsvc.so.1::entry, 33*b819cea2SGordon Ross pid$target:libmlrpc.so.1::entry, 34*b819cea2SGordon Ross pid$target:libsmbns.so.1::entry, 35*b819cea2SGordon Ross pid$target:libsmb.so.1::entry 36*b819cea2SGordon Ross { 37*b819cea2SGordon Ross self->trace++; 38*b819cea2SGordon Ross } 39*b819cea2SGordon Ross 40*b819cea2SGordon Ross /* 41*b819cea2SGordon Ross * If traced and not masked, print entry/return 42*b819cea2SGordon Ross */ 43*b819cea2SGordon Ross pid$target:fksmbd::entry, 44*b819cea2SGordon Ross pid$target:libfksmbsrv.so.1::entry, 45*b819cea2SGordon Ross pid$target:libmlsvc.so.1::entry, 46*b819cea2SGordon Ross pid$target:libmlrpc.so.1::entry, 47*b819cea2SGordon Ross pid$target:libsmbns.so.1::entry, 48*b819cea2SGordon Ross pid$target:libsmb.so.1::entry 49*b819cea2SGordon Ross /self->trace > 0 && self->mask == 0/ 50*b819cea2SGordon Ross { 51*b819cea2SGordon Ross printf("\t0x%x", arg0); 52*b819cea2SGordon Ross printf("\t0x%x", arg1); 53*b819cea2SGordon Ross printf("\t0x%x", arg2); 54*b819cea2SGordon Ross printf("\t0x%x", arg3); 55*b819cea2SGordon Ross } 56*b819cea2SGordon Ross 57*b819cea2SGordon Ross /* 58*b819cea2SGordon Ross * Mask (don't print) all function calls below these functions. 59*b819cea2SGordon Ross * These make many boring, repetitive function calls like 60*b819cea2SGordon Ross * smb_mbtowc, mbc_marshal_... 61*b819cea2SGordon Ross */ 62*b819cea2SGordon Ross pid$target::fop__getxvattr:entry, 63*b819cea2SGordon Ross pid$target::fop__setxvattr:entry, 64*b819cea2SGordon Ross pid$target::smb_mbc_vdecodef:entry, 65*b819cea2SGordon Ross pid$target::smb_mbc_vencodef:entry, 66*b819cea2SGordon Ross pid$target::smb_msgbuf_decode:entry, 67*b819cea2SGordon Ross pid$target::smb_msgbuf_encode:entry, 68*b819cea2SGordon Ross pid$target::smb_strlwr:entry, 69*b819cea2SGordon Ross pid$target::smb_strupr:entry, 70*b819cea2SGordon Ross pid$target::smb_wcequiv_strlen:entry 71*b819cea2SGordon Ross { 72*b819cea2SGordon Ross self->mask++; 73*b819cea2SGordon Ross } 74*b819cea2SGordon Ross 75*b819cea2SGordon Ross /* 76*b819cea2SGordon Ross * Now inverses of above, unwind order. 77*b819cea2SGordon Ross */ 78*b819cea2SGordon Ross 79*b819cea2SGordon Ross pid$target::fop__getxvattr:return, 80*b819cea2SGordon Ross pid$target::fop__setxvattr:return, 81*b819cea2SGordon Ross pid$target::smb_mbc_vdecodef:return, 82*b819cea2SGordon Ross pid$target::smb_mbc_vencodef:return, 83*b819cea2SGordon Ross pid$target::smb_msgbuf_decode:return, 84*b819cea2SGordon Ross pid$target::smb_msgbuf_encode:return, 85*b819cea2SGordon Ross pid$target::smb_strlwr:return, 86*b819cea2SGordon Ross pid$target::smb_strupr:return, 87*b819cea2SGordon Ross pid$target::smb_wcequiv_strlen:return 88*b819cea2SGordon Ross { 89*b819cea2SGordon Ross self->mask--; 90*b819cea2SGordon Ross } 91*b819cea2SGordon Ross 92*b819cea2SGordon Ross pid$target:fksmbd::return, 93*b819cea2SGordon Ross pid$target:libfksmbsrv.so.1::return, 94*b819cea2SGordon Ross pid$target:libmlsvc.so.1::return, 95*b819cea2SGordon Ross pid$target:libmlrpc.so.1::return, 96*b819cea2SGordon Ross pid$target:libsmbns.so.1::return, 97*b819cea2SGordon Ross pid$target:libsmb.so.1::return 98*b819cea2SGordon Ross /self->trace > 0 && self->mask == 0/ 99*b819cea2SGordon Ross { 100*b819cea2SGordon Ross printf("\t0x%x", arg1); 101*b819cea2SGordon Ross } 102*b819cea2SGordon Ross 103*b819cea2SGordon Ross pid$target:fksmbd::return, 104*b819cea2SGordon Ross pid$target:libfksmbsrv.so.1::return, 105*b819cea2SGordon Ross pid$target:libmlsvc.so.1::return, 106*b819cea2SGordon Ross pid$target:libmlrpc.so.1::return, 107*b819cea2SGordon Ross pid$target:libsmbns.so.1::return, 108*b819cea2SGordon Ross pid$target:libsmb.so.1::return 109*b819cea2SGordon Ross { 110*b819cea2SGordon Ross self->trace--; 111*b819cea2SGordon Ross } 112