The Samba VFS and return values ...
realrichardsharpe at gmail.com
Tue Apr 14 10:48:21 MDT 2015
I have long thought it would be good to have all Samba VFS functions
return NTSTATUS codes (without exception.)
1. Consistency. Today some return ints (< 0 for error) and set errno,
some NTSTATUSes, some return pointers to objects and return NULL on
error and set errno.
2. There have been times where I have wanted to return
NT_STATUS_SHARING_VIOLATION from the earliest VFS function Samba
returns, but could not because it did not return an NTSTATUS. In those
cases I was forced to add something like #define ESHARINGVIOLATION
1001 and add translations to the various tables. This is ugly. I am
sure others have been in the same position.
Last week I posted a patch that is my first attempt at this. I
converted realpath to returning an NTSTATUS result.
This one is important because Samba calls SMB_VFS_REALPATH first for
every filename/pathname operation.
The conversion was non-trivial because Samba is handling the error
codes in special ways for some cases (eg ENOTDIR and ENOENT) so I had
to make sure I preserved that.
Stat is the next on on my list.
However, before proceeding, I wanted to find out if anyone has any
objections or suggestions on how to better achieve my goal.
My goal is that people who write VFS modules should be able to return
NT STATUS codes like STATUS_PATH_NO_COVERED, STATUS_SHARING_VIOLATION
etc rather than having to define bogus errno codes ...
More information about the samba-technical