XRootD
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 {
139  XrdFrmConfig::VPInfo *vP = Config.pathList;
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 }
XrdOucTList * next
Definition: XrdOucTList.hh:45
char * text
Definition: XrdOucTList.hh:46
void Say(const char *text1, const char *text2=0, const char *txt3=0, const char *text4=0, const char *text5=0, const char *txt6=0)
Definition: XrdSysError.cc:141
XrdSysError Say
XrdCmsConfig Config

References XrdCms::Config, XrdFrmConfig::VPInfo::Dir, XrdFrmConfig::VPInfo::Name, XrdFrmConfig::VPInfo::Next, XrdOucTList::next, XrdFrc::Say, XrdSysError::Say(), XrdOucTList::text, and XrdFrmConfig::VPInfo::Val.

+ Here is the call graph for this function:

◆ 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 //
223 do{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
Definition: XrdFrmFiles.hh:90
int Emsg(const char *esfx, int ecode, const char *text1, const char *text2=0)
Definition: XrdSysError.cc:95
static int Run(pthread_t *, void *(*proc)(void *), void *arg, int opts=0, const char *desc=0)
static void Snooze(int seconds)
Definition: XrdSysTimer.cc:168

References XrdCms::Config, XrdSysError::Emsg(), XrdFrmFileset::Next, XrdSysThread::Run(), XrdFrc::Say, XrdSysTimer::Snooze(), 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)
const char * myProg
char LFN[3072]
static const int migQ
char User[256]
static const int Migrate
long long addTOD
const char * basePath()
Definition: XrdFrmFiles.hh:61
static int Add(XrdFrcRequest *rP, XrdFrcReqFile *reqF, int theQ)

References XrdFrmXfrQueue::Add(), XrdFrcRequest::addTOD, XrdFrmFileset::basePath(), XrdCms::Config, XrdFrcRequest::ID, XrdFrcRequest::LFN, XrdFrcRequest::migQ, XrdFrcRequest::Migrate, XrdCmsConfig::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: