xrootd
|
#include <XrdPosixXrootd.hh>
Public Member Functions | |
XrdPosixXrootd (int maxfd=255, int maxdir=255, int maxthr=255) | |
~XrdPosixXrootd () | |
Static Public Member Functions | |
static int | Close (int fildes, int Stream=0) |
static int | Closedir (DIR *dirp) |
static int | Fstat (int fildes, struct stat *buf) |
static int | Fsync (int fildes) |
static int | Ftruncate (int fildes, off_t offset) |
static long long | Getxattr (const char *path, const char *name, void *value, unsigned long long size) |
static off_t | Lseek (int fildes, off_t offset, int whence) |
static int | Mkdir (const char *path, mode_t mode) |
static int | Open (const char *path, int oflag, mode_t mode=0, XrdPosixCallBack *cbP=0) |
static DIR * | Opendir (const char *path) |
static ssize_t | Pread (int fildes, void *buf, size_t nbyte, off_t offset) |
static ssize_t | Read (int fildes, void *buf, size_t nbyte) |
static ssize_t | Readv (int fildes, const struct iovec *iov, int iovcnt) |
static struct dirent * | Readdir (DIR *dirp) |
static struct dirent64 * | Readdir64 (DIR *dirp) |
static int | Readdir_r (DIR *dirp, struct dirent *entry, struct dirent **result) |
static int | Readdir64_r (DIR *dirp, struct dirent64 *entry, struct dirent64 **result) |
static int | Rename (const char *oldpath, const char *newpath) |
static void | Rewinddir (DIR *dirp) |
static int | Rmdir (const char *path) |
static void | Seekdir (DIR *dirp, long loc) |
static int | Stat (const char *path, struct stat *buf) |
static int | Statfs (const char *path, struct statfs *buf) |
static int | Statvfs (const char *path, struct statvfs *buf) |
static ssize_t | Pwrite (int fildes, const void *buf, size_t nbyte, off_t offset) |
static long | Telldir (DIR *dirp) |
static int | Truncate (const char *path, off_t offset) |
static int | Unlink (const char *path) |
static ssize_t | Write (int fildes, const void *buf, size_t nbyte) |
static ssize_t | Write (int fildes, void *buf, size_t nbyte, off_t offset) |
static ssize_t | Writev (int fildes, const struct iovec *iov, int iovcnt) |
static int | Access (const char *path, int amode) |
static int | endPoint (int FD, char *Buff, int Blen) |
static bool | isXrootdDir (DIR *dirp) |
static int | mapError (int rc) |
static bool | myFD (int fd) |
static void | OpenCB (XrdPosixFile *fp, void *cbArg, int res) |
static long long | QueryOpaque (const char *, char *, int) |
static void | setDebug (int val) |
static void | setEnv (const char *var, const char *val) |
static void | setEnv (const char *var, long val) |
Static Public Attributes | |
static const int | isStream = 0x40000000 |
static int | Debug = -2 |
Static Private Member Functions | |
static void | initEnv () |
static int | Fault (XrdPosixFile *fp, int complete=1) |
static XrdPosixFile * | findFP (int fildes, int glk=0) |
static XrdPosixDir * | findDIR (DIR *dirp, int glk=0) |
static void | initStat (struct stat *buf) |
static void | initXdev (dev_t &st_dev, dev_t &st_rdev) |
static int | mapFlags (int flags) |
static int | mapMode (mode_t Mode) |
Static Private Attributes | |
static XrdSysMutex | myMutex |
static XrdPosixFile ** | myFiles = 0 |
static XrdPosixDir ** | myDirs = 0 |
static int | lastFD = -1 |
static int | highFD = -1 |
static int | baseFD = 0 |
static int | freeFD = 0 |
static int | lastDir = -1 |
static int | highDir = -1 |
static int | devNull = -1 |
static int | pllOpen = 0 |
static int | maxThreads = 0 |
static int | initDone = 0 |
XrdPosixXrootd::XrdPosixXrootd | ( | int | maxfd = 255 , |
int | maxdir = 255 , |
||
int | maxthr = 255 |
||
) |
References baseFD, devNull, XrdPosixLinkage::Init(), initDone, initEnv(), lastDir, lastFD, XrdSysMutex::Lock(), maxThreads, myDirs, myFiles, myMutex, open(), XrdSysMutex::UnLock(), and Xunix.
XrdPosixXrootd::~XrdPosixXrootd | ( | ) |
References highDir, highFD, initDone, XrdSysMutex::Lock(), myDirs, myFiles, myMutex, and XrdSysMutex::UnLock().
int XrdPosixXrootd::Access | ( | const char * | path, |
int | amode | ||
) | [static] |
References XrdPosixAdminNew::Admin, XrdOucString::c_str(), XrdClientUrlInfo::File, XrdPosixAdminNew::isOK(), XrdPosixAdminNew::lastError(), mapFlags(), R_OK, XrdPosixAdminNew::Result(), S_IRUSR, S_IWUSR, S_IXUSR, XrdClientAdmin::Stat(), W_OK, and X_OK.
Referenced by XrdPosix_Access().
int XrdPosixXrootd::Close | ( | int | fildes, |
int | Stream = 0 |
||
) | [static] |
References baseFD, XrdPosixFile::FD, findFP(), freeFD, myFD(), myFiles, myMutex, XrdSysMutex::UnLock(), and XrdPosixFile::UnLock().
Referenced by XrdPssFile::Close(), main(), XrdFfsPosix_close(), XrdPosix_Close(), XrdPosix_Fclose(), and XrdPosix_Fopen().
int XrdPosixXrootd::Closedir | ( | DIR * | dirp | ) | [static] |
References XrdPosixDir::dirNo(), findDIR(), myDirs, myMutex, XrdSysMutex::UnLock(), and XrdPosixDir::UnLock().
Referenced by XrdFfsPosix_closedir(), and XrdPosix_Closedir().
int XrdPosixXrootd::endPoint | ( | int | FD, |
char * | Buff, | ||
int | Blen | ||
) | [static] |
int XrdPosixXrootd::Fault | ( | XrdPosixFile * | fp, |
int | complete = 1 |
||
) | [static, private] |
References Debug, ServerResponseBody_Error::errmsg, ServerResponseBody_Error::errnum, kXR_noErrorYet, XrdClientAbs::LastServerError(), mapError(), XrdPosixFile::UnLock(), and XrdPosixFile::XClient.
Referenced by Fsync(), Ftruncate(), Open(), OpenCB(), Pread(), Pwrite(), Read(), and Write().
XrdPosixDir * XrdPosixXrootd::findDIR | ( | DIR * | dirp, |
int | glk = 0 |
||
) | [static, private] |
References XrdPosixDir::dirNo(), XrdPosixDir::Lock(), XrdSysMutex::Lock(), myDirs, myMutex, and XrdSysMutex::UnLock().
Referenced by Closedir(), Readdir64(), Readdir64_r(), Rewinddir(), Seekdir(), and Telldir().
XrdPosixFile * XrdPosixXrootd::findFP | ( | int | fildes, |
int | glk = 0 |
||
) | [static, private] |
References XrdPosixFile::Active(), baseFD, lastFD, XrdPosixFile::Lock(), XrdSysMutex::Lock(), myFiles, myMutex, and XrdSysMutex::UnLock().
Referenced by Close(), endPoint(), Fstat(), Fsync(), Ftruncate(), Lseek(), Pread(), Pwrite(), Read(), and Write().
int XrdPosixXrootd::Fstat | ( | int | fildes, |
struct stat * | buf | ||
) | [static] |
References findFP(), XrdClientStatInfo::flags, XrdClientStatInfo::id, initStat(), mapFlags(), XrdClientStatInfo::modtime, XrdClientStatInfo::size, XrdPosixFile::stat, and XrdPosixFile::UnLock().
Referenced by XrdPssFile::Fstat(), and XrdPosix_Fstat().
int XrdPosixXrootd::Fsync | ( | int | fildes | ) | [static] |
References Fault(), findFP(), XrdClient::Sync(), XrdPosixFile::UnLock(), and XrdPosixFile::XClient.
Referenced by XrdPssFile::Fsync(), XrdFfsPosix_fsync(), XrdPosix_Fdatasync(), XrdPosix_Fflush(), and XrdPosix_Fsync().
int XrdPosixXrootd::Ftruncate | ( | int | fildes, |
off_t | offset | ||
) | [static] |
References Fault(), findFP(), XrdClient::Truncate(), XrdPosixFile::UnLock(), and XrdPosixFile::XClient.
Referenced by XrdPssFile::Ftruncate(), XrdFfsPosix_ftruncate(), and XrdPosix_Ftruncate().
long long XrdPosixXrootd::Getxattr | ( | const char * | path, |
const char * | name, | ||
void * | value, | ||
unsigned long long | size | ||
) | [static] |
void XrdPosixXrootd::initEnv | ( | ) | [static, private] |
References Debug, NAME_CONNECTTIMEOUT, NAME_DATASERVERCONN_TTL, NAME_DEBUG, NAME_DFLTTCPWINDOWSIZE, NAME_FIRSTCONNECTMAXCNT, NAME_LBSERVERCONN_TTL, NAME_MULTISTREAMCNT, NAME_READAHEADSIZE, NAME_READCACHEBLKREMPOLICY, NAME_READCACHESIZE, NAME_RECONNECTWAIT, NAME_REMUSEDCACHEBLKS, NAME_REQUESTTIMEOUT, NAME_TRANSACTIONTIMEOUT, pllOpen, and setEnv().
Referenced by XrdPosixXrootd().
void XrdPosixXrootd::initStat | ( | struct stat * | buf | ) | [static, private] |
References initXdev(), and stat().
void XrdPosixXrootd::initXdev | ( | dev_t & | st_dev, |
dev_t & | st_rdev | ||
) | [static, private] |
References stat().
Referenced by initStat().
bool XrdPosixXrootd::isXrootdDir | ( | DIR * | dirp | ) | [static] |
References highDir, and myDirs.
Referenced by XrdPosix_Closedir(), XrdPosix_Readdir(), XrdPosix_Readdir64(), XrdPosix_Readdir64_r(), XrdPosix_Readdir_r(), XrdPosix_Rewinddir(), XrdPosix_Seekdir(), and XrdPosix_Telldir().
off_t XrdPosixXrootd::Lseek | ( | int | fildes, |
off_t | offset, | ||
int | whence | ||
) | [static] |
References XrdPosixFile::addOffset(), findFP(), Scuttle, XrdPosixFile::setOffset(), XrdClientStatInfo::size, XrdPosixFile::stat, and XrdPosixFile::UnLock().
Referenced by XrdFfsPosix_lseek(), XrdPosix_Fseek(), XrdPosix_Fseeko(), XrdPosix_Ftell(), XrdPosix_Ftello(), and XrdPosix_Lseek().
int XrdPosixXrootd::mapError | ( | int | rc | ) | [static] |
References EHOSTUNREACH, kXR_ArgTooLong, kXR_FSError, kXR_IOError, kXR_isDirectory, kXR_NoMemory, kXR_noserver, kXR_NoSpace, kXR_NotAuthorized, kXR_NotFile, and kXR_NotFound.
Referenced by Fault(), XrdPosixAdminNew::Fault(), XrdPosixAdminNew::lastError(), XrdPosixDir::nextEntry(), XrdPosixAdminNew::XrdPosixAdminNew(), and XrdPosixDir::XrdPosixDir().
int XrdPosixXrootd::mapFlags | ( | int | flags | ) | [static, private] |
References kXR_isDir, kXR_offline, kXR_other, kXR_poscpend, kXR_readable, kXR_writable, kXR_xset, S_IRUSR, S_IWUSR, and S_IXUSR.
int XrdPosixXrootd::mapMode | ( | mode_t | Mode | ) | [static, private] |
int XrdPosixXrootd::Mkdir | ( | const char * | path, |
mode_t | mode | ||
) | [static] |
References XrdPosixAdminNew::Admin, XrdOucString::c_str(), XrdPosixAdminNew::Fault(), XrdClientUrlInfo::File, XrdPosixAdminNew::isOK(), XrdClientAdmin::Mkdir(), XrdPosixAdminNew::Result(), S_IRGRP, S_IROTH, S_IRUSR, S_IWGRP, S_IWUSR, S_IXGRP, S_IXOTH, and S_IXUSR.
Referenced by XrdPssSys::Mkdir(), XrdFfsPosix_mkdir(), and XrdPosix_Mkdir().
static bool XrdPosixXrootd::myFD | ( | int | fd | ) | [inline, static] |
References baseFD, highFD, and myFiles.
Referenced by Close(), fcntl(), fstat(), XrdPosix_Close(), XrdPosix_Fclose(), XrdPosix_Fcntl(), XrdPosix_Fdatasync(), XrdPosix_Fflush(), XrdPosix_Fread(), XrdPosix_Fseek(), XrdPosix_Fseeko(), XrdPosix_Fstat(), XrdPosix_Fsync(), XrdPosix_Ftell(), XrdPosix_Ftello(), XrdPosix_Ftruncate(), XrdPosix_Fwrite(), XrdPosix_Lseek(), XrdPosix_Pread(), XrdPosix_Pwrite(), XrdPosix_Read(), XrdPosix_Readv(), XrdPosix_Write(), and XrdPosix_Writev().
int XrdPosixXrootd::Open | ( | const char * | path, |
int | oflag, | ||
mode_t | mode = 0 , |
||
XrdPosixCallBack * | cbP = 0 |
||
) | [static] |
References baseFD, close, devNull, EINPROGRESS, Fault(), freeFD, highFD, XrdPosixFile::isOpen(), isStream, XrdPosixFile::isSync, kXR_delete, kXR_mkpath, kXR_new, kXR_ok, kXR_open_read, kXR_open_updt, lastFD, XrdClientAbs::LastServerResp(), XrdSysMutex::Lock(), mapMode(), maxThreads, myFiles, myMutex, XrdClient::Open(), XrdMpx::Opts, pllOpen, XrdPosixFile::realFD, XrdPosixFile::stat, XrdClient::Stat(), ServerResponseHeader::status, XrdSysMutex::UnLock(), and XrdPosixFile::XClient.
Referenced by main(), XrdPssFile::Open(), XrdFfsPosix_open(), XrdPosix_Fopen(), and XrdPosix_Open().
void XrdPosixXrootd::OpenCB | ( | XrdPosixFile * | fp, |
void * | cbArg, | ||
int | res | ||
) | [static] |
References baseFD, XrdPosixFile::cbResult, XrdPosixCallBack::Complete(), Fault(), XrdPosixFile::FD, XrdPosixFile::isOpen(), kXR_ok, XrdClientAbs::LastServerResp(), XrdSysMutex::Lock(), maxThreads, myFiles, myMutex, XrdPosixFile::Next, XrdSysSemaphore::Post(), XrdSysThread::Run(), XrdPosixFile::stat, XrdClient::Stat(), ServerResponseHeader::status, XrdPosixFile::theCB, XrdSysMutex::UnLock(), XrdSysSemaphore::Wait(), XrdPosixFile::XClient, and XrdPosixXrootdCB().
Referenced by XrdPosixFile::OpenComplete(), and XrdPosixXrootdCB().
DIR * XrdPosixXrootd::Opendir | ( | const char * | path | ) | [static] |
References devNull, highDir, lastDir, XrdSysMutex::Lock(), myDirs, myMutex, XrdPosixDir::Status(), and XrdSysMutex::UnLock().
Referenced by XrdFfsPosix_opendir(), and XrdPosix_Opendir().
ssize_t XrdPosixXrootd::Pread | ( | int | fildes, |
void * | buf, | ||
size_t | nbyte, | ||
off_t | offset | ||
) | [static] |
References Fault(), findFP(), XrdClient::Read(), Scuttle, ssize_t, XrdPosixFile::UnLock(), and XrdPosixFile::XClient.
Referenced by XrdPssFile::Read(), XrdFfsPosix_pread(), and XrdPosix_Pread().
ssize_t XrdPosixXrootd::Pwrite | ( | int | fildes, |
const void * | buf, | ||
size_t | nbyte, | ||
off_t | offset | ||
) | [static] |
References Fault(), findFP(), Scuttle, XrdClientStatInfo::size, ssize_t, XrdPosixFile::stat, XrdPosixFile::UnLock(), XrdClient::Write(), and XrdPosixFile::XClient.
Referenced by XrdPssFile::Write(), XrdFfsPosix_pwrite(), and XrdPosix_Pwrite().
long long XrdPosixXrootd::QueryOpaque | ( | const char * | path, |
char * | value, | ||
int | size | ||
) | [static] |
ssize_t XrdPosixXrootd::Read | ( | int | fildes, |
void * | buf, | ||
size_t | nbyte | ||
) | [static] |
References XrdPosixFile::addOffset(), Fault(), findFP(), XrdPosixFile::Offset(), XrdClient::Read(), Scuttle, ssize_t, XrdPosixFile::UnLock(), and XrdPosixFile::XClient.
Referenced by main(), Readv(), XrdFfsPosix_read(), XrdPosix_Fread(), and XrdPosix_Read().
struct dirent * XrdPosixXrootd::Readdir | ( | DIR * | dirp | ) | [static, read] |
References Readdir64().
Referenced by XrdFfsPosix_readdir(), and XrdPosix_Readdir().
struct dirent64 * XrdPosixXrootd::Readdir64 | ( | DIR * | dirp | ) | [static, read] |
References findDIR(), XrdPosixDir::nextEntry(), XrdPosixDir::Status(), and XrdPosixDir::UnLock().
Referenced by Readdir(), and XrdPosix_Readdir64().
int XrdPosixXrootd::Readdir64_r | ( | DIR * | dirp, |
struct dirent64 * | entry, | ||
struct dirent64 ** | result | ||
) | [static] |
References findDIR(), XrdPosixDir::nextEntry(), XrdPosixDir::Status(), and XrdPosixDir::UnLock().
Referenced by Readdir_r(), and XrdPosix_Readdir64_r().
int XrdPosixXrootd::Readdir_r | ( | DIR * | dirp, |
struct dirent * | entry, | ||
struct dirent ** | result | ||
) | [static] |
References Readdir64_r().
Referenced by XrdPosix_Readdir_r().
ssize_t XrdPosixXrootd::Readv | ( | int | fildes, |
const struct iovec * | iov, | ||
int | iovcnt | ||
) | [static] |
References Read(), and ssize_t.
Referenced by XrdPosix_Readv().
int XrdPosixXrootd::Rename | ( | const char * | oldpath, |
const char * | newpath | ||
) | [static] |
void XrdPosixXrootd::Rewinddir | ( | DIR * | dirp | ) | [static] |
References findDIR(), XrdPosixDir::rewind(), and XrdPosixDir::UnLock().
Referenced by XrdPosix_Rewinddir().
int XrdPosixXrootd::Rmdir | ( | const char * | path | ) | [static] |
void XrdPosixXrootd::Seekdir | ( | DIR * | dirp, |
long | loc | ||
) | [static] |
References findDIR(), XrdPosixDir::getEntries(), XrdPosixDir::getOffset(), XrdPosixDir::nextEntry(), XrdPosixDir::setOffset(), and XrdPosixDir::UnLock().
Referenced by XrdPosix_Seekdir().
void XrdPosixXrootd::setDebug | ( | int | val | ) | [static] |
References Debug, and setEnv().
Referenced by XrdPssSys::Configure(), and XrdPssSys::xtrac().
void XrdPosixXrootd::setEnv | ( | const char * | var, |
const char * | val | ||
) | [static] |
References EnvPutString.
Referenced by XrdPssSys::Configure(), initEnv(), setDebug(), and XrdPssSys::xsopt().
void XrdPosixXrootd::setEnv | ( | const char * | var, |
long | val | ||
) | [static] |
References EnvPutInt.
int XrdPosixXrootd::Stat | ( | const char * | path, |
struct stat * | buf | ||
) | [static] |
References XrdPosixAdminNew::Admin, XrdOucString::c_str(), XrdPosixAdminNew::Fault(), XrdClientUrlInfo::File, initStat(), XrdPosixAdminNew::isOK(), mapFlags(), XrdPosixAdminNew::Result(), and XrdClientAdmin::Stat().
Referenced by main(), XrdPssSys::Stat(), XrdFfsPosix_stat(), XrdPosix_Lstat(), and XrdPosix_Stat().
int XrdPosixXrootd::Statfs | ( | const char * | path, |
struct statfs * | buf | ||
) | [static] |
References Statvfs(), and statvfs().
Referenced by XrdPosix_Statfs().
int XrdPosixXrootd::Statvfs | ( | const char * | path, |
struct statvfs * | buf | ||
) | [static] |
References XrdPosixAdminNew::Admin, XrdOucString::c_str(), XrdPosixAdminNew::Fault(), XrdClientUrlInfo::File, XrdPosixAdminNew::isOK(), XrdPosixAdminNew::Result(), and XrdClientAdmin::Stat_vfs().
Referenced by Statfs(), and XrdPosix_Statvfs().
long XrdPosixXrootd::Telldir | ( | DIR * | dirp | ) | [static] |
References findDIR(), XrdPosixDir::getOffset(), and XrdPosixDir::UnLock().
Referenced by XrdPosix_Telldir().
int XrdPosixXrootd::Truncate | ( | const char * | path, |
off_t | offset | ||
) | [static] |
int XrdPosixXrootd::Unlink | ( | const char * | path | ) | [static] |
ssize_t XrdPosixXrootd::Write | ( | int | fildes, |
const void * | buf, | ||
size_t | nbyte | ||
) | [static] |
References XrdPosixFile::addOffset(), Fault(), findFP(), XrdPosixFile::Offset(), Scuttle, ssize_t, XrdPosixFile::UnLock(), XrdClient::Write(), and XrdPosixFile::XClient.
Referenced by Writev(), XrdFfsPosix_write(), XrdPosix_Fwrite(), and XrdPosix_Write().
static ssize_t XrdPosixXrootd::Write | ( | int | fildes, |
void * | buf, | ||
size_t | nbyte, | ||
off_t | offset | ||
) | [static] |
ssize_t XrdPosixXrootd::Writev | ( | int | fildes, |
const struct iovec * | iov, | ||
int | iovcnt | ||
) | [static] |
References iovec::iov_len, ssize_t, and Write().
Referenced by XrdPosix_Writev().
int XrdPosixXrootd::baseFD = 0 [static, private] |
int XrdPosixXrootd::Debug = -2 [static] |
Referenced by Fault(), XrdPosixAdminNew::Fault(), initEnv(), and setDebug().
int XrdPosixXrootd::devNull = -1 [static, private] |
Referenced by Open(), Opendir(), and XrdPosixXrootd().
int XrdPosixXrootd::freeFD = 0 [static, private] |
int XrdPosixXrootd::highDir = -1 [static, private] |
Referenced by isXrootdDir(), Opendir(), and ~XrdPosixXrootd().
int XrdPosixXrootd::highFD = -1 [static, private] |
Referenced by myFD(), Open(), and ~XrdPosixXrootd().
int XrdPosixXrootd::initDone = 0 [static, private] |
Referenced by XrdPosixXrootd(), and ~XrdPosixXrootd().
const int XrdPosixXrootd::isStream = 0x40000000 [static] |
Referenced by Open(), and XrdPosix_Fopen().
int XrdPosixXrootd::lastDir = -1 [static, private] |
Referenced by Opendir(), and XrdPosixXrootd().
int XrdPosixXrootd::lastFD = -1 [static, private] |
Referenced by findFP(), Open(), and XrdPosixXrootd().
int XrdPosixXrootd::maxThreads = 0 [static, private] |
Referenced by Open(), OpenCB(), and XrdPosixXrootd().
XrdPosixDir ** XrdPosixXrootd::myDirs = 0 [static, private] |
Referenced by Closedir(), findDIR(), isXrootdDir(), Opendir(), XrdPosixXrootd(), and ~XrdPosixXrootd().
XrdPosixFile ** XrdPosixXrootd::myFiles = 0 [static, private] |
Referenced by Close(), findFP(), myFD(), Open(), OpenCB(), XrdPosixXrootd(), and ~XrdPosixXrootd().
XrdSysMutex XrdPosixXrootd::myMutex [static, private] |
Referenced by Close(), Closedir(), findDIR(), findFP(), Open(), OpenCB(), Opendir(), XrdPosixXrootd(), and ~XrdPosixXrootd().
int XrdPosixXrootd::pllOpen = 0 [static, private] |