Print this page
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-1643 dtrace provider for smbsrv
Reviewed by: Evan Layton <evan.layton@nexenta.com>
Reviewed by: Matt Barden <matt.barden@nexenta.com>
NEX-4797 MS-Office crash while saving a file on a Nexenta smb share
Revert "NEX-4324 Should not include $DATA when enumerating streams"
This reverts commits c72f3674cf6d0db6a44cd40c1ed626e79f20a537
and 2db2cee12b7a06b6651924ff35cf8bfc42a3b32f.
NEX-4324 Should not include $DATA when enumerating streams (lint)
NEX-4324 Should not include $DATA when enumerating streams
Reviewed by: Daniel Borek <daniel.borek@nexenta.com>
Reviewed by: Matt Barden <Matt.Barden@nexenta.com>
Reviewed by: Josef 'Jeff' Sipek <josef.sipek@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-63 taskq_create_proc ... TQ_DYNAMIC puts tasks in p0
re #11974 CIFS Share - Tree connect fails from Windows 7 Clients
re #14152 Race between ipmi_submit_driver_request() and kcs_loop() (sync with illumos fix 3902)
SMB-46 File handle leaks exposed by mtime fixes (rm 7815)
re #7815 SMB server delivers old modification time...
        
*** 19,29 ****
   * CDDL HEADER END
   */
  
  /*
   * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
!  * Copyright 2013 Nexenta Systems, Inc.  All rights reserved.
   */
  
  #include <smbsrv/smb_kproto.h>
  #include <smbsrv/smb_vops.h>
  #include <smbsrv/smb_fsops.h>
--- 19,29 ----
   * CDDL HEADER END
   */
  
  /*
   * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
!  * Copyright 2017 Nexenta Systems, Inc.  All rights reserved.
   */
  
  #include <smbsrv/smb_kproto.h>
  #include <smbsrv/smb_vops.h>
  #include <smbsrv/smb_fsops.h>
*** 147,166 ****
          int rc;
          smb_fqi_t *fqi = &sr->arg.dirop.fqi;
  
          rc = smbsr_decode_data(sr, "%S", sr, &fqi->fq_path.pn_path);
  
!         DTRACE_SMB_2(op__QueryInformation__start, smb_request_t *, sr,
!             smb_fqi_t *, fqi);
  
          return ((rc == 0) ? SDRC_SUCCESS : SDRC_ERROR);
  }
  
  void
  smb_post_query_information(smb_request_t *sr)
  {
!         DTRACE_SMB_1(op__QueryInformation__done, smb_request_t *, sr);
  }
  
  smb_sdrc_t
  smb_com_query_information(smb_request_t *sr)
  {
--- 147,165 ----
          int rc;
          smb_fqi_t *fqi = &sr->arg.dirop.fqi;
  
          rc = smbsr_decode_data(sr, "%S", sr, &fqi->fq_path.pn_path);
  
!         DTRACE_SMB_START(op__QueryInformation, smb_request_t *, sr);
  
          return ((rc == 0) ? SDRC_SUCCESS : SDRC_ERROR);
  }
  
  void
  smb_post_query_information(smb_request_t *sr)
  {
!         DTRACE_SMB_DONE(op__QueryInformation, smb_request_t *, sr);
  }
  
  smb_sdrc_t
  smb_com_query_information(smb_request_t *sr)
  {
*** 185,203 ****
  smb_pre_query_information2(smb_request_t *sr)
  {
          int rc;
          rc = smbsr_decode_vwv(sr, "w", &sr->smb_fid);
  
!         DTRACE_SMB_1(op__QueryInformation2__start, smb_request_t *, sr);
  
          return ((rc == 0) ? SDRC_SUCCESS : SDRC_ERROR);
  }
  
  void
  smb_post_query_information2(smb_request_t *sr)
  {
!         DTRACE_SMB_1(op__QueryInformation2__done, smb_request_t *, sr);
  }
  
  smb_sdrc_t
  smb_com_query_information2(smb_request_t *sr)
  {
--- 184,202 ----
  smb_pre_query_information2(smb_request_t *sr)
  {
          int rc;
          rc = smbsr_decode_vwv(sr, "w", &sr->smb_fid);
  
!         DTRACE_SMB_START(op__QueryInformation2, smb_request_t *, sr);
  
          return ((rc == 0) ? SDRC_SUCCESS : SDRC_ERROR);
  }
  
  void
  smb_post_query_information2(smb_request_t *sr)
  {
!         DTRACE_SMB_DONE(op__QueryInformation2, smb_request_t *, sr);
  }
  
  smb_sdrc_t
  smb_com_query_information2(smb_request_t *sr)
  {
*** 328,341 ****
                      sr->tid_tree->t_snode, dnode, qinfo->qi_name, &node);
                  smb_node_release(dnode);
          }
  
          if (rc != 0) {
-                 if (rc == ENOENT)
-                         smbsr_error(sr, NT_STATUS_OBJECT_NAME_NOT_FOUND,
-                             ERRDOS, ERROR_FILE_NOT_FOUND);
-                 else
                          smbsr_errno(sr, rc);
  
                  kmem_free(qinfo, sizeof (smb_queryinfo_t));
                  return (-1);
          }
--- 327,336 ----
*** 653,665 ****
--- 648,662 ----
  
          status = smb_odir_openat(sr, fnode, &od);
          switch (status) {
          case 0:
                  break;
+         case NT_STATUS_OBJECT_NAME_NOT_FOUND:
          case NT_STATUS_NO_SUCH_FILE:
          case NT_STATUS_NOT_SUPPORTED:
                  /* No streams. */
+                 status = 0;
                  done = B_TRUE;
                  break;
          default:
                  return (status);
          }