Print this page
NEX-5016 nlm_unexport() should not call nlm_vhold_clean() with g->lock held
Reviewed by: Gordon Ross <gordon.ross@nexenta.com>
NEX-2966 NLM server holds vnodes too long
Reviewed by: Alek Pinchuk <alek.pinchuk@nexenta.com>
Reviewed by: Dan Fields <dan.fields@nexenta.com>
NEX-3758 Support for remote stale lock detection
Reviewed by: Gordon Ross <gordon.ross@nexenta.com>
NEX-2984 smhbaapi leaks memory
Reviewed by: Alek Pinchuk <alek.pinchuk@nexenta.com>
Reviewed by: Jean McCormack <jean.mccormack@nexenta.com>
Reviewed by: Marcel Telka <marcel.telka@nexenta.com>
NEX-3014 system crash after nlm_gc hits bogus mutex
4872 system crash after nlm_gc hits bogus mutex
Reviewed by: Adam Leventhal <ahl@delphix.com>
Reviewed by: Christopher Siden <christopher.siden@delphix.com>
Reviewed by: Eric Schrock <eric.schrock@delphix.com>
Reviewed by: Jeremy Jones <jeremy@delphix.com>
Approved by: Garrett D'Amore <garrett@damore.org>
OS-137 assertion failed: hostp->nh_refs == 0, file: ../../common/klm/nlm_impl.c, line: 1135
Reviewed by: Alek Pinchuk <alek.pinchuk@nexenta.com>
Reviewed by: Gordon Ross <gordon.ross@nexenta.com>
        
*** 2338,2347 ****
--- 2338,2382 ----
  
          (void) nlm_knc_to_netid(knc);
          return (0);
  }
  
+ int
+ nlm_sysid_to_host(zoneid_t zoneid, sysid_t sysid, struct sockaddr *sa,
+     const char **type)
+ {
+         struct nlm_globals *g;
+         struct nlm_host *host;
+         zone_t *zone;
+ 
+         zone = zone_find_by_id(zoneid);
+         if (zone == NULL)
+                 return (0);
+ 
+         g = zone_getspecific(nlm_zone_key, zone);
+ 
+         host = nlm_host_find_by_sysid(g, sysid);
+         if (host == NULL) {
+                 zone_rele(zone);
+                 return (0);
+         }
+ 
+         if (strcmp(host->nh_knc.knc_protofmly, NC_INET) == 0)
+                 bcopy(host->nh_addr.buf, sa, sizeof (struct sockaddr_in));
+         else if (strcmp(host->nh_knc.knc_protofmly, NC_INET6) == 0)
+                 bcopy(host->nh_addr.buf, sa, sizeof (struct sockaddr_in6));
+         else
+                 sa->sa_family = AF_UNSPEC;
+ 
+         nlm_host_release(g, host);
+         zone_rele(zone);
+ 
+         *type = "NLM";
+ 
+         return (1);
+ }
+ 
  /*
   * Start NLM service.
   */
  int
  nlm_svc_starting(struct nlm_globals *g, struct file *fp,