Print this page
filesystem hook framework (August 19th)

Split Close
Expand all
Collapse all
          --- old/usr/src/uts/common/sys/vfs.h
          +++ new/usr/src/uts/common/sys/vfs.h
↓ open down ↓ 190 lines elided ↑ open up ↑
 191  191   * are set at mount time and can only be modified during a remount.
 192  192   * It is safe to read these fields if you can prevent a remount on the vfs,
 193  193   * or through the convenience funcs vfs_getmntpoint() and vfs_getresource().
 194  194   * The mntopts field may only be accessed through the provided convenience
 195  195   * functions, as it is protected by the vfs list lock. Modifying a mount
 196  196   * option requires grabbing the vfs list write lock, which can be a very
 197  197   * high latency lock.
 198  198   */
 199  199  struct zone;            /* from zone.h */
 200  200  struct fem_head;        /* from fem.h */
      201 +struct fsh_fsrecord;    /* from fsh_impl.h */
 201  202  
 202  203  typedef struct vfs {
 203  204          struct vfs      *vfs_next;              /* next VFS in VFS list */
 204  205          struct vfs      *vfs_prev;              /* prev VFS in VFS list */
 205  206  
 206  207  /* vfs_op should not be used directly.  Accessor functions are provided */
 207  208          vfsops_t        *vfs_op;                /* operations on VFS */
 208  209  
 209  210          struct vnode    *vfs_vnodecovered;      /* vnode mounted on */
 210  211          uint_t          vfs_flag;               /* flags */
↓ open down ↓ 17 lines elided ↑ open up ↑
 228  229           * necessarily the same as the zone in which the zone is visible.
 229  230           * That is, vfs_zone and (vfs_zone_next|vfs_zone_prev) may refer to
 230  231           * different zones.
 231  232           */
 232  233          struct zone     *vfs_zone;              /* zone that owns the mount */
 233  234          struct vfs      *vfs_zone_next;         /* next VFS visible in zone */
 234  235          struct vfs      *vfs_zone_prev;         /* prev VFS visible in zone */
 235  236  
 236  237          struct fem_head *vfs_femhead;           /* fs monitoring */
 237  238          minor_t         vfs_lofi_minor;         /* minor if lofi mount */
      239 +
      240 +        struct fsh_fsrecord *volatile
      241 +                vfs_fshrecord;                  /* fs hooking */
 238  242  } vfs_t;
 239  243  
 240  244  #define vfs_featureset  vfs_implp->vi_featureset
 241  245  #define vfs_vskap       vfs_implp->vi_vskap
 242  246  #define vfs_fstypevsp   vfs_implp->vi_fstypevsp
 243  247  #define vfs_vopstats    vfs_implp->vi_vopstats
 244  248  #define vfs_hrctime     vfs_implp->vi_hrctime
 245  249  
 246  250  /*
 247  251   * VFS flags.
↓ open down ↓ 373 lines elided ↑ open up ↑
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX