Print

Print


Hi Patrick,

  are you using it towards an xrootd cluster or a single server? I suppose 
the former, since you speak about a redirector.

  The point is that an xrootd cluster is not a file system from the 
semantic point of view. It is a file access system, i.e. a very fast and 
scalable thing where you put/get files. The overall architecture stresses 
this concept to achieve performance and scalability.

  So, ls gives a meaningful output only for the single server case, where 
actually you have a unique file system behind.

  The posix preload stuff simply translates the calls (and ls is just one 
of them) at the client side, but if your application desperately needs a 
file system-like semantic (e.g. a working ls), this is not sufficient. In 
the xrootd world, dirlist (i.e. ls) works only in the local fashion, 
locally to the server you are connected to, the redirector in your case. 
And the redirector has no files.

  This is the reason why some people around is (alpha) using the thing we 
call CNSd and the FUSE module, i.e. a thing which can fake file-system-like 
primitives like ls, and allows you to mount xrootd clusters.

  In general, being ls a generically non scalable primitive, it's just 
better if your applications do not rely on that. And we have just to keep 
in ming that the more we get closer (with particular sophisticated setups) 
to filesystem-like semantics, typically the more we well get closer to 
filesystem-like scalability, i.e. an order of magnitude less than what you 
can expect from a pure xrootd cluster setup.


  Fabrizio


Patrick McGuigan wrote:
> Hi,
> 
> Now that I have an libXrdPosixPreload.so to use, I am running into 
> problems getting this to work.  I am trying to set it up to support a 
> gridftp server but I thought I would first start with a presumably 
> simpler case.  I just want to use "ls" against a file.  The README file 
> for XrdPosix implies that this should work.
> 
> I have a file available in the name space that can be copied back to the 
> client machine, via our redirector:
> 
> [mcguigan@gk01 ~]$ /opt/xrootd/bin/xrdcp 
> root://xrdb.local:1094//xrd/test1/100mb /tmp/wood
> [xrootd] Total 95.37 MB |====================| 100.00 % [115.2 MB/s]
> 
> 
> 
> I created the following xrdrun.sh file:
> 
> #!/bin/sh
> export XROOTD_VMP='xrd.local:1094:/xroot/=/xrd/'
> export LD_LIBRARY_PATH=/opt/xrootd/lib/
> export LD_DEBUG=libs
> export LD_PRELOAD=/opt/xrootd/lib/libXrdPosixPreload.so
> export XRDPOSIX_DEBUG=3
> $*
> 
> Shouldn't this allow me to do:
> ./xrdrun.sh ls /xroot/test1/100mb
> ./xrdrun.sh ls root://xrdb.local:1094//xrd/test1/100mb
> 
> 
> I receive the message "No such file or directory error" from the ls.
> 
> With the LD_DEBUG statement I can see that the pre-load library is being 
> loaded and initialized just prior to ls being loaded.  Also, if I 
> malform the VMP environment varialble, I will get an Invalid map message 
> from XrdPosix.  I don't get any information by setting XRDPOSIX_DEBUG.
> 
> Should this work?
> 
> How can I debug this?  I tried rebuilding the XrdPosix libraries with a 
> couple of very simple output statements in XrdPosixXrootPath::URL  but I 
> get seg faults when I try to use them.
> 
> I am working on SL4.5 X86_64.
> 
> Any advice is greatly appreciated.
> 
> Patrick
> 
> 
>