Print this page
dlmgt mismerge (continued)
OS-3342 dlmgmtd needs to be mindful of lock ordering
OS-2608 dlmgmtd needs to record zone identifiers
OS-3492 zone_free asserts to its destruction when dlmgmtd has fallen
OS-3494 zoneadmd tears down networking too soon when boot fails
Reviewed by: Jerry Jelinek <jerry.jelinek@joyent.com>
        
*** 65,74 ****
--- 65,75 ----
          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 ****
--- 83,94 ----
          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
--- 139,149 ----
  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