Print this page
NEX-18748 (Hyper-V 2016) VM goes to poweroff state when smbd is restarted
Reviewed by: Matt Barden <matt.barden@nexenta.com>
Reviewed by: Joyce McIntosh <joyce.mcintosh@nexenta.com>
NEX-1643 dtrace provider for smbsrv
Reviewed by: Evan Layton <evan.layton@nexenta.com>
Reviewed by: Matt Barden <matt.barden@nexenta.com>
SMB-122 smbd core dumps in smbd_dc_update / smb_log
SMB-117 Win7 fails to open security properties
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)

*** 8,18 **** * source. A copy of the CDDL is also available via the Internet at * http://www.illumos.org/license/CDDL. */ /* ! * Copyright 2014 Nexenta Systems, Inc. All rights reserved. */ /* * Dispatch function for SMB2_CLOSE */ --- 8,18 ---- * source. A copy of the CDDL is also available via the Internet at * http://www.illumos.org/license/CDDL. */ /* ! * Copyright 2018 Nexenta Systems, Inc. All rights reserved. */ /* * Dispatch function for SMB2_CLOSE */
*** 44,60 **** if (rc) return (SDRC_ERROR); if (StructSize != 24) return (SDRC_ERROR); status = smb2sr_lookup_fid(sr, &smb2fid); - if (status) { - smb2sr_put_error(sr, status); - return (SDRC_SUCCESS); - } of = sr->fid_ofile; bzero(&attr, sizeof (attr)); if (Flags & SMB2_CLOSE_FLAG_POSTQUERY_ATTRIB) { attr.sa_mask = SMB_AT_ALL; status = smb2_ofile_getattr(sr, of, &attr); if (status) { --- 44,64 ---- if (rc) return (SDRC_ERROR); if (StructSize != 24) return (SDRC_ERROR); + /* + * Want FID lookup before the start probe. + */ status = smb2sr_lookup_fid(sr, &smb2fid); of = sr->fid_ofile; + DTRACE_SMB2_START(op__Close, smb_request_t *, sr); + + if (status) + goto errout; /* Bad FID */ + bzero(&attr, sizeof (attr)); if (Flags & SMB2_CLOSE_FLAG_POSTQUERY_ATTRIB) { attr.sa_mask = SMB_AT_ALL; status = smb2_ofile_getattr(sr, of, &attr); if (status) {
*** 65,76 **** --- 69,91 ---- */ Flags = 0; } } + if (of->dh_persist) + smb2_dh_setdoc_persistent(of); smb_ofile_close(of, 0); + errout: + sr->smb2_status = status; + DTRACE_SMB2_DONE(op__Close, smb_request_t *, sr); + + if (status) { + smb2sr_put_error(sr, status); + return (SDRC_SUCCESS); + } + /* * SMB2 Close reply */ (void) smb_mbc_encodef( &sr->reply,