xrootd
Loading...
Searching...
No Matches
XrdSfsInterface.hh
Go to the documentation of this file.
1#ifndef __SFS_INTERFACE_H__
2#define __SFS_INTERFACE_H__
3/******************************************************************************/
4/* */
5/* X r d S f s I n t e r f a c e . h h */
6/* */
7/* (c) 2018 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> // For strlcpy()
33#include <cerrno>
34#include <cstdint>
35#include <sys/types.h>
36#include <sys/stat.h>
37
39#include "XrdOuc/XrdOucIOVec.hh"
40#include "XrdOuc/XrdOucSFVec.hh"
41
43
45
46/******************************************************************************/
47/* O p e n M o d e s */
48/******************************************************************************/
49
50#define SFS_O_RDONLY 0 // open read/only
51#define SFS_O_WRONLY 1 // open write/only
52#define SFS_O_RDWR 2 // open read/write
53#define SFS_O_CREAT 0x00000100 // used for file creation
54#define SFS_O_TRUNC 0x00000200 // used for file truncation
55#define SFS_O_MULTIW 0x00000400 // used for multi-write locations
56#define SFS_O_NOTPC 0x00000800 // used to suppress TPC opens
57#define SFS_O_DIRLIST 0x00010000 // used for locate only
58#define SFS_O_POSC 0x00100000 // persist on successful close
59#define SFS_O_FORCE 0x00200000 // used for locate only
60#define SFS_O_HNAME 0x00400000 // used for locate only
61#define SFS_O_LOCAL 0x00800000 // used for locate only (local cmd)
62#define SFS_O_NOWAIT 0x01000000 // do not impose operational delays
63#define SFS_O_RAWIO 0x02000000 // allow client-side decompression
64#define SFS_O_RESET 0x04000000 // Reset any cached information
65#define SFS_O_REPLICA 0x08000000 // Open for replication
66
67// The following flag may be set in the access mode arg for open() & mkdir()
68// Note that on some systems mode_t is 16-bits so we use a careful value!
69//
70#define SFS_O_MKPTH 0x00004000 // Make directory path if missing
71
72// The following options are here to provide a uniform clustering interface.
73// They may be passed through open/locate/stat, as applicable.
74//
75#define SFS_O_LOCATE 0x10000000 // This request generated by locate()
76#define SFS_O_STAT 0x20000000 // This request generated by stat()
77#define SFS_O_META 0x40000000 // This request generated by metaop
78
79/******************************************************************************/
80/* D e f i n e s */
81/******************************************************************************/
82
83// Common fctl command values (0 to 255)
84//
85#define SFS_FCTL_GETFD 1 // Return file descriptor if possible
86#define SFS_FCTL_STATV 2 // Return visa information
87#define SFS_FCTL_SPEC1 3 // Return implementation defined information
88
89#define SFS_SFIO_FDVAL 0x80000000 // Use SendData() method GETFD response value
90
91// Common fsctl command values (0 to 255)
92//
93#define SFS_FSCTL_CMD 255
94
95#define SFS_FSCTL_LOCATE 1 // Locate a file
96#define SFS_FSCTL_STATFS 2 // Return FS data
97#define SFS_FSCTL_STATLS 3 // Return LS data
98#define SFS_FSCTL_STATXA 4 // Return XA data
99#define SFS_FSCTL_STATCC 5 // Return Cluster Config status
100#define SFS_FSCTL_PLUGIN 8 // Return Implementation Dependent Data
101#define SFS_FSCTL_PLUGIO 16 // Return Implementation Dependent Data
102#define SFS_FSCTL_PLUGXC 32 // Perform cache oriented operation
103
104// Return values for integer & XrdSfsXferSize returning XrdSfs methods
105//
106#define SFS_STALL 1 // Return value -> Seconds to stall client
107#define SFS_OK 0 // ErrInfo code -> All is well
108#define SFS_ERROR -1 // ErrInfo code -> Error occurred
109#define SFS_REDIRECT -256 // ErrInfo code -> Port number to redirect to
110#define SFS_STARTED -512 // ErrInfo code -> Estimated seconds to completion
111#define SFS_DATA -1024 // ErrInfo code -> Length of data
112#define SFS_DATAVEC -2048 // ErrInfo code -> Num iovec elements in msgbuff
113
114// The following macros are used for dealing with special local paths
115//
116#define SFS_LCLPRFX "/=/"
117#define SFS_LCLPLEN 3
118#define SFS_LCLPATH(x) !strncmp(x, SFS_LCLPRFX, SFS_LCLPLEN)
119#define SFS_LCLPRFY "/="
120#define SFS_LCLROOT(x) !strncmp(x, SFS_LCLPRFX, SFS_LCLPLEN-1) \
121 && (*(x+SFS_LCLPLEN-1) == '/' || *(x+SFS_LCLPLEN-1) == 0)
122
123/******************************************************************************/
124/* S t r u c t u r e s & T y p e d e f s */
125/******************************************************************************/
126
127typedef long long XrdSfsFileOffset;
129typedef int XrdSfsMode;
130typedef int XrdSfsXferSize;
131
140//------------------------------------------------
141
142#define Prep_PRTY0 0
143#define Prep_PRTY1 1
144#define Prep_PRTY2 2
145#define Prep_PRTY3 3
146#define Prep_PMASK 3
147#define Prep_SENDAOK 4
148#define Prep_SENDERR 8
149#define Prep_SENDACK 12
150#define Prep_WMODE 16
151#define Prep_STAGE 32
152#define Prep_COLOC 64
153#define Prep_FRESH 128
154#define Prep_CANCEL 256
155#define Prep_QUERY 512
156#define Prep_EVICT 1024
157
158class XrdOucTList;
159
161{
162 const char *Arg1;
165 union{
166 const char *Arg2;
167 const char **ArgP;
168 };
169};
170
179
180/******************************************************************************/
181/* F o r w a r d D e c l a r a t i o n s */
182/******************************************************************************/
183
184class XrdOucEnv;
185class XrdSecEntity;
186struct XrdSfsFACtl;
187
188/******************************************************************************/
189/* O b j e c t W r a p p i n g G u i d e */
190/******************************************************************************/
191
192/* The XrdSfsDirectory and XrdSfsFile objects can be wrapped. Wraping can be
193 used to add functionality. The process is common and pretty muche rote.
194 There is only one caveat: all wrappers must use the same XrdOucErrInfo
195 object. This is because the ErrInfo object contains client parameters that
196 are used to control how things are done to be backward compatible. Newer
197 client can then use more efficient internal processing. The SFS provides
198 two ways to make sure the same ErrInfo object is used by all objects in
199 the wrapped chain. Forward propagation (the one typically used) and
200 backward propagation (used in certain unusual cases). In forward mode,
201 the ErrInfo object of the last object in the chain is propagated to the
202 front of the chain. In backward mode the reverse happens. Let's assume
203 the following scenarion. Object-A wraps object-B (the object here can be
204 directory or file object). In forward mode weneed to create objects in
205 reverse order (bottom to top) which is typically what you would do anyway
206 as you need to capture the pinter to the object your wrapping. So, using
207 newFile() as an example where sfsP points to the Interface being wrapped:
208
209 XrdSfsFile *newFile(const char *user, int MonID)
210 {
211 XrdSfsFile *wrapped_file = sfsP->newFile(user, MonID);
212 if (!wrapped_file) return 0;
213 return new mySfsFile(wrapped_file,...);
214 }
215 class mySfsFile : public XrdSfsFile
216 {public:
217 mySfsFile(XrdSfsFile *wrapped_file,...) : XrdSfsFile(*wrapped_file)
218 {....}
219 ....
220 };
221
222 Notice we are allocating the wrapped file ahead of the wrapper so that
223 the wrapper can use the ErrInfo object of the wrapped file.
224
225 In backward mode we want to use the ErrInfo object of the front-most
226 wrapper for all wrappers after it. This mechanism is far more complicated
227 due to error handling requirements. However, it's useful when a wrapped
228 object is not necessarily instantiated to accomplish the needs of the
229 wrapper. An example of this is the newFile and newDir implementations for
230 XrdSsi where wrapped object creation is subject to the resource name.
231*/
232
233/******************************************************************************/
234/* X r d S f s D i r e c t o r y */
235/******************************************************************************/
236
237//------------------------------------------------------------------------------
240//------------------------------------------------------------------------------
241
243{
244public:
245
246//-----------------------------------------------------------------------------
249//-----------------------------------------------------------------------------
250
252
253//-----------------------------------------------------------------------------
261//-----------------------------------------------------------------------------
262
263virtual int open(const char *path,
264 const XrdSecEntity *client = 0,
265 const char *opaque = 0) = 0;
266
267//-----------------------------------------------------------------------------
275//-----------------------------------------------------------------------------
276
277virtual const char *nextEntry() = 0;
278
279//-----------------------------------------------------------------------------
283//-----------------------------------------------------------------------------
284
285virtual int close() = 0;
286
287//-----------------------------------------------------------------------------
291//-----------------------------------------------------------------------------
292
293virtual const char *FName() = 0;
294
295//-----------------------------------------------------------------------------
304//-----------------------------------------------------------------------------
305
306virtual int autoStat(struct stat *buf);
307
308//-----------------------------------------------------------------------------
317//-----------------------------------------------------------------------------
318
319 XrdSfsDirectory(const char *user=0, int MonID=0)
320 : error(*(new XrdOucErrInfo(user, MonID)))
321 {lclEI = &error;}
322
323//-----------------------------------------------------------------------------
329//-----------------------------------------------------------------------------
330
332 : error(wrapD.error), lclEI(0) {}
333
334//-----------------------------------------------------------------------------
339//-----------------------------------------------------------------------------
340
342 : error(eInfo), lclEI(0) {}
343
344//-----------------------------------------------------------------------------
346//-----------------------------------------------------------------------------
347
348virtual ~XrdSfsDirectory() {if (lclEI) delete lclEI;}
349
350private:
352
353}; // class XrdSfsDirectory
354
355/******************************************************************************/
356/* X r d S f s F i l e */
357/******************************************************************************/
358
359//------------------------------------------------------------------------------
362//------------------------------------------------------------------------------
363
364class XrdSfsAio;
365class XrdSfsDio;
366class XrdSfsXio;
367
369{
370public:
371
372//-----------------------------------------------------------------------------
375//-----------------------------------------------------------------------------
376
378
379//-----------------------------------------------------------------------------
401//-----------------------------------------------------------------------------
402
403virtual int open(const char *fileName,
404 XrdSfsFileOpenMode openMode,
405 mode_t createMode,
406 const XrdSecEntity *client = 0,
407 const char *opaque = 0) = 0;
408
409//-----------------------------------------------------------------------------
430//-----------------------------------------------------------------------------
431
439
440virtual int checkpoint(cpAct act, struct iov *range=0, int n=0);
441
442//-----------------------------------------------------------------------------
446//-----------------------------------------------------------------------------
447
448virtual int close() = 0;
449
450//-----------------------------------------------------------------------------
467//-----------------------------------------------------------------------------
468
469virtual int fctl(const int cmd,
470 const char *args,
471 XrdOucErrInfo &eInfo) = 0;
472
473//-----------------------------------------------------------------------------
486//-----------------------------------------------------------------------------
487
488virtual int fctl(const int cmd,
489 int alen,
490 const char *args,
491 const XrdSecEntity *client = 0);
492
493//-----------------------------------------------------------------------------
497//-----------------------------------------------------------------------------
498
499virtual const char *FName() = 0;
500
501//-----------------------------------------------------------------------------
508//-----------------------------------------------------------------------------
509
510virtual int getMmap(void **Addr, off_t &Size) = 0;
511
512//-----------------------------------------------------------------------------
514//-----------------------------------------------------------------------------
515
516static const uint64_t
517Verify = 0x8000000000000000ULL;
518
519//-----------------------------------------------------------------------------
538//-----------------------------------------------------------------------------
539
541 char *buffer,
542 XrdSfsXferSize rdlen,
543 uint32_t *csvec,
544 uint64_t opts=0);
545
546//-----------------------------------------------------------------------------
554//-----------------------------------------------------------------------------
555
556virtual int pgRead(XrdSfsAio *aioparm, uint64_t opts=0);
557
558//-----------------------------------------------------------------------------
578//-----------------------------------------------------------------------------
579
581 char *buffer,
582 XrdSfsXferSize wrlen,
583 uint32_t *csvec,
584 uint64_t opts=0);
585
586//-----------------------------------------------------------------------------
594//-----------------------------------------------------------------------------
595
596virtual int pgWrite(XrdSfsAio *aioparm, uint64_t opts=0);
597
598//-----------------------------------------------------------------------------
606//-----------------------------------------------------------------------------
607
609 XrdSfsXferSize size) = 0;
610
611//-----------------------------------------------------------------------------
620//-----------------------------------------------------------------------------
621
623 char *buffer,
624 XrdSfsXferSize size) = 0;
625
626//-----------------------------------------------------------------------------
633//-----------------------------------------------------------------------------
634
635virtual int read(XrdSfsAio *aioparm) = 0;
636
637//-----------------------------------------------------------------------------
647//-----------------------------------------------------------------------------
648
650 int rdvCnt);
651
652//-----------------------------------------------------------------------------
662//-----------------------------------------------------------------------------
663
664virtual int SendData(XrdSfsDio *sfDio,
665 XrdSfsFileOffset offset,
666 XrdSfsXferSize size);
667
668//-----------------------------------------------------------------------------
677//-----------------------------------------------------------------------------
678
680 const char *buffer,
681 XrdSfsXferSize size) = 0;
682
683//-----------------------------------------------------------------------------
690//-----------------------------------------------------------------------------
691
692virtual int write(XrdSfsAio *aioparm) = 0;
693
694//-----------------------------------------------------------------------------
704//-----------------------------------------------------------------------------
705
707 int wdvCnt);
708
709//-----------------------------------------------------------------------------
716//-----------------------------------------------------------------------------
717
718virtual int stat(struct stat *buf) = 0;
719
720//-----------------------------------------------------------------------------
724//-----------------------------------------------------------------------------
725
726virtual int sync() = 0;
727
728//-----------------------------------------------------------------------------
733//-----------------------------------------------------------------------------
734
735virtual int sync(XrdSfsAio *aiop) = 0;
736
737//-----------------------------------------------------------------------------
743//-----------------------------------------------------------------------------
744
745virtual int truncate(XrdSfsFileOffset fsize) = 0;
746
747//-----------------------------------------------------------------------------
755//-----------------------------------------------------------------------------
756
757virtual int getCXinfo(char cxtype[4], int &cxrsz) = 0;
758
759//-----------------------------------------------------------------------------
763//-----------------------------------------------------------------------------
764
765virtual void setXio(XrdSfsXio *xioP) { (void)xioP; }
766
767//-----------------------------------------------------------------------------
776//-----------------------------------------------------------------------------
777
778 XrdSfsFile(const char *user=0, int MonID=0)
779 : error(*(new XrdOucErrInfo(user, MonID)))
780 {lclEI = &error; pgwrEOF = 0;}
781
782//-----------------------------------------------------------------------------
788//-----------------------------------------------------------------------------
789
791 : error(wrapF.error), lclEI(0), pgwrEOF(0) {}
792
793//-----------------------------------------------------------------------------
798//-----------------------------------------------------------------------------
799
801 : error(eInfo), lclEI(0), pgwrEOF(0) {}
802
803//-----------------------------------------------------------------------------
805//-----------------------------------------------------------------------------
806
807virtual ~XrdSfsFile() {if (lclEI) delete lclEI;}
808
809private:
812}; // class XrdSfsFile
813
814/******************************************************************************/
815/* X r d S f s F i l e S y s t e m */
816/******************************************************************************/
817
818//-----------------------------------------------------------------------------
842//-----------------------------------------------------------------------------
843
845{
846public:
847
848//-----------------------------------------------------------------------------
858//-----------------------------------------------------------------------------
859
860virtual XrdSfsDirectory *newDir(char *user=0, int MonID=0) = 0;
861
862//-----------------------------------------------------------------------------
873//-----------------------------------------------------------------------------
874
875virtual XrdSfsDirectory *newDir(XrdOucErrInfo &eInfo) {(void)eInfo; return 0;}
876
877//-----------------------------------------------------------------------------
887//-----------------------------------------------------------------------------
888
889virtual XrdSfsFile *newFile(char *user=0, int MonID=0) = 0;
890
891//-----------------------------------------------------------------------------
902//-----------------------------------------------------------------------------
903
904virtual XrdSfsFile *newFile(XrdOucErrInfo &eInfo) {(void)eInfo; return 0;}
905
906//-----------------------------------------------------------------------------
925//-----------------------------------------------------------------------------
926
928
929virtual int chksum( csFunc Func,
930 const char *csName,
931 const char *path,
932 XrdOucErrInfo &eInfo,
933 const XrdSecEntity *client = 0,
934 const char *opaque = 0);
935
936//-----------------------------------------------------------------------------
946//-----------------------------------------------------------------------------
947
948virtual int chmod(const char *path,
949 XrdSfsMode mode,
950 XrdOucErrInfo &eInfo,
951 const XrdSecEntity *client = 0,
952 const char *opaque = 0) = 0;
953
954//-----------------------------------------------------------------------------
958//-----------------------------------------------------------------------------
959
960virtual void Connect(const XrdSecEntity *client = 0)
961{
962 (void)client;
963}
964
965//-----------------------------------------------------------------------------
969//-----------------------------------------------------------------------------
970
971virtual void Disc(const XrdSecEntity *client = 0) {(void)client;}
972
973//-----------------------------------------------------------------------------
978//-----------------------------------------------------------------------------
979
980virtual void EnvInfo(XrdOucEnv *envP) {(void)envP;}
981
982//-----------------------------------------------------------------------------
998//-----------------------------------------------------------------------------
999
1000virtual int exists(const char *path,
1001 XrdSfsFileExistence &eFlag,
1002 XrdOucErrInfo &eInfo,
1003 const XrdSecEntity *client = 0,
1004 const char *opaque = 0) = 0;
1005
1006//-----------------------------------------------------------------------------
1020//-----------------------------------------------------------------------------
1021
1022virtual int FAttr( XrdSfsFACtl *faReq,
1023 XrdOucErrInfo &eInfo,
1024 const XrdSecEntity *client = 0);
1025
1026//-----------------------------------------------------------------------------
1031//-----------------------------------------------------------------------------
1032
1033 uint64_t Features() {return FeatureSet;}
1034
1035//-----------------------------------------------------------------------------
1051//-----------------------------------------------------------------------------
1052
1053virtual int FSctl(const int cmd,
1054 XrdSfsFSctl &args,
1055 XrdOucErrInfo &eInfo,
1056 const XrdSecEntity *client = 0);
1057
1058//-----------------------------------------------------------------------------
1086//-----------------------------------------------------------------------------
1087
1088virtual int fsctl(const int cmd,
1089 const char *args,
1090 XrdOucErrInfo &eInfo,
1091 const XrdSecEntity *client = 0) = 0;
1092
1093//-----------------------------------------------------------------------------
1097//-----------------------------------------------------------------------------
1098
1099virtual int getChkPSize() {return 0;}
1100
1101//-----------------------------------------------------------------------------
1111//-----------------------------------------------------------------------------
1112
1113virtual int getStats(char *buff, int blen) = 0;
1114
1115//-----------------------------------------------------------------------------
1119//-----------------------------------------------------------------------------
1120
1121virtual const char *getVersion() = 0;
1122
1123//-----------------------------------------------------------------------------
1134//-----------------------------------------------------------------------------
1135
1138 gpfPut
1140
1141virtual int gpFile( gpfFunc &gpAct,
1142 XrdSfsGPFile &gpReq,
1143 XrdOucErrInfo &eInfo,
1144 const XrdSecEntity *client = 0);
1145
1146//-----------------------------------------------------------------------------
1156//-----------------------------------------------------------------------------
1157
1158virtual int mkdir(const char *path,
1159 XrdSfsMode mode,
1160 XrdOucErrInfo &eInfo,
1161 const XrdSecEntity *client = 0,
1162 const char *opaque = 0) = 0;
1163
1164//-----------------------------------------------------------------------------
1172//-----------------------------------------------------------------------------
1173
1174virtual int prepare( XrdSfsPrep &pargs,
1175 XrdOucErrInfo &eInfo,
1176 const XrdSecEntity *client = 0) = 0;
1177
1178//-----------------------------------------------------------------------------
1187//-----------------------------------------------------------------------------
1188
1189virtual int rem(const char *path,
1190 XrdOucErrInfo &eInfo,
1191 const XrdSecEntity *client = 0,
1192 const char *opaque = 0) = 0;
1193
1194//-----------------------------------------------------------------------------
1203//-----------------------------------------------------------------------------
1204
1205virtual int remdir(const char *path,
1206 XrdOucErrInfo &eInfo,
1207 const XrdSecEntity *client = 0,
1208 const char *opaque = 0) = 0;
1209
1210//-----------------------------------------------------------------------------
1221//-----------------------------------------------------------------------------
1222
1223virtual int rename(const char *oPath,
1224 const char *nPath,
1225 XrdOucErrInfo &eInfo,
1226 const XrdSecEntity *client = 0,
1227 const char *opaqueO = 0,
1228 const char *opaqueN = 0) = 0;
1229
1230//-----------------------------------------------------------------------------
1241//-----------------------------------------------------------------------------
1242
1243virtual int stat(const char *Name,
1244 struct stat *buf,
1245 XrdOucErrInfo &eInfo,
1246 const XrdSecEntity *client = 0,
1247 const char *opaque = 0) = 0;
1248
1249//-----------------------------------------------------------------------------
1261//-----------------------------------------------------------------------------
1262
1263virtual int stat(const char *path,
1264 mode_t &mode,
1265 XrdOucErrInfo &eInfo,
1266 const XrdSecEntity *client = 0,
1267 const char *opaque = 0) = 0;
1268
1269//-----------------------------------------------------------------------------
1279//-----------------------------------------------------------------------------
1280
1281virtual int truncate(const char *path,
1282 XrdSfsFileOffset fsize,
1283 XrdOucErrInfo &eInfo,
1284 const XrdSecEntity *client = 0,
1285 const char *opaque = 0) = 0;
1286
1287//-----------------------------------------------------------------------------
1289//-----------------------------------------------------------------------------
1290
1293
1294protected:
1295
1296uint64_t FeatureSet;
1297};
1298
1299/******************************************************************************/
1300/* F i l e S y s t e m I n s t a n t i a t o r */
1301/******************************************************************************/
1302
1303//-----------------------------------------------------------------------------
1326typedef XrdSfsFileSystem *(*XrdSfsFileSystem2_t)(XrdSfsFileSystem *nativeFS,
1327 XrdSysLogger *Logger,
1328 const char *configFn,
1329 XrdOucEnv *envP);
1330
1331//-----------------------------------------------------------------------------
1343typedef XrdSfsFileSystem *(*XrdSfsFileSystem_t) (XrdSfsFileSystem *nativeFS,
1344 XrdSysLogger *Logger,
1345 const char *configFn);
1346
1347//------------------------------------------------------------------------------
1359//------------------------------------------------------------------------------
1360#endif
#define stat(a, b)
Definition XrdPosix.hh:96
int XrdSfsMode
Definition XrdSfsInterface.hh:129
XrdSfsFileExistence
Definition XrdSfsInterface.hh:133
@ XrdSfsFileExistIsOther
Definition XrdSfsInterface.hh:138
@ XrdSfsFileExistIsFile
Definition XrdSfsInterface.hh:135
@ XrdSfsFileExistNo
Definition XrdSfsInterface.hh:134
@ XrdSfsFileExistIsOffline
Definition XrdSfsInterface.hh:137
@ XrdSfsFileExistIsDirectory
Definition XrdSfsInterface.hh:136
int XrdSfsFileOpenMode
Definition XrdSfsInterface.hh:128
long long XrdSfsFileOffset
Definition XrdSfsInterface.hh:127
int XrdSfsXferSize
Definition XrdSfsInterface.hh:130
Definition XrdOucEnv.hh:42
Definition XrdOucErrInfo.hh:101
Definition XrdOucTList.hh:42
Definition XrdSecEntity.hh:65
Definition XrdSfsAio.hh:59
Definition XrdSfsDio.hh:47
Definition XrdSfsInterface.hh:243
virtual int autoStat(struct stat *buf)
XrdSfsDirectory(XrdOucErrInfo &eInfo)
Definition XrdSfsInterface.hh:341
XrdSfsDirectory(const char *user=0, int MonID=0)
Definition XrdSfsInterface.hh:319
XrdSfsDirectory(XrdSfsDirectory &wrapD)
Definition XrdSfsInterface.hh:331
XrdOucErrInfo * lclEI
Definition XrdSfsInterface.hh:351
virtual ~XrdSfsDirectory()
Destructor.
Definition XrdSfsInterface.hh:348
virtual int open(const char *path, const XrdSecEntity *client=0, const char *opaque=0)=0
virtual const char * FName()=0
XrdOucErrInfo & error
Definition XrdSfsInterface.hh:251
virtual const char * nextEntry()=0
virtual int close()=0
Definition XrdSfsInterface.hh:845
virtual void Connect(const XrdSecEntity *client=0)
Definition XrdSfsInterface.hh:960
XrdSfsFileSystem()
Constructor and Destructor.
virtual int chmod(const char *path, XrdSfsMode mode, XrdOucErrInfo &eInfo, const XrdSecEntity *client=0, const char *opaque=0)=0
virtual void EnvInfo(XrdOucEnv *envP)
Definition XrdSfsInterface.hh:980
virtual int stat(const char *path, mode_t &mode, XrdOucErrInfo &eInfo, const XrdSecEntity *client=0, const char *opaque=0)=0
virtual void Disc(const XrdSecEntity *client=0)
Definition XrdSfsInterface.hh:971
virtual int getStats(char *buff, int blen)=0
virtual int FAttr(XrdSfsFACtl *faReq, XrdOucErrInfo &eInfo, const XrdSecEntity *client=0)
virtual int fsctl(const int cmd, const char *args, XrdOucErrInfo &eInfo, const XrdSecEntity *client=0)=0
virtual int rename(const char *oPath, const char *nPath, XrdOucErrInfo &eInfo, const XrdSecEntity *client=0, const char *opaqueO=0, const char *opaqueN=0)=0
virtual int mkdir(const char *path, XrdSfsMode mode, XrdOucErrInfo &eInfo, const XrdSecEntity *client=0, const char *opaque=0)=0
virtual const char * getVersion()=0
virtual ~XrdSfsFileSystem()
Definition XrdSfsInterface.hh:1292
virtual XrdSfsFile * newFile(char *user=0, int MonID=0)=0
virtual int truncate(const char *path, XrdSfsFileOffset fsize, XrdOucErrInfo &eInfo, const XrdSecEntity *client=0, const char *opaque=0)=0
virtual int remdir(const char *path, XrdOucErrInfo &eInfo, const XrdSecEntity *client=0, const char *opaque=0)=0
virtual int getChkPSize()
Definition XrdSfsInterface.hh:1099
virtual int FSctl(const int cmd, XrdSfsFSctl &args, XrdOucErrInfo &eInfo, const XrdSecEntity *client=0)
csFunc
Definition XrdSfsInterface.hh:927
@ csGet
Definition XrdSfsInterface.hh:927
@ csCalc
Definition XrdSfsInterface.hh:927
@ csSize
Definition XrdSfsInterface.hh:927
uint64_t FeatureSet
Adjust features at initialization.
Definition XrdSfsInterface.hh:1296
uint64_t Features()
Definition XrdSfsInterface.hh:1033
virtual int exists(const char *path, XrdSfsFileExistence &eFlag, XrdOucErrInfo &eInfo, const XrdSecEntity *client=0, const char *opaque=0)=0
virtual int prepare(XrdSfsPrep &pargs, XrdOucErrInfo &eInfo, const XrdSecEntity *client=0)=0
virtual XrdSfsDirectory * newDir(XrdOucErrInfo &eInfo)
Definition XrdSfsInterface.hh:875
virtual int stat(const char *Name, struct stat *buf, XrdOucErrInfo &eInfo, const XrdSecEntity *client=0, const char *opaque=0)=0
virtual int gpFile(gpfFunc &gpAct, XrdSfsGPFile &gpReq, XrdOucErrInfo &eInfo, const XrdSecEntity *client=0)
virtual int rem(const char *path, XrdOucErrInfo &eInfo, const XrdSecEntity *client=0, const char *opaque=0)=0
virtual XrdSfsDirectory * newDir(char *user=0, int MonID=0)=0
gpfFunc
Definition XrdSfsInterface.hh:1136
@ gpfGet
Perform a file retrieval.
Definition XrdSfsInterface.hh:1137
@ gpfCancel
Cancel this request.
Definition XrdSfsInterface.hh:1136
@ gpfPut
Perform a file push.
Definition XrdSfsInterface.hh:1138
virtual XrdSfsFile * newFile(XrdOucErrInfo &eInfo)
Definition XrdSfsInterface.hh:904
virtual int chksum(csFunc Func, const char *csName, const char *path, XrdOucErrInfo &eInfo, const XrdSecEntity *client=0, const char *opaque=0)
Definition XrdSfsInterface.hh:369
static const uint64_t Verify
Options for pgRead() and pgWrite() as noted below.
Definition XrdSfsInterface.hh:517
virtual int sync()=0
virtual int fctl(const int cmd, int alen, const char *args, const XrdSecEntity *client=0)
XrdOucErrInfo & error
Definition XrdSfsInterface.hh:377
XrdSfsFileOffset pgwrEOF
Definition XrdSfsInterface.hh:811
virtual int getMmap(void **Addr, off_t &Size)=0
virtual int open(const char *fileName, XrdSfsFileOpenMode openMode, mode_t createMode, const XrdSecEntity *client=0, const char *opaque=0)=0
virtual int sync(XrdSfsAio *aiop)=0
virtual XrdSfsXferSize pgWrite(XrdSfsFileOffset offset, char *buffer, XrdSfsXferSize wrlen, uint32_t *csvec, uint64_t opts=0)
virtual int SendData(XrdSfsDio *sfDio, XrdSfsFileOffset offset, XrdSfsXferSize size)
virtual XrdSfsXferSize writev(XrdOucIOVec *writeV, int wdvCnt)
virtual int write(XrdSfsAio *aioparm)=0
virtual XrdSfsXferSize read(XrdSfsFileOffset offset, XrdSfsXferSize size)=0
virtual int checkpoint(cpAct act, struct iov *range=0, int n=0)
virtual int truncate(XrdSfsFileOffset fsize)=0
virtual ~XrdSfsFile()
Destructor.
Definition XrdSfsInterface.hh:807
virtual XrdSfsXferSize read(XrdSfsFileOffset offset, char *buffer, XrdSfsXferSize size)=0
cpAct
Definition XrdSfsInterface.hh:432
@ cpTrunc
Truncate a file within checkpoint.
Definition XrdSfsInterface.hh:436
@ cpDelete
Delete an existing checkpoint.
Definition XrdSfsInterface.hh:433
@ cpRestore
Restore an active checkpoint and delete it.
Definition XrdSfsInterface.hh:434
@ cpWrite
Add data to an existing checkpoint.
Definition XrdSfsInterface.hh:437
@ cpQuery
Return checkpoint limits.
Definition XrdSfsInterface.hh:435
@ cpCreate
Create a checkpoint, one must not be active.
Definition XrdSfsInterface.hh:432
virtual const char * FName()=0
virtual int getCXinfo(char cxtype[4], int &cxrsz)=0
XrdSfsFile(XrdSfsFile &wrapF)
Definition XrdSfsInterface.hh:790
XrdSfsFile(const char *user=0, int MonID=0)
Definition XrdSfsInterface.hh:778
XrdOucErrInfo * lclEI
Definition XrdSfsInterface.hh:810
virtual XrdSfsXferSize pgRead(XrdSfsFileOffset offset, char *buffer, XrdSfsXferSize rdlen, uint32_t *csvec, uint64_t opts=0)
XrdSfsFile(XrdOucErrInfo &eInfo)
Definition XrdSfsInterface.hh:800
virtual XrdSfsXferSize readv(XrdOucIOVec *readV, int rdvCnt)
virtual int pgRead(XrdSfsAio *aioparm, uint64_t opts=0)
virtual int stat(struct stat *buf)=0
virtual void setXio(XrdSfsXio *xioP)
Definition XrdSfsInterface.hh:765
virtual int fctl(const int cmd, const char *args, XrdOucErrInfo &eInfo)=0
virtual XrdSfsXferSize write(XrdSfsFileOffset offset, const char *buffer, XrdSfsXferSize size)=0
virtual int pgWrite(XrdSfsAio *aioparm, uint64_t opts=0)
virtual int close()=0
virtual int read(XrdSfsAio *aioparm)=0
Definition XrdSfsGPFile.hh:37
Definition XrdSfsXio.hh:55
Definition XrdSysLogger.hh:53
Definition XrdOucIOVec.hh:41
Definition XrdSfsFAttr.hh:73
< SFS_FSCTL_PLUGIN/PLUGIO/PLUGXC parms
Definition XrdSfsInterface.hh:161
const char * Arg1
PLUGINO, PLUGION, PLUGXC.
Definition XrdSfsInterface.hh:162
int Arg2Len
Length or -count of args in extension.
Definition XrdSfsInterface.hh:164
const char * Arg2
PLUGIN opaque string.
Definition XrdSfsInterface.hh:166
const char ** ArgP
PLUGXC argument list extension.
Definition XrdSfsInterface.hh:167
int Arg1Len
Length.
Definition XrdSfsInterface.hh:163
< Prepare parameters
Definition XrdSfsInterface.hh:172
char * notify
Notification path or 0.
Definition XrdSfsInterface.hh:174
XrdOucTList * paths
List of paths.
Definition XrdSfsInterface.hh:176
XrdOucTList * oinfo
1-to-1 correspondence of opaque info
Definition XrdSfsInterface.hh:177
char * reqid
Request ID.
Definition XrdSfsInterface.hh:173
int opts
Prep_xxx.
Definition XrdSfsInterface.hh:175
Definition XrdOucIOVec.hh:65