Mercurial > illumos > illumos-gate
comparison usr/src/uts/common/fs/smbsrv/smb_server.c @ 13931:3f18ae9d8c98
3502 panic in smb_server_shutdown (sl_count assertion)
Reviewed by: Gordon Ross <gwr@nexenta.com>
Reviewed by: Dan McDonald <danmcd@nexenta.com>
Approved by: Richard Lowe <richlowe@richlowe.net>
author | Kevin Crowe <kevin.crowe@nexenta.com> |
---|---|
date | Tue, 17 Jul 2012 12:40:19 -0400 |
parents | f2303e5259ca |
children | ba0ec3e45034 |
comparison
equal
deleted
inserted
replaced
13930:f2303e5259ca | 13931:3f18ae9d8c98 |
---|---|
228 } smb_receiver_arg_t; | 228 } smb_receiver_arg_t; |
229 | 229 |
230 static void smb_server_kstat_init(smb_server_t *); | 230 static void smb_server_kstat_init(smb_server_t *); |
231 static void smb_server_kstat_fini(smb_server_t *); | 231 static void smb_server_kstat_fini(smb_server_t *); |
232 static void smb_server_timers(smb_thread_t *, void *); | 232 static void smb_server_timers(smb_thread_t *, void *); |
233 static int smb_server_lookup(smb_server_t **); | 233 int smb_server_lookup(smb_server_t **); |
234 static void smb_server_release(smb_server_t *); | 234 void smb_server_release(smb_server_t *); |
235 static void smb_server_store_cfg(smb_server_t *, smb_ioc_cfg_t *); | 235 static void smb_server_store_cfg(smb_server_t *, smb_ioc_cfg_t *); |
236 static void smb_server_shutdown(smb_server_t *); | 236 static void smb_server_shutdown(smb_server_t *); |
237 static int smb_server_fsop_start(smb_server_t *); | 237 static int smb_server_fsop_start(smb_server_t *); |
238 static void smb_server_fsop_stop(smb_server_t *); | 238 static void smb_server_fsop_stop(smb_server_t *); |
239 static void smb_event_cancel(smb_server_t *, uint32_t); | 239 static void smb_event_cancel(smb_server_t *, uint32_t); |
1406 | 1406 |
1407 smb_server_listener_stop(&sv->sv_nbt_daemon); | 1407 smb_server_listener_stop(&sv->sv_nbt_daemon); |
1408 smb_server_listener_stop(&sv->sv_tcp_daemon); | 1408 smb_server_listener_stop(&sv->sv_tcp_daemon); |
1409 | 1409 |
1410 if (sv->sv_session != NULL) { | 1410 if (sv->sv_session != NULL) { |
1411 /* | |
1412 * smb_kshare_export may have a request on here. | |
1413 * Normal sessions do this in smb_session_cancel() | |
1414 * but this is a "fake" session used only for the | |
1415 * requests used by the kshare thread(s). | |
1416 */ | |
1417 smb_slist_wait_for_empty(&sv->sv_session->s_req_list); | |
1418 | |
1411 smb_session_delete(sv->sv_session); | 1419 smb_session_delete(sv->sv_session); |
1412 sv->sv_session = NULL; | 1420 sv->sv_session = NULL; |
1413 } | 1421 } |
1414 | 1422 |
1415 if (sv->sv_receiver_pool != NULL) { | 1423 if (sv->sv_receiver_pool != NULL) { |
1635 * smb_server_lookup | 1643 * smb_server_lookup |
1636 * | 1644 * |
1637 * This function tries to find the server associated with the zone of the | 1645 * This function tries to find the server associated with the zone of the |
1638 * caller. | 1646 * caller. |
1639 */ | 1647 */ |
1640 static int | 1648 int |
1641 smb_server_lookup(smb_server_t **psv) | 1649 smb_server_lookup(smb_server_t **psv) |
1642 { | 1650 { |
1643 zoneid_t zid; | 1651 zoneid_t zid; |
1644 smb_server_t *sv; | 1652 smb_server_t *sv; |
1645 | 1653 |
1671 * smb_server_release | 1679 * smb_server_release |
1672 * | 1680 * |
1673 * This function decrements the reference count of the server and signals its | 1681 * This function decrements the reference count of the server and signals its |
1674 * condition variable if the state of the server is SMB_SERVER_STATE_DELETING. | 1682 * condition variable if the state of the server is SMB_SERVER_STATE_DELETING. |
1675 */ | 1683 */ |
1676 static void | 1684 void |
1677 smb_server_release(smb_server_t *sv) | 1685 smb_server_release(smb_server_t *sv) |
1678 { | 1686 { |
1679 SMB_SERVER_VALID(sv); | 1687 SMB_SERVER_VALID(sv); |
1680 | 1688 |
1681 mutex_enter(&sv->sv_mutex); | 1689 mutex_enter(&sv->sv_mutex); |