Print this page
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-4083 Upstream changes from illumos 5917 and 5995
Reviewed by: Matt Barden <matt.barden@nexenta.com>
Reviewed by: Kevin Crowe <kevin.crowe@nexenta.com>
Reviewed by: Yuri Pankov <yuri.pankov@nexenta.com>
NEX-3620 need upstream cleanups for smbsrv
Reviewed by: Hans Rosenfeld <hans.rosenfeld@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)
SMB-50 User-mode SMB server
Includes work by these authors:
Thomas Keiser <thomas.keiser@nexenta.com>
Albert Lee <trisk@nexenta.com>
*** 8,18 ****
* source. A copy of the CDDL is also available via the Internet at
* http://www.illumos.org/license/CDDL.
*/
/*
! * Copyright 2013 Nexenta Systems, Inc. All rights reserved.
*/
#include <sys/types.h>
#include <sys/param.h>
#include <sys/t_lock.h>
--- 8,18 ----
* source. A copy of the CDDL is also available via the Internet at
* http://www.illumos.org/license/CDDL.
*/
/*
! * Copyright 2016 Nexenta Systems, Inc. All rights reserved.
*/
#include <sys/types.h>
#include <sys/param.h>
#include <sys/t_lock.h>
*** 48,58 ****
--- 48,62 ----
static uint64_t vfs_features = VFSFT_XVATTR;
vnode_t *rootdir = NULL; /* pointer to root inode vnode. */
static struct vfs fake_rootvfs;
+ static struct vfsops fake_vfsops;
struct vfs *rootvfs = NULL;
+ static struct vfssw fake_vfssw = {
+ .vsw_name = "fake" /* see smb_tree.c:smb_mtype[] */
+ };
int
fksmbsrv_vfs_init(void)
{
struct stat st;
*** 62,71 ****
--- 66,76 ----
if (rootvfs == NULL) {
rootvfs = &fake_rootvfs;
rootvfs->vfs_mntpt = refstr_alloc(name);
rootvfs->vfs_fsid.val[0] = 1;
+ rootvfs->vfs_op = &fake_vfsops;
}
if (rootdir == NULL) {
if (lstat(name, &st) == -1)
return (errno);
*** 124,133 ****
--- 129,140 ----
/* ARGSUSED */
struct vfssw *
vfs_getvfsswbyvfsops(vfsops_t *vfsops)
{
+ if (vfsops == &fake_vfsops)
+ return (&fake_vfssw);
return (NULL);
}
/* ARGSUSED */
void