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,30 ****
*/
/*
* Copyright 2009 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*
! * Copyright 2013 Nexenta Systems, Inc. All rights reserved.
*/
#ifndef _SMBSRV_SMB_FSOPS_H
#define _SMBSRV_SMB_FSOPS_H
--- 20,30 ----
*/
/*
* Copyright 2009 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*
! * Copyright 2018 Nexenta Systems, Inc. All rights reserved.
*/
#ifndef _SMBSRV_SMB_FSOPS_H
#define _SMBSRV_SMB_FSOPS_H
*** 52,61 ****
--- 52,65 ----
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,102 ****
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_write(smb_request_t *, cred_t *, smb_node_t *, uio_t *,
! uint32_t *, int);
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_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_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 *);
--- 75,116 ----
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_freesp(smb_request_t *sr, cred_t *cr, smb_ofile_t *,
! off64_t, off64_t);
! 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,130 ****
--- 135,145 ----
#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.
*/