[cifs-protocol] [REG:116022413751567 ] Response to SVHDX_OPEN_DEVICE_CONTEXT[_V2] when shared VHDX is not supported

Bryan Burgin bburgin at microsoft.com
Thu Feb 25 18:13:58 UTC 2016

Hi Uri,

Some additional research.

This is a case where an upper-layer application is adding the Context and SMB2 is just the plumbing.  The danger with ignoring the Context altogether is you (you being anyone in the plumbing as we are including us) don't know why the application is adding the context.  This is the same code that in 2013 assumed that if the negotiated context was of a sufficient level where Resiliency could be supported then the application layer assumed that it must be (i.e., it sent the resiliency request and did a hard failure if the response was not successful).  The fix back then was to still ask for resiliency, but not consider its absence to be a hard failure.

Ultimately, I think that the statement in [MS-SMB2] is correct in that you should fail the Create and that the right fix (potentially) is to request another fix in our code to not add the RSVD context if it's not needed.

I know you already pushed a Samba fixed based on my preliminary comments.  We may want to discuss that more and possibly roll that back or refine it.


From: Bryan Burgin
Sent: Wednesday, February 24, 2016 9:51 PM
To: Uri Simchoni <uri at samba.org>
Cc: cifs-protocol at lists.samba.org; MSSolve Case Email <casemail at microsoft.com>
Subject: RE: [REG:116022413751567 ] Response to SVHDX_OPEN_DEVICE_CONTEXT[_V2] when shared VHDX is not supported

I'm still working with the PG to determine if ignoring is acceptable as the RSVD create context is likely being added at a layer above SMB (I.e., the app layer).

From: Uri Simchoni<mailto:uri at samba.org>
Sent: Wednesday, February 24, 2016 8:47 PM
To: Bryan Burgin<mailto:bburgin at microsoft.com>
Cc: cifs-protocol at lists.samba.org<mailto:cifs-protocol at lists.samba.org>; MSSolve Case Email<mailto:casemail at microsoft.com>
Subject: Re: [REG:116022413751567 ] Response to SVHDX_OPEN_DEVICE_CONTEXT[_V2] when shared VHDX is not supported

Thanks bryan, that clears things up.
On 02/24/2016 11:31 PM, Bryan Burgin wrote:
> [Adding case number to subject]
> Hi Uri,
> We created SR 116022413751567 to track this issue.
> Yes, there seems to be a disconnect in [MS-SMB2] "Handling the SVHDX_OPEN_DEVICE_CONTEXT Create Context" where we say that you should return STATUS_INVALID_DEVICE_REQUEST if you recognize that the device context is SVHDX_OPEN_DEVICE_CONTEXT ("0x9CCBCF9E04C1E643980E158DA1F6EC83") but don't support RSVD on one hand but you should ignore the context if you don't recognize what the context is on the other.
> I'll research this for you.
> Logically, we know that the Windows backup feature will add this context to a Create and that backup will fail unless the create succeeds.  Thus, if you properly recognize the context name but don't support RSVD you shouldn't be at a disadvantage compared to not knowing what the context is at all.  I'll help clarify the disconnect in the specification.
> Bryan
> -----Original Message-----
> From: Uri Simchoni [mailto:uri at samba.org]
> Sent: Wednesday, February 24, 2016 12:41 PM
> To: Bryan Burgin <bburgin at microsoft.com<mailto:bburgin at microsoft.com>>; Interoperability Documentation Help <dochelp at microsoft.com<mailto:dochelp at microsoft.com>>
> Cc: cifs-protocol at lists.samba.org<mailto:cifs-protocol at lists.samba.org>
> Subject: Response to SVHDX_OPEN_DEVICE_CONTEXT[_V2] when shared VHDX is not supported
> Hi Bryan,
> This is a clarification request following recently-closed REG:116022313745563.
> I would appreciate a clarification with regards to Shared VHDX and [MS-SMB2].
> In the correspondence of that case, it was indicated that upon receiving a SVHDX_OPEN_DEVICE_CONTEXT or SVHDX_OPEN_DEVICE_CONTEXT_V2 create context, an SMB3.0.2 or SMB3.1.1 server which does not support SVHDX on that share should ignore the context (If I understand correctly - that's the way to signal to the client that SVHDX is not supported).
> However, my reading of [MS-SMB2], including the errata, suggests otherwise:
> 1. The errata says "The server MUST fail create contexts having a NameLength less than 4 with a STATUS_INVALID_PARAMETER error." - OK, the server doesn't fail the context and moves on with processing the Open.
> 2. says "If IsSharedVHDSupported is FALSE, the server MUST fail the request with STATUS_INVALID_DEVICE_REQUEST"
> Whereas IsSharedVHDSupported is a global state variable signaling support for share VHDX - that is, it's FALSE in our case.
> It is true that is about SVHDX_OPEN_DEVICE_CONTEXT and in the aforementioned case the context was SVHDX_OPEN_DEVICE_CONTEXT_V2, but read this section as relating to SVHDX_OPEN_DEVICE_CONTEXT_V2 as well, because there's no other reference to SVHDX_OPEN_DEVICE_CONTEXT_V2 handling (and since it's a tunneling operation, the SMB server doesn't care much if it's _V2 or not).
> Please advise.
> Thanks,
> Uri.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.samba.org/pipermail/cifs-protocol/attachments/20160225/4484de96/attachment-0001.html>

More information about the cifs-protocol mailing list