XRootD
Loading...
Searching...
No Matches
XrdFrmMigrate Class Reference

#include <XrdFrmMigrate.hh>

+ Collaboration diagram for XrdFrmMigrate:

Public Member Functions

 XrdFrmMigrate ()
 
 ~XrdFrmMigrate ()
 

Static Public Member Functions

static void Display ()
 
static void Migrate (int doinit=1)
 
static void Queue (XrdFrmFileset *sP)
 

Detailed Description

Definition at line 40 of file XrdFrmMigrate.hh.

Constructor & Destructor Documentation

◆ XrdFrmMigrate()

XrdFrmMigrate::XrdFrmMigrate ( )
inline

Definition at line 50 of file XrdFrmMigrate.hh.

50{}

◆ ~XrdFrmMigrate()

XrdFrmMigrate::~XrdFrmMigrate ( )
inline

Definition at line 51 of file XrdFrmMigrate.hh.

51{}

Member Function Documentation

◆ Display()

void XrdFrmMigrate::Display ( )
static

Definition at line 137 of file XrdFrmMigrate.cc.

138{
140 XrdOucTList *tP;
141
142// Type header
143//
144 Say.Say("=====> ", "Migrate configuration:");
145
146// Display what we will scan
147//
148 while(vP)
149 {Say.Say("=====> ", "Scanning ", (vP->Val?"r/w: ":"r/o: "), vP->Name);
150 tP = vP->Dir;
151 while(tP) {Say.Say("=====> ", "Excluded ", tP->text); tP = tP->next;}
152 vP = vP->Next;
153 }
154}
XrdOucPup XrdCmsParser::Pup & Say
VPInfo * pathList
XrdOucTList * next
XrdFrmConfig Config

References XrdFrm::Config, XrdFrmConfig::VPInfo::Dir, XrdFrmConfig::VPInfo::Name, XrdFrmConfig::VPInfo::Next, XrdOucTList::next, XrdFrmConfig::pathList, Say, XrdOucTList::text, and XrdFrmConfig::VPInfo::Val.

◆ Migrate()

void XrdFrmMigrate::Migrate ( int  doinit = 1)
static

Definition at line 202 of file XrdFrmMigrate.cc.

203{
204 XrdFrmFileset *fP;
205 char buff[80];
206 int migWait, wTime;
207
208// If we have not initialized yet, start a thread to handle this
209//
210 if (doinit)
211 {pthread_t tid;
212 int retc;
213 if ((retc = XrdSysThread::Run(&tid, XrdMigrateStart, (void *)0,
214 XRDSYSTHREAD_BIND, "migration scan")))
215 Say.Emsg("Migrate", retc, "create migrtion thread");
216 return;
217 }
218
219// Start the migration sequence, first do a name space scan which will trigger
220// all eligible migrations and defer any that need to wait. We then drain the
221// defer queue and wait for the next period to start.
222//
223do{migWait = Config.WaitMigr; numMig = 0;
224 Scan();
225 while((wTime = Advance()))
226 {if ((migWait -= wTime) <= 0) break;
227 else XrdSysTimer::Snooze(wTime);
228 }
229 while(fsDefer) {fP = fsDefer; fsDefer = fsDefer->Next; delete fP;}
230 sprintf(buff, "%d file%s selected for transfer.",numMig,(numMig==1?"":"s"));
231 Say.Emsg("Migrate", buff);
232 if (migWait > 0) XrdSysTimer::Snooze(migWait);
233 } while(1);
234}
void * XrdMigrateStart(void *parg)
#define XRDSYSTHREAD_BIND
XrdFrmFileset * Next
static int Run(pthread_t *, void *(*proc)(void *), void *arg, int opts=0, const char *desc=0)
static void Snooze(int seconds)

References XrdFrm::Config, XrdFrmFileset::Next, XrdSysThread::Run(), Say, XrdSysTimer::Snooze(), XrdFrmConfig::WaitMigr, XrdMigrateStart(), and XRDSYSTHREAD_BIND.

Referenced by XrdFrmXfrDaemon::Init(), and XrdMigrateStart().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ Queue()

void XrdFrmMigrate::Queue ( XrdFrmFileset sP)
static

Definition at line 240 of file XrdFrmMigrate.cc.

241{
242 static int reqID = 0;
243 XrdFrcRequest myReq;
244
245// Convert the fileset to a request element
246//
247 memset(&myReq, 0, sizeof(myReq));
248 strlcpy(myReq.User, Config.myProg, sizeof(myReq.User));
249 sprintf(myReq.ID, "Internal%d", reqID++);
251 myReq.addTOD = static_cast<long long>(time(0));
252 if (Config.LogicalPath(sP->basePath(), myReq.LFN, sizeof(myReq.LFN)))
253 {XrdFrmXfrQueue::Add(&myReq, 0, XrdFrcRequest::migQ); numMig++;}
254
255// All done
256//
257 delete sP;
258}
size_t strlcpy(char *dst, const char *src, size_t sz)
char LFN[3072]
static const int migQ
static const int Migrate
long long addTOD
int LogicalPath(const char *oldp, char *newp, int newpsz)
const char * myProg
const char * basePath()
static int Add(XrdFrcRequest *rP, XrdFrcReqFile *reqF, int theQ)

References XrdFrmXfrQueue::Add(), XrdFrcRequest::addTOD, XrdFrmFileset::basePath(), XrdFrm::Config, XrdFrcRequest::ID, XrdFrcRequest::LFN, XrdFrmConfig::LogicalPath(), XrdFrcRequest::migQ, XrdFrcRequest::Migrate, XrdFrmConfig::myProg, XrdFrcRequest::Options, strlcpy(), and XrdFrcRequest::User.

+ Here is the call graph for this function:

The documentation for this class was generated from the following files: