Print this page
OS-3342+co
OS-375 i_dls_mgmt_upcall()/dlmgmt_zfop() deadlock in dlmgmtd
OS-375-1

*** 19,28 **** --- 19,29 ---- * CDDL HEADER END */ /* * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2011, Joyent Inc. All rights reserved. */ /* * Functions to maintain a table of datalink configuration information. */
*** 65,74 **** --- 66,76 ---- avl_node_t ll_name_node; avl_node_t ll_id_node; avl_node_t ll_loan_node; uint32_t ll_flags; uint32_t ll_gen; /* generation number */ + boolean_t ll_tomb; /* tombstombed */ } dlmgmt_link_t; /* * datalink configuration request structure */
*** 82,91 **** --- 84,95 ---- zoneid_t ld_zoneid; uint32_t ld_gen; avl_node_t ld_node; } dlmgmt_dlconf_t; + #define ZONE_LOCK "/etc/dladm/zone.lck" + extern boolean_t debug; extern const char *progname; extern char cachefile[]; extern dladm_handle_t dld_handle; extern datalink_id_t dlmgmt_nextlinkid;
*** 136,146 **** int dlmgmt_drop_privileges(); void dlmgmt_handler(void *, char *, size_t, door_desc_t *, uint_t); void dlmgmt_log(int, const char *, ...); int dlmgmt_write_db_entry(const char *, dlmgmt_link_t *, uint32_t); int dlmgmt_delete_db_entry(dlmgmt_link_t *, uint32_t); ! int dlmgmt_db_init(zoneid_t); void dlmgmt_db_fini(zoneid_t); #ifdef __cplusplus } #endif --- 140,150 ---- int dlmgmt_drop_privileges(); void dlmgmt_handler(void *, char *, size_t, door_desc_t *, uint_t); void dlmgmt_log(int, const char *, ...); int dlmgmt_write_db_entry(const char *, dlmgmt_link_t *, uint32_t); int dlmgmt_delete_db_entry(dlmgmt_link_t *, uint32_t); ! int dlmgmt_db_init(zoneid_t, char *); void dlmgmt_db_fini(zoneid_t); #ifdef __cplusplus } #endif