Print this page
NEX-14666 Need to provide SMB 2.1 Client
NEX-17187 panic in smbfs_acl_store
NEX-17231 smbfs create xattr files finds wrong file
NEX-17224 smbfs lookup EINVAL should be ENOENT
NEX-17260 SMB1 client fails to list directory after NEX-14666
Reviewed by: Evan Layton <evan.layton@nexenta.com>
Reviewed by: Matt Barden <matt.barden@nexenta.com>
Reviewed by: Rick McNeal <rick.mcneal@nexenta.com>
Reviewed by: Saso Kiselkov <saso.kiselkov@nexenta.com>
Reviewed by: Joyce McIntosh <joyce.mcintosh@nexenta.com>
and: (cleanup)
5404 smbfs needs mmap support
Portions contributed by: Gordon Ross <gordon.w.ross@gmail.com>
Reviewed by: C Fraire <cfraire@me.com>
Reviewed by: Toomas Soome <tsoome@me.com>
Reviewed by: Jason King <jason.brian.king@gmail.com>
Reviewed by: Andrew Stormont <andyjstormont@gmail.com>
Approved by: Richard Lowe <richlowe@richlowe.net>
        
*** 31,43 ****
   *
   * $Id: smbfs_node.h,v 1.31.52.1 2005/05/27 02:35:28 lindak Exp $
   */
  
  /*
-  * Copyright 2011 Nexenta Systems, Inc.  All rights reserved.
   * Copyright 2010 Sun Microsystems, Inc.  All rights reserved.
   * Use is subject to license terms.
   */
  
  #ifndef _FS_SMBFS_NODE_H_
  #define _FS_SMBFS_NODE_H_
  
--- 31,44 ----
   *
   * $Id: smbfs_node.h,v 1.31.52.1 2005/05/27 02:35:28 lindak Exp $
   */
  
  /*
   * Copyright 2010 Sun Microsystems, Inc.  All rights reserved.
   * Use is subject to license terms.
+  *
+  * Copyright 2018 Nexenta Systems, Inc.  All rights reserved.
   */
  
  #ifndef _FS_SMBFS_NODE_H_
  #define _FS_SMBFS_NODE_H_
  
*** 219,248 ****
           */
          int             n_dirrefs;
          struct smbfs_fctx       *n_dirseq;      /* ff context */
          int             n_dirofs;       /* last ff offset */
          int             n_fidrefs;
!         uint16_t        n_fid;          /* file handle */
          enum vtype      n_ovtype;       /* vnode type opened */
-         uint32_t        n_rights;       /* granted rights */
-         int             n_vcgenid;      /* gereration no. (reconnect) */
  
          /*
           * Misc. bookkeeping
           */
          cred_t          *r_cred;        /* current credentials */
          u_offset_t      r_nextr;        /* next read offset (read-ahead) */
          long            r_mapcnt;       /* count of mmapped pages */
          uint_t          r_count;        /* # of refs not reflect in v_count */
          uint_t          r_awcount;      /* # of outstanding async write */
          uint_t          r_gcount;       /* getattrs waiting to flush pages */
          uint_t          r_flags;        /* flags, see below */
!         uint32_t        n_flag;         /* NXXX flags below */
          uint_t          r_error;        /* async write error */
          kcondvar_t      r_cv;           /* condvar for blocked threads */
          avl_tree_t      r_dir;          /* cache of readdir responses */
          rddir_cache     *r_direof;      /* pointer to the EOF entry */
          kthread_t       *r_serial;      /* id of purging thread */
          list_t          r_indelmap;     /* list of delmap callers */
  
          /*
           * Attributes: local, and as last seen on the server.
--- 220,249 ----
           */
          int             n_dirrefs;
          struct smbfs_fctx       *n_dirseq;      /* ff context */
          int             n_dirofs;       /* last ff offset */
          int             n_fidrefs;
!         smb_fh_t        *n_fid;         /* file handle */
          enum vtype      n_ovtype;       /* vnode type opened */
  
          /*
           * Misc. bookkeeping
           */
          cred_t          *r_cred;        /* current credentials */
          u_offset_t      r_nextr;        /* next read offset (read-ahead) */
          long            r_mapcnt;       /* count of mmapped pages */
+         uint_t          r_inmap;        /* to serialize read/write and mmap */
          uint_t          r_count;        /* # of refs not reflect in v_count */
          uint_t          r_awcount;      /* # of outstanding async write */
          uint_t          r_gcount;       /* getattrs waiting to flush pages */
          uint_t          r_flags;        /* flags, see below */
!         uint32_t        n_flag;         /* N--- flags below */
          uint_t          r_error;        /* async write error */
          kcondvar_t      r_cv;           /* condvar for blocked threads */
          avl_tree_t      r_dir;          /* cache of readdir responses */
          rddir_cache     *r_direof;      /* pointer to the EOF entry */
+         u_offset_t      r_modaddr;      /* address for page in writenp */
          kthread_t       *r_serial;      /* id of purging thread */
          list_t          r_indelmap;     /* list of delmap callers */
  
          /*
           * Attributes: local, and as last seen on the server.