The Samba VFS and return values ...
ira at samba.org
Wed Apr 15 01:14:27 MDT 2015
On Tue, Apr 14, 2015 at 11:12 PM, Jeremy Allison <jra at samba.org> wrote:
> On Tue, Apr 14, 2015 at 09:48:21AM -0700, Richard Sharpe wrote:
> > Hi folks,
> > I have long thought it would be good to have all Samba VFS functions
> > return NTSTATUS codes (without exception.)
> > Why?
> > 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.
> Just wanted to let you know I haven't forgotten this, it's
> in my review queue :-).
> > 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
Have not reviewed yet... but +1 in general. The ability to map the errno
to something useful to the higher layer, is something sorely missing.
Most of the time the mapping is static, but we've hit a few spots where we
wanted to change it.
More information about the samba-technical