xrootd
|
#include <XrdCmsCluster.hh>
Public Types | |
enum | CmsLSOpts { LS_Best = 0x0001, LS_All = 0x0002, LS_IPO = 0x0004, LS_IPV6 = 0x0008 } |
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 () |
void | Remove (const char *reason, XrdCmsNode *theNode, int immed=0) |
void | ResetRef (SMask_t smask) |
int | Select (XrdCmsSelect &Sel) |
int | Select (int isrw, SMask_t pmask, int &port, char *hbuff, int &hlen) |
void | Space (XrdCms::SpaceData &sData, SMask_t smask) |
int | Stats (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 | SelAcnt |
int | SelRcnt |
int | doReset |
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 XrdCmsConfig::asManager(), XrdCms::CMS_isMan, XrdCms::CMS_isPeer, XrdCms::CMS_noStage, XrdCms::CMS_Perm, XrdCms::CMS_Suspend, XrdCms::CmsState, XrdCms::Config, XrdCmsState::Counts, DEBUG, XrdSysError::Emsg(), EPNAME, XrdLink::ID, XrdCmsNode::Ident, XrdCmsNode::Instance, XrdNetDNS::IPAddr(), XrdCmsNode::isBound, XrdCmsNode::isConn, XrdCmsNode::isDisable, XrdCmsNode::isMan, XrdCmsNode::isNoStage, XrdCmsNode::isOffline, XrdCmsNode::isPeer, XrdCmsNode::isPerm, XrdCmsNode::isSuspend, XrdCmsNode::Link, XrdCmsNode::myCID, XrdCmsNode::myCNUM, XrdCmsNode::myNID, XrdLink::Name(), XrdCmsNode::NodeMask, XrdCms::Say, XrdCmsState::Set(), XrdCmsNode::setName(), STMax, XrdCmsConfig::SUPCount, XrdCmsConfig::SUPLevel, and XrdCmsState::Update().
Referenced by XrdCmsProtocol::Admit().
int XrdCmsCluster::Assign | ( | const char * | Cid | ) | [private] |
References XrdOucTList::next, XrdOucTList::text, and XrdOucTList::val.
SMask_t XrdCmsCluster::Broadcast | ( | SMask_t | smask, |
const struct iovec * | iod, | ||
int | iovcnt, | ||
int | tot = 0 |
||
) |
References DEBUG, EPNAME, XrdCmsNode::Ident, XrdCmsNode::isNode(), XrdCmsNode::Lock(), XrdCmsNode::Mask(), XrdCmsNode::Send(), and XrdCmsNode::UnLock().
Referenced by XrdCmsNode::do_StateFWD(), Locate(), XrdCmsProtocol::Reissue(), and Select().
SMask_t XrdCmsCluster::Broadcast | ( | SMask_t | smask, |
XrdCms::CmsRRHdr & | Hdr, | ||
void * | Data, | ||
int | Dlen | ||
) |
References XrdCms::CmsRRHdr::datalen.
SMask_t XrdCmsCluster::Broadcast | ( | SMask_t | smask, |
XrdCms::CmsRRHdr & | Hdr, | ||
char * | Data, | ||
int | Dlen = 0 |
||
) |
References XrdCms::CmsRRHdr::datalen, iovec::iov_base, iovec::iov_len, and XrdOucPup::Pack().
int XrdCmsCluster::Broadsend | ( | SMask_t | smask, |
XrdCms::CmsRRHdr & | Hdr, | ||
void * | Data, | ||
int | Dlen | ||
) |
References XrdCms::CmsRRHdr::datalen, DEBUG, EPNAME, XrdCmsNode::Ident, XrdCmsNode::isNode(), XrdCmsNode::Lock(), XrdCmsNode::Send(), and XrdCmsNode::UnLock().
Referenced by XrdCmsNode::do_StateFWD(), and SelDFS().
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 XrdCms::Cache, DEBUG, XrdCmsCache::Drop(), XrdCmsNode::DropJob, XrdCmsNode::DropTime, XrdSysError::Emsg(), EPNAME, XrdCmsNode::Ident, XrdCmsNode::Inst(), XrdCmsNode::isBound, XrdCmsNode::isMan, XrdCmsNode::isOffline, XrdCmsNode::isPeer, XrdCmsNode::NodeMask, XrdCms::Say, XrdCms::Sched, XrdScheduler::Schedule(), and strlcpy().
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 XrdCmsNode::myCNUM, XrdOucTList::next, XrdCmsNode::NodeMask, XrdOucTList::text, and XrdOucTList::val.
XrdCmsSelected * XrdCmsCluster::List | ( | SMask_t | mask, |
CmsLSOpts | opts | ||
) |
References XrdCms::Config, XrdCmsSelected::Disable, XrdCmsNode::DiskUtil, XrdCmsNode::IPAddr, XrdCmsNode::IPV6, XrdCmsNode::IPV6Len, XrdCmsSelected::IPV6Len, XrdCmsNode::isDisable, XrdCmsNode::isMan, XrdCmsSelected::isMangr, XrdCmsNode::isNoStage, XrdCmsNode::isOffline, XrdCmsSelected::isPeer, XrdCmsNode::isPeer, XrdCmsSelected::isProxy, XrdCmsNode::isProxy, XrdCmsSelected::isRW, XrdCmsNode::isRW, XrdCmsNode::isSuspend, XrdCmsNode::myLoad, XrdCmsNode::Name(), XrdCmsNode::NodeID, XrdCmsNode::NodeMask, XrdCmsSelected::NoStage, XrdCmsSelected::Offline, XrdCmsNode::Port, XrdCmsNode::RefA, XrdCmsNode::RefR, XrdCmsNode::RefTotA, XrdCmsNode::RefTotR, XrdCmsConfig::sched_RR, XrdCmsSelected::Suspend, and XrdCmsNode::UnLock().
Referenced by XrdCmsNode::do_Locate(), and XrdCmsRRQ::sendLocResp().
int XrdCmsCluster::Locate | ( | XrdCmsSelect & | Sel | ) |
References XrdCmsCache::AddFile(), XrdCmsSelect::bf, Broadcast(), XrdCms::Cache, XrdCms::Cluster, EPNAME, XrdCmsPList_Anchor::Find(), XrdCmsCache::GetFile(), XrdCmsKey::Hash, XrdCms::CmsStateRequest::Hdr, XrdCmsSelect::hf, XrdCmsSelect::InfoP, XrdCmsRRQInfo::isLU, XrdCms::kYR_raw, XrdCms::CmsStateRequest::kYR_refresh, XrdCms::kYR_state, XrdCmsKey::Len, XrdCms::CmsRRHdr::modifier, XrdCmsSelect::Opts, XrdCmsSelect::Path, Path, XrdCmsCache::Paths, XrdCmsSelect::pf, XrdCmsSelect::Refresh, XrdCmsPInfo::rovec, XrdCmsRRQInfo::rwVec, XrdCmsPInfo::rwvec, TRACE, XrdCmsCache::UnkFile(), XrdCmsKey::Val, XrdCmsSelect::Vec, XrdCmsSelect::wf, and XrdCmsCache::WT4File().
Referenced by XrdCmsNode::do_Locate().
void * XrdCmsCluster::MonPerf | ( | ) |
References XrdCmsConfig::AskPerf, XrdCmsConfig::AskPing, XrdCms::Config, XrdCms::kYR_usage, XrdSysTimer::Snooze(), and Usage().
Referenced by XrdCmsStartMonPerf().
void * XrdCmsCluster::MonRefs | ( | ) |
int XrdCmsCluster::Multiple | ( | SMask_t | mVec | ) | [private] |
void XrdCmsCluster::Record | ( | char * | path, |
const char * | reason | ||
) | [private] |
References DEBUG, XrdSysError::Emsg(), EPNAME, XrdSysMutex::Lock(), XrdCms::Say, and XrdSysMutex::UnLock().
void XrdCmsCluster::Remove | ( | const char * | reason, |
XrdCmsNode * | theNode, | ||
int | immed = 0 |
||
) |
References XrdCmsConfig::asManager(), XrdCms::CmsState, XrdCms::Config, XrdCmsState::Counts, DEBUG, XrdCmsNode::Disc(), XrdCmsNode::DropJob, XrdCmsNode::DropTime, XrdCmsConfig::DRPDelay, XrdSysError::Emsg(), EPNAME, XrdCmsNode::ID(), XrdCmsNode::Ident, XrdCmsNode::isBound, XrdCmsNode::isConn, XrdCmsNode::isGone, XrdCmsNode::isNoStage, XrdCmsNode::isOffline, XrdCmsNode::isSuspend, XrdCmsDrop::nodeInst, XrdCms::Say, and XrdCmsState::Update().
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::allowsSS, XrdCms::Config, XrdCmsNode::DiskFree, XrdCmsConfig::DiskLinger, XrdCmsNode::DiskMinF, XrdCmsNode::isDisable, XrdCmsNode::isNoStage, XrdCmsNode::isOffline, XrdCmsNode::isSuspend, XrdCmsNode::Lock(), XrdCmsConfig::MaxLoad, XrdCmsNode::myLoad, XrdCmsNode::myMass, XrdCmsNode::NodeMask, XrdCmsConfig::P_fuzz, XrdCmsNode::RefA, and XrdCmsNode::RefR.
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 XrdCmsCache::AddFile(), XrdCms::baseFS, XrdCmsSelect::bf, Broadsend(), XrdCms::Cache, XrdCms::Cluster, EPNAME, XrdCmsBaseFS::Exists(), XrdCmsCache::GetFile(), XrdCmsKey::Hash, XrdCms::CmsStateRequest::Hdr, XrdCmsSelect::hf, XrdCms::kYR_raw, XrdCms::kYR_state, XrdCmsKey::Len, XrdCmsBaseFS::Local(), XrdCmsSelect::NewFile, XrdCmsSelect::Online, XrdCmsSelect::Opts, XrdCmsSelect::Path, XrdCmsSelect::Pending, XrdCms::CmsHaveRequest::Pending, XrdCmsSelect::pf, XrdCmsSelect::Refresh, TRACE, XrdCmsSelect::Trunc, XrdCmsKey::Val, XrdCmsSelect::Vec, and XrdCmsSelect::wf.
int XrdCmsCluster::Select | ( | XrdCmsSelect & | Sel | ) |
References XrdCmsCache::AddFile(), XrdCms::baseFS, XrdCmsSelect::bf, Broadcast(), XrdCms::Cache, XrdCms::Cluster, XrdCms::Config, XrdCmsSelect::Create, XrdCmsSelect::Data, XrdCmsSelect::Defer, XrdCmsSelect::DLen, EPNAME, XrdCmsPList_Anchor::Find(), XrdCmsSelect::Freshen, XrdCmsCache::GetFile(), XrdCmsKey::Hash, XrdCms::CmsStateRequest::Hdr, XrdCmsSelect::hf, XrdCmsBaseFS::isDFS(), XrdCmsSelect::isMeta, XrdCms::CmsStateRequest::kYR_noresp, XrdCms::kYR_raw, XrdCms::CmsStateRequest::kYR_refresh, XrdCms::kYR_state, XrdCmsKey::Len, XrdCmsConfig::LUPDelay, XrdCms::CmsRRHdr::modifier, XrdCmsSelect::NewFile, XrdCmsSelect::nmask, XrdCmsSelect::Online, XrdCmsSelect::Opts, XrdCmsSelect::Path, XrdCmsCache::Paths, XrdCmsSelect::pf, XrdCmsSelect::Refresh, XrdCmsSelect::Replica, XrdCmsSelect::Resp, XrdCmsPInfo::rovec, XrdCmsConfig::RWDelay, XrdCmsPInfo::rwvec, snprintf, XrdCmsPInfo::ssvec, TRACE, XrdCmsBaseFS::Trim(), XrdCmsSelect::Trunc, XrdCmsCache::UnkFile(), XrdCmsKey::Val, XrdCmsSelect::Vec, XrdCmsSelect::Write, and XrdCmsCache::WT4File().
Referenced by XrdCmsNode::do_Mv(), XrdCmsNode::do_Select(), XrdCmsNode::do_SelPrep(), and XrdCmsRRQ::Respond().
int XrdCmsCluster::Select | ( | int | isrw, |
SMask_t | pmask, | ||
int & | port, | ||
char * | hbuff, | ||
int & | hlen | ||
) |
References XrdCms::baseFS, XrdCms::Config, XrdCmsNode::DiskFree, XrdCmsNode::DiskMinF, XrdCmsBaseFS::isDFS(), XrdCmsNode::isDisable, XrdCmsNode::isNoStage, XrdCmsNode::isOffline, XrdCmsNode::isSuspend, XrdCmsNode::Lock(), XrdCmsConfig::MaxLoad, XrdCmsNode::myLoad, XrdCmsNode::Name(), XrdCmsNode::RefR, XrdCmsConfig::sched_RR, and XrdCmsNode::UnLock().
int XrdCmsCluster::SelFail | ( | XrdCmsSelect & | Sel, |
int | rc | ||
) | [private] |
References XrdCmsSelect::Data, XrdCmsSelect::DLen, XrdCmsSelect::Resp, and strlcpy().
int XrdCmsCluster::SelNode | ( | XrdCmsSelect & | Sel, |
SMask_t | pmask, | ||
SMask_t | amask | ||
) | [private] |
References XrdCmsCache::AddFile(), XrdCmsSelect::Advisory, XrdCmsNode::allowsRW, XrdCmsNode::allowsSS, XrdCms::Cache, XrdCms::Config, XrdCmsSelect::Create, XrdCmsSelect::Data, XrdCmsSelect::DLen, EPNAME, XrdCmsSelect::iovN, XrdCmsSelect::iovP, XrdCmsSelect::isMeta, XrdCmsNode::Lock(), XrdCmsNode::Name(), XrdCmsSelect::noBind, XrdCmsNode::NodeMask, XrdCmsSelect::Opts, XrdCmsSelect::Path, XrdCmsSelect::Peers, XrdCmsSelect::Pending, XrdCmsSelect::Port, XrdCmsConfig::PSDelay, XrdCmsSelect::Resp, XrdCmsConfig::sched_RR, XrdCmsNode::Send(), XrdCmsSelect::smask, XrdCmsConfig::SUPCount, XrdCmsConfig::SUPDelay, TRACE, XrdCmsNode::UnLock(), XrdCmsKey::Val, and XrdCmsSelect::Write.
void XrdCmsCluster::sendAList | ( | XrdLink * | lp | ) | [private] |
void XrdCmsCluster::setAltMan | ( | int | snum, |
unsigned int | ipaddr, | ||
int | port | ||
) | [private] |
References XrdCms::Config, XrdNetDNS::IP2String(), and XrdCmsConfig::PortTCP.
void XrdCmsCluster::Space | ( | XrdCms::SpaceData & | sData, |
SMask_t | smask | ||
) |
References XrdCmsNode::allowsRW, XrdCmsNode::DiskFree, XrdCmsNode::DiskMinF, XrdCmsNode::DiskTotal, XrdCmsNode::DiskUtil, XrdCmsNode::isNode(), XrdCmsNode::isOffline, XrdCmsNode::isRW, XrdCmsNode::Lock(), XrdCms::SpaceData::sFree, XrdCms::SpaceData::sNum, XrdCms::SpaceData::sUtil, XrdCms::SpaceData::Total, XrdCms::SpaceData::wFree, XrdCms::SpaceData::wMinF, XrdCms::SpaceData::wNum, and XrdCms::SpaceData::wUtil.
Referenced by XrdCmsNode::do_StatFS(), and XrdCmsMeter::UpdtSpace().
int XrdCmsCluster::Stats | ( | char * | bfr, |
int | bln | ||
) |
References XrdCms::Config, XrdCmsSelected::Disable, XrdCmsSelected::Free, FULLMASK, XrdCmsSelected::Load, XrdCmsConfig::myName, XrdCmsSelected::Name, XrdCmsSelected::next, XrdCmsSelected::NoStage, XrdCmsSelected::Offline, XrdCmsSelected::RefTotA, XrdCmsSelected::RefTotR, snprintf, stat(), XrdCmsSelected::Status, STMax, and XrdCmsSelected::Suspend.
Referenced by XrdCmsNode::do_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] |
int XrdCmsCluster::SelAcnt [private] |
int XrdCmsCluster::SelRcnt [private] |
int XrdCmsCluster::STHi [private] |
XrdSysMutex XrdCmsCluster::STMutex [private] |
Referenced by XrdCmsDrop::DoIt().
XrdSysMutex XrdCmsCluster::XXMutex [private] |