Print this page
NEX-4324 Should not include $DATA when enumerating streams (try 2)
NEX-3409 SMB2: OSX - cannot display nested folders in finder
Reviewed by: Kevin Crowe <kevin.crowe@nexenta.com>
Reviewed by: Matt Barden <Matt.Barden@nexenta.com>
NEX-2106 SMB2 query_file_info FileAlternateNameInformation fails
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,11 +8,11 @@
  * 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.
+ * Copyright 2015 Nexenta Systems, Inc.  All rights reserved.
  */
 
 /*
  * Dispatch function for SMB2_QUERY_INFO
  *

@@ -84,10 +84,11 @@
                 getname = B_TRUE;
                 break;
 
         case FileStreamInformation:
                 mask = SMB_AT_STANDARD;
+                getstd = B_TRUE;
                 break;
 
         case FileCompressionInformation:
                 mask = SMB_AT_SIZE | SMB_AT_ALLOCSZ;
                 break;

@@ -286,16 +287,22 @@
  */
 static uint32_t
 smb2_qif_internal(smb_request_t *sr, smb_queryinfo_t *qi)
 {
         smb_attr_t *sa = &qi->qi_attr;
+        u_longlong_t nodeid;
 
         ASSERT((sa->sa_mask & SMB_AT_NODEID) == SMB_AT_NODEID);
+        nodeid = sa->sa_vattr.va_nodeid;
 
+        if (smb2_aapl_use_file_ids == 0 &&
+            (sr->session->s_flags & SMB_SSN_AAPL_CCEXT) != 0)
+                nodeid = 0;
+
         (void) smb_mbc_encodef(
             &sr->raw_data, "q",
-            sa->sa_vattr.va_nodeid);    /* q */
+            nodeid);    /* q */
 
         return (0);
 }
 
 /*