Add a callback to the ada(4) driver so that it knows when GEOM has released
authorken <ken@ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f>
Wed, 10 Apr 2013 22:12:21 +0000 (22:12 +0000)
committerken <ken@ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f>
Wed, 10 Apr 2013 22:12:21 +0000 (22:12 +0000)
commit846f91733247ec273bff06e2e16284b818b70a3f
tree2ff6aa8c5ed14b76f5ccdca3474520aa40014559
parent42e334f6b67b07aded508df00e7e1aa2dd663a28
Add a callback to the ada(4) driver so that it knows when GEOM has released
references to it.

This is the functional equivalent to change r237518, which added this
functionality to the cd(4) and da(4) drivers.

This fix prevents a panic caused by GEOM calling adaopen() while the device
is going away.  We now keep the device around until GEOM has finished
cleaning up its state.

ata_da.c: In adaregister(), add a d_gone callback to the GEOM disk
structure registered for the ada driver.  Increment the
peripheral reference count for GEOM.

Add a new callback, adadiskgonecb(), that GEOM calls when
it is done with its resources.  This callback releases the
reference acquired in adaregister().

Submitted by: Po-Li Soong
Sponsored by: Spectra Logic
MFC After: 5 days

git-svn-id: svn://svn.freebsd.org/base/head@249347 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f
sys/cam/ata/ata_da.c