Suggestion for change in the vfs_ops structure?

Andrew Bartlett abartlet at samba.org
Wed Nov 13 05:25:01 GMT 2002


On Wed, 2002-11-13 at 16:08, Kris Van Hees wrote:
> On Wed, Nov 13, 2002 at 03:43:08PM +1100, Andrew Bartlett wrote:
> > On Wed, 2002-11-13 at 15:24, Kris Van Hees wrote:
> > > On Wed, Nov 13, 2002 at 03:08:26PM +1100, Andrew Bartlett wrote:
> > > > Well, I think that doing so would be *very* dangerous.  For one, what
> > > > are you doing to do with those strings?  Only change them in-place, but
> > > > never extend them?  You can realloc() those strings, as the pointer
> > > > might change, or they might be stack strings, but of what size?
> > > 
> > > Very good point.
> > > 
> > > > And I'm glad it generates compiler warnings, because it should make you
> > > > stop and think 'is this actually a good idea'.
> > > > 
> > > > What exactly were you wanting to do anyway?
> > > 
> > > Well, for AFS support I need to be able to allow people to use filenames that
> > > end in @sys (such as @sys, /foo/@sys, /foo/bar at sys, ...) and substitute the
> > > defined AFS sysname for @sys, so that e.g. for a Windows 2000 client foo- at sys
> > > becomes foo-i386_win2k.  All the code to do that in VFS operations is already
> > > written, but there is still the issue that after e.g. a vfs_stat() is done on
> > > such a filename, call_trans2findfirst() will call get_lanman2_dir_entry() to
> > > check the passed in filename (foo- at sys) against the directory entries.  It will
> > > not find a match because that routine uses the actual contents of the current
> > > directory, and matches it against the non-translated filename.
> > > 
> > > Since it is likely that there are other cases where this happens, I would rather
> > > not send in a patch that litters the Samba code with #ifdef's for AFS since that
> > > is beyond ugly.  A more generic interface that could potentially be used by
> > > fugure other implementations would be much cleaner and easier to handle.
> > > 
> > > What the best solution would be is not really clear though.  I believe that a
> > > VFS function that returns a possibly altered filename for a given filename would
> > > be useful in this sense, but whether that would be an acceptable way to do it
> > > might be debateable on your end given that it would impose a tiny overhead on
> > > cases where the default VFS is not overloaded, because you'd still need to have
> > > a dummy function that returns the passed in argument unaltered.
> > 
> > Why can't you solve this with MSDFS?  It is relatively easy to add
> > support either as per-the current implementation (and people have asked
> > for % expansion in that) or by adding magic overrides over the entire
> > namespace.  That way, every file access (and stat() is something we call
> > a *lot*) won't have to do this legwork.
> 
> I do not think that I should solve it with MSDFS itself, since that is a very
> specific Microsoft thing.  Adding @sys resolution into that code would be a bit
> messy, and confusing.  On the other hand, it might be worth abstracting the
> RESOLVE_DFSPATH() macro to actually handle more than just MSDFS.  That way,
> future enhancements could use the same mechanism.  I'd propose something that
> (initially) does the current check for DFS, and then goes on to check whether
> a VFS object has been installed.  If so, and if a specific function has been
> implemented in the object (e.g. vfs_resolve()) it should be called and it can
> change the filename pstring it is given (in the same way the dfs_resolve() may
> do so).

I don't think you understand how MSDFS works, and I actually think it
would solve this problem rather well actually.  And SMB is very
MS-specific too, so I don't think that argument applies.  

MSDFS works by the server attempting saying 'not here' to a file open. 
The client then asks there server for 'where is is then', and the server
gives a new UNC path.

It is not 'resolved' on each access, and as such subsequent accesses do
not take any performance penalty.

> > I @sys a magic AFS notion, or where does it come from?
> 
> The @sys token is a specific AFS defined token.  I do believe that similar
> tokens (might even have been the same token) were used in earlier versions of
> AIX to be able to have architecture-dependent pathnames resolve 'magically'
> on the appropriate platforms (e.g. linking /bin- at sys to /bin so that any access
> on /bin goes to /bin-i386_linux24 on a Linux 2.4.x based system, while it would
> go to /bin-sun4x_58 on a Solaris 5.8 system).

So /bin- at sys would appear as a symbolic link, with the client to resolve
it to something meaningful?  Sounds exactly like how MSDFS has been done
in Samba.

> > Also, keep the list CC'ed, because I certainly won't be applying any VFS
> > patches.  
> 
> Hereby done.  Thanks, I didn't notice that my reply to you was a plain reply
> rather than a group reply.  My bad.
> 
> 	Kris
-- 
Andrew Bartlett                                 abartlet at pcug.org.au
Manager, Authentication Subsystems, Samba Team  abartlet at samba.org
Student Network Administrator, Hawker College   abartlet at hawkerc.net
http://samba.org     http://build.samba.org     http://hawkerc.net
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: This is a digitally signed message part
Url : http://lists.samba.org/archive/samba-technical/attachments/20021113/f9f2a051/attachment.bin


More information about the samba-technical mailing list