diff options
Diffstat (limited to 'sys/dev/aac/aac.c')
| -rw-r--r-- | sys/dev/aac/aac.c | 13 |
1 files changed, 3 insertions, 10 deletions
diff --git a/sys/dev/aac/aac.c b/sys/dev/aac/aac.c index 36996177738a..4ff1640ab840 100644 --- a/sys/dev/aac/aac.c +++ b/sys/dev/aac/aac.c @@ -212,7 +212,7 @@ static struct aac_mntinforesp * static struct cdevsw aac_cdevsw = { .d_version = D_VERSION, - .d_flags = D_NEEDGIANT, + .d_flags = D_NEEDGIANT | D_TRACKCLOSE, .d_open = aac_open, .d_close = aac_close, .d_ioctl = aac_ioctl, @@ -660,9 +660,6 @@ aac_detach(device_t dev) sc = device_get_softc(dev); fwprintf(sc, HBA_FLAGS_DBG_FUNCTION_ENTRY_B, ""); - if (sc->aac_state & AAC_STATE_OPEN) - return(EBUSY); - callout_drain(&sc->aac_daemontime); /* Remove the child containers */ @@ -2804,8 +2801,7 @@ aac_open(struct cdev *dev, int flags, int fmt, struct thread *td) sc = dev->si_drv1; fwprintf(sc, HBA_FLAGS_DBG_FUNCTION_ENTRY_B, ""); - sc->aac_open_cnt++; - sc->aac_state |= AAC_STATE_OPEN; + device_busy(sc->aac_dev); return 0; } @@ -2817,10 +2813,7 @@ aac_close(struct cdev *dev, int flags, int fmt, struct thread *td) sc = dev->si_drv1; fwprintf(sc, HBA_FLAGS_DBG_FUNCTION_ENTRY_B, ""); - sc->aac_open_cnt--; - /* Mark this unit as no longer open */ - if (sc->aac_open_cnt == 0) - sc->aac_state &= ~AAC_STATE_OPEN; + device_unbusy(sc->aac_dev); return 0; } |
