summaryrefslogtreecommitdiff
path: root/usr/src
diff options
context:
space:
mode:
Diffstat (limited to 'usr/src')
-rw-r--r--usr/src/uts/common/io/sdcard/impl/sda_slot.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/usr/src/uts/common/io/sdcard/impl/sda_slot.c b/usr/src/uts/common/io/sdcard/impl/sda_slot.c
index feffeb5c17..a32309243c 100644
--- a/usr/src/uts/common/io/sdcard/impl/sda_slot.c
+++ b/usr/src/uts/common/io/sdcard/impl/sda_slot.c
@@ -20,6 +20,7 @@
*/
/*
* Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright 2010 Nexenta Systems, Inc. All rights reserved.
*/
/*
@@ -383,12 +384,14 @@ sda_slot_handle_detect(sda_slot_t *slot)
* hipri commands for now.
*/
slot->s_init = B_TRUE;
+ sda_slot_exit(slot);
/*
* Card insertion occurred. We have to run this on
* another task, to avoid deadlock as the task may
* need to dispatch commands.
*/
+
(void) ddi_taskq_dispatch(slot->s_hp_tq, sda_slot_insert, slot,
DDI_SLEEP);
} else {
@@ -405,9 +408,10 @@ sda_slot_handle_detect(sda_slot_t *slot)
sda_slot_reset(slot);
slot->s_intransit = 0;
+ sda_slot_exit(slot);
+
bd_state_change(slot->s_bdh);
}
- sda_slot_exit(slot);
sda_slot_wakeup(slot);
}