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. */