Hello

Andrew Tridgell tridge at samba.anu.edu.au
Fri Oct 23 23:40:20 GMT 1998


> Hello everyone.  Following a chat with tridge I've taken on the task of
> writing a VFS interface to samba.  Basically, this will allow someone to
> write a set of open/read/write etc routines that will dereference all the
> filesystem calls smbd makes to actually read and write files.  Loadable
> module support is planned.

yep, this will be very nice. One of the reasons I like it is that it
will force a cleanup in Samba of a distinction between file operations
in response to an SMB request and file operations internal to Samba. 

What I discussed with Tim was the creation of a vfs_operations
structure containing functions pointers for all the different file
operations (open, read, write, stat etc) and then having a pointer to
this structure in the connection structure. Then we would have changes
like:

  if (n > 0) {
    readret = read(fsp->fd_ptr->fd,data,n);
    if (readret > 0) ret += readret;
  }

becoming:

  if (n > 0) {
    readret = fsp->conn->vfs_ops->read(fsp->fd_ptr->fd,data,n);
    if (readret > 0) ret += readret;
  }

in read_file().

> The goal is to write a SMB interface to a tape storage robot so we can
> stream data from a mpeg-2 encoder (an "embedded" nt box) straight onto
> tape without having to muck around with disks.

I also imagine it being used for:

1) cleaner handling of read/write on pipes. The vfs_ops structure
   would be different on a IPC$ connection and would point at pipe
   specific IO routines.

2) cleaner handling of printers. For example the auto-postscript
   conversion would be much cleaner.

3) a clean way of finally doing CR/LF translation 

4) interfaces to things like SQL databases 

If we get really ambitious we could even present remote smb.conf
editing as filesystem operations. A directory per share and a file per
option. Creating a share would be done with mkdir. That's probably
just a crazy idea :-)

I've given Tim CVS write access but I don't expect any of this stuff
will go into the 2.0 release. Maybe 2.1?



More information about the samba-technical mailing list