VFS MODULE writers HEAD's up!!! Fixing Cascaded VFS modules

Simo idra at samba.org
Sat Apr 19 12:34:10 GMT 2003

On Fri, 2003-04-18 at 23:41, Stefan (metze) Metzmacher wrote:

> this old module:
> static int example_stat(struct connection_struct *conn, const char *fname, 
> {
>          return default_vfs_ops.stat(conn, fname, sbuf);
> }
> the new module:
> static int example_stat(struct connection_struct *conn, const char *fname, 
> {
>          VFS_DEFAULT_OPS;
>          VFS_HANDLE_GET_OPS(conn, return -1);
>          return default_vfs_ops->stat(conn, fname, sbuf);
> }

what does exactly VFS_HANDLE_GET_OPS do?
imho it's not acceptable to reget all the option at each operation.
the bet sthing would be to have a chain of operations for each service,
so that each module is linked to a ring of the chain and calls the next

 |-- module 1 operations
 |-- module 2 ops
 |-- module 3 ops

> 2.) Since we have the new module loading system
> we can remove the vfs_init() and vfs_done() functions
> (we allready have vfs_connect() an vfs_disconnect() to manage the per 
> connection stuff)
> the smb_register_vfs() fn will directly register the vfs_op_tuple array.

vfs_init() and vfs_done() are a different thing of vfs_connect() and
vfs_disconnect(), you may have modules that require an initialization
when load and later a second initialization for each share.

> 3.) Limitation of the system:
> we can't allow:
> vfs object = recycle audit recycle
> but I think such a combination doesn't make any sense.

not for the recycle, but it may do for a caching module for example.

> and if someone would really need it, he should copy the recycle.c to recycle2.c
> let the recycle2.c register under name 'recycle2'

not acceptable, would be an administrative pain imho.

> and then he could use:
> vfs object = recycle audit recycle2
> 4.) Does anybody has any objections against this system?
> It would be really cool to get a fast feedback!!!
> Because I think this fix should be get its way into SAMBA 3.0 !!!

If we need a per service chain, than that's what we need to do.
3.0 is not out yet, so there is no need to keep modules compatibility
except perhaps for smb.conf options.


Simo Sorce    -  idra at samba.org
Samba Team    -  http://www.samba.org
Italian Site  -  http://samba.xsec.it

More information about the samba-technical mailing list