xrootd
Loading...
Searching...
No Matches
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"
41
42class XrdNetIF;
43class XrdOfsEvs;
44class XrdOfsPocq;
45class XrdOfsPrepare;
46class XrdOss;
47class XrdOssDF;
48class XrdOssDir;
49class XrdOucEnv;
51class XrdSysError;
52class XrdSysLogger;
53class XrdOucStream;
54class XrdSfsAio;
55
56struct XrdVersionInfo;
57
58/******************************************************************************/
59/* X r d O f s D i r e c t o r y */
60/******************************************************************************/
61
63{
64public:
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
74inline void copyError(XrdOucErrInfo &einfo) {einfo = error;}
75
76const 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
84virtual ~XrdOfsDirectory() {if (dp) close();}
85
86protected:
87const char *tident;
88char *fname;
91char dname[MAXNAMLEN];
92};
93
95{
96public:
97 XrdOfsDirFull(const char *user, int MonID)
98 : XrdOfsDirectory(myEInfo, user), myEInfo(user, MonID)
99 {}
100
101virtual ~XrdOfsDirFull() {}
102
103private:
104XrdOucErrInfo myEInfo; // Accessible only by reference error
105};
106
107/******************************************************************************/
108/* X r d O f s F i l e */
109/******************************************************************************/
110
111class XrdOfsTPC;
112class XrdOucChkPnt;
113
114class XrdOfsFile : public XrdSfsFile
115{
116public:
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
194protected:
195
196const char *tident;
203
204private:
205
208};
209
211{
212public:
213 XrdOfsFileFull(const char *user, int MonID)
214 : XrdOfsFile(myEInfo, user), myEInfo(user, MonID)
215 {}
216
217virtual ~XrdOfsFileFull() {}
218
219private:
220XrdOucErrInfo myEInfo; // Accessible only by reference error
221};
222
223/******************************************************************************/
224/* C l a s s X r d O f s */
225/******************************************************************************/
226
227class XrdAccAuthorize;
228class XrdCks;
229class XrdCmsClient;
230class XrdOfsConfigPI;
231class XrdOfsFSctl_PI;
232class XrdOfsPoscq;
233class XrdSfsFACtl;
234
236{
237friend class XrdOfsDirectory;
238friend class XrdOfsFile;
239
240public:
241
242// Object allocation
243//
244 XrdSfsDirectory *newDir(char *user=0, int MonID=0)
245 {return new XrdOfsDirFull(user, MonID);}
246
248 {return new XrdOfsDirectory(eInfo, eInfo.getErrUser());}
249
250 XrdSfsFile *newFile(char *user=0,int MonID=0)
251 {return new XrdOfsFileFull(user, MonID);}
252
254 {return new XrdOfsFile(eInfo, eInfo.getErrUser());}
255
256// Other functions
257//
258 int chksum( csFunc Func,
259 const char *csName,
260 const char *Path,
261 XrdOucErrInfo &out_error,
262 const XrdSecEntity *client = 0,
263 const char *opaque = 0);
264
265 int chmod(const char *Name,
266 XrdSfsMode Mode,
267 XrdOucErrInfo &out_error,
268 const XrdSecEntity *client,
269 const char *opaque = 0);
270
271 void Connect(const XrdSecEntity *client = 0);
272
273 void Disc(const XrdSecEntity *client = 0);
274
275 int exists(const char *fileName,
276 XrdSfsFileExistence &exists_flag,
277 XrdOucErrInfo &out_error,
278 const XrdSecEntity *client,
279 const char *opaque = 0);
280
281 int FAttr( XrdSfsFACtl *faReq,
282 XrdOucErrInfo &eInfo,
283 const XrdSecEntity *client = 0);
284
285 int FSctl(const int cmd,
286 XrdSfsFSctl &args,
287 XrdOucErrInfo &eInfo,
288 const XrdSecEntity *client = 0);
289
290 int fsctl(const int cmd,
291 const char *args,
292 XrdOucErrInfo &out_error,
293 const XrdSecEntity *client = 0);
294
295 int getStats(char *buff, int blen);
296
297const char *getVersion();
298
299 int mkdir(const char *dirName,
300 XrdSfsMode Mode,
301 XrdOucErrInfo &out_error,
302 const XrdSecEntity *client,
303 const char *opaque = 0);
304
305 int prepare( XrdSfsPrep &pargs,
306 XrdOucErrInfo &out_error,
307 const XrdSecEntity *client = 0);
308
309 int rem(const char *path,
310 XrdOucErrInfo &out_error,
311 const XrdSecEntity *client,
312 const char *info = 0)
313 {return remove('f', path, out_error, client, info);}
314
315 int remdir(const char *dirName,
316 XrdOucErrInfo &out_error,
317 const XrdSecEntity *client,
318 const char *info = 0)
319 {return remove('d',dirName,out_error,client,info);}
320
321 int rename(const char *oldFileName,
322 const char *newFileName,
323 XrdOucErrInfo &out_error,
324 const XrdSecEntity *client,
325 const char *infoO = 0,
326 const char *infoN = 0);
327
328 int stat(const char *Name,
329 struct stat *buf,
330 XrdOucErrInfo &out_error,
331 const XrdSecEntity *client,
332 const char *opaque = 0);
333
334 int stat(const char *Name,
335 mode_t &mode,
336 XrdOucErrInfo &out_error,
337 const XrdSecEntity *client,
338 const char *opaque = 0);
339
340 int truncate(const char *Name,
341 XrdSfsFileOffset fileOffset,
342 XrdOucErrInfo &out_error,
343 const XrdSecEntity *client = 0,
344 const char *opaque = 0);
345// Management functions
346//
347virtual int Configure(XrdSysError &); // Backward Compatibility
348
350
352
354
356virtual ~XrdOfs() {} // Too complicate to delete :-)
357
358/******************************************************************************/
359/* C o n f i g u r a t i o n V a l u e s */
360/******************************************************************************/
361
362// Configuration values for this filesystem
363//
364enum {Authorize = 0x0001, // Authorization wanted
365 XAttrPlug = 0x0002, // Extended Attribute Plugin
366 isPeer = 0x0050, // Role peer
367 isProxy = 0x0020, // Role proxy
368 isManager = 0x0040, // Role manager
369 isServer = 0x0080, // Role server
370 isSuper = 0x00C0, // Role supervisor
371 isMeta = 0x0100, // Role meta + above
372 haveRole = 0x01F0, // A role is present
373 Forwarding= 0x1000, // Fowarding wanted
374 ThirdPC = 0x2000, // This party copy wanted
375 SubCluster= 0x4000, // all.subcluster directive encountered
376 RdrTPC = 0x8000
377 }; // These are set in Options below
378
379int Options; // Various options
380int myPort; // Port number being used
381
382// Directory and file creation mode controls
383//
384mode_t dMask[2]; // Min/Max directory mode
385mode_t fMask[2]; // Min/Max file mode
386
387// TPC related things
388//
389char *tpcRdrHost[2]; // TPC redirect target or null if none
390int tpcRdrPort[2]; // TPC redirect target port number
391
392// Networking
393//
395
396// Forward options
397//
398struct fwdOpt
399 {const char *Cmd;
400 char *Host;
401 int Port;
402 void Reset() {Cmd = 0; Port = 0;
403 if (Host) {free(Host); Host = 0;}
404 }
405 fwdOpt() : Cmd(0), Host(0), Port(0) {}
407 };
408
416
417static int MaxDelay; // Max delay imposed during staging
418static int OSSDelay; // Delay to impose when oss interface times out
419
420char *ConfigFN; // ->Configuration filename
421
422/******************************************************************************/
423/* P r o t e c t e d I t e m s */
424/******************************************************************************/
425
426protected:
427
428XrdOfsEvr evrObject; // Event receiver
429XrdCmsClient *Finder; // ->Cluster Management Service
430
431virtual int ConfigXeq(char *var, XrdOucStream &, XrdSysError &);
432static int Emsg(const char *, XrdOucErrInfo &, int, const char *x,
433 XrdOfsHandle *hP);
434static int Emsg(const char *, XrdOucErrInfo &, int, const char *x,
435 const char *y="");
436static int fsError(XrdOucErrInfo &myError, int rc);
437const char *Split(const char *Args, const char **Opq, char *Path, int Plen);
438 int Stall(XrdOucErrInfo &, int, const char *);
439 void Unpersist(XrdOfsHandle *hP, int xcev=1);
440 char *WaitTime(int, char *, int);
441
442/******************************************************************************/
443/* P r i v a t e C o n f i g u r a t i o n */
444/******************************************************************************/
445
446private:
447
448char *myRole;
449XrdOfsFSctl_PI *FSctl_PC; // ->FSctl plugin (cache specific)
450XrdOfsFSctl_PI *FSctl_PI; // ->FSctl plugin
451XrdAccAuthorize *Authorization; // ->Authorization Service
452XrdCmsClient *Balancer; // ->Cluster Local Interface
453XrdOfsEvs *evsObject; // ->Event Notifier
454XrdOucPListAnchor*ossRPList; // ->Oss exoprt list
455
456XrdOfsPoscq *poscQ; // -> poscQ if persist on close enabled
457char *poscLog; // -> Directory for posc recovery log
458int poscHold; // Seconds to hold a forced close
459short poscSync; // Number of requests before sync
460signed char poscAuto; // 1 -> Automatic persist on close
461
462char ossRW; // The oss r/w capability
463
464XrdOfsConfigPI *ofsConfig; // Plugin configurator
465XrdOfsPrepare *prepHandler; // Plugin prepare
466XrdCks *Cks; // Checksum manager
467bool CksPfn; // Checksum needs a pfn
468bool CksRdr; // Checksum may be redirected (i.e. not local)
469bool prepAuth; // Prepare requires authorization
470char OssIsProxy; // !0 if we detect the oss plugin is a proxy
471char myRType[4]; // Role type for consistency with the cms
472
473uint64_t ossFeatures; // The oss features
474
475int usxMaxNsz; // Maximum length of attribute name
476int usxMaxVsz; // Maximum length of attribute value
477
479XrdSysMutex ocMutex; // Global mutex for open/close
480
481bool DirRdr; // Opendir() can be redirected.
482bool reProxy; // Reproxying required for TPC
483bool OssHasPGrw; // True: oss implements full rgRead/Write
484
485/******************************************************************************/
486/* O t h e r D a t a */
487/******************************************************************************/
488
489// Internal file attribute methods
490//
491int ctlFADel(XrdSfsFACtl &faCtl, XrdOucEnv &faEnv, XrdOucErrInfo &einfo);
492int ctlFAGet(XrdSfsFACtl &faCtl, XrdOucEnv &faEnv, XrdOucErrInfo &einfo);
493int ctlFALst(XrdSfsFACtl &faCtl, XrdOucEnv &faEnv, XrdOucErrInfo &einfo);
494int ctlFASet(XrdSfsFACtl &faCtl, XrdOucEnv &faEnv, XrdOucErrInfo &einfo);
495
496// Common functions
497//
498int remove(const char type, const char *path, XrdOucErrInfo &out_error,
499 const XrdSecEntity *client, const char *opaque);
500
501// Function used during Configuration
502//
503int ConfigDispFwd(char *buff, struct fwdOpt &Fwd);
508char *ConfigTPCDir(XrdSysError &Eroute, const char *sfx,
509 const char *xPath=0);
510const char *Fname(const char *);
511int Forward(int &Result, XrdOucErrInfo &Resp, struct fwdOpt &Fwd,
512 const char *arg1=0, const char *arg2=0,
513 XrdOucEnv *Env1=0, XrdOucEnv *Env2=0);
514int FSctl(XrdOfsFile &file, int cmd, int alen, const char *args,
515 const XrdSecEntity *client);
517const char *theRole(int opts);
533};
534#endif
#define stat(a, b)
Definition XrdPosix.hh:96
int XrdSfsMode
Definition XrdSfsInterface.hh:129
XrdSfsFileExistence
Definition XrdSfsInterface.hh:133
int XrdSfsFileOpenMode
Definition XrdSfsInterface.hh:128
long long XrdSfsFileOffset
Definition XrdSfsInterface.hh:127
int XrdSfsXferSize
Definition XrdSfsInterface.hh:130
Definition XrdAccAuthorize.hh:68
Definition XrdCks.hh:92
Definition XrdCmsClient.hh:116
Definition XrdNetIF.hh:49
Definition XrdOfsConfigPI.hh:61
Definition XrdOfs.hh:95
virtual ~XrdOfsDirFull()
Definition XrdOfs.hh:101
XrdOfsDirFull(const char *user, int MonID)
Definition XrdOfs.hh:97
XrdOucErrInfo myEInfo
Definition XrdOfs.hh:104
Definition XrdOfs.hh:63
XrdOfsDirectory(XrdOucErrInfo &eInfo, const char *user)
Definition XrdOfs.hh:80
int atEOF
Definition XrdOfs.hh:90
char dname[MAXNAMLEN]
Definition XrdOfs.hh:91
virtual ~XrdOfsDirectory()
Definition XrdOfs.hh:84
const char * FName()
Definition XrdOfs.hh:76
const char * nextEntry()
void copyError(XrdOucErrInfo &einfo)
Definition XrdOfs.hh:74
const char * tident
Definition XrdOfs.hh:87
int autoStat(struct stat *buf)
char * fname
Definition XrdOfs.hh:88
XrdOssDF * dp
Definition XrdOfs.hh:89
int open(const char *dirName, const XrdSecEntity *client, const char *opaque=0)
Definition XrdOfsEvr.hh:43
Definition XrdOfsEvs.hh:121
Definition XrdOfsFSctl_PI.hh:52
Definition XrdOfs.hh:211
XrdOfsFileFull(const char *user, int MonID)
Definition XrdOfs.hh:213
XrdOucErrInfo myEInfo
Definition XrdOfs.hh:220
virtual ~XrdOfsFileFull()
Definition XrdOfs.hh:217
Definition XrdOfs.hh:115
int read(XrdSfsAio *aioparm)
XrdOfsFile(XrdOucErrInfo &eInfo, const char *user)
int getCXinfo(char cxtype[4], int &cxrsz)
int checkpoint(XrdSfsFile::cpAct act, struct iov *range=0, int n=0)
XrdSfsXferSize pgWrite(XrdSfsFileOffset offset, char *buffer, XrdSfsXferSize wrlen, uint32_t *csvec, uint64_t opts=0)
XrdSfsXferSize write(XrdSfsFileOffset fileOffset, const char *buffer, XrdSfsXferSize buffer_size)
int truncate(XrdSfsFileOffset fileOffset)
int pgRead(XrdSfsAio *aioparm, uint64_t opts=0)
int read(XrdSfsFileOffset fileOffset, XrdSfsXferSize amount)
const char * FName()
Definition XrdOfs.hh:140
int fctl(const int cmd, const char *args, XrdOucErrInfo &out_error)
XrdSfsXferSize readv(XrdOucIOVec *readV, int readCount)
int open(const char *fileName, XrdSfsFileOpenMode openMode, mode_t createMode, const XrdSecEntity *client, const char *opaque=0)
XrdSfsXferSize pgRead(XrdSfsFileOffset offset, char *buffer, XrdSfsXferSize rdlen, uint32_t *csvec, uint64_t opts=0)
int getMmap(void **Addr, off_t &Size)
char viaDel
Definition XrdOfs.hh:201
~XrdOfsFile()
Definition XrdOfs.hh:192
const char * tident
Definition XrdOfs.hh:196
void GenFWEvent()
XrdSfsXferSize read(XrdSfsFileOffset fileOffset, char *buffer, XrdSfsXferSize buffer_size)
XrdOfsHandle * oh
Definition XrdOfs.hh:197
int dorawio
Definition XrdOfs.hh:200
XrdOucChkPnt * myCKP
Definition XrdOfs.hh:199
int pgWrite(XrdSfsAio *aioparm, uint64_t opts=0)
bool ckpBad
Definition XrdOfs.hh:202
int CreateCKP()
int sync(XrdSfsAio *aiop)
XrdOfsTPC * myTPC
Definition XrdOfs.hh:198
int stat(struct stat *buf)
int write(XrdSfsAio *aioparm)
int fctl(const int cmd, int alen, const char *args, const XrdSecEntity *client=0)
Definition XrdOfsHandle.hh:126
const char * Name()
Definition XrdOfsHandle.hh:148
Definition XrdOfsPoscq.hh:42
Definition XrdOfsPrepare.hh:47
Definition XrdOfsTPC.hh:48
Definition XrdOfs.hh:236
void Connect(const XrdSecEntity *client=0)
virtual int ConfigXeq(char *var, XrdOucStream &, XrdSysError &)
int xtpcal(XrdOucStream &, XrdSysError &)
int chmod(const char *Name, XrdSfsMode Mode, XrdOucErrInfo &out_error, const XrdSecEntity *client, const char *opaque=0)
virtual int Configure(XrdSysError &)
int truncate(const char *Name, XrdSfsFileOffset fileOffset, XrdOucErrInfo &out_error, const XrdSecEntity *client=0, const char *opaque=0)
struct fwdOpt fwdTRUNC
Definition XrdOfs.hh:415
int Forward(int &Result, XrdOucErrInfo &Resp, struct fwdOpt &Fwd, const char *arg1=0, const char *arg2=0, XrdOucEnv *Env1=0, XrdOucEnv *Env2=0)
void Disc(const XrdSecEntity *client=0)
int xdirl(XrdOucStream &, XrdSysError &)
int remove(const char type, const char *path, XrdOucErrInfo &out_error, const XrdSecEntity *client, const char *opaque)
uint64_t ossFeatures
Definition XrdOfs.hh:473
XrdCmsClient * Balancer
Definition XrdOfs.hh:452
int prepare(XrdSfsPrep &pargs, XrdOucErrInfo &out_error, const XrdSecEntity *client=0)
mode_t dMask[2]
Definition XrdOfs.hh:384
char OssIsProxy
Definition XrdOfs.hh:470
const char * Split(const char *Args, const char **Opq, char *Path, int Plen)
int myPort
Definition XrdOfs.hh:380
XrdCmsClient * Finder
Definition XrdOfs.hh:429
int Reformat(XrdOucErrInfo &)
mode_t fMask[2]
Definition XrdOfs.hh:385
int rem(const char *path, XrdOucErrInfo &out_error, const XrdSecEntity *client, const char *info=0)
Definition XrdOfs.hh:309
XrdOfsPrepare * prepHandler
Definition XrdOfs.hh:465
bool CksPfn
Definition XrdOfs.hh:467
char * WaitTime(int, char *, int)
XrdOfsFSctl_PI * FSctl_PC
Definition XrdOfs.hh:449
struct fwdOpt fwdRMDIR
Definition XrdOfs.hh:414
XrdOfsEvr evrObject
Definition XrdOfs.hh:428
XrdSfsDirectory * newDir(XrdOucErrInfo &eInfo)
Definition XrdOfs.hh:247
static int OSSDelay
Definition XrdOfs.hh:418
char * ConfigFN
Definition XrdOfs.hh:420
bool prepAuth
Definition XrdOfs.hh:469
int xexp(XrdOucStream &, XrdSysError &, bool)
int tpcRdrPort[2]
Definition XrdOfs.hh:390
XrdSfsDirectory * newDir(char *user=0, int MonID=0)
Definition XrdOfs.hh:244
bool CksRdr
Definition XrdOfs.hh:468
bool OssHasPGrw
Definition XrdOfs.hh:483
int ctlFASet(XrdSfsFACtl &faCtl, XrdOucEnv &faEnv, XrdOucErrInfo &einfo)
XrdOfsFSctl_PI * FSctl_PI
Definition XrdOfs.hh:450
int FAttr(XrdSfsFACtl *faReq, XrdOucErrInfo &eInfo, const XrdSecEntity *client=0)
int mkdir(const char *dirName, XrdSfsMode Mode, XrdOucErrInfo &out_error, const XrdSecEntity *client, const char *opaque=0)
int xrole(XrdOucStream &, XrdSysError &)
int FSctl(XrdOfsFile &file, int cmd, int alen, const char *args, const XrdSecEntity *client)
int ctlFALst(XrdSfsFACtl &faCtl, XrdOucEnv &faEnv, XrdOucErrInfo &einfo)
int remdir(const char *dirName, XrdOucErrInfo &out_error, const XrdSecEntity *client, const char *info=0)
Definition XrdOfs.hh:315
friend class XrdOfsDirectory
Definition XrdOfs.hh:237
struct fwdOpt fwdMKPATH
Definition XrdOfs.hh:411
XrdCks * Cks
Definition XrdOfs.hh:466
int stat(const char *Name, mode_t &mode, XrdOucErrInfo &out_error, const XrdSecEntity *client, const char *opaque=0)
int xcrm(XrdOucStream &, XrdSysError &)
void Config_Cluster(XrdOss *)
int fsctl(const int cmd, const char *args, XrdOucErrInfo &out_error, const XrdSecEntity *client=0)
void Config_Display(XrdSysError &)
int ConfigRedir(XrdSysError &Eroute, XrdOucEnv *EnvInfo)
XrdSysMutex ocMutex
Definition XrdOfs.hh:479
virtual ~XrdOfs()
Definition XrdOfs.hh:356
static XrdOfsHandle * dummyHandle
Definition XrdOfs.hh:478
char * tpcRdrHost[2]
Definition XrdOfs.hh:389
char * ConfigTPCDir(XrdSysError &Eroute, const char *sfx, const char *xPath=0)
char * poscLog
Definition XrdOfs.hh:457
short poscSync
Definition XrdOfs.hh:459
int chksum(csFunc Func, const char *csName, const char *Path, XrdOucErrInfo &out_error, const XrdSecEntity *client=0, const char *opaque=0)
@ isProxy
Definition XrdOfs.hh:367
@ haveRole
Definition XrdOfs.hh:372
@ RdrTPC
Definition XrdOfs.hh:376
@ ThirdPC
Definition XrdOfs.hh:374
@ isMeta
Definition XrdOfs.hh:371
@ SubCluster
Definition XrdOfs.hh:375
@ isManager
Definition XrdOfs.hh:368
@ isPeer
Definition XrdOfs.hh:366
@ XAttrPlug
Definition XrdOfs.hh:365
@ isSuper
Definition XrdOfs.hh:370
@ isServer
Definition XrdOfs.hh:369
@ Authorize
Definition XrdOfs.hh:364
@ Forwarding
Definition XrdOfs.hh:373
int ctlFAGet(XrdSfsFACtl &faCtl, XrdOucEnv &faEnv, XrdOucErrInfo &einfo)
int rename(const char *oldFileName, const char *newFileName, XrdOucErrInfo &out_error, const XrdSecEntity *client, const char *infoO=0, const char *infoN=0)
int Options
Definition XrdOfs.hh:379
virtual int Configure(XrdSysError &, XrdOucEnv *)
int ConfigDispFwd(char *buff, struct fwdOpt &Fwd)
struct fwdOpt fwdMKDIR
Definition XrdOfs.hh:410
int xforward(XrdOucStream &, XrdSysError &)
static int MaxDelay
Definition XrdOfs.hh:417
int xcrds(XrdOucStream &, XrdSysError &)
int ConfigTPC(XrdSysError &Eroute)
struct fwdOpt fwdMV
Definition XrdOfs.hh:412
XrdNetIF * myIF
Definition XrdOfs.hh:394
friend class XrdOfsFile
Definition XrdOfs.hh:238
int FSctl(const int cmd, XrdSfsFSctl &args, XrdOucErrInfo &eInfo, const XrdSecEntity *client=0)
XrdSfsFile * newFile(char *user=0, int MonID=0)
Definition XrdOfs.hh:250
int usxMaxNsz
Definition XrdOfs.hh:475
int ctlFADel(XrdSfsFACtl &faCtl, XrdOucEnv &faEnv, XrdOucErrInfo &einfo)
XrdOucPListAnchor * ossRPList
Definition XrdOfs.hh:454
int stat(const char *Name, struct stat *buf, XrdOucErrInfo &out_error, const XrdSecEntity *client, const char *opaque=0)
const char * getVersion()
const char * Fname(const char *)
int xmaxd(XrdOucStream &, XrdSysError &)
int xnmsg(XrdOucStream &, XrdSysError &)
char ossRW
Definition XrdOfs.hh:462
int xatr(XrdOucStream &, XrdSysError &)
struct fwdOpt fwdRM
Definition XrdOfs.hh:413
static int Emsg(const char *, XrdOucErrInfo &, int, const char *x, XrdOfsHandle *hP)
int xpers(XrdOucStream &, XrdSysError &)
const char * theRole(int opts)
int usxMaxVsz
Definition XrdOfs.hh:476
bool DirRdr
Definition XrdOfs.hh:481
static int fsError(XrdOucErrInfo &myError, int rc)
int ConfigTPC(XrdSysError &Eroute, XrdOucEnv *EnvInfo)
XrdOfsConfigPI * ofsConfig
Definition XrdOfs.hh:464
bool reProxy
Definition XrdOfs.hh:482
static int Emsg(const char *, XrdOucErrInfo &, int, const char *x, const char *y="")
XrdOfsEvs * evsObject
Definition XrdOfs.hh:453
int poscHold
Definition XrdOfs.hh:458
char myRType[4]
Definition XrdOfs.hh:471
int ConfigPosc(XrdSysError &Eroute)
XrdSfsFile * newFile(XrdOucErrInfo &eInfo)
Definition XrdOfs.hh:253
int xtpcr(XrdOucStream &, XrdSysError &)
XrdOfsPoscq * poscQ
Definition XrdOfs.hh:456
signed char poscAuto
Definition XrdOfs.hh:460
int getStats(char *buff, int blen)
struct fwdOpt fwdCHMOD
Definition XrdOfs.hh:409
int Stall(XrdOucErrInfo &, int, const char *)
int exists(const char *fileName, XrdSfsFileExistence &exists_flag, XrdOucErrInfo &out_error, const XrdSecEntity *client, const char *opaque=0)
XrdAccAuthorize * Authorization
Definition XrdOfs.hh:451
char * myRole
Definition XrdOfs.hh:448
int xnot(XrdOucStream &, XrdSysError &)
int xtrace(XrdOucStream &, XrdSysError &)
void Unpersist(XrdOfsHandle *hP, int xcev=1)
int xtpc(XrdOucStream &, XrdSysError &)
Definition XrdOss.hh:63
Definition XrdOssApi.hh:52
Definition XrdOss.hh:498
Definition XrdOucChkPnt.hh:41
Definition XrdOucEnv.hh:42
Definition XrdOucErrInfo.hh:101
const char * getErrUser()
Definition XrdOucErrInfo.hh:297
Definition XrdOucPList.hh:89
Definition XrdOucStream.hh:47
Definition XrdSecEntity.hh:65
Definition XrdSfsAio.hh:59
Definition XrdSfsInterface.hh:243
XrdOucErrInfo & error
Definition XrdSfsInterface.hh:251
Definition XrdSfsInterface.hh:845
virtual void EnvInfo(XrdOucEnv *envP)
Definition XrdSfsInterface.hh:980
csFunc
Definition XrdSfsInterface.hh:927
Definition XrdSfsInterface.hh:369
cpAct
Definition XrdSfsInterface.hh:432
virtual int fctl(const int cmd, const char *args, XrdOucErrInfo &eInfo)=0
Definition XrdSysError.hh:90
Definition XrdSysLogger.hh:53
Definition XrdSysPthread.hh:165
Definition XrdOfs.hh:399
~fwdOpt()
Definition XrdOfs.hh:406
const char * Cmd
Definition XrdOfs.hh:399
fwdOpt()
Definition XrdOfs.hh:405
char * Host
Definition XrdOfs.hh:400
int Port
Definition XrdOfs.hh:401
void Reset()
Definition XrdOfs.hh:402
Definition XrdOucIOVec.hh:41
Definition XrdSfsFAttr.hh:73
< SFS_FSCTL_PLUGIN/PLUGIO/PLUGXC parms
Definition XrdSfsInterface.hh:161
< Prepare parameters
Definition XrdSfsInterface.hh:172
Definition XrdOucIOVec.hh:65