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>

Split Close
Expand all
Collapse all
          --- old/usr/src/cmd/dlmgmtd/dlmgmt_impl.h
          +++ new/usr/src/cmd/dlmgmtd/dlmgmt_impl.h
↓ open down ↓ 59 lines elided ↑ open up ↑
  60   60          datalink_class_t        ll_class;
  61   61          uint32_t                ll_media;
  62   62          datalink_id_t           ll_linkid;
  63   63          zoneid_t                ll_zoneid;
  64   64          boolean_t               ll_onloan;
  65   65          avl_node_t              ll_name_node;
  66   66          avl_node_t              ll_id_node;
  67   67          avl_node_t              ll_loan_node;
  68   68          uint32_t                ll_flags;
  69   69          uint32_t                ll_gen;         /* generation number */
       70 +        boolean_t               ll_tomb;        /* tombstombed */
  70   71  } dlmgmt_link_t;
  71   72  
  72   73  /*
  73   74   * datalink configuration request structure
  74   75   */
  75   76  typedef struct dlmgmt_dlconf_s {
  76   77          dlmgmt_linkattr_t       *ld_head;
  77   78          char                    ld_link[MAXLINKNAMELEN];
  78   79          datalink_id_t           ld_linkid;
  79   80          datalink_class_t        ld_class;
  80   81          uint32_t                ld_media;
  81   82          int                     ld_id;
  82   83          zoneid_t                ld_zoneid;
  83   84          uint32_t                ld_gen;
  84   85          avl_node_t              ld_node;
  85   86  } dlmgmt_dlconf_t;
  86   87  
       88 +#define ZONE_LOCK       "/etc/dladm/zone.lck"
       89 +
  87   90  extern boolean_t        debug;
  88   91  extern const char       *progname;
  89   92  extern char             cachefile[];
  90   93  extern dladm_handle_t   dld_handle;
  91   94  extern datalink_id_t    dlmgmt_nextlinkid;
  92   95  extern avl_tree_t       dlmgmt_name_avl;
  93   96  extern avl_tree_t       dlmgmt_id_avl;
  94   97  extern avl_tree_t       dlmgmt_loan_avl;
  95   98  extern avl_tree_t       dlmgmt_dlconf_avl;
  96   99  
↓ open down ↓ 34 lines elided ↑ open up ↑
 131  134  void            dlmgmt_linktable_init(void);
 132  135  void            dlmgmt_linktable_fini(void);
 133  136  
 134  137  int             dlmgmt_zone_init(zoneid_t);
 135  138  int             dlmgmt_elevate_privileges(void);
 136  139  int             dlmgmt_drop_privileges();
 137  140  void            dlmgmt_handler(void *, char *, size_t, door_desc_t *, uint_t);
 138  141  void            dlmgmt_log(int, const char *, ...);
 139  142  int             dlmgmt_write_db_entry(const char *, dlmgmt_link_t *, uint32_t);
 140  143  int             dlmgmt_delete_db_entry(dlmgmt_link_t *, uint32_t);
 141      -int             dlmgmt_db_init(zoneid_t);
      144 +int             dlmgmt_db_init(zoneid_t, char *);
 142  145  void            dlmgmt_db_fini(zoneid_t);
 143  146  
 144  147  #ifdef  __cplusplus
 145  148  }
 146  149  #endif
 147  150  
 148  151  #endif  /* _DLMGMT_IMPL_H */
    
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX