Print this page
11083 support NFS server in zone
Portions contributed by: Dan Kruchinin <dan.kruchinin@nexenta.com>
Portions contributed by: Stepan Zastupov <stepan.zastupov@gmail.com>
Portions contributed by: Joyce McIntosh <joyce.mcintosh@nexenta.com>
Portions contributed by: Mike Zeller <mike@mikezeller.net>
Portions contributed by: Dan McDonald <danmcd@joyent.com>
Portions contributed by: Gordon Ross <gordon.w.ross@gmail.com>
Portions contributed by: Vitaliy Gusev <gusev.vitaliy@gmail.com>
Reviewed by: Rick McNeal <rick.mcneal@nexenta.com>
Reviewed by: Rob Gittins <rob.gittins@nexenta.com>
Reviewed by: Sanjay Nadkarni <sanjay.nadkarni@nexenta.com>
Reviewed by: Jason King <jbk@joyent.com>
Reviewed by: C Fraire <cfraire@me.com>
Change-Id: I22f289d357503f9b48a0bc2482cc4328a6d43d16

Split Close
Expand all
Collapse all
          --- old/usr/src/lib/libdtrace/common/nfs.d
          +++ new/usr/src/lib/libdtrace/common/nfs.d
↓ open down ↓ 15 lines elided ↑ open up ↑
  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 2009 Sun Microsystems, Inc.  All rights reserved.
  24   24   * Use is subject to license terms.
  25   25   */
       26 +/*
       27 + * Copyright 2018 Nexenta Systems, Inc.  All rights reserved.
       28 + */
  26   29  
  27   30  #pragma D depends_on library ip.d
  28   31  #pragma D depends_on library net.d
  29   32  #pragma D depends_on module nfs
  30   33  
  31   34  inline int T_RDMA = 4;
  32   35  #pragma D binding "1.5" T_RDMA
  33   36  
  34   37  typedef struct nfsv4opinfo {
  35   38          uint64_t noi_xid;       /* unique transation ID */
  36   39          cred_t *noi_cred;       /* credentials for operation */
  37   40          string noi_curpath;     /* current file handle path (if any) */
       41 +        string noi_shrpath;     /* current share path */
       42 +        zoneid_t noi_zoneid;    /* zone identifier */
  38   43  } nfsv4opinfo_t;
  39   44  
  40   45  typedef struct nfsv4cbinfo {
  41   46          string nci_curpath;     /* current file handle path (if any) */
  42   47  } nfsv4cbinfo_t;
  43   48  
  44   49  #pragma D binding "1.5" translator
  45   50  translator conninfo_t < struct svc_req *P > {
  46   51          ci_protocol = P->rq_xprt->xp_xpc.xpc_type == T_RDMA ? "rdma" :
  47   52              P->rq_xprt->xp_xpc.xpc_netid == "tcp" ? "ipv4" :
↓ open down ↓ 46 lines elided ↑ open up ↑
  94   99              P->req->rq_xprt->xp_xpc.xpc_rtaddr.buf)->sin6_addr) :
  95  100              "unknown";
  96  101  
  97  102  };
  98  103  
  99  104  #pragma D binding "1.5" translator
 100  105  translator nfsv4opinfo_t < struct compound_state *P > {
 101  106          noi_xid = P->req->rq_xprt->xp_xid;
 102  107          noi_cred = P->basecr;
 103  108          noi_curpath = (P->vp == NULL) ? "<unknown>" : P->vp->v_path;
      109 +        noi_shrpath = (P->exi == NULL || P->exi->exi_export.ex_path == NULL) ?
      110 +            "<unknown>" : P->exi->exi_export.ex_path;
      111 +        noi_zoneid = (P->exi == NULL) ? -1 : P->exi->exi_zoneid;
 104  112  };
 105  113  
 106  114  typedef struct nfsv3opinfo {
 107  115          uint64_t noi_xid;       /* unique transation ID */
 108  116          cred_t *noi_cred;       /* credentials for operation */
 109  117          string noi_curpath;     /* current file handle path (if any) */
      118 +        string noi_shrpath;     /* current share path */
      119 +        zoneid_t noi_zoneid;    /* zone identifier */
 110  120  } nfsv3opinfo_t;
 111  121  
 112  122  typedef struct nfsv3oparg nfsv3oparg_t;
 113  123  
 114  124  #pragma D binding "1.5" translator
 115  125  translator nfsv3opinfo_t < nfsv3oparg_t *P > {
 116  126          noi_xid = ((struct svc_req *)arg0)->rq_xprt->xp_xid;
 117  127          noi_cred = (cred_t *)arg1;
 118  128          noi_curpath = (arg2 == 0 || ((vnode_t *)arg2)->v_path == NULL) ?
 119  129              "<unknown>" : ((vnode_t *)arg2)->v_path;
      130 +        noi_shrpath =
      131 +            (arg3 == 0 || ((exportinfo_t *)arg3)->exi_export.ex_path == NULL) ?
      132 +            "<unknown>" : ((exportinfo_t *)arg3)->exi_export.ex_path;
      133 +        noi_zoneid =
      134 +            (arg3 == 0) ? -1 : ((exportinfo_t *)arg3)->exi_zoneid;
 120  135  };
    
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX