Print this page
NEX-17779 Creating named streams on existing files is not quite right
Reviewed by: Evan Layton <evan.layton@nexenta.com>
Reviewed by: Gordon Ross <gordon.ross@nexenta.com>
Reviewed by: Roman Strashkin <roman.strashkin@nexenta.com>
NEX-17289 Minimal SMB 3.0.2 support
Reviewed by: Gordon Ross <gordon.ross@nexenta.com>
Reviewed by: Evan Layton <evan.layton@nexenta.com>
NEX-15069 smtorture smb2.create.blob is failed
Reviewed by: Matt Barden <matt.barden@nexenta.com>
Reviewed by: Evan Layton <evan.layton@nexenta.com>
NEX-15069 smtorture smb2.create.blob is failed
Reviewed by: Matt Barden <matt.barden@nexenta.com>
Reviewed by: Evan Layton <evan.layton@nexenta.com>
NEX-6276 SMB sparse file support
Reviewed by: Kevin Crowe <kevin.crowe@nexenta.com>
Reviewed by: Matt Barden <matt.barden@nexenta.com>
Reviewed by: Evan Layton <evan.layton@nexenta.com>
NEX-5844 want SMB2 ioctl FSCTL_SRV_COPYCHUNK
NEX-6124 smb_fsop_read/write should allow file != sr->fid_ofile
NEX-6125 smbtorture invalid response with smb2.ioctl
Reviewed by: Evan Layton <evan.layton@nexenta.com>
Reviewed by: Matt Barden <matt.barden@nexenta.com>
SMB-115 Support SMB path names with length > 1024
SMB-100 Internal error if filename is too long
Approved by: Gordon Ross <gwr@nexenta.com>
SMB-11 SMB2 message parse & dispatch
SMB-12 SMB2 Negotiate Protocol
SMB-13 SMB2 Session Setup
SMB-14 SMB2 Logoff
SMB-15 SMB2 Tree Connect
SMB-16 SMB2 Tree Disconnect
SMB-17 SMB2 Create
SMB-18 SMB2 Close
SMB-19 SMB2 Flush
SMB-20 SMB2 Read
SMB-21 SMB2 Write
SMB-22 SMB2 Lock/Unlock
SMB-23 SMB2 Ioctl
SMB-24 SMB2 Cancel
SMB-25 SMB2 Echo
SMB-26 SMB2 Query Dir
SMB-27 SMB2 Change Notify
SMB-28 SMB2 Query Info
SMB-29 SMB2 Set Info
SMB-30 SMB2 Oplocks
SMB-53 SMB2 Create Context options
(SMB2 code review cleanup 1, 2, 3)

@@ -20,11 +20,11 @@
  */
 /*
  * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
  * Use is subject to license terms.
  *
- * Copyright 2013 Nexenta Systems, Inc.  All rights reserved.
+ * Copyright 2018 Nexenta Systems, Inc.  All rights reserved.
  */
 
 #ifndef _SMBSRV_SMB_FSOPS_H
 #define _SMBSRV_SMB_FSOPS_H
 

@@ -52,10 +52,14 @@
 void smb_fsop_oplock_uninstall(smb_node_t *);
 
 int smb_fsop_create(smb_request_t *, cred_t *, smb_node_t *,
     char *, smb_attr_t *, smb_node_t **);
 
+int
+smb_fsop_create_stream(smb_request_t *, cred_t *, smb_node_t *, smb_node_t *,
+    char *, int, smb_attr_t *, smb_node_t **);
+
 int smb_fsop_mkdir(smb_request_t *, cred_t *, smb_node_t *,
     char *, smb_attr_t *, smb_node_t **);
 
 int smb_fsop_remove(smb_request_t *sr, cred_t *cr, smb_node_t *,
     char *, uint32_t);

@@ -71,32 +75,42 @@
 
 int smb_fsop_rename(smb_request_t *, cred_t *,
     smb_node_t *, char *, smb_node_t *, char *);
 
 int smb_fsop_setattr(smb_request_t *, cred_t *, smb_node_t *, smb_attr_t *);
-int smb_fsop_set_data_length(smb_request_t *sr, cred_t *cr, smb_node_t *,
-    offset_t);
 
-int smb_fsop_read(smb_request_t *, cred_t *, smb_node_t *, uio_t *);
+int smb_fsop_freesp(smb_request_t *sr, cred_t *cr, smb_ofile_t *,
+                    off64_t, off64_t);
 
-int smb_fsop_write(smb_request_t *, cred_t *, smb_node_t *, uio_t *,
-    uint32_t *, int);
+int smb_fsop_read(smb_request_t *, cred_t *, smb_node_t *, smb_ofile_t *,
+    uio_t *, int);
 
+int smb_fsop_write(smb_request_t *, cred_t *, smb_node_t *, smb_ofile_t *,
+    uio_t *, uint32_t *, int);
+
+int smb_fsop_next_alloc_range(cred_t *, smb_node_t *, off64_t *, off64_t *);
+
 int smb_fsop_statfs(cred_t *, smb_node_t *, struct statvfs64 *);
 
 uint32_t smb_fsop_remove_streams(smb_request_t *, cred_t *, smb_node_t *);
 
 int smb_fsop_access(smb_request_t *, cred_t *, smb_node_t *, uint32_t);
 
 void smb_fsop_eaccess(smb_request_t *, cred_t *, smb_node_t *, uint32_t *);
 
+int smb_fsop_lookup_file(smb_request_t *, cred_t *, int,
+    smb_node_t *, smb_node_t *, char *, char **, smb_node_t **);
+
 int smb_fsop_lookup_name(smb_request_t *, cred_t *, int,
     smb_node_t *, smb_node_t *, char *, smb_node_t **);
 
 int smb_fsop_lookup(smb_request_t *, cred_t *, int,
     smb_node_t *, smb_node_t *, char *, smb_node_t **);
 
+int smb_fsop_lookup_stream(smb_request_t *, cred_t *, int, smb_node_t *,
+    smb_node_t *, char *, smb_node_t **);
+
 int smb_fsop_commit(smb_request_t *, cred_t *, smb_node_t *);
 
 int smb_fsop_aclread(smb_request_t *, cred_t *, smb_node_t *, smb_fssd_t *);
 int smb_fsop_aclwrite(smb_request_t *, cred_t *, smb_node_t *, smb_fssd_t *);
 acl_type_t smb_fsop_acltype(smb_node_t *);

@@ -121,10 +135,11 @@
 #define SMB_FOLLOW_LINKS        0x00000001
 #define SMB_IGNORE_CASE         0x00000002
 #define SMB_CATIA               0x00000004
 #define SMB_ABE                 0x00000008
 #define SMB_CASE_SENSITIVE      0x00000010
+#define SMB_EDIRENT             0x00000020
 
 /*
  * Increased MAXPATHLEN for SMB.  Essentially, we want to allow a
  * share path up to MAXPATHLEN plus a relative path of MAXPATHLEN.
  */