CAM drivers are created in a callback in xpt_done_td. This thread is marked
non-sleepable so that callbacks executed here don't block other completions. For
all these periph's register callbacks, use this to allocate the disk. Rearrange
a little so we allocate everything at the top of the function and return the
appropriate error after cleaning upt he allocations.
Details
Details
Diff Detail
Diff Detail
- Repository
- rS FreeBSD src repository - subversion
- Lint
Lint Passed - Unit
No Test Coverage - Build Status
Buildable 37708 Build 34597: arc lint + arc unit
Event Timeline
Comment Actions
Can drivers are created in a callback in xpt_done_td.
"CAM drivers are created in a callback in xpt_done_td." ?
Comment Actions
On second thought, I'm going to abandon this approach and schedule the cam register routine into a taskqueue so we can sleep. There's no good retry mechanism here, and adding one would make things more complicated. We can switch to waiting for memory to have a more robust system with simpler code. This also matches at least some of the feedback I've received privately (thanks Chuck). I'll post that review when I have it done.