[cifs-protocol] [REG:113011010129260] NT_TRANSACT_QUERY_QUOTA: Help needed
bburgin at microsoft.com
Thu Jan 10 10:28:05 MST 2013
From: Sachin Prabhu [mailto:sprabhu at redhat.com]
Sent: Thursday, January 10, 2013 6:43 AM
To: Interoperability Documentation Help
Cc: cifs-protocol at cifs.org; Christopher R. Hertel; jlayton at redhat.com
Subject: NT_TRANSACT_QUERY_QUOTA: Help needed
I am attempting to implement a function in the cifs linux kernel module to obtain the Quota information for the a SID from the server and seem to have hit a road block. Could someone please review the request and responses I receive and suggest any changes resulting out of me misinterpreting the document.
I use the NT Transact Subcommand - NT_TRANSACT_QUERY_QUOTA as documented at http://msdn.microsoft.com/en-us/library/cc246309.aspx
The current status of the project is that we can query the server for quota information on a particular file which results in the Quota information for all users returned by the server.
However I am facing problems when I attempt to restrict the SIDs I obtain the quota for. I would like the server to return the quota information only for the SIDs I pass to it. However it instead returns quota information for all SIDs. According to the document linked above, it should be possible to request Quota information only for the specified SIDs.
The tcpdump from the query is available at http://people.redhat.com/sprabhu/quota.pcap
The NT Transact Parameters set are
ReturnSingleEntry 0,<- I may request multiple SIDs so have set this to 0 RestartScan 0, SidListLength 1,<- I have a single SID in the list at the moment.
StartSidLength 0,<- This is set to 0 since I have SidListLength set to 1 StartSidOffset 0 In this case, I receive the quota information for all SIDs on the server.
I have tried the following too:
ReturnSingleEntry 1, This results in only 1 SID being returned. This however is the first SID on the list returned by the server as above but one which isn't what I want. ie. it returns quota information for
S-1-5-32-544 instead of for SID
Set SidListLength to 0 and set StartSidLength to a non zero value. This always returns an Invalid SID error.
Set SidListLength to the length in bytes instead of the list length and still receive the same result.
Could someone please point out the problem in this request.
More information about the cifs-protocol