VFS module in Samba 3.0 (read and write files doesn't work)
Alejandro Sánchez Acosta
asanchez at opensistemas.com
Tue Jul 13 11:30:09 GMT 2004
On Tue, 2004-07-13 at 11:33 +0200, Simo Sorce wrote:
> On Tue, 2004-07-13 at 09:47, Alejandro Sánchez Acosta wrote:
> > Hello,
> >
> > I'm making a VFS module for Samba 3.0 and I intercept at this moment
the
> > connect/disconnect/open/close calls.
> >
> > If I try to intercept the read and write calls, I don't register
> > anything. In almost all situations I usually use syslog to register
the
> > messages in the /var/log/messages.
> >
> > I think is because all the files are mapped in memory, so the
regions
> > are protected with PROT_READ and PROT_WRITE and that is the reason
> > because I can't intercept that calls.
>
> I don't think so, you "intercept" them by wrapping them before they
are
> actually called inside the vfs layer.
> If you coded your module the right way there's no way for samba to
reach
> the file system except by passing through your own read and write
calls
> wrappers.
I do the same with open/connect/close/disconnect and it works without
any trouble and the code is simple.
static ssize_t
residente_read(vfs_handle_struct *handle, files_struct *fsp, int fd,
void *data, size_t n)
{
residente_syslog("It has been done a read");
DEBUG(3,("residente: residente_read\n"));
return SMB_VFS_NEXT_READ(handle, fsp, fd, data, n);
}
And it doesn't register anything in /var/log/messages, but with the
other calls I have logs like:
You have open a file: fname
now you have closed the file
(intercepting open/close calls).
When I intercept readdir() syslog register fine the operations.
> > I know I can disable mmap in Samba, but is going to affect in the
> > performance.
>
> No need to disable mmap, and that's not used to read/write files
anyway.
Yes, I see, I have put 'use mmap = no' in smb.conf and restarted samba
and I have the same trouble, it's so odd.
> > The reason because I intercept reads and writes is only because I
want
> > to know if you are reading or writting a file with Samba, so I don't
> > know if it is a better way to do it.
> >
> > Any clue?
>
> You may have made something wrong, try to modify the example audit
> module and see what you get.
I haven't seen any module intercepting read/write in modules/* or
samples/VFS/*
The same happens with audit intercepting the read and write calls.
> > P.D: I don't know if I have to intercept other calls to know if you
are
> > reading or writting a file, like sendfile(), pread() or pwrite().
>
> If you're unsure what calls you need to intercept, just run samba as
> single instance and strace it.
I have run strace smbd -i and I only cat the gnome-print-3bxVg1. Now
intercepting pread and pwrite works.
Thanks,
Alejandro
More information about the samba-technical
mailing list