OpenSolaris

Printable Version Enter a New Search
Bug ID 6791723
Synopsis Dtrace doesn't populate the fi_pathname in io provider whith UFS directio
State 10-Fix Delivered (Fix available in build)
Category:Subcategory kernel:ufs
Keywords dtrace | fi_pathname | forcedirectio | rtiq_reviewed | ufs
Responsible Engineer Frank Batschulat
Reported Against
Duplicate Of
Introduced In solaris_10
Commit to Fix snv_108
Fixed In snv_108
Release Fixed solaris_nevada(snv_108) , solaris_10u8(s10u8_03) (Bug ID:2171746)
Related Bugs
Submit Date 8-January-2009
Last Update Date 1-June-2009
Description
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);
}
Work Around
N/A
Comments
N/A