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

@@ -19,10 +19,11 @@
  * 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,10 +66,11 @@
         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,10 +84,12 @@
         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,11 +140,11 @@
 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);
+int             dlmgmt_db_init(zoneid_t, char *);
 void            dlmgmt_db_fini(zoneid_t);
 
 #ifdef  __cplusplus
 }
 #endif