Print

Print


…and a somehow related question (ok, not really, this is due to my ignorance).

I was trying, using a standard xrootd (no modification apart form some printout), to access via a global redirector a non existing file …

I see that if I have at the same time, on my machine
- xrootd
- cmsd
- xfrd 
enabled, I always get redirected to that machine.

Does it make sense? in a sense yes: locally the file is not there, but xrootd is not aware of what is on tape, so "maybe it is there" ….

but, if this is the case, 
- how can this be avoided?
- if there are two sites with cmsd + frd, how can the system know the file is in one place and not another?

also, a command like

xrd <redirector> locateall <that non existing file>

returns nothing, so is the redirector using a different api to locate files?

I maybe completely wrong, clearly …. In case, sorry in advance

tom

On Mar 12, 2013, at 12:04 PM, Tommaso Boccali <[log in to unmask]> wrote:

> Hi,
> 	I am trying to patch Xrootd for a specific use case, for a site with GPFS + TSM backend.
> 
> The system is somehow different from a standard disk + tape, since GPFS reports (via posix) the files always present, even if they are tape only.
> In principle, one could forget and let GPFS do the magic: if a fopen is issued to GPFS for a file only on tape, recall is automatically triggered etc …
> 
> BUT: the tape system cannot really afford this kind of random recalls, and there is a specific interface to queue recalls and combine them in a smart way (for example, do all the recalls in the same cassette etc).
> 
> So I am trying to patch xrootd for this (I was already successful in instrumenting cmsd not to publicize files just on tape…)
> 
> Main idea is to use a standard stagein technique, via
> 
> frm.xfr.copycmd out /bin/true 0  
> frm.xfr.copycmd in stats noalloc /opt/xrootd/bin/copy.sh $SRC $DST
> frm.xfr.copymax 200 
> 
> where the script enqueues the recall to the proper mechanism.
> 
> The patch is needed since xrootd uses frm interface when the file is missing, and this is never the case for a tape only file since GPFS always shows all the files …
> 
> So my patch would be to simply tell xrootd that a file on GPFS, but with stat buf.blocks == 0, should be considered as absent, and hence trigger frm.
> 
> I was optimistic that a simple change like checking the # of blocks in XrdOssApi:Open_ufs would be sufficient, like
> 
>    struct stat buf;
>    if (!stat(path,&buf)) {
>      if ((buf.st_mode & S_IFMT) == S_IFREG) {
>        if (buf.st_size>0 && buf.st_blocks==0){
>          // i want to kill this one, I return not existing
>        std::cerr<<" APPLYING MY FIX!!!!!!!!!!"<<std::endl;
>          return -ENOENT;
>        }
>      }
>    }
> 
> and indeed it works, in the sense that the file is recognized as present BUT on disk only, and hence the same error code as for missing files is returned (-ENOENT).
> 
> Problem is that, later, no recall command is issued for the file, and an open is issued continuously with 1 sec delay. So probably what I did is not enough. I will file a request for enhancement (as I already did for the cmsd part), but in case someone sees a trivial cause for this behavior, I would be happy to test a solution.
> 
> thanks
> 
> tommaso
> 
> 
> 
> 
> ########################################################################
> Use REPLY-ALL to reply to list
> 
> To unsubscribe from the XROOTD-L list, click the following link:
> https://listserv.slac.stanford.edu/cgi-bin/wa?SUBED1=XROOTD-L&A=1


########################################################################
Use REPLY-ALL to reply to list

To unsubscribe from the XROOTD-L list, click the following link:
https://listserv.slac.stanford.edu/cgi-bin/wa?SUBED1=XROOTD-L&A=1