Re: rex and sfsagent forwarding

Michael Kaminsky <[email protected]> Wed, 29 Dec 2004 10:58:46 -0500
Newsgroups gmane.comp.file-systems.sfs.general
Message-ID <[email protected]>
David Thiel [[email protected]] wrote:
> Reading the rex whitepaper, it says that "when a user logs into a remote
> machine, he should see the same file systems as on the local machine".
> I take this to mean that when I mount an sfs filesystem such as 
> /sfs/@sfs.fs.net,uzwadtctbjb3dg596waiyru8cx5kb4an, then rex to another
> machine, I should be able to see that filesystem in /sfs on the remote
> machine, provided I've previously started sfsagent on my original 
> machine and that sfscd is running on the remote one. 
> 
> However, I'm not finding this to be the case - when I rex to the remote
> machine, I get a message about the agent getting forwarded, but the /sfs 
> directory on the remote machine remains empty. Any suggestions?

I believe that in the current version of SFS, the remote sfscd doesn't
explicitly populate the remote /sfs directory with the files and
directories that appear there on the local machine.  The SFS directory
functions as if those local files were there, though, automatically
mounting remote file systems as needed.  (This avoids the remote machine
mounting all of the same file systems that the local machine had mounted
at login time--instead, they are mounted on-demand.)

To make symbolic links in /sfs work across all machines that you use
with rex, you can set up "certification programs" as described in the
SFS documentation.  In particular, check out the man or info page for
dirsearch.  Based on the example there, you can access /sfs/sfs.fs.net
on both your local machine and your remote one (though you won't see
that symbolic link with ls on either machine until your access that name
for the first time.)

If you want to explicitly forward local /sfs links to the remote /sfs
directory, you could use a small shell script wrapper to do so.  For
example, something like this

  #!/bin/sh

  LINKS=`find /sfs -type l -xdev -regex '^/sfs/\@.*,.+$' -print`
  for i in $LINKS; do
      rex -x $1 stat $i
  done
  rex $1

This is just a quick and lightly tested example (which generates lots
of extra output), but it should get across the basic idea.  Rexing to a
remote machine multiple times is cheap because of session resumption, so
the multiple logins shouldn't be noticable.

Michael