CMS 3D CMS Logo

List of all members | Classes | Public Member Functions | Private Member Functions | Private Attributes
LocalFileSystem Class Reference

#include <LocalFileSystem.h>

Classes

struct  FSInfo
 Information about file systems on this node. More...
 

Public Member Functions

std::pair< std::string, std::string > findCachePath (const std::vector< std::string > &paths, double minFreeSpace) const
 
bool isLocalPath (const std::string &path) const
 
 LocalFileSystem (LocalFileSystem &)=delete
 
 LocalFileSystem (void)
 
void operator= (LocalFileSystem &)=delete
 
 ~LocalFileSystem (void)
 

Private Member Functions

FSInfofindMount (const char *path, struct statfs *sfs, struct stat *s, std::vector< std::string > &) const
 
FSInfoinitFSInfo (void *p)
 
int initFSList (void)
 
int readFSTypes (void)
 
int statFSInfo (FSInfo *i) const
 

Private Attributes

std::vector< FSInfo * > fs_
 
std::vector< std::string > fstypes_
 

Detailed Description

Definition at line 11 of file LocalFileSystem.h.

Constructor & Destructor Documentation

◆ LocalFileSystem() [1/2]

LocalFileSystem::LocalFileSystem ( void  )

Initialise local file system status.

Definition at line 512 of file LocalFileSystem.cc.

512  {
513  if (readFSTypes() < 0)
514  return;
515 
516  if (initFSList() < 0)
517  return;
518 }

References initFSList(), and readFSTypes().

◆ LocalFileSystem() [2/2]

LocalFileSystem::LocalFileSystem ( LocalFileSystem )
delete

◆ ~LocalFileSystem()

LocalFileSystem::~LocalFileSystem ( void  )

Free local file system status resources.

Definition at line 521 of file LocalFileSystem.cc.

521  {
522  for (size_t i = 0, e = fs_.size(); i < e; ++i)
523  free(fs_[i]);
524 }

References MillePedeFileConverter_cfg::e, fs_, and mps_fire::i.

Member Function Documentation

◆ findCachePath()

std::pair< std::string, std::string > LocalFileSystem::findCachePath ( const std::vector< std::string > &  paths,
double  minFreeSpace 
) const

Find a writeable directory among paths which is known to be local and has at least minFreeSpace amount of free space in gigabytes.

The paths should contain list of relative or absolute candidate directories. If an entry starts with letter "$" then the value of that environment variable is used instead; if the value is $TMPDIR and the environment variable is empty, "/tmp" is used instead.

Returns the first path in paths which satisfies the criteria, expanded to environment variable value if appropriate, resolved to full absolute path. If no suitable path can be found, returns an empty string.

Does not throw exceptions. If any serious errors occur, the errors are reported as message logger warnings but the actual error is swallowed and the directory concerned is skipped. Non-existent and inaccessible directories are silently ignored without warning.

Definition at line 426 of file LocalFileSystem.cc.

427  {
428  struct stat s;
429  struct statfs sfs;
430  std::ostringstream warningst;
431  warningst << "Cannot use lazy-download because:\n";
432 
433  for (size_t i = 0, e = paths.size(); i < e; ++i) {
434  char *fullpath;
435  const char *inpath = paths[i].c_str();
436  const char *path = inpath;
437 
438  if (*path == '$') {
439  char *p = std::getenv(path + 1);
440  if (p && *p)
441  path = p;
442  else if (!strcmp(path, "$TMPDIR"))
443  path = "/tmp";
444  }
445 
446  if (!(fullpath = realpath(path, nullptr)))
447  fullpath = strdup(path);
448 
449 #if 0
450  std::cerr /* edm::LogInfo("LocalFileSystem") */
451  << "Checking if '" << fullpath << "', from '"
452  << inpath << "' is valid cache path with "
453  << minFreeSpace << " free space" << std::endl;
454 #endif
455 
456  if (lstat(fullpath, &s) < 0) {
457  int nerr = errno;
458  if (nerr != ENOENT && nerr != EACCES)
459  edm::LogWarning("LocalFileSystem::findCachePath()") << "Cannot lstat('" << fullpath << "', from '" << inpath
460  << "'): " << strerror(nerr) << " (error " << nerr << ")";
461  free(fullpath);
462  continue;
463  }
464 
465  if (statfs(fullpath, &sfs) < 0) {
466  int nerr = errno;
467  edm::LogWarning("LocalFileSystem::findCachePath()") << "Cannot statfs('" << fullpath << "', from '" << inpath
468  << "'): " << strerror(nerr) << " (error " << nerr << ")";
469  free(fullpath);
470  continue;
471  }
472 
473  std::vector<std::string> prev_paths;
474  FSInfo *m = findMount(fullpath, &sfs, &s, prev_paths);
475 #if 0
476  std::cerr /* edm::LogInfo("LocalFileSystem") */
477  << "Candidate '" << fullpath << "': "
478  << "found=" << (m ? 1 : 0)
479  << " local=" << (m && m->local)
480  << " free=" << (m ? m->freespc : 0)
481  << " access=" << access(fullpath, W_OK)
482  << std::endl;
483 #endif
484 
485  if (m && m->local && m->freespc >= minFreeSpace && access(fullpath, W_OK) == 0) {
487  free(fullpath);
488  return std::make_pair(result, std::string());
489  } else if (m) {
490  if (!m->local) {
491  warningst << "- The mount " << fullpath << " is not local.\n";
492  } else if (m->freespc < minFreeSpace) {
493  warningst << " - The mount at " << fullpath << " has only " << m->freespc << " GB free; a minumum of "
494  << minFreeSpace << " GB is required.\n";
495  } else if (access(fullpath, W_OK)) {
496  warningst << " - The process has no permission to write into " << fullpath << "\n";
497  }
498  }
499 
500  free(fullpath);
501  }
502 
503  std::string warning_str = warningst.str();
504  if (!warning_str.empty()) {
505  warning_str = warning_str.substr(0, warning_str.size() - 2);
506  }
507 
508  return std::make_pair(std::string(), std::move(warning_str));
509 }

References EcnaPython_AdcPeg12_S1_10_R170298_1_0_150_Dee0::cerr, MillePedeFileConverter_cfg::e, findMount(), reco_skim_cfg_mod::fullpath, mps_fire::i, visualization-live-secondInstance_cfg::m, eostools::move(), AlCaHLTBitMon_ParallelJobs::p, castor_dqm_sourceclient_file_cfg::path, Skims_PA_cff::paths, mps_fire::result, alignCSCRings::s, edm_modernize_messagelogger::stat, and AlCaHLTBitMon_QueryRunRegistry::string.

Referenced by StorageFactory::setTempDir().

◆ findMount()

LocalFileSystem::FSInfo * LocalFileSystem::findMount ( const char *  path,
struct statfs *  sfs,
struct stat *  s,
std::vector< std::string > &  prev_paths 
) const
private

Find the file system path was mounted from. The statfs() and stat() information for path should be in sfs and s, respectively.

Finds currently mounted file system that path is owned by, and returns the FSInfo object for it, or null if no matching live file system can be found. If the return value is non-null, then it is guaranteed path was on that file system.

A null return value is possible for certain paths which are not on any mounted file system (e.g. /dev or /selinux), or if the file system is unavailable or some other way dysfunctional, such as dead nfs mount or filesystem does not implement statfs().

Definition at line 289 of file LocalFileSystem.cc.

292  {
293  for (const auto &old_path : prev_paths) {
294  if (!strcmp(old_path.c_str(), path)) {
295  edm::LogWarning("LocalFileSystem::findMount()") << "Found a loop in bind mounts; stopping evaluation.";
296  return nullptr;
297  }
298  }
299 
300  FSInfo *best = nullptr;
301  size_t bestlen = 0;
302  size_t len = strlen(path);
303  for (size_t i = 0; i < fs_.size(); ++i) {
304  // First match simply against the file system path. We don't
305  // touch the file system until the path prefix matches.
306  // When we have a path prefix match, check the file system if
307  // we don't have a best match candidate yet, OR
308  // this match is longer (more specific) than the previous best OR
309  // this match is the same length and the previous best isn't local
310  // The final condition handles cases such as '/' that can appear twice
311  // in the file system list, once as 'rootfs' and once as local fs.
312  size_t fslen = strlen(fs_[i]->dir);
313  if (!strncmp(fs_[i]->dir, path, fslen) &&
314  ((fslen == 1 && fs_[i]->dir[0] == '/') || len == fslen || path[fslen] == '/') &&
315  (!best || fslen > bestlen || (fslen == bestlen && !best->local))) {
316  // Get the file system device and file system ids.
317  if (statFSInfo(fs_[i]) < 0)
318  return nullptr;
319 
320  // Check the path is on the same device / file system. If this
321  // fails, we found a better prefix match on path, but it's the
322  // wrong device, so reset our idea of the best match: it can't
323  // be the outer mount any more. Not sure this is the right
324  // thing to do with e.g. loop-back or union mounts.
325  if (fs_[i]->dev != s->st_dev || fs_[i]->fstype != sfs->f_type) {
326  best = nullptr;
327  continue;
328  }
329 
330  // OK this is better than anything else we found so far.
331  best = fs_[i];
332  bestlen = fslen;
333  }
334  }
335  // In the case of a bind mount, try looking again at the source directory.
336  if (best && best->bind && best->origin) {
337  struct stat s2;
338  struct statfs sfs2;
339  char *fullpath = realpath(best->origin, nullptr);
340 
341  if (!fullpath)
342  fullpath = strdup(best->origin);
343 
344  if (lstat(fullpath, &s2) < 0) {
345  int nerr = errno;
346  edm::LogWarning("LocalFileSystem::findMount()") << "Cannot lstat('" << fullpath << "' alias '" << path
347  << "'): " << strerror(nerr) << " (error " << nerr << ")";
348  free(fullpath);
349  return best;
350  }
351 
352  if (statfs(fullpath, &sfs2) < 0) {
353  int nerr = errno;
354  edm::LogWarning("LocalFileSystem::findMount()") << "Cannot statfs('" << fullpath << "' alias '" << path
355  << "'): " << strerror(nerr) << " (error " << nerr << ")";
356  free(fullpath);
357  return best;
358  }
359 
360  prev_paths.push_back(path);
361  LocalFileSystem::FSInfo *new_best = findMount(fullpath, &sfs2, &s2, prev_paths);
362  return new_best ? new_best : best;
363  }
364 
365  return best;
366 }

References LocalFileSystem::FSInfo::bind, DeadROC_duringRun::dir, fs_, reco_skim_cfg_mod::fullpath, mps_fire::i, LocalFileSystem::FSInfo::origin, castor_dqm_sourceclient_file_cfg::path, alignCSCRings::s, edm_modernize_messagelogger::stat, and statFSInfo().

Referenced by findCachePath(), and isLocalPath().

◆ initFSInfo()

LocalFileSystem::FSInfo * LocalFileSystem::initFSInfo ( void *  arg)
private

Initialise file system description from /etc/mtab info.

This function saves the information from getmntent(), matching the file system type to the known local ones. It only remembers the information from /etc/mtab, so the dev and fstype attributes are not yet valid; call statFSInfo() to fill those in. This avoids touching irrelevant filesystems unnecessarily; the file system may not be fully functional, or partially offline, or just very slow.

Definition at line 123 of file LocalFileSystem.cc.

123  {
124 #if BSD
125  struct statfs *m = static_cast<struct statfs *>(arg);
126  size_t infolen = sizeof(struct FSInfo);
127  size_t fslen = strlen(m->f_mntfromname) + 1;
128  size_t dirlen = strlen(m->f_mntonname) + 1;
129  size_t typelen = strlen(m->f_fstypename) + 1;
130  size_t totlen = infolen + fslen + dirlen + typelen;
131  FSInfo *i = (FSInfo *)malloc(totlen);
132  char *p = (char *)i;
133  i->fsname = strncpy(p += infolen, m->f_mntfromname, fslen);
134  i->type = strncpy(p += fslen, m->f_fstypename, typelen);
135  i->dir = strncpy(p += typelen, m->f_mntonname, dirlen);
136  i->dev = m->f_fsid.val[0];
137  i->fstype = m->f_type;
138  i->freespc = 0;
139  i->bind = 0;
140  i->origin = nullptr;
141  if (m->f_bsize > 0) {
142  i->freespc = m->f_bavail;
143  i->freespc *= m->f_bsize;
144  i->freespc /= 1024. * 1024. * 1024.;
145  }
146  /* FIXME: This incorrectly says that mounted disk images are local,
147  even if it was mounted from a network server. The alternative is
148  to walk up the device tree using either a) process IORegistry to
149  get the device tree, which lists devices for disk images, and from
150  there translate volume uuid to a mount point; b) parse output from
151  'hdiutil info -plist' to determine image-path / dev-entry map. */
152  i->local = ((m->f_flags & MNT_LOCAL) ? 1 : 0);
153  i->checked = 1;
154  return i;
155 
156 #else // ! BSD
157  mntent *m = static_cast<mntent *>(arg);
158  size_t infolen = sizeof(struct FSInfo);
159  size_t fslen = strlen(m->mnt_fsname) + 1;
160  size_t dirlen = strlen(m->mnt_dir) + 1;
161  size_t typelen = strlen(m->mnt_type) + 1;
162  size_t originlen = strlen(m->mnt_fsname) + 1;
163  size_t totlen = infolen + fslen + dirlen + typelen + originlen;
164  FSInfo *i = (FSInfo *)malloc(totlen);
165  char *p = (char *)i;
166  i->fsname = static_cast<char *>(memcpy(p += infolen, m->mnt_fsname, fslen));
167  i->type = static_cast<char *>(memcpy(p += fslen, m->mnt_type, typelen));
168  i->dir = static_cast<char *>(memcpy(p += typelen, m->mnt_dir, dirlen));
169  i->origin = static_cast<char *>(memcpy(p += dirlen, m->mnt_fsname, originlen));
170  i->dev = -1;
171  i->fstype = -1;
172  i->freespc = 0;
173  i->local = 0;
174  i->checked = false;
175  i->bind = strstr(m->mnt_opts, "bind") != nullptr;
176 
177  for (size_t j = 0; j < fstypes_.size() && !i->local; ++j)
178  if (fstypes_[j] == i->type)
179  i->local = 1;
180 #endif // BSD
181 
182  return i;
183 }

References fstypes_, mps_fire::i, dqmiolumiharvest::j, visualization-live-secondInstance_cfg::m, and AlCaHLTBitMon_ParallelJobs::p.

Referenced by initFSList().

◆ initFSList()

int LocalFileSystem::initFSList ( void  )
private

Initialise the list of currently mounted file systems.

Reads /etc/mtab (or equivalent) to determine all currently mounted file systems, and initialises FSInfo structure for them. It does not yet call statFSInfo() on them, so the device and file type ids are not yet complete.

Definition at line 191 of file LocalFileSystem.cc.

191  {
192 #if BSD
193  int rc;
194  struct statfs *mtab = 0;
195  if ((rc = getmntinfo(&mtab, MNT_NOWAIT)) < 0) {
196  int nerr = errno;
197  edm::LogWarning("LocalFileSystem::initFSList()")
198  << "getmntinfo() failed: " << strerror(nerr) << " (error " << nerr << ")";
199  return -1;
200  }
201 
202  fs_.reserve(rc);
203  for (int ix = 0; ix < rc; ++ix)
204  fs_.push_back(initFSInfo(&mtab[ix]));
205 
206  free(mtab);
207 #else
208  const char *const _PATH_MOUNTED_LINUX = "/proc/self/mounts";
209  struct mntent *m;
210  FILE *mtab = setmntent(_PATH_MOUNTED_LINUX, "r");
211  if (!mtab) {
212  int nerr = errno;
213  edm::LogWarning("LocalFileSystem::initFSList()")
214  << "Cannot read '" << _PATH_MOUNTED_LINUX << "': " << strerror(nerr) << " (error " << nerr << ")";
215  return -1;
216  }
217 
218  fs_.reserve(20);
219  while ((m = getmntent(mtab)))
220  fs_.push_back(initFSInfo(m));
221 
222  endmntent(mtab);
223 #endif
224 
225  return 0;
226 }

References fs_, initFSInfo(), and visualization-live-secondInstance_cfg::m.

Referenced by LocalFileSystem().

◆ isLocalPath()

bool LocalFileSystem::isLocalPath ( const std::string &  path) const

Determine if path is on a file system known to be local.

Returns true if the path is definitely known to be local. Returns false otherwise, including when it's not possible to determine anything about the path at all.

Does not throw exceptions. If any errors occur, the errors are reported as message logger warnings but the actual error is swallowed and the function simply returns false.

Definition at line 377 of file LocalFileSystem.cc.

377  {
378  struct stat s;
379  struct statfs sfs;
380  char *fullpath = realpath(path.c_str(), nullptr);
381 
382  if (!fullpath)
383  fullpath = strdup(path.c_str());
384 
385  if (lstat(fullpath, &s) < 0) {
386  int nerr = errno;
387  edm::LogWarning("LocalFileSystem::isLocalPath()")
388  << "Cannot lstat('" << fullpath << "' alias '" << path << "'): " << strerror(nerr) << " (error " << nerr << ")";
389  free(fullpath);
390  return false;
391  }
392 
393  if (statfs(fullpath, &sfs) < 0) {
394  int nerr = errno;
395  edm::LogWarning("LocalFileSystem::isLocalPath()") << "Cannot statfs('" << fullpath << "' alias '" << path
396  << "'): " << strerror(nerr) << " (error " << nerr << ")";
397  free(fullpath);
398  return false;
399  }
400 
401  std::vector<std::string> prev_paths;
402  FSInfo *m = findMount(fullpath, &sfs, &s, prev_paths);
403  free(fullpath);
404 
405  return m ? m->local : false;
406 }

References findMount(), reco_skim_cfg_mod::fullpath, visualization-live-secondInstance_cfg::m, castor_dqm_sourceclient_file_cfg::path, alignCSCRings::s, and edm_modernize_messagelogger::stat.

Referenced by StorageFactory::wrapNonLocalFile().

◆ operator=()

void LocalFileSystem::operator= ( LocalFileSystem )
delete

◆ readFSTypes()

int LocalFileSystem::readFSTypes ( void  )
private

Read /proc/filesystems to determine which filesystems are local, meaning access latency is tolerably small, and operating system buffer cache will likely do a good job at caching file contents and accelerate many small file operations reasonably well.

The /proc list enumerates all filesystems known by the kernel, except a few special ones like /dev and /selinux. The ones marked as "nodev" have unstable device definition, meaning they are some way or another "virtual" file systems. This labeling is used by kernel nfsd to determine which file systems are safe for exporting without help (fixing fsid), and turns out to be close enough to list of file systems that we can consider to be high-speed local, minus a few exceptions. Everything else we consider "remote" or "slow" file systems where application should prefer massive bulk streaming I/O for better performance.

The exceptions to /proc/filesystems list: lustre and fuse file systems are forced to remote status. Everything else like NFS, AFS, GPFS and various cluster-based systems are already remote.

Definition at line 58 of file LocalFileSystem.cc.

58  {
59  int ret = 0;
60 
61 #if __linux__
62  constexpr char procfs[] = "/proc/filesystems";
63  auto close_ = [](FILE *iFile) { fclose(iFile); };
64  std::unique_ptr<FILE, decltype(close_)> fs(fopen(procfs, "r"), close_);
65  if (!fs) {
66  int nerr = errno;
67  edm::LogWarning("LocalFileSystem::readFSTypes()")
68  << "Cannot read '" << procfs << "': " << strerror(nerr) << " (error " << nerr << ")";
69  return -1;
70  }
71 
72  ssize_t nread;
73  int line = 0;
74  auto free_ = [](char **iPtr) { free(*iPtr); };
75  while (!feof(fs.get())) {
76  char *type = nullptr;
77  std::unique_ptr<char *, decltype(free_)> freeType(&type, free_);
78 
79  size_t len = 0;
80  ++line;
81 
82  if ((nread = getdelim(&type, &len, '\t', fs.get())) == -1 && !feof(fs.get())) {
83  edm::LogError("LocalFileSystem::readFSTypes()")
84  .format("{}:{}: {} ({}; 1)\n", procfs, line, strerror(errno), nread);
85  ret = -1;
86  break;
87  }
88 
89  char *fstype = nullptr;
90  std::unique_ptr<char *, decltype(free_)> freeFSType(&fstype, free_);
91  if ((nread = getdelim(&fstype, &len, '\n', fs.get())) == -1 && !feof(fs.get())) {
92  edm::LogError("LocalFileSystem::readFSTypes()")
93  .format("{}:{}: {} ({}; 2)\n", procfs, line, strerror(errno), nread);
94  ret = -1;
95  break;
96  }
97 
98  if (feof(fs.get())) {
99  break;
100  }
101 
102  if (!strcmp(type, "nodev\t") || !strcmp(fstype, "lustre\n") || !strncmp(fstype, "fuse", 4)) {
103  continue;
104  }
105 
106  assert(nread >= 1);
107  fstype[nread - 1] = 0;
108  fstypes_.push_back(fstype);
109  }
110 #endif // __linux__
111 
112  return ret;
113 }

References cms::cuda::assert(), fstypes_, mps_splice::line, and runTheMatrix::ret.

Referenced by LocalFileSystem().

◆ statFSInfo()

int LocalFileSystem::statFSInfo ( FSInfo i) const
private

Figure out file system device and type ids.

Calls stat() and statfs() on the file system to determine device and file system type ids. These are required to determine if two paths are actually on the same file system.

This function can be called any number of times. It only does the file system check the first time the function is called.

Definition at line 236 of file LocalFileSystem.cc.

236  {
237  int ret = 0;
238  struct stat s;
239  struct statfs sfs;
240 
241  if (!i->checked) {
242  if (lstat(i->dir, &s) < 0) {
243  i->checked = true;
244 
245  int nerr = errno;
246  if (nerr != ENOENT && nerr != EACCES)
247  edm::LogWarning("LocalFileSystem::statFSInfo()")
248  << "Cannot lstat('" << i->dir << "'): " << strerror(nerr) << " (error " << nerr << ")";
249  return -1;
250  }
251 
252  if (statfs(i->dir, &sfs) < 0) {
253  i->checked = true;
254  int nerr = errno;
255  edm::LogWarning("LocalFileSystem::statFSInfo()")
256  << "Cannot statfs('" << i->dir << "'): " << strerror(nerr) << " (error " << nerr << ")";
257  return -1;
258  }
259 
260  i->dev = s.st_dev;
261  i->fstype = sfs.f_type;
262  if (sfs.f_bsize > 0) {
263  i->freespc = sfs.f_bavail;
264  i->freespc *= sfs.f_bsize;
265  i->freespc /= 1024. * 1024. * 1024.;
266  }
267  i->checked = true;
268  } else if (i->fstype == -1) {
269  errno = ENOENT;
270  ret = -1;
271  }
272 
273  return ret;
274 }

References mps_fire::i, runTheMatrix::ret, alignCSCRings::s, and edm_modernize_messagelogger::stat.

Referenced by findMount().

Member Data Documentation

◆ fs_

std::vector<FSInfo *> LocalFileSystem::fs_
private

Definition at line 33 of file LocalFileSystem.h.

Referenced by findMount(), initFSList(), and ~LocalFileSystem().

◆ fstypes_

std::vector<std::string> LocalFileSystem::fstypes_
private

Definition at line 34 of file LocalFileSystem.h.

Referenced by initFSInfo(), and readFSTypes().

runTheMatrix.ret
ret
prodAgent to be discontinued
Definition: runTheMatrix.py:543
LocalFileSystem::initFSList
int initFSList(void)
Definition: LocalFileSystem.cc:191
LocalFileSystem::findMount
FSInfo * findMount(const char *path, struct statfs *sfs, struct stat *s, std::vector< std::string > &) const
Definition: LocalFileSystem.cc:289
mps_fire.i
i
Definition: mps_fire.py:428
reco_skim_cfg_mod.fullpath
fullpath
Definition: reco_skim_cfg_mod.py:202
LocalFileSystem::fstypes_
std::vector< std::string > fstypes_
Definition: LocalFileSystem.h:34
cms::cuda::assert
assert(be >=bs)
LocalFileSystem::fs_
std::vector< FSInfo * > fs_
Definition: LocalFileSystem.h:33
edm::LogWarning
Log< level::Warning, false > LogWarning
Definition: MessageLogger.h:122
alignCSCRings.s
s
Definition: alignCSCRings.py:92
visualization-live-secondInstance_cfg.m
m
Definition: visualization-live-secondInstance_cfg.py:78
LocalFileSystem::statFSInfo
int statFSInfo(FSInfo *i) const
Definition: LocalFileSystem.cc:236
AlCaHLTBitMon_ParallelJobs.p
def p
Definition: AlCaHLTBitMon_ParallelJobs.py:153
type
type
Definition: SiPixelVCal_PayloadInspector.cc:39
LocalFileSystem::readFSTypes
int readFSTypes(void)
Definition: LocalFileSystem.cc:58
LocalFileSystem::initFSInfo
FSInfo * initFSInfo(void *p)
Definition: LocalFileSystem.cc:123
edm::LogError
Log< level::Error, false > LogError
Definition: MessageLogger.h:123
AlCaHLTBitMon_QueryRunRegistry.string
string string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
cms::cuda::device::unique_ptr
std::unique_ptr< T, impl::DeviceDeleter > unique_ptr
Definition: device_unique_ptr.h:33
LocalFileSystem::FSInfo
Information about file systems on this node.
Definition: LocalFileSystem.cc:26
eostools.move
def move(src, dest)
Definition: eostools.py:511
Skims_PA_cff.paths
paths
Definition: Skims_PA_cff.py:18
funct::arg
A arg
Definition: Factorize.h:31
mps_fire.result
result
Definition: mps_fire.py:311
castor_dqm_sourceclient_file_cfg.path
path
Definition: castor_dqm_sourceclient_file_cfg.py:37
dqmiolumiharvest.j
j
Definition: dqmiolumiharvest.py:66
edm_modernize_messagelogger.stat
stat
Definition: edm_modernize_messagelogger.py:27
mps_splice.line
line
Definition: mps_splice.py:76
EcnaPython_AdcPeg12_S1_10_R170298_1_0_150_Dee0.cerr
cerr
Definition: EcnaPython_AdcPeg12_S1_10_R170298_1_0_150_Dee0.py:8
DeadROC_duringRun.dir
dir
Definition: DeadROC_duringRun.py:23
MillePedeFileConverter_cfg.e
e
Definition: MillePedeFileConverter_cfg.py:37