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 <string.h>
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;
50class XrdSysError;
51class XrdSysLogger;
52class XrdOucStream;
53class XrdSfsAio;
54
55struct XrdVersionInfo;
56
57/******************************************************************************/
58/* X r d O f s D i r e c t o r y */
59/******************************************************************************/
60
62{
63public:
64
65 int open(const char *dirName,
66 const XrdSecEntity *client,
67 const char *opaque = 0);
68
69 const char *nextEntry();
70
71 int close();
72
73inline void copyError(XrdOucErrInfo &einfo) {einfo = error;}
74
75const char *FName() {return (const char *)fname;}
76
77 int autoStat(struct stat *buf);
78
79 XrdOfsDirectory(const char *user, int MonID)
80 : XrdSfsDirectory(user, MonID)
81 {dp = 0;
82 tident = (user ? user : "");
83 fname=0; atEOF=0;
84 }
85virtual ~XrdOfsDirectory() {if (dp) close();}
86
87protected:
88const char *tident;
89char *fname;
90
91private:
94char dname[MAXNAMLEN];
95};
96
97/******************************************************************************/
98/* X r d O f s F i l e */
99/******************************************************************************/
100
101class XrdOfsTPC;
102
103class XrdOfsFile : public XrdSfsFile
104{
105public:
106
107 int open(const char *fileName,
108 XrdSfsFileOpenMode openMode,
109 mode_t createMode,
110 const XrdSecEntity *client,
111 const char *opaque = 0);
112
113 int close();
114
115 using XrdSfsFile::fctl;
116
117 int fctl(const int cmd,
118 const char *args,
119 XrdOucErrInfo &out_error);
120
121 int fctl(const int cmd,
122 int alen,
123 const char *args,
124 const XrdSecEntity *client = 0);
125
126 const char *FName() {return (oh ? oh->Name() : "?");}
127
128 int getMmap(void **Addr, off_t &Size);
129
130 int read(XrdSfsFileOffset fileOffset, // Preread only
131 XrdSfsXferSize amount);
132
134 char *buffer,
135 XrdSfsXferSize buffer_size);
136
138 int readCount);
139
140 int read(XrdSfsAio *aioparm);
141
143 const char *buffer,
144 XrdSfsXferSize buffer_size);
145
146 int write(XrdSfsAio *aioparm);
147
148 int sync();
149
150 int sync(XrdSfsAio *aiop);
151
152 int stat(struct stat *buf);
153
154 int truncate(XrdSfsFileOffset fileOffset);
155
156 int getCXinfo(char cxtype[4], int &cxrsz);
157
158 XrdOfsFile(const char *user, int MonID);
159
160 ~XrdOfsFile() {viaDel = 1; if (oh) close();}
161
162protected:
163 const char *tident;
164
165private:
166
168
173};
174
175/******************************************************************************/
176/* C l a s s X r d O f s */
177/******************************************************************************/
178
179class XrdAccAuthorize;
180class XrdCks;
181class XrdCmsClient;
182class XrdOfsConfigPI;
183class XrdOfsPoscq;
184
186{
187friend class XrdOfsDirectory;
188friend class XrdOfsFile;
189
190public:
191
192// Object allocation
193//
194 XrdSfsDirectory *newDir(char *user=0, int MonID=0)
195 {return (XrdSfsDirectory *)new XrdOfsDirectory(user,MonID);}
196
197 XrdSfsFile *newFile(char *user=0,int MonID=0)
198 {return (XrdSfsFile *)new XrdOfsFile(user, MonID);}
199
200// Other functions
201//
202 int chksum( csFunc Func,
203 const char *csName,
204 const char *Path,
205 XrdOucErrInfo &out_error,
206 const XrdSecEntity *client = 0,
207 const char *opaque = 0);
208
209 int chmod(const char *Name,
210 XrdSfsMode Mode,
211 XrdOucErrInfo &out_error,
212 const XrdSecEntity *client,
213 const char *opaque = 0);
214
215 int exists(const char *fileName,
216 XrdSfsFileExistence &exists_flag,
217 XrdOucErrInfo &out_error,
218 const XrdSecEntity *client,
219 const char *opaque = 0);
220
221 int fsctl(const int cmd,
222 const char *args,
223 XrdOucErrInfo &out_error,
224 const XrdSecEntity *client);
225
226 int getStats(char *buff, int blen);
227
228const char *getVersion();
229
230 int mkdir(const char *dirName,
231 XrdSfsMode Mode,
232 XrdOucErrInfo &out_error,
233 const XrdSecEntity *client,
234 const char *opaque = 0);
235
236 int prepare( XrdSfsPrep &pargs,
237 XrdOucErrInfo &out_error,
238 const XrdSecEntity *client = 0);
239
240 int rem(const char *path,
241 XrdOucErrInfo &out_error,
242 const XrdSecEntity *client,
243 const char *info = 0)
244 {return remove('f', path, out_error, client, info);}
245
246 int remdir(const char *dirName,
247 XrdOucErrInfo &out_error,
248 const XrdSecEntity *client,
249 const char *info = 0)
250 {return remove('d',dirName,out_error,client,info);}
251
252 int rename(const char *oldFileName,
253 const char *newFileName,
254 XrdOucErrInfo &out_error,
255 const XrdSecEntity *client,
256 const char *infoO = 0,
257 const char *infoN = 0);
258
259 int stat(const char *Name,
260 struct stat *buf,
261 XrdOucErrInfo &out_error,
262 const XrdSecEntity *client,
263 const char *opaque = 0);
264
265 int stat(const char *Name,
266 mode_t &mode,
267 XrdOucErrInfo &out_error,
268 const XrdSecEntity *client,
269 const char *opaque = 0);
270
271 int truncate(const char *Name,
272 XrdSfsFileOffset fileOffset,
273 XrdOucErrInfo &out_error,
274 const XrdSecEntity *client = 0,
275 const char *opaque = 0);
276// Management functions
277//
278virtual int Configure(XrdSysError &); // Backward Compatability
279
281
283
285
287virtual ~XrdOfs() {} // Too complicate to delete :-)
288
289/******************************************************************************/
290/* C o n f i g u r a t i o n V a l u e s */
291/******************************************************************************/
292
293// Configuration values for this filesystem
294//
295enum {Authorize = 0x0001, // Authorization wanted
296 XAttrPlug = 0x0002, // Extended Attribute Plugin
297 isPeer = 0x0050, // Role peer
298 isProxy = 0x0020, // Role proxy
299 isManager = 0x0040, // Role manager
300 isServer = 0x0080, // Role server
301 isSuper = 0x00C0, // Role supervisor
302 isMeta = 0x0100, // Role meta + above
303 haveRole = 0x01F0, // A role is present
304 Forwarding= 0x1000, // Fowarding wanted
305 ThirdPC = 0x2000, // This party copy wanted
306 SubCluster= 0x4000 // all.subcluster directive encountered
307 }; // These are set in Options below
308
309int Options; // Various options
310int myPort; // Port number being used
311
312// TPC related things
313//
314char *tpcRdrHost[2]; // TPC redirect target or null if none
315int tpcRdrPort[2]; // TPC redirect target port number
316
317// Networking
318//
320
321// Forward options
322//
323struct fwdOpt
324 {const char *Cmd;
325 char *Host;
326 int Port;
327 void Reset() {Cmd = 0; Port = 0;
328 if (Host) {free(Host); Host = 0;}
329 }
330 fwdOpt() : Cmd(0), Host(0), Port(0) {}
332 };
333
341
342static int MaxDelay; // Max delay imposed during staging
343static int OSSDelay; // Delay to impose when oss interface times out
344
345char *ConfigFN; // ->Configuration filename
346
347/******************************************************************************/
348/* P r o t e c t e d I t e m s */
349/******************************************************************************/
350
351protected:
352
353XrdOfsEvr evrObject; // Event receiver
354XrdCmsClient *Finder; // ->Cluster Management Service
355
356virtual int ConfigXeq(char *var, XrdOucStream &, XrdSysError &);
357static int Emsg(const char *, XrdOucErrInfo &, int, const char *x,
358 XrdOfsHandle *hP);
359static int Emsg(const char *, XrdOucErrInfo &, int, const char *x,
360 const char *y="");
361static int fsError(XrdOucErrInfo &myError, int rc);
362const char *Split(const char *Args, const char **Opq, char *Path, int Plen);
363 int Stall(XrdOucErrInfo &, int, const char *);
364 void Unpersist(XrdOfsHandle *hP, int xcev=1);
365 char *WaitTime(int, char *, int);
366
367/******************************************************************************/
368/* P r i v a t e C o n f i g u r a t i o n */
369/******************************************************************************/
370
371private:
372
373char *myRole;
374XrdAccAuthorize *Authorization; // ->Authorization Service
375XrdCmsClient *Balancer; // ->Cluster Local Interface
376XrdOfsEvs *evsObject; // ->Event Notifier
377
378XrdOfsPoscq *poscQ; // -> poscQ if persist on close enabled
379char *poscLog; // -> Directory for posc recovery log
380int poscHold; // Seconds to hold a forced close
381short poscSync; // Number of requests before sync
382signed char poscAuto; // 1 -> Automatic persist on close
383
384char ossRW; // The oss r/w capability
385
386XrdOfsConfigPI *ofsConfig; // Plugin configurator
387XrdOfsPrepare *prepHandler; // Plugin prepare
388XrdCks *Cks; // Checksum manager
389bool CksPfn; // Checksum needs a pfn
390bool CksRdr; // Checksum may be redirected (i.e. not local)
391bool prepAuth; // Prepare requires authorization
392char OssIsProxy; // !0 if we detect the oss plugin is a proxy
393char myRType[4]; // Role type for consistency with the cms
394
395XrdVersionInfo *myVersion; // Version number compiled against
396
398XrdSysMutex ocMutex; // Global mutex for open/close
399
400bool DirRdr; // Opendir() can be redirected.
401
402/******************************************************************************/
403/* O t h e r D a t a */
404/******************************************************************************/
405
406// Common functions
407//
408 int remove(const char type, const char *path,
409 XrdOucErrInfo &out_error, const XrdSecEntity *client,
410 const char *opaque);
411
412// Function used during Configuration
413//
414int ConfigDispFwd(char *buff, struct fwdOpt &Fwd);
418char *ConfigTPCDir(XrdSysError &Eroute, const char *xPath);
419const char *Fname(const char *);
420int Forward(int &Result, XrdOucErrInfo &Resp, struct fwdOpt &Fwd,
421 const char *arg1=0, const char *arg2=0,
422 XrdOucEnv *Env1=0, XrdOucEnv *Env2=0);
424const char *theRole(int opts);
438};
439#endif
#define stat(a, b)
Definition: XrdPosix.hh:96
int XrdSfsMode
Definition: XrdSfsInterface.hh:121
XrdSfsFileExistence
Definition: XrdSfsInterface.hh:125
int XrdSfsFileOpenMode
Definition: XrdSfsInterface.hh:120
long long XrdSfsFileOffset
Definition: XrdSfsInterface.hh:119
int XrdSfsXferSize
Definition: XrdSfsInterface.hh:122
Definition: XrdAccAuthorize.hh:65
Definition: XrdCks.hh:49
Definition: XrdCmsClient.hh:116
Definition: XrdNetIF.hh:49
Definition: XrdOfsConfigPI.hh:56
Definition: XrdOfs.hh:62
XrdOfsDirectory(const char *user, int MonID)
Definition: XrdOfs.hh:79
int atEOF
Definition: XrdOfs.hh:93
char dname[MAXNAMLEN]
Definition: XrdOfs.hh:94
virtual ~XrdOfsDirectory()
Definition: XrdOfs.hh:85
const char * FName()
Definition: XrdOfs.hh:75
const char * nextEntry()
void copyError(XrdOucErrInfo &einfo)
Definition: XrdOfs.hh:73
const char * tident
Definition: XrdOfs.hh:88
int autoStat(struct stat *buf)
char * fname
Definition: XrdOfs.hh:89
XrdOssDF * dp
Definition: XrdOfs.hh:92
int open(const char *dirName, const XrdSecEntity *client, const char *opaque=0)
Definition: XrdOfsEvr.hh:43
Definition: XrdOfsEvs.hh:121
Definition: XrdOfs.hh:104
int read(XrdSfsAio *aioparm)
int getCXinfo(char cxtype[4], int &cxrsz)
XrdSfsXferSize write(XrdSfsFileOffset fileOffset, const char *buffer, XrdSfsXferSize buffer_size)
int truncate(XrdSfsFileOffset fileOffset)
int read(XrdSfsFileOffset fileOffset, XrdSfsXferSize amount)
const char * FName()
Definition: XrdOfs.hh:126
int fctl(const int cmd, const char *args, XrdOucErrInfo &out_error)
XrdOfsFile(const char *user, int MonID)
XrdSfsXferSize readv(XrdOucIOVec *readV, int readCount)
int open(const char *fileName, XrdSfsFileOpenMode openMode, mode_t createMode, const XrdSecEntity *client, const char *opaque=0)
int getMmap(void **Addr, off_t &Size)
char viaDel
Definition: XrdOfs.hh:172
~XrdOfsFile()
Definition: XrdOfs.hh:160
const char * tident
Definition: XrdOfs.hh:163
void GenFWEvent()
XrdSfsXferSize read(XrdSfsFileOffset fileOffset, char *buffer, XrdSfsXferSize buffer_size)
XrdOfsHandle * oh
Definition: XrdOfs.hh:169
int dorawio
Definition: XrdOfs.hh:171
int sync(XrdSfsAio *aiop)
XrdOfsTPC * myTPC
Definition: XrdOfs.hh:170
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:39
Definition: XrdOfsPrepare.hh:47
Definition: XrdOfsTPC.hh:48
Definition: XrdOfs.hh:186
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:340
int Forward(int &Result, XrdOucErrInfo &Resp, struct fwdOpt &Fwd, const char *arg1=0, const char *arg2=0, XrdOucEnv *Env1=0, XrdOucEnv *Env2=0)
int xdirl(XrdOucStream &, XrdSysError &)
int remove(const char type, const char *path, XrdOucErrInfo &out_error, const XrdSecEntity *client, const char *opaque)
XrdCmsClient * Balancer
Definition: XrdOfs.hh:375
int prepare(XrdSfsPrep &pargs, XrdOucErrInfo &out_error, const XrdSecEntity *client=0)
char OssIsProxy
Definition: XrdOfs.hh:392
const char * Split(const char *Args, const char **Opq, char *Path, int Plen)
int myPort
Definition: XrdOfs.hh:310
XrdCmsClient * Finder
Definition: XrdOfs.hh:354
int Reformat(XrdOucErrInfo &)
int rem(const char *path, XrdOucErrInfo &out_error, const XrdSecEntity *client, const char *info=0)
Definition: XrdOfs.hh:240
XrdOfsPrepare * prepHandler
Definition: XrdOfs.hh:387
bool CksPfn
Definition: XrdOfs.hh:389
char * WaitTime(int, char *, int)
struct fwdOpt fwdRMDIR
Definition: XrdOfs.hh:339
XrdOfsEvr evrObject
Definition: XrdOfs.hh:353
static int OSSDelay
Definition: XrdOfs.hh:343
char * ConfigFN
Definition: XrdOfs.hh:345
bool prepAuth
Definition: XrdOfs.hh:391
int xexp(XrdOucStream &, XrdSysError &, bool)
int tpcRdrPort[2]
Definition: XrdOfs.hh:315
XrdSfsDirectory * newDir(char *user=0, int MonID=0)
Definition: XrdOfs.hh:194
bool CksRdr
Definition: XrdOfs.hh:390
XrdVersionInfo * myVersion
Definition: XrdOfs.hh:395
int mkdir(const char *dirName, XrdSfsMode Mode, XrdOucErrInfo &out_error, const XrdSecEntity *client, const char *opaque=0)
int xrole(XrdOucStream &, XrdSysError &)
int remdir(const char *dirName, XrdOucErrInfo &out_error, const XrdSecEntity *client, const char *info=0)
Definition: XrdOfs.hh:246
friend class XrdOfsDirectory
Definition: XrdOfs.hh:187
struct fwdOpt fwdMKPATH
Definition: XrdOfs.hh:336
XrdCks * Cks
Definition: XrdOfs.hh:388
int stat(const char *Name, mode_t &mode, XrdOucErrInfo &out_error, const XrdSecEntity *client, const char *opaque=0)
void Config_Cluster(XrdOss *)
void Config_Display(XrdSysError &)
int ConfigRedir(XrdSysError &Eroute, XrdOucEnv *EnvInfo)
XrdSysMutex ocMutex
Definition: XrdOfs.hh:398
virtual ~XrdOfs()
Definition: XrdOfs.hh:287
static XrdOfsHandle * dummyHandle
Definition: XrdOfs.hh:397
char * tpcRdrHost[2]
Definition: XrdOfs.hh:314
char * poscLog
Definition: XrdOfs.hh:379
short poscSync
Definition: XrdOfs.hh:381
int chksum(csFunc Func, const char *csName, const char *Path, XrdOucErrInfo &out_error, const XrdSecEntity *client=0, const char *opaque=0)
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:309
virtual int Configure(XrdSysError &, XrdOucEnv *)
int ConfigDispFwd(char *buff, struct fwdOpt &Fwd)
struct fwdOpt fwdMKDIR
Definition: XrdOfs.hh:335
int xforward(XrdOucStream &, XrdSysError &)
static int MaxDelay
Definition: XrdOfs.hh:342
int xcrds(XrdOucStream &, XrdSysError &)
int ConfigTPC(XrdSysError &Eroute)
struct fwdOpt fwdMV
Definition: XrdOfs.hh:337
XrdNetIF * myIF
Definition: XrdOfs.hh:319
int fsctl(const int cmd, const char *args, XrdOucErrInfo &out_error, const XrdSecEntity *client)
friend class XrdOfsFile
Definition: XrdOfs.hh:188
XrdSfsFile * newFile(char *user=0, int MonID=0)
Definition: XrdOfs.hh:197
@ isProxy
Definition: XrdOfs.hh:298
@ haveRole
Definition: XrdOfs.hh:303
@ ThirdPC
Definition: XrdOfs.hh:305
@ isMeta
Definition: XrdOfs.hh:302
@ SubCluster
Definition: XrdOfs.hh:306
@ isManager
Definition: XrdOfs.hh:299
@ isPeer
Definition: XrdOfs.hh:297
@ XAttrPlug
Definition: XrdOfs.hh:296
@ isSuper
Definition: XrdOfs.hh:301
@ isServer
Definition: XrdOfs.hh:300
@ Authorize
Definition: XrdOfs.hh:295
@ Forwarding
Definition: XrdOfs.hh:304
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:384
struct fwdOpt fwdRM
Definition: XrdOfs.hh:338
static int Emsg(const char *, XrdOucErrInfo &, int, const char *x, XrdOfsHandle *hP)
int xpers(XrdOucStream &, XrdSysError &)
char * ConfigTPCDir(XrdSysError &Eroute, const char *xPath)
const char * theRole(int opts)
bool DirRdr
Definition: XrdOfs.hh:400
static int fsError(XrdOucErrInfo &myError, int rc)
XrdOfsConfigPI * ofsConfig
Definition: XrdOfs.hh:386
static int Emsg(const char *, XrdOucErrInfo &, int, const char *x, const char *y="")
XrdOfsEvs * evsObject
Definition: XrdOfs.hh:376
int poscHold
Definition: XrdOfs.hh:380
char myRType[4]
Definition: XrdOfs.hh:393
int ConfigPosc(XrdSysError &Eroute)
int xtpcr(XrdOucStream &, XrdSysError &)
XrdOfsPoscq * poscQ
Definition: XrdOfs.hh:378
signed char poscAuto
Definition: XrdOfs.hh:382
int getStats(char *buff, int blen)
struct fwdOpt fwdCHMOD
Definition: XrdOfs.hh:334
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:374
char * myRole
Definition: XrdOfs.hh:373
int xnot(XrdOucStream &, XrdSysError &)
int xtrace(XrdOucStream &, XrdSysError &)
void Unpersist(XrdOfsHandle *hP, int xcev=1)
int xtpc(XrdOucStream &, XrdSysError &)
Definition: XrdOss.hh:60
Definition: XrdOssApi.hh:52
Definition: XrdOss.hh:174
Definition: XrdOucEnv.hh:42
Definition: XrdOucErrInfo.hh:100
Definition: XrdOucStream.hh:46
Definition: XrdSecEntity.hh:52
Definition: XrdSfsAio.hh:58
Definition: XrdSfsInterface.hh:995
XrdOucErrInfo error
Definition: XrdSfsInterface.hh:1003
Definition: XrdSfsInterface.hh:210
virtual void EnvInfo(XrdOucEnv *envP)
Definition: XrdSfsInterface.hh:313
csFunc
Definition: XrdSfsInterface.hh:262
Definition: XrdSfsInterface.hh:652
virtual int fctl(const int cmd, const char *args, XrdOucErrInfo &eInfo)=0
Definition: XrdSysError.hh:90
Definition: XrdSysLogger.hh:53
Definition: XrdSysPthread.hh:166
Definition: XrdOfs.hh:324
~fwdOpt()
Definition: XrdOfs.hh:331
const char * Cmd
Definition: XrdOfs.hh:324
fwdOpt()
Definition: XrdOfs.hh:330
char * Host
Definition: XrdOfs.hh:325
int Port
Definition: XrdOfs.hh:326
void Reset()
Definition: XrdOfs.hh:327
Definition: XrdOucIOVec.hh:41
< Prepare parameters
Definition: XrdSfsInterface.hh:161