I have put patches to add an asynchronous interface to the pass(4) driver and add a new camdd(8) utility here: FreeBSD/head as of SVN revision 280857: http://people.freebsd.org/~ken/async_pass.head.20150330.1.txt FreeBSD stable/10 as of SVN revision 280856: http://people.freebsd.org/~ken/async_pass.stable_10.20150330.1.txt And the description / draft commit message: http://people.freebsd.org/~ken/async_pass_commitmsg.20150330.txt I have also attached the description and draft commit message to this email. The asynchronous changes to the pass(4) driver allow queueing and fetching CAM CCBs via two new ioctls. Notification of completed I/O can come via kqueue(2), poll(2), select(2), etc. The camdd(8) utility is intended as a simple data transfer utility, benchmark, and an in-tree example of how to use the asynchronous pass(4) interface. camdd(8) is still a work in progress. It needs to be cleaned up a bit and streamlined. There is one known arrival and departure bug with the pass(4) driver changes. We've reproduced it with our tests at Spectra, but I haven't yet tracked it down. There are many more arrival and departure bugs in FreeBSD/head, however. We have fixed quite a few in our local tree, but the test (called devad2) that triggers all of the problems uses the asynchronous pass(4) interface. So this is a prerequisite for fixing/verifying those bugs. Comments and testing are welcome! As I said, camdd(8) in particular is a work in progress. It could use some cleanup and there are some more useful features that could be added there. Part of the reason for camdd(8) was as a test facility for the new interface. But, it also serves as a useful demonstration of the asynchronous pass(4) functionality, given that the original application that used the API doesn't make sense to go into FreeBSD. (It is Spectra-specific, and not generally useful.) Ken -- Kenneth Merry ken_at_FreeBSD.ORG
This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:40:56 UTC