From owner-freebsd-dtrace@FreeBSD.ORG Thu Apr 16 01:31:04 2015 Return-Path: Delivered-To: freebsd-dtrace@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id C2B2559F for ; Thu, 16 Apr 2015 01:31:04 +0000 (UTC) Received: from mail-pa0-x235.google.com (mail-pa0-x235.google.com [IPv6:2607:f8b0:400e:c03::235]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "Google Internet Authority G2" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 8B3841F4 for ; Thu, 16 Apr 2015 01:31:04 +0000 (UTC) Received: by pabtp1 with SMTP id tp1so70537104pab.2 for ; Wed, 15 Apr 2015 18:31:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=message-id:date:from:user-agent:mime-version:to:subject:references :in-reply-to:content-type:content-transfer-encoding; bh=P+0s7VnDKiSKTsm1UiryW3SWsFsSSwZiavC6p/ECpr0=; b=m0S27vHl5Qkm3CdVKYXd2MyYGQ7078qEDEHZu3JZkUMZFitdrqQjpHGtX4XzyLz6Gw r0mOixMbcgputdN/Bkxr4cTjQGiGWLOwn1pvfyxTr1EGtCMxPboi/QfCIvIJ0/QpbeSS 8R0YLQCI6t6idIayK5H7kdHqmZkTikt72rhpLfoWUPheJGgX2OtB+JhlT8VpuaWygj46 M5kjdmx0F1KMHz+NnruCWQ1RYuq8e+YgFCNWEOQD7cndinQ9gnQWeGIX6o9BlQ7aaMwr wRlFBb1WCA8MHS+MobgJZAnaakxIZHHoHvl2uk4Ea3Q6XRgxSldsFg1jMoPtNQRX9UfE uyXQ== X-Received: by 10.66.141.77 with SMTP id rm13mr51550270pab.14.1429147864041; Wed, 15 Apr 2015 18:31:04 -0700 (PDT) Received: from [192.168.0.3] (c-50-186-4-10.hsd1.or.comcast.net. [50.186.4.10]) by mx.google.com with ESMTPSA id f12sm5319988pat.43.2015.04.15.18.31.02 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 15 Apr 2015 18:31:02 -0700 (PDT) Message-ID: <552F10D5.3090204@gmail.com> Date: Wed, 15 Apr 2015 18:31:01 -0700 From: Lacey Powers User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.6.0 MIME-Version: 1.0 To: Eric Badger , "freebsd-dtrace@freebsd.org" Subject: Re: io:kernel::done invalid address (0x0) in predicate on FreeBSD 10.1 References: <552EB6A4.4070406@gmail.com> <552EC7A3.7050508@compellent.com> In-Reply-To: <552EC7A3.7050508@compellent.com> Content-Type: text/plain; charset=windows-1252; format=flowed Content-Transfer-Encoding: 7bit X-BeenThere: freebsd-dtrace@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "A discussion list for developers working on DTrace in FreeBSD." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Apr 2015 01:31:04 -0000 On 04/15/2015 01:18 PM, Eric Badger wrote: > > On 04/15/15 14:06, Lacey Powers wrote: >> Hello Everyone, >> >> I was trying to port a script from Illumos to FreeBSD 10.1, from this >> blog post, here: >> >> http://dtrace.org/blogs/ahl/2014/08/31/openzfs-tuning/ >> >> The rw.d script specifically. I wished to use it forsome ZFS tuning and >> testing I have been doing on my workstation. >> >> Here is the script I came up with: >> >> https://gist.github.com/kassandry/219596d7f17e5b128e68 >> >> The version I have mostly seems to work, aside from a single error, >> repeated a very large number of times during a run.=( >> >> Example: >> >> dtrace: error on enabled probe ID 3 (ID 58515: io:kernel::done): invalid >> address (0x0) in predicate at DIF offset 60 >> dtrace: error on enabled probe ID 3 (ID 58515: io:kernel::done): invalid >> address (0x0) in predicate at DIF offset 60 >> >> Despite adding >> >> args[0] != NULL >> >> to the predicate for io:::done, it still comes up. > > I can't claim expertise here, but it seems that the 'io:::done' probe > can receive a 'struct bio' where 'bio_disk' is NULL. So a first > thought would be to have a predicate like: > > /args[0] && args[0]->bio_disk && ts[...]/ > > I don't know under what circumstances bio_disk is NULL; would require > some digging to find out. Someone more familiar with this area may > have a better suggestion. > > Eric Hello Eric, Thank you for your reply. =) That certainly helped me figure out why the probe was giving me errors.Much appreciated. From the help I got on #freebsd and #bsddev on IRC, it seems that in sys/sys/bio.h struct disk *bio_disk; /* Valid below geom_disk.c only */ It is noted that the struct bio disk may only be populated below geom_disk.c It seems that each IO action can go through a long queue of functions, which may or may not actually add a valid struct disk to the struct bio in question, which is why it is occasionally NULL. At least, as far as I understood from the code and asking questions on IRC. Still lots of neat stuff to learn. =) Again, thank you for your help. Regards, Lacey