xrootd
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
103// Return values for integer & XrdSfsXferSize returning XrdSfs methods
104//
105#define SFS_STALL 1 // Return value -> Seconds to stall client
106#define SFS_OK 0 // ErrInfo code -> All is well
107#define SFS_ERROR -1 // ErrInfo code -> Error occurred
108#define SFS_REDIRECT -256 // ErrInfo code -> Port number to redirect to
109#define SFS_STARTED -512 // ErrInfo code -> Estimated seconds to completion
110#define SFS_DATA -1024 // ErrInfo code -> Length of data
111#define SFS_DATAVEC -2048 // ErrInfo code -> Num iovec elements in msgbuff
112
113// The following macros are used for dealing with special local paths
114//
115#define SFS_LCLPRFX "/=/"
116#define SFS_LCLPLEN 3
117#define SFS_LCLPATH(x) !strncmp(x, SFS_LCLPRFX, SFS_LCLPLEN)
118#define SFS_LCLPRFY "/="
119#define SFS_LCLROOT(x) !strncmp(x, SFS_LCLPRFX, SFS_LCLPLEN-1) \
120 && (*(x+SFS_LCLPLEN-1) == '/' || *(x+SFS_LCLPLEN-1) == 0)
121
122/******************************************************************************/
123/* S t r u c t u r e s & T y p e d e f s */
124/******************************************************************************/
125
126typedef long long XrdSfsFileOffset;
128typedef int XrdSfsMode;
129typedef int XrdSfsXferSize;
130
132{
139//------------------------------------------------
140
141#define Prep_PRTY0 0
142#define Prep_PRTY1 1
143#define Prep_PRTY2 2
144#define Prep_PRTY3 3
145#define Prep_PMASK 3
146#define Prep_SENDAOK 4
147#define Prep_SENDERR 8
148#define Prep_SENDACK 12
149#define Prep_WMODE 16
150#define Prep_STAGE 32
151#define Prep_COLOC 64
152#define Prep_FRESH 128
153#define Prep_CANCEL 256
154#define Prep_QUERY 512
155#define Prep_EVICT 1024
156
157class XrdOucTList;
158
160{
161 const char *Arg1;
164 const char *Arg2;
165};
166
168{
169 char *reqid;
170 char *notify;
171 int opts;
174};
175
176/******************************************************************************/
177/* F o r w a r d D e c l a r a t i o n s */
178/******************************************************************************/
179
180class XrdOucEnv;
181class XrdSecEntity;
182struct XrdSfsFACtl;
183
184/******************************************************************************/
185/* O b j e c t W r a p p i n g G u i d e */
186/******************************************************************************/
187
188/* The XrdSfsDirectory and XrdSfsFile objects can be wrapped. Wraping can be
189 used to add functionality. The process is common and pretty muche rote.
190 There is only one caveat: all wrappers must use the same XrdOucErrInfo
191 object. This is because the ErrInfo object contains client parameters that
192 are used to control how things are done to be backward compatible. Newer
193 client can then use more efficient internal processing. The SFS provides
194 two ways to make sure the same ErrInfo object is used by all objects in
195 the wrapped chain. Forward propagation (the one typically used) and
196 backward propagation (used in certain unusual cases). In forward mode,
197 the ErrInfo object of the last object in the chain is propagated to the
198 front of the chain. In backward mode the reverse happens. Let's assume
199 the following scenarion. Object-A wraps object-B (the object here can be
200 directory or file object). In forward mode weneed to create objects in
201 reverse order (bottom to top) which is typically what you would do anyway
202 as you need to capture the pinter to the object your wrapping. So, using
203 newFile() as an example where sfsP points to the Interface being wrapped:
204
205 XrdSfsFile *newFile(const char *user, int MonID)
206 {
207 XrdSfsFile *wrapped_file = sfsP->newFile(user, MonID);
208 if (!wrapped_file) return 0;
209 return new mySfsFile(wrapped_file,...);
210 }
211 class mySfsFile : public XrdSfsFile
212 {public:
213 mySfsFile(XrdSfsFile *wrapped_file,...) : XrdSfsFile(*wrapped_file)
214 {....}
215 ....
216 };
217
218 Notice we are allocating the wrapped file ahead of the wrapper so that
219 the wrapper can use the ErrInfo object of the wrapped file.
220
221 In backward mode we want to use the ErrInfo object of the front-most
222 wrapper for all wrappers after it. This mechanism is far more complicated
223 due to error handling requirements. However, it's useful when a wrapped
224 object is not necessarily instantiated to accomplish the needs of the
225 wrapper. An example of this is the newFile and newDir implementations for
226 XrdSsi where wrapped object creation is subject to the resource name.
227*/
228
229/******************************************************************************/
230/* X r d S f s D i r e c t o r y */
231/******************************************************************************/
232
233//------------------------------------------------------------------------------
236//------------------------------------------------------------------------------
237
239{
240public:
241
242//-----------------------------------------------------------------------------
245//-----------------------------------------------------------------------------
246
248
249//-----------------------------------------------------------------------------
257//-----------------------------------------------------------------------------
258
259virtual int open(const char *path,
260 const XrdSecEntity *client = 0,
261 const char *opaque = 0) = 0;
262
263//-----------------------------------------------------------------------------
271//-----------------------------------------------------------------------------
272
273virtual const char *nextEntry() = 0;
274
275//-----------------------------------------------------------------------------
279//-----------------------------------------------------------------------------
280
281virtual int close() = 0;
282
283//-----------------------------------------------------------------------------
287//-----------------------------------------------------------------------------
288
289virtual const char *FName() = 0;
290
291//-----------------------------------------------------------------------------
300//-----------------------------------------------------------------------------
301
302virtual int autoStat(struct stat *buf);
303
304//-----------------------------------------------------------------------------
313//-----------------------------------------------------------------------------
314
315 XrdSfsDirectory(const char *user=0, int MonID=0)
316 : error(*(new XrdOucErrInfo(user, MonID)))
317 {lclEI = &error;}
318
319//-----------------------------------------------------------------------------
325//-----------------------------------------------------------------------------
326
328 : error(wrapD.error), lclEI(0) {}
329
330//-----------------------------------------------------------------------------
335//-----------------------------------------------------------------------------
336
338 : error(eInfo), lclEI(0) {}
339
340//-----------------------------------------------------------------------------
342//-----------------------------------------------------------------------------
343
344virtual ~XrdSfsDirectory() {if (lclEI) delete lclEI;}
345
346private:
348
349}; // class XrdSfsDirectory
350
351/******************************************************************************/
352/* X r d S f s F i l e */
353/******************************************************************************/
354
355//------------------------------------------------------------------------------
358//------------------------------------------------------------------------------
359
360class XrdSfsAio;
361class XrdSfsDio;
362class XrdSfsXio;
363
365{
366public:
367
368//-----------------------------------------------------------------------------
371//-----------------------------------------------------------------------------
372
374
375//-----------------------------------------------------------------------------
397//-----------------------------------------------------------------------------
398
399virtual int open(const char *fileName,
400 XrdSfsFileOpenMode openMode,
401 mode_t createMode,
402 const XrdSecEntity *client = 0,
403 const char *opaque = 0) = 0;
404
405//-----------------------------------------------------------------------------
426//-----------------------------------------------------------------------------
427
433 cpWrite
434 };
435
436virtual int checkpoint(cpAct act, struct iov *range=0, int n=0);
437
438//-----------------------------------------------------------------------------
442//-----------------------------------------------------------------------------
443
444virtual int close() = 0;
445
446//-----------------------------------------------------------------------------
463//-----------------------------------------------------------------------------
464
465virtual int fctl(const int cmd,
466 const char *args,
467 XrdOucErrInfo &eInfo) = 0;
468
469//-----------------------------------------------------------------------------
482//-----------------------------------------------------------------------------
483
484virtual int fctl(const int cmd,
485 int alen,
486 const char *args,
487 const XrdSecEntity *client = 0);
488
489//-----------------------------------------------------------------------------
493//-----------------------------------------------------------------------------
494
495virtual const char *FName() = 0;
496
497//-----------------------------------------------------------------------------
504//-----------------------------------------------------------------------------
505
506virtual int getMmap(void **Addr, off_t &Size) = 0;
507
508//-----------------------------------------------------------------------------
510//-----------------------------------------------------------------------------
511
512static const uint64_t
513Verify = 0x8000000000000000ULL;
514
515//-----------------------------------------------------------------------------
534//-----------------------------------------------------------------------------
535
537 char *buffer,
538 XrdSfsXferSize rdlen,
539 uint32_t *csvec,
540 uint64_t opts=0);
541
542//-----------------------------------------------------------------------------
550//-----------------------------------------------------------------------------
551
552virtual int pgRead(XrdSfsAio *aioparm, uint64_t opts=0);
553
554//-----------------------------------------------------------------------------
574//-----------------------------------------------------------------------------
575
577 char *buffer,
578 XrdSfsXferSize wrlen,
579 uint32_t *csvec,
580 uint64_t opts=0);
581
582//-----------------------------------------------------------------------------
590//-----------------------------------------------------------------------------
591
592virtual int pgWrite(XrdSfsAio *aioparm, uint64_t opts=0);
593
594//-----------------------------------------------------------------------------
602//-----------------------------------------------------------------------------
603
605 XrdSfsXferSize size) = 0;
606
607//-----------------------------------------------------------------------------
616//-----------------------------------------------------------------------------
617
619 char *buffer,
620 XrdSfsXferSize size) = 0;
621
622//-----------------------------------------------------------------------------
629//-----------------------------------------------------------------------------
630
631virtual int read(XrdSfsAio *aioparm) = 0;
632
633//-----------------------------------------------------------------------------
643//-----------------------------------------------------------------------------
644
646 int rdvCnt);
647
648//-----------------------------------------------------------------------------
658//-----------------------------------------------------------------------------
659
660virtual int SendData(XrdSfsDio *sfDio,
661 XrdSfsFileOffset offset,
662 XrdSfsXferSize size);
663
664//-----------------------------------------------------------------------------
673//-----------------------------------------------------------------------------
674
676 const char *buffer,
677 XrdSfsXferSize size) = 0;
678
679//-----------------------------------------------------------------------------
686//-----------------------------------------------------------------------------
687
688virtual int write(XrdSfsAio *aioparm) = 0;
689
690//-----------------------------------------------------------------------------
700//-----------------------------------------------------------------------------
701
703 int wdvCnt);
704
705//-----------------------------------------------------------------------------
712//-----------------------------------------------------------------------------
713
714virtual int stat(struct stat *buf) = 0;
715
716//-----------------------------------------------------------------------------
720//-----------------------------------------------------------------------------
721
722virtual int sync() = 0;
723
724//-----------------------------------------------------------------------------
729//-----------------------------------------------------------------------------
730
731virtual int sync(XrdSfsAio *aiop) = 0;
732
733//-----------------------------------------------------------------------------
739//-----------------------------------------------------------------------------
740
741virtual int truncate(XrdSfsFileOffset fsize) = 0;
742
743//-----------------------------------------------------------------------------
751//-----------------------------------------------------------------------------
752
753virtual int getCXinfo(char cxtype[4], int &cxrsz) = 0;
754
755//-----------------------------------------------------------------------------
759//-----------------------------------------------------------------------------
760
761virtual void setXio(XrdSfsXio *xioP) { (void)xioP; }
762
763//-----------------------------------------------------------------------------
772//-----------------------------------------------------------------------------
773
774 XrdSfsFile(const char *user=0, int MonID=0)
775 : error(*(new XrdOucErrInfo(user, MonID)))
776 {lclEI = &error; pgwrEOF = 0;}
777
778//-----------------------------------------------------------------------------
784//-----------------------------------------------------------------------------
785
787 : error(wrapF.error), lclEI(0), pgwrEOF(0) {}
788
789//-----------------------------------------------------------------------------
794//-----------------------------------------------------------------------------
795
797 : error(eInfo), lclEI(0), pgwrEOF(0) {}
798
799//-----------------------------------------------------------------------------
801//-----------------------------------------------------------------------------
802
803virtual ~XrdSfsFile() {if (lclEI) delete lclEI;}
804
805private:
808}; // class XrdSfsFile
809
810/******************************************************************************/
811/* X r d S f s F i l e S y s t e m */
812/******************************************************************************/
813
814//-----------------------------------------------------------------------------
838//-----------------------------------------------------------------------------
839
841{
842public:
843
844//-----------------------------------------------------------------------------
854//-----------------------------------------------------------------------------
855
856virtual XrdSfsDirectory *newDir(char *user=0, int MonID=0) = 0;
857
858//-----------------------------------------------------------------------------
869//-----------------------------------------------------------------------------
870
871virtual XrdSfsDirectory *newDir(XrdOucErrInfo &eInfo) {(void)eInfo; return 0;}
872
873//-----------------------------------------------------------------------------
883//-----------------------------------------------------------------------------
884
885virtual XrdSfsFile *newFile(char *user=0, int MonID=0) = 0;
886
887//-----------------------------------------------------------------------------
898//-----------------------------------------------------------------------------
899
900virtual XrdSfsFile *newFile(XrdOucErrInfo &eInfo) {(void)eInfo; return 0;}
901
902//-----------------------------------------------------------------------------
921//-----------------------------------------------------------------------------
922
924
925virtual int chksum( csFunc Func,
926 const char *csName,
927 const char *path,
928 XrdOucErrInfo &eInfo,
929 const XrdSecEntity *client = 0,
930 const char *opaque = 0);
931
932//-----------------------------------------------------------------------------
942//-----------------------------------------------------------------------------
943
944virtual int chmod(const char *path,
945 XrdSfsMode mode,
946 XrdOucErrInfo &eInfo,
947 const XrdSecEntity *client = 0,
948 const char *opaque = 0) = 0;
949
950//-----------------------------------------------------------------------------
954//-----------------------------------------------------------------------------
955
956virtual void Connect(const XrdSecEntity *client = 0)
957{
958 (void)client;
959}
960
961//-----------------------------------------------------------------------------
965//-----------------------------------------------------------------------------
966
967virtual void Disc(const XrdSecEntity *client = 0) {(void)client;}
968
969//-----------------------------------------------------------------------------
974//-----------------------------------------------------------------------------
975
976virtual void EnvInfo(XrdOucEnv *envP) {(void)envP;}
977
978//-----------------------------------------------------------------------------
994//-----------------------------------------------------------------------------
995
996virtual int exists(const char *path,
997 XrdSfsFileExistence &eFlag,
998 XrdOucErrInfo &eInfo,
999 const XrdSecEntity *client = 0,
1000 const char *opaque = 0) = 0;
1001
1002//-----------------------------------------------------------------------------
1016//-----------------------------------------------------------------------------
1017
1018virtual int FAttr( XrdSfsFACtl *faReq,
1019 XrdOucErrInfo &eInfo,
1020 const XrdSecEntity *client = 0);
1021
1022//-----------------------------------------------------------------------------
1027//-----------------------------------------------------------------------------
1028
1029 uint64_t Features() {return FeatureSet;}
1030
1031//-----------------------------------------------------------------------------
1047//-----------------------------------------------------------------------------
1048
1049virtual int FSctl(const int cmd,
1050 XrdSfsFSctl &args,
1051 XrdOucErrInfo &eInfo,
1052 const XrdSecEntity *client = 0);
1053
1054//-----------------------------------------------------------------------------
1082//-----------------------------------------------------------------------------
1083
1084virtual int fsctl(const int cmd,
1085 const char *args,
1086 XrdOucErrInfo &eInfo,
1087 const XrdSecEntity *client = 0) = 0;
1088
1089//-----------------------------------------------------------------------------
1093//-----------------------------------------------------------------------------
1094
1095virtual int getChkPSize() {return 0;}
1096
1097//-----------------------------------------------------------------------------
1107//-----------------------------------------------------------------------------
1108
1109virtual int getStats(char *buff, int blen) = 0;
1110
1111//-----------------------------------------------------------------------------
1115//-----------------------------------------------------------------------------
1116
1117virtual const char *getVersion() = 0;
1118
1119//-----------------------------------------------------------------------------
1130//-----------------------------------------------------------------------------
1131
1134 gpfPut
1136
1137virtual int gpFile( gpfFunc &gpAct,
1138 XrdSfsGPFile &gpReq,
1139 XrdOucErrInfo &eInfo,
1140 const XrdSecEntity *client = 0);
1141
1142//-----------------------------------------------------------------------------
1152//-----------------------------------------------------------------------------
1153
1154virtual int mkdir(const char *path,
1155 XrdSfsMode mode,
1156 XrdOucErrInfo &eInfo,
1157 const XrdSecEntity *client = 0,
1158 const char *opaque = 0) = 0;
1159
1160//-----------------------------------------------------------------------------
1168//-----------------------------------------------------------------------------
1169
1170virtual int prepare( XrdSfsPrep &pargs,
1171 XrdOucErrInfo &eInfo,
1172 const XrdSecEntity *client = 0) = 0;
1173
1174//-----------------------------------------------------------------------------
1183//-----------------------------------------------------------------------------
1184
1185virtual int rem(const char *path,
1186 XrdOucErrInfo &eInfo,
1187 const XrdSecEntity *client = 0,
1188 const char *opaque = 0) = 0;
1189
1190//-----------------------------------------------------------------------------
1199//-----------------------------------------------------------------------------
1200
1201virtual int remdir(const char *path,
1202 XrdOucErrInfo &eInfo,
1203 const XrdSecEntity *client = 0,
1204 const char *opaque = 0) = 0;
1205
1206//-----------------------------------------------------------------------------
1217//-----------------------------------------------------------------------------
1218
1219virtual int rename(const char *oPath,
1220 const char *nPath,
1221 XrdOucErrInfo &eInfo,
1222 const XrdSecEntity *client = 0,
1223 const char *opaqueO = 0,
1224 const char *opaqueN = 0) = 0;
1225
1226//-----------------------------------------------------------------------------
1237//-----------------------------------------------------------------------------
1238
1239virtual int stat(const char *Name,
1240 struct stat *buf,
1241 XrdOucErrInfo &eInfo,
1242 const XrdSecEntity *client = 0,
1243 const char *opaque = 0) = 0;
1244
1245//-----------------------------------------------------------------------------
1257//-----------------------------------------------------------------------------
1258
1259virtual int stat(const char *path,
1260 mode_t &mode,
1261 XrdOucErrInfo &eInfo,
1262 const XrdSecEntity *client = 0,
1263 const char *opaque = 0) = 0;
1264
1265//-----------------------------------------------------------------------------
1275//-----------------------------------------------------------------------------
1276
1277virtual int truncate(const char *path,
1278 XrdSfsFileOffset fsize,
1279 XrdOucErrInfo &eInfo,
1280 const XrdSecEntity *client = 0,
1281 const char *opaque = 0) = 0;
1282
1283//-----------------------------------------------------------------------------
1285//-----------------------------------------------------------------------------
1286
1289
1290protected:
1291
1292uint64_t FeatureSet;
1293};
1294
1295/******************************************************************************/
1296/* F i l e S y s t e m I n s t a n t i a t o r */
1297/******************************************************************************/
1298
1299//-----------------------------------------------------------------------------
1322typedef XrdSfsFileSystem *(*XrdSfsFileSystem2_t)(XrdSfsFileSystem *nativeFS,
1323 XrdSysLogger *Logger,
1324 const char *configFn,
1325 XrdOucEnv *envP);
1326
1327//-----------------------------------------------------------------------------
1339typedef XrdSfsFileSystem *(*XrdSfsFileSystem_t) (XrdSfsFileSystem *nativeFS,
1340 XrdSysLogger *Logger,
1341 const char *configFn);
1342
1343//------------------------------------------------------------------------------
1355//------------------------------------------------------------------------------
1356#endif
#define stat(a, b)
Definition: XrdPosix.hh:96
int XrdSfsMode
Definition: XrdSfsInterface.hh:128
XrdSfsFileExistence
Definition: XrdSfsInterface.hh:132
@ XrdSfsFileExistIsOther
Definition: XrdSfsInterface.hh:137
@ XrdSfsFileExistIsFile
Definition: XrdSfsInterface.hh:134
@ XrdSfsFileExistNo
Definition: XrdSfsInterface.hh:133
@ XrdSfsFileExistIsOffline
Definition: XrdSfsInterface.hh:136
@ XrdSfsFileExistIsDirectory
Definition: XrdSfsInterface.hh:135
int XrdSfsFileOpenMode
Definition: XrdSfsInterface.hh:127
long long XrdSfsFileOffset
Definition: XrdSfsInterface.hh:126
int XrdSfsXferSize
Definition: XrdSfsInterface.hh:129
Definition: XrdOucEnv.hh:42
Definition: XrdOucErrInfo.hh:101
Definition: XrdOucTList.hh:42
Definition: XrdSecEntity.hh:64
Definition: XrdSfsAio.hh:59
Definition: XrdSfsDio.hh:47
Definition: XrdSfsInterface.hh:239
virtual int autoStat(struct stat *buf)
XrdSfsDirectory(XrdOucErrInfo &eInfo)
Definition: XrdSfsInterface.hh:337
XrdSfsDirectory(const char *user=0, int MonID=0)
Definition: XrdSfsInterface.hh:315
XrdSfsDirectory(XrdSfsDirectory &wrapD)
Definition: XrdSfsInterface.hh:327
XrdOucErrInfo * lclEI
Definition: XrdSfsInterface.hh:347
virtual ~XrdSfsDirectory()
Destructor.
Definition: XrdSfsInterface.hh:344
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:247
virtual const char * nextEntry()=0
virtual int close()=0
Definition: XrdSfsInterface.hh:841
virtual void Connect(const XrdSecEntity *client=0)
Definition: XrdSfsInterface.hh:956
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:976
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:967
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:1288
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:1095
virtual int FSctl(const int cmd, XrdSfsFSctl &args, XrdOucErrInfo &eInfo, const XrdSecEntity *client=0)
csFunc
Definition: XrdSfsInterface.hh:923
@ csGet
Definition: XrdSfsInterface.hh:923
@ csCalc
Definition: XrdSfsInterface.hh:923
@ csSize
Definition: XrdSfsInterface.hh:923
uint64_t FeatureSet
Adjust features at initialization.
Definition: XrdSfsInterface.hh:1292
uint64_t Features()
Definition: XrdSfsInterface.hh:1029
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:871
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:1132
@ gpfGet
Perform a file retrieval.
Definition: XrdSfsInterface.hh:1133
@ gpfCancel
Cancel this request.
Definition: XrdSfsInterface.hh:1132
@ gpfPut
Perform a file push.
Definition: XrdSfsInterface.hh:1134
virtual XrdSfsFile * newFile(XrdOucErrInfo &eInfo)
Definition: XrdSfsInterface.hh:900
virtual int chksum(csFunc Func, const char *csName, const char *path, XrdOucErrInfo &eInfo, const XrdSecEntity *client=0, const char *opaque=0)
Definition: XrdSfsInterface.hh:365
static const uint64_t Verify
Options for pgRead() and pgWrite() as noted below.
Definition: XrdSfsInterface.hh:513
virtual int sync()=0
virtual int fctl(const int cmd, int alen, const char *args, const XrdSecEntity *client=0)
XrdOucErrInfo & error
Definition: XrdSfsInterface.hh:373
XrdSfsFileOffset pgwrEOF
Definition: XrdSfsInterface.hh:807
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:803
virtual XrdSfsXferSize read(XrdSfsFileOffset offset, char *buffer, XrdSfsXferSize size)=0
cpAct
Definition: XrdSfsInterface.hh:428
@ cpTrunc
Truncate a file within checkpoint.
Definition: XrdSfsInterface.hh:432
@ cpDelete
Delete an existing checkpoint.
Definition: XrdSfsInterface.hh:429
@ cpRestore
Restore an active checkpoint and delete it.
Definition: XrdSfsInterface.hh:430
@ cpWrite
Add data to an existing checkpoint.
Definition: XrdSfsInterface.hh:433
@ cpQuery
Return checkpoint limits.
Definition: XrdSfsInterface.hh:431
@ cpCreate
Create a checkpoint, one must not be active.
Definition: XrdSfsInterface.hh:428
virtual const char * FName()=0
virtual int getCXinfo(char cxtype[4], int &cxrsz)=0
XrdSfsFile(XrdSfsFile &wrapF)
Definition: XrdSfsInterface.hh:786
XrdSfsFile(const char *user=0, int MonID=0)
Definition: XrdSfsInterface.hh:774
XrdOucErrInfo * lclEI
Definition: XrdSfsInterface.hh:806
virtual XrdSfsXferSize pgRead(XrdSfsFileOffset offset, char *buffer, XrdSfsXferSize rdlen, uint32_t *csvec, uint64_t opts=0)
XrdSfsFile(XrdOucErrInfo &eInfo)
Definition: XrdSfsInterface.hh:796
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:761
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:35
Definition: XrdSfsXio.hh:55
Definition: XrdSysLogger.hh:53
Definition: XrdOucIOVec.hh:41
Definition: XrdSfsFAttr.hh:73
< SFS_FSCTL_PLUGIN/PLUGIO parms
Definition: XrdSfsInterface.hh:160
const char * Arg1
PLUGIO, PLUGIN.
Definition: XrdSfsInterface.hh:161
int Arg2Len
Length.
Definition: XrdSfsInterface.hh:163
const char * Arg2
PLUGIN opaque string.
Definition: XrdSfsInterface.hh:164
int Arg1Len
Length.
Definition: XrdSfsInterface.hh:162
< Prepare parameters
Definition: XrdSfsInterface.hh:168
char * notify
Notification path or 0.
Definition: XrdSfsInterface.hh:170
XrdOucTList * paths
List of paths.
Definition: XrdSfsInterface.hh:172
XrdOucTList * oinfo
1-to-1 correspondence of opaque info
Definition: XrdSfsInterface.hh:173
char * reqid
Request ID.
Definition: XrdSfsInterface.hh:169
int opts
Prep_xxx.
Definition: XrdSfsInterface.hh:171
Definition: XrdOucIOVec.hh:65