[cifs-protocol] Create Context SMB2_CREATE_QUERY_ON_DISK_ID payload

Aurélien Aptel aaptel at suse.com
Thu Nov 14 18:05:20 UTC 2019


There is a create context SMB2_CREATE_QUERY_ON_DISK_ID that MS-SMB2
describes as, for the request:

    The client is requesting that the server return a 32-
    byte opaque BLOB that uniquely identifies the file
    being opened on disk. No data is passed to the
    server by the client.

for the response:

    The server returned DiskID of the open file in a volume.
    SMB2_CREATE_CONTEXT Response takes the same
    form as defined in section

So on one side it reads "32-byte opaque blob" but on the other
"DiskID". I could not find a reference to what is a DiskId.

After some testing Windows Server seems to return the persistent file id
+ something, which Samba does as well, with the following note:

    /* From conversations with Microsoft engineers at
       the MS plugfest. The first 8 bytes are the "volume index"
       == inode, the second 8 bytes are the "volume id",
       == dev. This will be updated in the SMB2 doc. */

Samba returns
- file id (8 bytes)
- device id (4 bytes)
- padded to 32 bytes with garbage

We started to rely on the first 8 bytes being the FileId in the linux
kernel client but recently we had a customer with a Dell EMC server that
doesn't do that.

Could we clarify the situation on the meaning of this payload, or at
least the first 8 bytes being the FileId?

Aurélien Aptel / SUSE Labs Samba Team
GPG: 1839 CB5F 9F5B FB9B AA97  8C99 03C8 A49B 521B D5D3
SUSE Software Solutions Germany GmbH, Maxfeldstr. 5, 90409 Nürnberg, DE
GF: Felix Imendörffer, Mary Higgins, Sri Rasiah HRB 247165 (AG München)

More information about the cifs-protocol mailing list