On a UFS filesystem, when forcedirectio is used as a mount option, the fi_pathname does not get populated for args[2] of the io provider in dtrace.
http://www.opensolaris.org/jive/thread.jspa?messageID=292867
The problem is that the b_file member of the buf structure passed to
bdev_strategy() [which is where the io:::start probe is located]
is not populated with the vnode pointer [the vnode has the filename
(v_path)] when the directio routines [ufs_directio_read/ufs_directio_write] are used for IO.
Since the vnode is not available the filename and the mount point cannot
be determined the fi_mount is set to 'none'.
List steps to reproduce the problem(if applicable): Sample dtrace script to reproduce issue.
1) Put forcedirectio as an option for a UFS fs.
2) dtrace script;
#!/usr/sbin/dtrace -qs
io:::start
{
@dio[args[2]->fi_mount] = count();
}
tick-1sec
{
printa(@dio);
clear(@dio);
}