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

Split Close
Expand all
Collapse all
          --- old/usr/src/cmd/dlmgmtd/dlmgmt_impl.h
          +++ new/usr/src/cmd/dlmgmtd/dlmgmt_impl.h
↓ open down ↓ 13 lines elided ↑ open up ↑
  14   14   * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
  15   15   * If applicable, add the following below this CDDL HEADER, with the
  16   16   * fields enclosed by brackets "[]" replaced with your own identifying
  17   17   * information: Portions Copyright [yyyy] [name of copyright owner]
  18   18   *
  19   19   * CDDL HEADER END
  20   20   */
  21   21  
  22   22  /*
  23   23   * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
       24 + * Copyright (c) 2011, Joyent Inc. All rights reserved.
  24   25   */
  25   26  
  26   27  /*
  27   28   * Functions to maintain a table of datalink configuration information.
  28   29   */
  29   30  
  30   31  #ifndef _DLMGMT_IMPL_H
  31   32  #define _DLMGMT_IMPL_H
  32   33  
  33   34  #ifdef  __cplusplus
↓ open down ↓ 26 lines elided ↑ open up ↑
  60   61          datalink_class_t        ll_class;
  61   62          uint32_t                ll_media;
  62   63          datalink_id_t           ll_linkid;
  63   64          zoneid_t                ll_zoneid;
  64   65          boolean_t               ll_onloan;
  65   66          avl_node_t              ll_name_node;
  66   67          avl_node_t              ll_id_node;
  67   68          avl_node_t              ll_loan_node;
  68   69          uint32_t                ll_flags;
  69   70          uint32_t                ll_gen;         /* generation number */
       71 +        boolean_t               ll_tomb;        /* tombstombed */
  70   72  } dlmgmt_link_t;
  71   73  
  72   74  /*
  73   75   * datalink configuration request structure
  74   76   */
  75   77  typedef struct dlmgmt_dlconf_s {
  76   78          dlmgmt_linkattr_t       *ld_head;
  77   79          char                    ld_link[MAXLINKNAMELEN];
  78   80          datalink_id_t           ld_linkid;
  79   81          datalink_class_t        ld_class;
  80   82          uint32_t                ld_media;
  81   83          int                     ld_id;
  82   84          zoneid_t                ld_zoneid;
  83   85          uint32_t                ld_gen;
  84   86          avl_node_t              ld_node;
  85   87  } dlmgmt_dlconf_t;
  86   88  
       89 +#define ZONE_LOCK       "/etc/dladm/zone.lck"
       90 +
  87   91  extern boolean_t        debug;
  88   92  extern const char       *progname;
  89   93  extern char             cachefile[];
  90   94  extern dladm_handle_t   dld_handle;
  91   95  extern datalink_id_t    dlmgmt_nextlinkid;
  92   96  extern avl_tree_t       dlmgmt_name_avl;
  93   97  extern avl_tree_t       dlmgmt_id_avl;
  94   98  extern avl_tree_t       dlmgmt_loan_avl;
  95   99  extern avl_tree_t       dlmgmt_dlconf_avl;
  96  100  
↓ open down ↓ 34 lines elided ↑ open up ↑
 131  135  void            dlmgmt_linktable_init(void);
 132  136  void            dlmgmt_linktable_fini(void);
 133  137  
 134  138  int             dlmgmt_zone_init(zoneid_t);
 135  139  int             dlmgmt_elevate_privileges(void);
 136  140  int             dlmgmt_drop_privileges();
 137  141  void            dlmgmt_handler(void *, char *, size_t, door_desc_t *, uint_t);
 138  142  void            dlmgmt_log(int, const char *, ...);
 139  143  int             dlmgmt_write_db_entry(const char *, dlmgmt_link_t *, uint32_t);
 140  144  int             dlmgmt_delete_db_entry(dlmgmt_link_t *, uint32_t);
 141      -int             dlmgmt_db_init(zoneid_t);
      145 +int             dlmgmt_db_init(zoneid_t, char *);
 142  146  void            dlmgmt_db_fini(zoneid_t);
 143  147  
 144  148  #ifdef  __cplusplus
 145  149  }
 146  150  #endif
 147  151  
 148  152  #endif  /* _DLMGMT_IMPL_H */
    
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX