Print this page
NEX-16712 NFS dtrace providers do not support per-share filtering
Reviewed by: Evan Layton <evan.layton@nexenta.com>
Reviewed by: Gordon Ross <gordon.ross@nexenta.com>
Reviewed by: Yuri Pankon <yuri.pankov@nexenta.com>

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 */
  38   42  } nfsv4opinfo_t;
  39   43  
  40   44  typedef struct nfsv4cbinfo {
  41   45          string nci_curpath;     /* current file handle path (if any) */
  42   46  } nfsv4cbinfo_t;
  43   47  
  44   48  #pragma D binding "1.5" translator
  45   49  translator conninfo_t < struct svc_req *P > {
  46   50          ci_protocol = P->rq_xprt->xp_xpc.xpc_type == T_RDMA ? "rdma" :
  47   51              P->rq_xprt->xp_xpc.xpc_netid == "tcp" ? "ipv4" :
↓ open down ↓ 46 lines elided ↑ open up ↑
  94   98              P->req->rq_xprt->xp_xpc.xpc_rtaddr.buf)->sin6_addr) :
  95   99              "unknown";
  96  100  
  97  101  };
  98  102  
  99  103  #pragma D binding "1.5" translator
 100  104  translator nfsv4opinfo_t < struct compound_state *P > {
 101  105          noi_xid = P->req->rq_xprt->xp_xid;
 102  106          noi_cred = P->basecr;
 103  107          noi_curpath = (P->vp == NULL) ? "<unknown>" : P->vp->v_path;
      108 +        noi_shrpath = (P->exi == NULL || P->exi->exi_export.ex_path == NULL) ?
      109 +            "<unknown>" : P->exi->exi_export.ex_path;
 104  110  };
 105  111  
 106  112  typedef struct nfsv3opinfo {
 107  113          uint64_t noi_xid;       /* unique transation ID */
 108  114          cred_t *noi_cred;       /* credentials for operation */
 109  115          string noi_curpath;     /* current file handle path (if any) */
      116 +        string noi_shrpath;     /* current share path */
 110  117  } nfsv3opinfo_t;
 111  118  
 112  119  typedef struct nfsv3oparg nfsv3oparg_t;
 113  120  
 114  121  #pragma D binding "1.5" translator
 115  122  translator nfsv3opinfo_t < nfsv3oparg_t *P > {
 116  123          noi_xid = ((struct svc_req *)arg0)->rq_xprt->xp_xid;
 117  124          noi_cred = (cred_t *)arg1;
 118  125          noi_curpath = (arg2 == 0 || ((vnode_t *)arg2)->v_path == NULL) ?
 119  126              "<unknown>" : ((vnode_t *)arg2)->v_path;
      127 +        noi_shrpath =
      128 +            (arg3 == 0 || ((exportinfo_t *)arg3)->exi_export.ex_path == NULL) ?
      129 +            "<unknown>" : ((exportinfo_t *)arg3)->exi_export.ex_path;
 120  130  };
    
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX