XRootD
XrdOfs.hh
Go to the documentation of this file.
1 #ifndef __OFS_API_H__
2 #define __OFS_API_H__
3 /******************************************************************************/
4 /* */
5 /* X r d O f s . h h */
6 /* */
7 /* (c) 2004 by the Board of Trustees of the Leland Stanford, Jr., University */
8 /* Produced by Andrew Hanushevsky for Stanford University under contract */
9 /* DE-AC02-76-SFO0515 with the Department of Energy */
10 /* */
11 /* This file is part of the XRootD software suite. */
12 /* */
13 /* XRootD is free software: you can redistribute it and/or modify it under */
14 /* the terms of the GNU Lesser General Public License as published by the */
15 /* Free Software Foundation, either version 3 of the License, or (at your */
16 /* option) any later version. */
17 /* */
18 /* XRootD is distributed in the hope that it will be useful, but WITHOUT */
19 /* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or */
20 /* FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public */
21 /* License for more details. */
22 /* */
23 /* You should have received a copy of the GNU Lesser General Public License */
24 /* along with XRootD in a file called COPYING.LESSER (LGPL license) and file */
25 /* COPYING (GPL license). If not, see <http://www.gnu.org/licenses/>. */
26 /* */
27 /* The copyright holder's institutional names and contributor's names may not */
28 /* be used to endorse or promote products derived from this software without */
29 /* specific prior written permission of the institution or contributor. */
30 /******************************************************************************/
31 
32 #include <cstring>
33 #include <dirent.h>
34 #include <sys/types.h>
35 
36 #include "XrdOfs/XrdOfsEvr.hh"
37 #include "XrdOfs/XrdOfsHandle.hh"
38 #include "XrdSys/XrdSysPthread.hh"
40 #include "XrdCms/XrdCmsClient.hh"
41 
42 class XrdNetIF;
43 class XrdOfsEvs;
44 class XrdOfsPocq;
45 class XrdOfsPrepare;
46 class XrdOss;
47 class XrdOssDF;
48 class XrdOssDir;
49 class XrdOucEnv;
50 class XrdOucPListAnchor;
51 class XrdSysError;
52 class XrdSysLogger;
53 class XrdOucStream;
54 class XrdSfsAio;
55 
56 struct XrdVersionInfo;
57 
58 /******************************************************************************/
59 /* X r d O f s D i r e c t o r y */
60 /******************************************************************************/
61 
63 {
64 public:
65 
66  int open(const char *dirName,
67  const XrdSecEntity *client,
68  const char *opaque = 0);
69 
70  const char *nextEntry();
71 
72  int close();
73 
74 inline void copyError(XrdOucErrInfo &einfo) {einfo = error;}
75 
76 const char *FName() {return (const char *)fname;}
77 
78  int autoStat(struct stat *buf);
79 
80  XrdOfsDirectory(XrdOucErrInfo &eInfo, const char *user)
81  : XrdSfsDirectory(eInfo), tident(user ? user : ""),
82  fname(0), dp(0), atEOF(0) {}
83 
84 virtual ~XrdOfsDirectory() {if (dp) close();}
85 
86 protected:
87 const char *tident;
88 char *fname;
90 int atEOF;
91 char dname[MAXNAMLEN];
92 };
93 
95 {
96 public:
97  XrdOfsDirFull(const char *user, int MonID)
98  : XrdOfsDirectory(myEInfo, user), myEInfo(user, MonID)
99  {}
100 
101 virtual ~XrdOfsDirFull() {}
102 
103 private:
104 XrdOucErrInfo myEInfo; // Accessible only by reference error
105 };
106 
107 /******************************************************************************/
108 /* X r d O f s F i l e */
109 /******************************************************************************/
110 
111 class XrdOfsTPC;
112 class XrdOucChkPnt;
113 
114 class XrdOfsFile : public XrdSfsFile
115 {
116 public:
117 
118  int open(const char *fileName,
119  XrdSfsFileOpenMode openMode,
120  mode_t createMode,
121  const XrdSecEntity *client,
122  const char *opaque = 0);
123 
125  struct iov *range=0, int n=0);
126 
127  int close();
128 
129  using XrdSfsFile::fctl;
130 
131  int fctl(const int cmd,
132  const char *args,
133  XrdOucErrInfo &out_error);
134 
135  int fctl(const int cmd,
136  int alen,
137  const char *args,
138  const XrdSecEntity *client = 0);
139 
140  const char *FName() {return (oh ? oh->Name() : "?");}
141 
142  int getMmap(void **Addr, off_t &Size);
143 
145  char *buffer,
146  XrdSfsXferSize rdlen,
147  uint32_t *csvec,
148  uint64_t opts=0);
149 
150  int pgRead(XrdSfsAio *aioparm, uint64_t opts=0);
151 
152 
154  char *buffer,
155  XrdSfsXferSize wrlen,
156  uint32_t *csvec,
157  uint64_t opts=0);
158 
159  int pgWrite(XrdSfsAio *aioparm, uint64_t opts=0);
160 
161 
162  int read(XrdSfsFileOffset fileOffset, // Preread only
163  XrdSfsXferSize amount);
164 
166  char *buffer,
167  XrdSfsXferSize buffer_size);
168 
170  int readCount);
171 
172  int read(XrdSfsAio *aioparm);
173 
175  const char *buffer,
176  XrdSfsXferSize buffer_size);
177 
178  int write(XrdSfsAio *aioparm);
179 
180  int sync();
181 
182  int sync(XrdSfsAio *aiop);
183 
184  int stat(struct stat *buf);
185 
186  int truncate(XrdSfsFileOffset fileOffset);
187 
188  int getCXinfo(char cxtype[4], int &cxrsz);
189 
190  XrdOfsFile(XrdOucErrInfo &eInfo, const char *user);
191 
192  ~XrdOfsFile() {viaDel = 1; if (oh) close();}
193 
194 inline static bool ocFsync = false;
195 
196 protected:
197 
198 const char *tident;
203 char viaDel;
204 bool ckpBad;
205 
206 private:
207 
208 void GenFWEvent();
209 int CreateCKP();
210 };
211 
213 {
214 public:
215  XrdOfsFileFull(const char *user, int MonID)
216  : XrdOfsFile(myEInfo, user), myEInfo(user, MonID)
217  {}
218 
219 virtual ~XrdOfsFileFull() {}
220 
221 private:
222 XrdOucErrInfo myEInfo; // Accessible only by reference error
223 };
224 
225 /******************************************************************************/
226 /* C l a s s X r d O f s */
227 /******************************************************************************/
228 
229 class XrdAccAuthorize;
230 class XrdCks;
231 class XrdCmsClient;
232 class XrdOfsConfigPI;
233 class XrdOfsFSctl_PI;
234 class XrdOfsPoscq;
235 struct XrdSfsFACtl;
236 
237 class XrdOfs : public XrdSfsFileSystem
238 {
239 friend class XrdOfsDirectory;
240 friend class XrdOfsFile;
241 
242 public:
243 
244 // Object allocation
245 //
246  XrdSfsDirectory *newDir(char *user=0, int MonID=0)
247  {return new XrdOfsDirFull(user, MonID);}
248 
250  {return new XrdOfsDirectory(eInfo, eInfo.getErrUser());}
251 
252  XrdSfsFile *newFile(char *user=0,int MonID=0)
253  {return new XrdOfsFileFull(user, MonID);}
254 
256  {return new XrdOfsFile(eInfo, eInfo.getErrUser());}
257 
258 // Other functions
259 //
260  int chksum( csFunc Func,
261  const char *csName,
262  const char *Path,
263  XrdOucErrInfo &out_error,
264  const XrdSecEntity *client = 0,
265  const char *opaque = 0);
266 
267  int chmod(const char *Name,
269  XrdOucErrInfo &out_error,
270  const XrdSecEntity *client,
271  const char *opaque = 0);
272 
273  void Connect(const XrdSecEntity *client = 0);
274 
275  void Disc(const XrdSecEntity *client = 0);
276 
277  int exists(const char *fileName,
278  XrdSfsFileExistence &exists_flag,
279  XrdOucErrInfo &out_error,
280  const XrdSecEntity *client,
281  const char *opaque = 0);
282 
283  int FAttr( XrdSfsFACtl *faReq,
284  XrdOucErrInfo &eInfo,
285  const XrdSecEntity *client = 0);
286 
287  int FSctl(const int cmd,
288  XrdSfsFSctl &args,
289  XrdOucErrInfo &eInfo,
290  const XrdSecEntity *client = 0);
291 
292  int fsctl(const int cmd,
293  const char *args,
294  XrdOucErrInfo &out_error,
295  const XrdSecEntity *client = 0);
296 
297  int getStats(char *buff, int blen);
298 
299 const char *getVersion();
300 
301  int mkdir(const char *dirName,
303  XrdOucErrInfo &out_error,
304  const XrdSecEntity *client,
305  const char *opaque = 0);
306 
307  int prepare( XrdSfsPrep &pargs,
308  XrdOucErrInfo &out_error,
309  const XrdSecEntity *client = 0);
310 
311  int rem(const char *path,
312  XrdOucErrInfo &out_error,
313  const XrdSecEntity *client,
314  const char *info = 0)
315  {return remove('f', path, out_error, client, info);}
316 
317  int remdir(const char *dirName,
318  XrdOucErrInfo &out_error,
319  const XrdSecEntity *client,
320  const char *info = 0)
321  {return remove('d',dirName,out_error,client,info);}
322 
323  int rename(const char *oldFileName,
324  const char *newFileName,
325  XrdOucErrInfo &out_error,
326  const XrdSecEntity *client,
327  const char *infoO = 0,
328  const char *infoN = 0);
329 
330  int stat(const char *Name,
331  struct stat *buf,
332  XrdOucErrInfo &out_error,
333  const XrdSecEntity *client,
334  const char *opaque = 0);
335 
336  int stat(const char *Name,
337  mode_t &mode,
338  XrdOucErrInfo &out_error,
339  const XrdSecEntity *client,
340  const char *opaque = 0);
341 
342  int truncate(const char *Name,
343  XrdSfsFileOffset fileOffset,
344  XrdOucErrInfo &out_error,
345  const XrdSecEntity *client = 0,
346  const char *opaque = 0);
347 // Management functions
348 //
349 virtual int Configure(XrdSysError &); // Backward Compatibility
350 
351 virtual int Configure(XrdSysError &, XrdOucEnv *);
352 
354 
355  void Config_Display(XrdSysError &);
356 
357  XrdOfs();
358 virtual ~XrdOfs() {} // Too complicate to delete :-)
359 
360 /******************************************************************************/
361 /* C o n f i g u r a t i o n V a l u e s */
362 /******************************************************************************/
363 
364 // Configuration values for this filesystem
365 //
366 enum {Authorize = 0x0001, // Authorization wanted
367  XAttrPlug = 0x0002, // Extended Attribute Plugin
368  isPeer = 0x0050, // Role peer
369  isProxy = 0x0020, // Role proxy
370  isManager = 0x0040, // Role manager
371  isServer = 0x0080, // Role server
372  isSuper = 0x00C0, // Role supervisor
373  isMeta = 0x0100, // Role meta + above
374  haveRole = 0x01F0, // A role is present
375  Forwarding= 0x1000, // Fowarding wanted
376  ThirdPC = 0x2000, // This party copy wanted
377  SubCluster= 0x4000, // all.subcluster directive encountered
378  RdrTPC = 0x8000
379  }; // These are set in Options below
380 
381 int Options; // Various options
382 int myPort; // Port number being used
383 
384 // Directory and file creation mode controls
385 //
386 mode_t dMask[2]; // Min/Max directory mode
387 mode_t fMask[2]; // Min/Max file mode
388 
389 // TPC related things
390 //
391 char *tpcRdrHost[2]; // TPC redirect target or null if none
392 int tpcRdrPort[2]; // TPC redirect target port number
393 
394 // Networking
395 //
397 
398 // Forward options
399 //
400 struct fwdOpt
401  {const char *Cmd;
402  char *Host;
403  int Port;
404  void Reset() {Cmd = 0; Port = 0;
405  if (Host) {free(Host); Host = 0;}
406  }
407  fwdOpt() : Cmd(0), Host(0), Port(0) {}
408  ~fwdOpt() {}
409  };
410 
411 struct fwdOpt fwdCHMOD;
412 struct fwdOpt fwdMKDIR;
413 struct fwdOpt fwdMKPATH;
414 struct fwdOpt fwdMV;
415 struct fwdOpt fwdRM;
416 struct fwdOpt fwdRMDIR;
417 struct fwdOpt fwdTRUNC;
418 
419 static int MaxDelay; // Max delay imposed during staging
420 static int OSSDelay; // Delay to impose when oss interface times out
421 
422 char *ConfigFN; // ->Configuration filename
423 
424 /******************************************************************************/
425 /* P r o t e c t e d I t e m s */
426 /******************************************************************************/
427 
428 protected:
429 
430 XrdOfsEvr evrObject; // Event receiver
431 XrdCmsClient *Finder; // ->Cluster Management Service
432 
433 virtual int ConfigXeq(char *var, XrdOucStream &, XrdSysError &);
434 static int Emsg(const char *, XrdOucErrInfo &, int, const char *x,
435  XrdOfsHandle *hP);
436 static int Emsg(const char *, XrdOucErrInfo &, int, const char *x,
437  const char *y="");
438 static int fsError(XrdOucErrInfo &myError, int rc);
439 const char *Split(const char *Args, const char **Opq, char *Path, int Plen);
440  int Stall(XrdOucErrInfo &, int, const char *);
441  void Unpersist(XrdOfsHandle *hP, int xcev=1);
442  char *WaitTime(int, char *, int);
443 
444 /******************************************************************************/
445 /* P r i v a t e C o n f i g u r a t i o n */
446 /******************************************************************************/
447 
448 private:
449 
450 char *myRole;
451 XrdOfsFSctl_PI *FSctl_PC; // ->FSctl plugin (cache specific)
452 XrdOfsFSctl_PI *FSctl_PI; // ->FSctl plugin
453 XrdAccAuthorize *Authorization; // ->Authorization Service
454 XrdCmsClient *Balancer; // ->Cluster Local Interface
455 XrdOfsEvs *evsObject; // ->Event Notifier
456 XrdOucPListAnchor*ossRPList; // ->Oss exoprt list
457 
458 XrdOfsPoscq *poscQ; // -> poscQ if persist on close enabled
459 char *poscLog; // -> Directory for posc recovery log
460 int poscHold; // Seconds to hold a forced close
461 short poscSync; // Number of requests before sync
462 signed char poscAuto; // 1 -> Automatic persist on close
463 
464 char ossRW; // The oss r/w capability
465 
466 XrdOfsConfigPI *ofsConfig; // Plugin configurator
467 XrdOfsPrepare *prepHandler; // Plugin prepare
468 XrdCks *Cks; // Checksum manager
469 bool CksPfn; // Checksum needs a pfn
470 bool CksRdr; // Checksum may be redirected (i.e. not local)
471 bool prepAuth; // Prepare requires authorization
472 char OssIsProxy; // !0 if we detect the oss plugin is a proxy
473 char myRType[4]; // Role type for consistency with the cms
474 
475 uint64_t ossFeatures; // The oss features
476 
477 int usxMaxNsz; // Maximum length of attribute name
478 int usxMaxVsz; // Maximum length of attribute value
479 
480 static XrdOfsHandle *dummyHandle;
481 XrdSysMutex ocMutex; // Global mutex for open/close
482 
483 bool DirRdr; // Opendir() can be redirected.
484 bool reProxy; // Reproxying required for TPC
485 bool OssHasPGrw; // True: oss implements full rgRead/Write
486 
487 /******************************************************************************/
488 /* O t h e r D a t a */
489 /******************************************************************************/
490 
491 // Internal file attribute methods
492 //
493 int ctlFADel(XrdSfsFACtl &faCtl, XrdOucEnv &faEnv, XrdOucErrInfo &einfo);
494 int ctlFAGet(XrdSfsFACtl &faCtl, XrdOucEnv &faEnv, XrdOucErrInfo &einfo);
495 int ctlFALst(XrdSfsFACtl &faCtl, XrdOucEnv &faEnv, XrdOucErrInfo &einfo);
496 int ctlFASet(XrdSfsFACtl &faCtl, XrdOucEnv &faEnv, XrdOucErrInfo &einfo);
497 
498 // Common functions
499 //
500 int remove(const char type, const char *path, XrdOucErrInfo &out_error,
501  const XrdSecEntity *client, const char *opaque);
502 
503 // Function used during Configuration
504 //
505 int ConfigDispFwd(char *buff, struct fwdOpt &Fwd);
506 int ConfigPosc(XrdSysError &Eroute);
507 int ConfigRedir(XrdSysError &Eroute, XrdOucEnv *EnvInfo);
508 int ConfigTPC(XrdSysError &Eroute, XrdOucEnv *EnvInfo);
509 int ConfigTPC(XrdSysError &Eroute);
510 char *ConfigTPCDir(XrdSysError &Eroute, const char *sfx,
511  const char *xPath=0);
512 const char *Fname(const char *);
513 int Forward(int &Result, XrdOucErrInfo &Resp, struct fwdOpt &Fwd,
514  const char *arg1=0, const char *arg2=0,
515  XrdOucEnv *Env1=0, XrdOucEnv *Env2=0);
516 int FSctl(XrdOfsFile &file, int cmd, int alen, const char *args,
517  const XrdSecEntity *client);
518 int Reformat(XrdOucErrInfo &);
519 const char *theRole(int opts);
520 int xcrds(XrdOucStream &, XrdSysError &);
521 int xcrm(XrdOucStream &, XrdSysError &);
522 int xdirl(XrdOucStream &, XrdSysError &);
523 int xexp(XrdOucStream &, XrdSysError &, bool);
524 int xforward(XrdOucStream &, XrdSysError &);
525 int xmaxd(XrdOucStream &, XrdSysError &);
526 int xnmsg(XrdOucStream &, XrdSysError &);
527 int xnot(XrdOucStream &, XrdSysError &);
528 int xpers(XrdOucStream &, XrdSysError &);
529 int xrole(XrdOucStream &, XrdSysError &);
530 int xtpc(XrdOucStream &, XrdSysError &);
531 int xtpcal(XrdOucStream &, XrdSysError &);
532 int xtpcr(XrdOucStream &, XrdSysError &);
533 int xtrace(XrdOucStream &, XrdSysError &);
534 int xatr(XrdOucStream &, XrdSysError &);
535 };
536 #endif
#define stat(a, b)
Definition: XrdPosix.hh:101
int Mode
XrdOucString Path
struct myOpts opts
int XrdSfsMode
XrdSfsFileExistence
int XrdSfsFileOpenMode
long long XrdSfsFileOffset
int XrdSfsXferSize
< Prepare parameters
< SFS_FSCTL_PLUGIN/PLUGIO/PLUGXC parms
Definition: XrdCks.hh:92
virtual ~XrdOfsDirFull()
Definition: XrdOfs.hh:101
XrdOfsDirFull(const char *user, int MonID)
Definition: XrdOfs.hh:97
XrdOfsDirectory(XrdOucErrInfo &eInfo, const char *user)
Definition: XrdOfs.hh:80
char dname[MAXNAMLEN]
Definition: XrdOfs.hh:91
virtual ~XrdOfsDirectory()
Definition: XrdOfs.hh:84
const char * nextEntry()
Definition: XrdOfs.cc:299
void copyError(XrdOucErrInfo &einfo)
Definition: XrdOfs.hh:74
const char * tident
Definition: XrdOfs.hh:87
int autoStat(struct stat *buf)
Definition: XrdOfs.cc:402
char * fname
Definition: XrdOfs.hh:88
XrdOssDF * dp
Definition: XrdOfs.hh:89
const char * FName()
Definition: XrdOfs.hh:76
int open(const char *dirName, const XrdSecEntity *client, const char *opaque=0)
Definition: XrdOfs.cc:239
XrdOfsFileFull(const char *user, int MonID)
Definition: XrdOfs.hh:215
virtual ~XrdOfsFileFull()
Definition: XrdOfs.hh:219
XrdOfsFile(XrdOucErrInfo &eInfo, const char *user)
Definition: XrdOfs.cc:442
int getCXinfo(char cxtype[4], int &cxrsz)
Definition: XrdOfs.cc:1736
int checkpoint(XrdSfsFile::cpAct act, struct iov *range=0, int n=0)
Definition: XrdOfs.cc:915
XrdSfsXferSize pgWrite(XrdSfsFileOffset offset, char *buffer, XrdSfsXferSize wrlen, uint32_t *csvec, uint64_t opts=0)
Definition: XrdOfs.cc:1192
XrdSfsXferSize write(XrdSfsFileOffset fileOffset, const char *buffer, XrdSfsXferSize buffer_size)
Definition: XrdOfs.cc:1476
static bool ocFsync
Definition: XrdOfs.hh:194
int truncate(XrdSfsFileOffset fileOffset)
Definition: XrdOfs.cc:1689
const char * FName()
Definition: XrdOfs.hh:140
int read(XrdSfsFileOffset fileOffset, XrdSfsXferSize amount)
Definition: XrdOfs.cc:1311
XrdSfsXferSize readv(XrdOucIOVec *readV, int readCount)
Definition: XrdOfs.cc:1398
int open(const char *fileName, XrdSfsFileOpenMode openMode, mode_t createMode, const XrdSecEntity *client, const char *opaque=0)
Definition: XrdOfs.cc:451
XrdSfsXferSize pgRead(XrdSfsFileOffset offset, char *buffer, XrdSfsXferSize rdlen, uint32_t *csvec, uint64_t opts=0)
Definition: XrdOfs.cc:1096
int getMmap(void **Addr, off_t &Size)
Definition: XrdOfs.cc:1579
int close()
Definition: XrdOfs.cc:804
char viaDel
Definition: XrdOfs.hh:203
~XrdOfsFile()
Definition: XrdOfs.hh:192
const char * tident
Definition: XrdOfs.hh:198
int sync()
Definition: XrdOfs.cc:1628
XrdOfsHandle * oh
Definition: XrdOfs.hh:199
int dorawio
Definition: XrdOfs.hh:202
XrdOucChkPnt * myCKP
Definition: XrdOfs.hh:201
bool ckpBad
Definition: XrdOfs.hh:204
XrdOfsTPC * myTPC
Definition: XrdOfs.hh:200
virtual int fctl(const int cmd, const char *args, XrdOucErrInfo &eInfo)=0
int stat(struct stat *buf)
Definition: XrdOfs.cc:1600
const char * Name()
void Connect(const XrdSecEntity *client=0)
Definition: XrdOfs.cc:1966
int chmod(const char *Name, XrdSfsMode Mode, XrdOucErrInfo &out_error, const XrdSecEntity *client, const char *opaque=0)
Definition: XrdOfs.cc:1898
int truncate(const char *Name, XrdSfsFileOffset fileOffset, XrdOucErrInfo &out_error, const XrdSecEntity *client=0, const char *opaque=0)
Definition: XrdOfs.cc:2459
struct fwdOpt fwdTRUNC
Definition: XrdOfs.hh:417
void Disc(const XrdSecEntity *client=0)
Definition: XrdOfs.cc:1979
int prepare(XrdSfsPrep &pargs, XrdOucErrInfo &out_error, const XrdSecEntity *client=0)
Definition: XrdOfs.cc:2153
mode_t dMask[2]
Definition: XrdOfs.hh:386
const char * Split(const char *Args, const char **Opq, char *Path, int Plen)
Definition: XrdOfs.cc:2690
int myPort
Definition: XrdOfs.hh:382
XrdSfsDirectory * newDir(XrdOucErrInfo &eInfo)
Definition: XrdOfs.hh:249
XrdCmsClient * Finder
Definition: XrdOfs.hh:431
mode_t fMask[2]
Definition: XrdOfs.hh:387
int rem(const char *path, XrdOucErrInfo &out_error, const XrdSecEntity *client, const char *info=0)
Definition: XrdOfs.hh:311
XrdSfsDirectory * newDir(char *user=0, int MonID=0)
Definition: XrdOfs.hh:246
char * WaitTime(int, char *, int)
Definition: XrdOfs.cc:2786
struct fwdOpt fwdRMDIR
Definition: XrdOfs.hh:416
XrdOfsEvr evrObject
Definition: XrdOfs.hh:430
static int OSSDelay
Definition: XrdOfs.hh:420
char * ConfigFN
Definition: XrdOfs.hh:422
int tpcRdrPort[2]
Definition: XrdOfs.hh:392
@ isProxy
Definition: XrdOfs.hh:369
@ haveRole
Definition: XrdOfs.hh:374
@ RdrTPC
Definition: XrdOfs.hh:378
@ ThirdPC
Definition: XrdOfs.hh:376
@ isMeta
Definition: XrdOfs.hh:373
@ SubCluster
Definition: XrdOfs.hh:377
@ isManager
Definition: XrdOfs.hh:370
@ isPeer
Definition: XrdOfs.hh:368
@ XAttrPlug
Definition: XrdOfs.hh:367
@ isSuper
Definition: XrdOfs.hh:372
@ isServer
Definition: XrdOfs.hh:371
@ Authorize
Definition: XrdOfs.hh:366
@ Forwarding
Definition: XrdOfs.hh:375
int FAttr(XrdSfsFACtl *faReq, XrdOucErrInfo &eInfo, const XrdSecEntity *client=0)
Definition: XrdOfsFAttr.cc:195
int mkdir(const char *dirName, XrdSfsMode Mode, XrdOucErrInfo &out_error, const XrdSecEntity *client, const char *opaque=0)
Definition: XrdOfs.cc:2078
int remdir(const char *dirName, XrdOucErrInfo &out_error, const XrdSecEntity *client, const char *info=0)
Definition: XrdOfs.hh:317
friend class XrdOfsDirectory
Definition: XrdOfs.hh:239
virtual int Configure(XrdSysError &)
struct fwdOpt fwdMKPATH
Definition: XrdOfs.hh:413
XrdSfsFile * newFile(char *user=0, int MonID=0)
Definition: XrdOfs.hh:252
void Config_Cluster(XrdOss *)
XrdSfsFile * newFile(XrdOucErrInfo &eInfo)
Definition: XrdOfs.hh:255
int fsctl(const int cmd, const char *args, XrdOucErrInfo &out_error, const XrdSecEntity *client=0)
Definition: XrdOfsFSctl.cc:93
void Config_Display(XrdSysError &)
XrdOfs()
Definition: XrdOfs.cc:169
virtual ~XrdOfs()
Definition: XrdOfs.hh:358
char * tpcRdrHost[2]
Definition: XrdOfs.hh:391
int chksum(csFunc Func, const char *csName, const char *Path, XrdOucErrInfo &out_error, const XrdSecEntity *client=0, const char *opaque=0)
Definition: XrdOfs.cc:1787
int rename(const char *oldFileName, const char *newFileName, XrdOucErrInfo &out_error, const XrdSecEntity *client, const char *infoO=0, const char *infoN=0)
Definition: XrdOfs.cc:2261
int Options
Definition: XrdOfs.hh:381
struct fwdOpt fwdMKDIR
Definition: XrdOfs.hh:412
static int MaxDelay
Definition: XrdOfs.hh:419
static int Emsg(const char *, XrdOucErrInfo &, int, const char *x, XrdOfsHandle *hP)
Definition: XrdOfs.cc:2518
struct fwdOpt fwdMV
Definition: XrdOfs.hh:414
XrdNetIF * myIF
Definition: XrdOfs.hh:396
static int fsError(XrdOucErrInfo &myError, int rc)
Definition: XrdOfs.cc:2633
friend class XrdOfsFile
Definition: XrdOfs.hh:240
int FSctl(const int cmd, XrdSfsFSctl &args, XrdOucErrInfo &eInfo, const XrdSecEntity *client=0)
Definition: XrdOfsFSctl.cc:263
int stat(const char *Name, struct stat *buf, XrdOucErrInfo &out_error, const XrdSecEntity *client, const char *opaque=0)
Definition: XrdOfs.cc:2366
const char * getVersion()
struct fwdOpt fwdRM
Definition: XrdOfs.hh:415
virtual int ConfigXeq(char *var, XrdOucStream &, XrdSysError &)
int getStats(char *buff, int blen)
Definition: XrdOfs.cc:2055
struct fwdOpt fwdCHMOD
Definition: XrdOfs.hh:411
int Stall(XrdOucErrInfo &, int, const char *)
Definition: XrdOfs.cc:2707
int exists(const char *fileName, XrdSfsFileExistence &exists_flag, XrdOucErrInfo &out_error, const XrdSecEntity *client, const char *opaque=0)
Definition: XrdOfs.cc:1992
void Unpersist(XrdOfsHandle *hP, int xcev=1)
Definition: XrdOfs.cc:2743
const char * getErrUser()
XrdOucErrInfo & error
virtual void EnvInfo(XrdOucEnv *envP)
virtual int fctl(const int cmd, const char *args, XrdOucErrInfo &eInfo)=0
const char * Cmd
Definition: XrdOfs.hh:401
char * Host
Definition: XrdOfs.hh:402
void Reset()
Definition: XrdOfs.hh:404