Suggestions for POSIX error code mapping for OBJECTID_NOT_FOUND

Amir Goldstein amir73il at gmail.com
Sun Mar 17 10:01:06 UTC 2019


On Sun, Mar 17, 2019 at 11:36 AM ronnie sahlberg
<ronniesahlberg at gmail.com> wrote:
>
> I think they are a little bit different in that NFS handles are only
> temporal while these guys are supposed to be immutable forever once
> created.
>

NFS handles are not temporal. On the contrary. They are expected to
persist a server reboot. Most filesystems implement them as a combination
of (at least) inode number and generation number.

> NTFS object ids are supposed to be persistent across infinite time
> once they are created.
> I.e. once a file has for example a Birth-Object-Id, I think that is
> immutable for the lifetime of the fs object.
> Not all objects in NTFS automatically get a ObjId assigned as far as
> my testing goes
> but if it is missing we can just switch to the Create-Or-Get-Object-Id
> fcntl call in which case the server will make one up and assign to the
> object if there is none yet.
>
> On Sun, Mar 17, 2019 at 7:24 PM Amir Goldstein <amir73il at gmail.com> wrote:
> >
> > On Sun, Mar 17, 2019 at 10:57 AM ronnie sahlberg via samba-technical
> > <samba-technical at lists.samba.org> wrote:
> > >
> > > ENOENT / ENOTSUPP / EINVAL?
> > >
> > > ENOENT feels appropriate since this is not a permanent condition.
> > > Someone could create the object buffer after which it will exist and
> > > there will no longer be an errror when asking for it.
> > >
> > > I guess for a long time smbinfo.c will be the only consumer for this
> > > on the non-windows side  so whatever we decide will be what will be
> > > how things are and others will follow.
> > >
> > > On Sun, Mar 17, 2019 at 6:40 PM Steve French <smfrench at gmail.com> wrote:
> > > >
> > > > Any thoughts as to the best POSIX error code to map status code
> > > > "0xC00002F0 STATUS_OBJECTID_NOT_FOUND" to?
> > > >
> > > > It means an object ID was not found for the file, which is a
> > > > reasonably common situation over the network even to Windows servers.
> > > >
> > > > I was mapping it to EIO for cases where tools asks for the object id
> > > > of the file (or volume).
> > > >
> >
> > If I am reading NTFS documentation correctly, then Object ID is
> > a similar beast to NFS file handle you get with name_to_handle_at().
> > NTFS supports Object IDs since Windows 2000, but an upgrade
> > doesn't set object ids to existing files - those can be added manually.
> >
> > In Linux, a file system either supports NFS file handles or it doesn't.
> > In the first case, ENOTSUPP is returned from name_to_handle_at().
> > IMO, its a valid case to return ENOTSUPP per file, but if you
> > consider that NTFS treats Object ID as extra information attached to
> > the inode, returning ENOATTR (like from getxattr) may be a valid
> > option for cifs. It really depends on which tools would see this
> > errors and what errors they would expect.
> >
> > Thanks,
> > Amir.



More information about the samba-technical mailing list