…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
|