summaryrefslogtreecommitdiff
path: root/usr/src
diff options
context:
space:
mode:
authorGarrett D'Amore <garrett@nexenta.com>2010-11-07 20:18:24 -0800
committerGarrett D'Amore <garrett@nexenta.com>2010-11-07 20:18:24 -0800
commit0a96f64e3185cf2fb9959e528ba7f454ca681484 (patch)
tree320d44d7d570ee3ea07e8141f47b57741187999a /usr/src
parent1b1b6fbd07b95cdbe86f7b731a2fc22050bb8ae8 (diff)
downloadillumos-joyent-0a96f64e3185cf2fb9959e528ba7f454ca681484.tar.gz
401 sdcard hang
Reviewed by: jason.brian.king@gmail.com Approved by: gwr@nexenta.com
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);
}