OpenSolaris

Printable Version Enter a New Search
Bug ID 6496344
Synopsis zvol async routines are synchronous
State 10-Fix Delivered (Fix available in build)
Category:Subcategory kernel:zfs
Keywords
Responsible Engineer Bill Moore
Reported Against
Duplicate Of
Introduced In solaris_nevada
Commit to Fix snv_59
Fixed In snv_59
Release Fixed solaris_nevada(snv_59) , solaris_10u4(s10u4_08) (Bug ID:2148261)
Related Bugs 6525008 , 6682887
Submit Date 22-November-2006
Last Update Date 2-March-2007
Description
The async entry points to zvol (aread/awrite) simply use aphysio() to re-vector
through zvol_strategy().  The problem here is that zvol_strategy() issues the dmu_read(),
which is synchronous, then calls biodone().  As a result, an application calling
aio_read() or aio_write() will block in the system call waiting for the I/O to complete.
Not very asynchronous.

By simply removing the aread/awrite entry points, libaio will recognize the fact that
zvol doesn't support the asynchronous interfaces and dispatch worker threads to do
normal read/write systems calls.  This actually is asynchronous (at least to the
application) and is a huge performance win for the iSCSI target.
Work Around
N/A
Comments
N/A