VFS Module Docs & Examples

Kory Draughn korydraughn.renci at gmail.com
Tue Jul 31 17:56:28 UTC 2018

Uri - That is actually what I was doing.  I've added debug statements to
the beginning of each function so that I could figure out the order of
calls and implement each function one by one.  What also

How can I make the virtual path exported by the share be "/"?
Is it just setting "path = /" under the [share_name] config?

Looking at glusterfs.c, I noticed that not all functions are implemented.
They're set to NULL instead.  If my module is not stackable, aren't I
required to implement all functions?  Why would glusterfs.c not implement


On Tue, Jul 31, 2018 at 1:26 PM Uri Simchoni <uri at samba.org> wrote:

> On 07/31/2018 07:55 PM, Richard Sharpe via samba-technical wrote:
> >
> > Yes, it makes sense. If the files are not in a local file system then
> > you have to implement every VFS function and provide the correct steps
> > for your file system. In some cases you may need to return ENOSYS.
> >
> > As Jeremy says, look at the module for CEPH or GlusterFS.
> >
> I think I can sympathize with the confusion around path names, and I
> don't think ceph or gluster help with that because the VFS module hands
> the work to the ceph/gluster lib, and they magically do what smbd expects.
> You need to have some minimal support for absolute paths. IIRC:
> 1. configure the path of the share with some made-up absolute path
> /my/bogus/path
> 2. Maintain a state variable of your current "cloud" working directory
> 3. when asked to do a chdir:
> a. If it's absolute, and the path is a child of /my/bogus/path, adjust
> your cloud cwd accordingly (e.g. if it's "/my/bogus/path/foo" the you're
> at "foo") You get /my/bogus/path with handle->conn->connectpath.
> b. If it's relative, append the path to your your cloud cwd (if you're
> at "foo" and chdir into "bar/baz" then you're at "foo/bar/baz")
> c. otherwise you don't know how to handle it - return an error.
> 4. Any path operation is relative to your cloud cwd (if asked to open
> "bar" and the cloud cwd is "foo" then open "foo/bar")
> 5. When asked what's the current directory, append the cloud wd to
> /my/bogus/path.
> I think that about covers it, plus all the other advice you were give
> about implementing everything.
> Oh, I now see Jeremy has already answered with a somewhat different
> answer - I suppose my algorithm above can be simplified with setting the
> share path to / and then if the path is absolute just remove the leading /.
> Thanks,
> Uri.

More information about the samba-technical mailing list