|
xrootd
|
#include <XrdCmsCluster.hh>

Public Types | |
| enum | CmsLSOpts { LS_All = 0x0001, LS_IPO = 0x0002 } |
Public Member Functions | |
| XrdCmsNode * | Add (XrdLink *lp, int dport, int Status, int sport, const char *theNID) |
| SMask_t | Broadcast (SMask_t, const struct iovec *, int, int tot=0) |
| SMask_t | Broadcast (SMask_t smask, XrdCms::CmsRRHdr &Hdr, char *Data, int Dlen=0) |
| SMask_t | Broadcast (SMask_t smask, XrdCms::CmsRRHdr &Hdr, void *Data, int Dlen) |
| int | Broadsend (SMask_t smask, XrdCms::CmsRRHdr &Hdr, void *Data, int Dlen) |
| SMask_t | getMask (unsigned int IPv4adr) |
| SMask_t | getMask (const char *Cid) |
| XrdCmsSelected * | List (SMask_t mask, CmsLSOpts opts) |
| int | Locate (XrdCmsSelect &Sel) |
| void * | MonPerf () |
| void * | MonRefs () |
| long long | Refs () |
| void | Remove (const char *reason, XrdCmsNode *theNode, int immed=0) |
| void | ResetRef (SMask_t smask) |
| int | Select (XrdCmsSelect &Sel) |
| int | Select (int isrw, int isMulti, SMask_t pmask, int &port, char *hbuff, int &hlen) |
| void | Space (XrdCms::SpaceData &sData, SMask_t smask) |
| int | Stats (char *bfr, int bln) |
| int | Statt (char *bfr, int bln) |
| XrdCmsCluster () | |
| ~XrdCmsCluster () | |
Public Attributes | |
| int | NodeCnt |
Private Types | |
| enum | { eExists, eDups, eROfs, eNoRep, eNoEnt } |
Private Member Functions | |
| int | Assign (const char *Cid) |
| XrdCmsNode * | calcDelay (int nump, int numd, int numf, int numo, int nums, int &delay, const char **reason) |
| int | Drop (int sent, int sinst, XrdCmsDrop *djp=0) |
| void | Record (char *path, const char *reason) |
| int | Multiple (SMask_t mVec) |
| int | SelFail (XrdCmsSelect &Sel, int rc) |
| int | SelNode (XrdCmsSelect &Sel, SMask_t pmask, SMask_t amask) |
| XrdCmsNode * | SelbyCost (SMask_t, int &, int &, const char **, int) |
| XrdCmsNode * | SelbyLoad (SMask_t, int &, int &, const char **, int) |
| XrdCmsNode * | SelbyRef (SMask_t, int &, int &, const char **, int) |
| int | SelDFS (XrdCmsSelect &Sel, SMask_t amask, SMask_t &pmask, SMask_t &smask, int isRW) |
| void | sendAList (XrdLink *lp) |
| void | setAltMan (int snum, unsigned int ipaddr, int port) |
Private Attributes | |
| XrdSysMutex | cidMutex |
| XrdOucTList * | cidFirst |
| XrdSysMutex | XXMutex |
| XrdSysMutex | STMutex |
| XrdCmsNode * | NodeTab [STMax] |
| int | STHi |
| int | doReset |
| long long | SelWcnt |
| long long | SelWtot |
| long long | SelRcnt |
| long long | SelRtot |
| long long | SelTcnt |
| char | AltMans [STMax *AltSize] |
| char * | AltMend |
| int | AltMent |
| SMask_t | resetMask |
| SMask_t | peerHost |
| SMask_t | peerMask |
Static Private Attributes | |
| static const int | AltSize = 24 |
Friends | |
| class | XrdCmsDrop |
| XrdCmsCluster::XrdCmsCluster | ( | ) |
| XrdCmsCluster::~XrdCmsCluster | ( | ) | [inline] |
| XrdCmsNode * XrdCmsCluster::Add | ( | XrdLink * | lp, |
| int | dport, | ||
| int | Status, | ||
| int | sport, | ||
| const char * | theNID | ||
| ) |
References EPNAME, XrdCms::CMS_isMan, XrdCms::CMS_isPeer, XrdLink::Name(), XrdSysDNS::IPAddr(), STMax, XrdCms::Say, XrdSysError::Emsg(), XrdLink::ID, XrdCmsNode::Link, XrdCmsNode::isOffline, XrdCmsNode::isConn, XrdCmsNode::Instance, XrdCmsNode::setName(), DEBUG, XrdCmsNode::isPerm, XrdCms::CMS_Perm, XrdCmsNode::isBound, XrdCmsNode::isNoStage, XrdCms::CMS_noStage, XrdCmsNode::isSuspend, XrdCms::CMS_Suspend, XrdCmsNode::isMan, XrdCmsNode::isPeer, XrdCmsNode::isDisable, XrdCms::Config, XrdCmsConfig::SUPLevel, XrdCmsConfig::SUPCount, XrdCms::CmsState, XrdCmsState::Set(), XrdCmsNode::NodeMask, XrdCmsNode::myCNUM, XrdCmsNode::myCID, XrdCmsNode::Ident, XrdCmsNode::myNID, XrdCmsConfig::asManager(), XrdCmsState::Update(), and XrdCmsState::Counts.
Referenced by XrdCmsProtocol::Admit().
| int XrdCmsCluster::Assign | ( | const char * | Cid | ) | [private] |
References XrdOucTList::text, XrdOucTList::next, and XrdOucTList::val.
| SMask_t XrdCmsCluster::Broadcast | ( | SMask_t | smask, |
| const struct iovec * | iod, | ||
| int | iovcnt, | ||
| int | tot = 0 |
||
| ) |
References EPNAME, XrdCmsNode::isNode(), XrdCmsNode::Lock(), XrdCmsNode::Send(), XrdCmsNode::Mask(), DEBUG, XrdCmsNode::Ident, and XrdCmsNode::UnLock().
Referenced by Locate(), Select(), XrdCmsNode::do_StateFWD(), and XrdCmsProtocol::Reissue().
| SMask_t XrdCmsCluster::Broadcast | ( | SMask_t | smask, |
| XrdCms::CmsRRHdr & | Hdr, | ||
| char * | Data, | ||
| int | Dlen = 0 |
||
| ) |
References XrdOucPup::Pack(), XrdCms::CmsRRHdr::datalen, iovec::iov_base, and iovec::iov_len.
| SMask_t XrdCmsCluster::Broadcast | ( | SMask_t | smask, |
| XrdCms::CmsRRHdr & | Hdr, | ||
| void * | Data, | ||
| int | Dlen | ||
| ) |
References XrdCms::CmsRRHdr::datalen.
| int XrdCmsCluster::Broadsend | ( | SMask_t | smask, |
| XrdCms::CmsRRHdr & | Hdr, | ||
| void * | Data, | ||
| int | Dlen | ||
| ) |
References EPNAME, XrdCms::CmsRRHdr::datalen, XrdCmsNode::isNode(), XrdCmsNode::Lock(), XrdCmsNode::Send(), XrdCmsNode::UnLock(), DEBUG, and XrdCmsNode::Ident.
Referenced by SelDFS(), and XrdCmsNode::do_StateFWD().
| XrdCmsNode * XrdCmsCluster::calcDelay | ( | int | nump, |
| int | numd, | ||
| int | numf, | ||
| int | numo, | ||
| int | nums, | ||
| int & | delay, | ||
| const char ** | reason | ||
| ) | [private] |
| int XrdCmsCluster::Drop | ( | int | sent, |
| int | sinst, | ||
| XrdCmsDrop * | djp = 0 |
||
| ) | [private] |
References EPNAME, XrdCmsNode::Inst(), XrdCmsNode::DropJob, XrdCmsNode::DropTime, DEBUG, XrdCms::Sched, XrdScheduler::Schedule(), strlcpy(), XrdCmsNode::Ident, XrdCmsNode::isOffline, XrdCmsNode::isBound, XrdCmsNode::isPeer, XrdCmsNode::NodeMask, XrdCmsNode::isMan, XrdCms::Cache, XrdCmsCache::Drop(), XrdCms::Say, and XrdSysError::Emsg().
Referenced by XrdCmsDrop::DoIt().
| SMask_t XrdCmsCluster::getMask | ( | unsigned int | IPv4adr | ) |
References XrdCmsNode::isNode(), and XrdCmsNode::NodeMask.
Referenced by XrdCmsNode::do_Select().
| SMask_t XrdCmsCluster::getMask | ( | const char * | Cid | ) |
References XrdOucTList::text, XrdOucTList::next, XrdOucTList::val, XrdCmsNode::myCNUM, and XrdCmsNode::NodeMask.
| XrdCmsSelected * XrdCmsCluster::List | ( | SMask_t | mask, |
| CmsLSOpts | opts | ||
| ) |
References XrdCmsNode::NodeMask, XrdCmsNode::Name(), XrdCmsSelected::IPV6Len, XrdCmsNode::IPV6Len, XrdCmsNode::IPV6, XrdCmsNode::NodeID, XrdCmsNode::IPAddr, XrdCmsNode::Port, XrdCmsNode::RefTotW, XrdCmsNode::RefTotR, XrdCmsNode::Shrin, XrdCmsNode::Share, XrdCmsNode::RoleID, XrdCmsNode::isOffline, XrdCmsSelected::Status, XrdCmsNode::isDisable, XrdCmsNode::isNoStage, XrdCmsNode::isSuspend, XrdCmsNode::isRW, XrdCmsNode::isMan, and XrdCmsNode::UnLock().
Referenced by XrdCmsNode::do_Locate(), and XrdCmsRRQ::sendLocResp().
| int XrdCmsCluster::Locate | ( | XrdCmsSelect & | Sel | ) |
References EPNAME, Path, XrdCmsSelect::Path, XrdCmsKey::Val, XrdCmsSelect::Vec, XrdCmsSelect::hf, XrdCmsSelect::pf, XrdCmsSelect::wf, XrdCms::Cache, XrdCmsCache::Paths, XrdCmsPList_Anchor::Find(), XrdCmsPInfo::rovec, XrdCmsPInfo::rwvec, XrdCmsSelect::InfoP, XrdCmsRRQInfo::rwVec, XrdCmsRRQInfo::isLU, XrdCmsSelect::Opts, XrdCmsSelect::Refresh, XrdCmsCache::GetFile(), XrdCmsCache::AddFile(), XrdCmsSelect::bf, XrdCmsCache::WT4File(), XrdCmsKey::Hash, XrdCms::kYR_state, XrdCms::kYR_raw, XrdCms::CmsStateRequest::Hdr, XrdCms::CmsRRHdr::modifier, TRACE, XrdCms::Cluster, Broadcast(), XrdCmsKey::Len, and XrdCmsCache::UnkFile().
Referenced by XrdCmsNode::do_Locate().
| void * XrdCmsCluster::MonPerf | ( | ) |
References Usage(), XrdCms::kYR_usage, XrdCms::Config, XrdCmsConfig::AskPing, XrdCmsConfig::AskPerf, and XrdSysTimer::Snooze().
Referenced by XrdCmsStartMonPerf().
| void * XrdCmsCluster::MonRefs | ( | ) |
| int XrdCmsCluster::Multiple | ( | SMask_t | mVec | ) | [private] |
| void XrdCmsCluster::Record | ( | char * | path, |
| const char * | reason | ||
| ) | [private] |
References EPNAME, DEBUG, XrdSysMutex::Lock(), XrdSysMutex::UnLock(), XrdCms::Say, and XrdSysError::Emsg().
| long long XrdCmsCluster::Refs | ( | ) | [inline] |
References SelWcnt, SelWtot, SelRcnt, and SelRtot.
Referenced by XrdCmsNode::do_Load().
| void XrdCmsCluster::Remove | ( | const char * | reason, |
| XrdCmsNode * | theNode, | ||
| int | immed = 0 |
||
| ) |
References EPNAME, XrdCmsNode::Ident, XrdCmsNode::ID(), XrdCms::Say, XrdSysError::Emsg(), DEBUG, XrdCmsNode::isOffline, XrdCmsNode::isConn, XrdCmsNode::Disc(), XrdCmsNode::isGone, XrdCmsNode::isBound, XrdCms::Config, XrdCmsConfig::asManager(), XrdCms::CmsState, XrdCmsState::Update(), XrdCmsState::Counts, XrdCmsNode::isSuspend, XrdCmsNode::isNoStage, XrdCmsConfig::DRPDelay, XrdCmsNode::DropTime, XrdCmsNode::DropJob, and XrdCmsDrop::nodeInst.
Referenced by XrdCmsProtocol::Process().
| void XrdCmsCluster::ResetRef | ( | SMask_t | smask | ) |
Referenced by XrdCmsProtocol::Admit().
| XrdCmsNode * XrdCmsCluster::SelbyCost | ( | SMask_t | mask, |
| int & | nump, | ||
| int & | delay, | ||
| const char ** | reason, | ||
| int | needspace | ||
| ) | [private] |
| XrdCmsNode * XrdCmsCluster::SelbyLoad | ( | SMask_t | mask, |
| int & | nump, | ||
| int & | delay, | ||
| const char ** | reason, | ||
| int | needspace | ||
| ) | [private] |
References XrdCmsNode::NodeMask, XrdCmsNode::isOffline, XrdCmsNode::isSuspend, XrdCmsNode::isDisable, XrdCmsNode::myLoad, XrdCms::Config, XrdCmsConfig::MaxLoad, XrdCmsNode::DiskFree, XrdCmsNode::DiskMinF, XrdCmsNode::isNoStage, XrdCmsNode::myMass, XrdCmsConfig::P_fuzz, XrdCmsNode::RefW, XrdCmsConfig::DiskLinger, XrdCmsNode::RefR, XrdCmsNode::Lock(), and RefCount.
| XrdCmsNode * XrdCmsCluster::SelbyRef | ( | SMask_t | mask, |
| int & | nump, | ||
| int & | delay, | ||
| const char ** | reason, | ||
| int | needspace | ||
| ) | [private] |
| int XrdCmsCluster::SelDFS | ( | XrdCmsSelect & | Sel, |
| SMask_t | amask, | ||
| SMask_t & | pmask, | ||
| SMask_t & | smask, | ||
| int | isRW | ||
| ) | [private] |
References EPNAME, XrdCmsSelect::Opts, XrdCmsSelect::Refresh, XrdCms::Cache, XrdCmsCache::GetFile(), XrdCms::baseFS, XrdCmsBaseFS::Local(), XrdCmsSelect::Path, XrdCmsKey::Hash, XrdCms::kYR_state, XrdCms::kYR_raw, TRACE, XrdCmsKey::Val, XrdCms::Cluster, Broadsend(), XrdCms::CmsStateRequest::Hdr, XrdCmsKey::Len, XrdCmsBaseFS::Exists(), XrdCmsCache::AddFile(), XrdCmsSelect::Vec, XrdCmsSelect::bf, XrdCmsSelect::pf, XrdCmsSelect::wf, XrdCmsSelect::hf, XrdCms::CmsHaveRequest::Pending, XrdCmsSelect::Online, XrdCmsSelect::NewFile, and XrdCmsSelect::Trunc.
| int XrdCmsCluster::Select | ( | XrdCmsSelect & | Sel | ) |
References EPNAME, XrdCmsSelect::Opts, XrdCmsSelect::Write, XrdCms::Config, XrdCmsConfig::RWDelay, XrdCmsSelect::Create, XrdCms::Cache, XrdCmsCache::Paths, XrdCmsPList_Anchor::Find(), XrdCmsSelect::Path, XrdCmsKey::Val, XrdCmsPInfo::rwvec, XrdCmsPInfo::rovec, XrdCmsSelect::nmask, XrdCmsSelect::Resp, XrdCmsSelect::DLen, snprintf, XrdCmsSelect::Data, XrdCms::baseFS, XrdCmsBaseFS::isDFS(), XrdCmsPInfo::ssvec, XrdCmsBaseFS::Trim(), XrdCmsCache::WT4File(), XrdCmsSelect::Vec, XrdCmsSelect::hf, XrdCmsConfig::LUPDelay, XrdCmsSelect::Online, XrdCmsSelect::Refresh, XrdCmsCache::GetFile(), XrdCmsSelect::Replica, XrdCmsSelect::bf, XrdCmsSelect::NewFile, XrdCmsSelect::isMeta, XrdCmsSelect::Trunc, XrdCmsSelect::pf, XrdCmsCache::UnkFile(), XrdCmsCache::AddFile(), XrdCmsKey::Hash, XrdCms::kYR_state, XrdCms::kYR_raw, XrdCms::CmsStateRequest::Hdr, XrdCms::CmsRRHdr::modifier, TRACE, XrdCms::Cluster, Broadcast(), XrdCmsKey::Len, and XrdCmsSelect::Freshen.
Referenced by XrdCmsNode::do_Mv(), XrdCmsNode::do_Select(), XrdCmsNode::do_SelPrep(), and XrdCmsRRQ::Respond().
| int XrdCmsCluster::Select | ( | int | isrw, |
| int | isMulti, | ||
| SMask_t | pmask, | ||
| int & | port, | ||
| char * | hbuff, | ||
| int & | hlen | ||
| ) |
References XrdCms::baseFS, XrdCmsBaseFS::isDFS(), XrdCmsNode::Lock(), XrdCms::Config, XrdCmsConfig::sched_RR, XrdCmsNode::UnLock(), XrdCmsNode::Name(), XrdCmsNode::isOffline, XrdCmsNode::isSuspend, XrdCmsNode::isDisable, XrdCmsNode::myLoad, XrdCmsConfig::MaxLoad, XrdCmsNode::isNoStage, XrdCmsNode::DiskFree, XrdCmsNode::DiskMinF, XrdCmsNode::RefTotW, XrdCmsNode::RefW, XrdCmsNode::RefTotR, and XrdCmsNode::RefR.
| int XrdCmsCluster::SelFail | ( | XrdCmsSelect & | Sel, |
| int | rc | ||
| ) | [private] |
References XrdCmsSelect::Resp, XrdCmsSelect::DLen, strlcpy(), and XrdCmsSelect::Data.
| int XrdCmsCluster::SelNode | ( | XrdCmsSelect & | Sel, |
| SMask_t | pmask, | ||
| SMask_t | amask | ||
| ) | [private] |
References EPNAME, XrdCmsSelect::Opts, XrdCmsSelect::isMeta, XrdCmsNode::Lock(), XrdCms::Config, XrdCmsConfig::sched_RR, XrdCmsConfig::SUPCount, XrdCmsNode::UnLock(), XrdCmsSelect::Resp, XrdCmsSelect::Data, XrdCmsNode::Name(), XrdCmsSelect::DLen, XrdCmsSelect::Port, XrdCmsSelect::smask, XrdCmsNode::NodeMask, XrdCmsSelect::Create, XrdCmsSelect::iovN, XrdCmsSelect::noBind, XrdCms::Cache, XrdCmsCache::AddFile(), XrdCmsSelect::iovP, XrdCmsNode::Send(), TRACE, XrdCmsSelect::Path, XrdCmsKey::Val, XrdCmsConfig::SUPDelay, XrdCmsConfig::PSDelay, and XrdCmsSelect::Peers.
| void XrdCmsCluster::sendAList | ( | XrdLink * | lp | ) | [private] |
| void XrdCmsCluster::setAltMan | ( | int | snum, |
| unsigned int | ipaddr, | ||
| int | port | ||
| ) | [private] |
References XrdCms::Config, XrdCmsConfig::PortTCP, and XrdSysDNS::IP2String().
| void XrdCmsCluster::Space | ( | XrdCms::SpaceData & | sData, |
| SMask_t | smask | ||
| ) |
References XrdCmsNode::Lock(), XrdCmsNode::isNode(), XrdCmsNode::isOffline, XrdCmsNode::isRW, XrdCms::SpaceData::Total, XrdCmsNode::DiskTotal, XrdCms::SpaceData::sNum, XrdCms::SpaceData::sFree, XrdCmsNode::DiskFree, XrdCms::SpaceData::sUtil, XrdCmsNode::DiskUtil, XrdCmsNode::allowsRW, XrdCms::SpaceData::wNum, XrdCms::SpaceData::wFree, XrdCms::SpaceData::wUtil, XrdCms::SpaceData::wMinF, and XrdCmsNode::DiskMinF.
Referenced by XrdCmsMeter::UpdtSpace(), and XrdCmsNode::do_StatFS().
| int XrdCmsCluster::Stats | ( | char * | bfr, |
| int | bln | ||
| ) |
References snprintf, XrdCms::Config, and XrdCmsConfig::myRType.
Referenced by XrdCmsNode::do_Stats(), and XrdCmsProtocol::Stats().
| int XrdCmsCluster::Statt | ( | char * | bfr, |
| int | bln | ||
| ) |
References XrdCms::Config, XrdCmsConfig::RepStats, XrdCmsConfig::asMetaMan(), Info, stat(), XrdCmsSelected::next, STMax, XrdCms::RRQ, XrdCmsRRQ::Statistics(), FULLMASK, snprintf, XrdCmsConfig::myRType, XrdCmsSelected::Status, XrdCmsSelected::Offline, XrdCmsSelected::Suspend, XrdCmsSelected::Disable, XrdCmsSelected::isRW, XrdCmsSelected::NoStage, XrdCmsSelected::Share, XrdCmsSelected::Shrin, XrdCmsSelected::Name, XrdCmsRole::Type(), XrdCmsSelected::RoleID, XrdCmsSelected::RefTotR, XrdCmsSelected::RefTotW, XrdCmsRRQ::Info::Add2Q, XrdCmsRRQ::Info::PBack, XrdCmsRRQ::Info::Resp, XrdCmsRRQ::Info::Multi, XrdCmsRRQ::Info::luFast, XrdCmsRRQ::Info::luSlow, XrdCmsRRQ::Info::rdFast, and XrdCmsRRQ::Info::rdSlow.
Referenced by XrdCmsProtocol::Stats().
friend class XrdCmsDrop [friend] |
char XrdCmsCluster::AltMans[STMax *AltSize] [private] |
char* XrdCmsCluster::AltMend [private] |
int XrdCmsCluster::AltMent [private] |
const int XrdCmsCluster::AltSize = 24 [static, private] |
XrdOucTList* XrdCmsCluster::cidFirst [private] |
XrdSysMutex XrdCmsCluster::cidMutex [private] |
int XrdCmsCluster::doReset [private] |
Referenced by XrdCmsProtocol::Execute().
XrdCmsNode* XrdCmsCluster::NodeTab[STMax] [private] |
SMask_t XrdCmsCluster::peerHost [private] |
SMask_t XrdCmsCluster::peerMask [private] |
SMask_t XrdCmsCluster::resetMask [private] |
long long XrdCmsCluster::SelRcnt [private] |
Referenced by Refs().
long long XrdCmsCluster::SelRtot [private] |
Referenced by Refs().
long long XrdCmsCluster::SelTcnt [private] |
long long XrdCmsCluster::SelWcnt [private] |
Referenced by Refs().
long long XrdCmsCluster::SelWtot [private] |
Referenced by Refs().
int XrdCmsCluster::STHi [private] |
XrdSysMutex XrdCmsCluster::STMutex [private] |
Referenced by XrdCmsDrop::DoIt().
XrdSysMutex XrdCmsCluster::XXMutex [private] |
1.7.5