// inter-mds locking
case MSG_MDS_LOCK:
- handle_lock((MLock*)m);
+ handle_lock(static_cast<MLock*>(m));
break;
// inter-mds caps
case MSG_MDS_INODEFILECAPS:
- handle_inode_file_caps((MInodeFileCaps*)m);
+ handle_inode_file_caps(static_cast<MInodeFileCaps*>(m));
break;
// client sync
case CEPH_MSG_CLIENT_CAPS:
- handle_client_caps((MClientCaps*)m);
+ handle_client_caps(static_cast<MClientCaps*>(m));
break;
case CEPH_MSG_CLIENT_CAPRELEASE:
- handle_client_cap_release((MClientCapRelease*)m);
+ handle_client_cap_release(static_cast<MClientCapRelease*>(m));
break;
case CEPH_MSG_CLIENT_LEASE:
- handle_client_lease((MClientLease*)m);
+ handle_client_lease(static_cast<MClientLease*>(m));
break;
default:
else
rdlock_finish(stray, mdr, &need_issue);
if (need_issue)
- issue_set.insert((CInode*)stray->get_parent());
+ issue_set.insert(static_cast<CInode*>(stray->get_parent()));
}
// lock
else
rdlock_finish(stray, mdr, &need_issue);
if (need_issue)
- issue_set.insert((CInode*)stray->get_parent());
+ issue_set.insert(static_cast<CInode*>(stray->get_parent()));
}
mdr->done_locking = true;
MDSCacheObject *p = (*mut->rdlocks.begin())->get_parent();
rdlock_finish(*mut->rdlocks.begin(), mut, &ni);
if (ni)
- pneed_issue->insert((CInode*)p);
+ pneed_issue->insert(static_cast<CInode*>(p));
}
}
bool ni = false;
xlock_finish(lock, mut, &ni);
if (ni)
- pneed_issue->insert((CInode*)p);
+ pneed_issue->insert(static_cast<CInode*>(p));
}
while (!mut->remote_wrlocks.empty()) {
MDSCacheObject *p = (*mut->wrlocks.begin())->get_parent();
wrlock_finish(*mut->wrlocks.begin(), mut, &ni);
if (ni)
- pneed_issue->insert((CInode*)p);
+ pneed_issue->insert(static_cast<CInode*>(p));
}
for (set<int>::iterator p = slaves.begin(); p != slaves.end(); p++) {
if (lock->is_stable())
eval(lock, &need_issue);
if (need_issue)
- pneed_issue->insert((CInode *)lock->get_parent());
+ pneed_issue->insert(static_cast<CInode *>(lock->get_parent()));
}
} else {
lock->finish_waiters(SimpleLock::WAIT_REMOTEXLOCK);
CInode *in = 0;
bool caps = lock->get_cap_shift();
if (lock->get_type() != CEPH_LOCK_DN)
- in = (CInode *)lock->get_parent();
+ in = static_cast<CInode *>(lock->get_parent());
bool need_issue = false;
lock->encode_locked_state(reply->get_data());
mds->send_message_mds(reply, auth);
next = LOCK_MIX_SYNC2;
- ((ScatterLock *)lock)->start_flush();
+ (static_cast<ScatterLock *>(lock))->start_flush();
}
break;
case LOCK_MIX_SYNC2:
- ((ScatterLock *)lock)->finish_flush();
- ((ScatterLock *)lock)->clear_flushed();
+ (static_cast<ScatterLock *>(lock))->finish_flush();
+ (static_cast<ScatterLock *>(lock))->clear_flushed();
case LOCK_SYNC_MIX2:
// do nothing, we already acked
bufferlist data;
lock->encode_locked_state(data);
mds->send_message_mds(new MLock(lock, LOCK_AC_LOCKACK, mds->get_nodeid(), data), auth);
- ((ScatterLock *)lock)->start_flush();
+ (static_cast<ScatterLock *>(lock))->start_flush();
// we'll get an AC_LOCKFLUSHED to complete
}
break;
}
if (lock->is_dirty() && !lock->is_flushed()) {
- scatter_writebehind((ScatterLock*)lock);
+ scatter_writebehind(static_cast<ScatterLock *>(lock));
mds->mdlog->flush();
return;
}
case LOCK_TSYN_MIX:
case LOCK_SYNC_MIX:
case LOCK_EXCL_MIX:
- in->start_scatter((ScatterLock *)lock);
+ in->start_scatter(static_cast<ScatterLock *>(lock));
if (lock->get_parent()->is_replicated()) {
bufferlist softdata;
lock->encode_locked_state(softdata);
send_lock_message(lock, LOCK_AC_MIX, softdata);
}
- ((ScatterLock*)lock)->clear_scatter_wanted();
+ (static_cast<ScatterLock *>(lock))->clear_scatter_wanted();
break;
// to sync
if (mask & CEPH_LOCK_DN) {
assert(mask == CEPH_LOCK_DN);
bool need_issue = false; // ignore this, no caps on dentries
- CDentry *dn = (CDentry *)p;
+ CDentry *dn = static_cast<CDentry *>(p);
eval_any(&dn->lock, &need_issue);
} else {
- CInode *in = (CInode *)p;
+ CInode *in = static_cast<CInode *>(p);
eval(in, mask);
}
}
* checks above due to the auth_pin held by the master.
*/
if (lock->is_scatterlock()) {
- ScatterLock *slock = (ScatterLock *)lock;
+ ScatterLock *slock = static_cast<ScatterLock *>(lock);
if (slock->get_scatter_wanted() &&
slock->get_state() != LOCK_MIX) {
scatter_mix(slock, pneed_issue);
{
switch (lock->get_type()) {
case CEPH_LOCK_IFILE:
- return file_eval((ScatterLock*)lock, need_issue);
+ return file_eval(static_cast<ScatterLock*>(lock), need_issue);
case CEPH_LOCK_IDFT:
case CEPH_LOCK_INEST:
- return scatter_eval((ScatterLock*)lock, need_issue);
+ return scatter_eval(static_cast<ScatterLock*>(lock), need_issue);
default:
return simple_eval(lock, need_issue);
}
//else
simple_sync(lock);
} else if (lock->get_sm() == &sm_filelock) {
- CInode *in = (CInode*)lock->get_parent();
+ CInode *in = static_cast<CInode*>(lock->get_parent());
if (lock->get_state() == LOCK_EXCL &&
in->get_target_loner() >= 0 &&
!as_anon) // as_anon => caller wants SYNC, not XSYN
CInode *in = 0;
if (lock->get_type() != CEPH_LOCK_DN)
- in = (CInode *)lock->get_parent();
+ in = static_cast<CInode *>(lock->get_parent());
/*
if (!lock->get_parent()->is_auth() &&
{
if (lock->get_type() == CEPH_LOCK_IVERSION ||
lock->get_type() == CEPH_LOCK_DVERSION)
- return local_wrlock_grab((LocalLock*)lock, mut);
+ return local_wrlock_grab(static_cast<LocalLock*>(lock), mut);
dout(7) << "wrlock_force on " << *lock
<< " on " << *lock->get_parent() << dendl;
{
if (lock->get_type() == CEPH_LOCK_IVERSION ||
lock->get_type() == CEPH_LOCK_DVERSION)
- return local_wrlock_start((LocalLock*)lock, mut);
+ return local_wrlock_start(static_cast<LocalLock*>(lock), mut);
dout(10) << "wrlock_start " << *lock << " on " << *lock->get_parent() << dendl;
bool want_scatter = lock->get_parent()->is_auth() &&
((CInode*)lock->get_parent())->has_subtree_root_dirfrag();
- CInode *in = (CInode *)lock->get_parent();
+ CInode *in = static_cast<CInode *>(lock->get_parent());
client_t client = mut->get_client();
while (1) {
return false;
if (want_scatter)
- scatter_mix((ScatterLock*)lock);
+ scatter_mix(static_cast<ScatterLock*>(lock));
else
simple_lock(lock);
{
if (lock->get_type() == CEPH_LOCK_IVERSION ||
lock->get_type() == CEPH_LOCK_DVERSION)
- return local_wrlock_finish((LocalLock*)lock, mut);
+ return local_wrlock_finish(static_cast<LocalLock*>(lock), mut);
dout(7) << "wrlock_finish on " << *lock << " on " << *lock->get_parent() << dendl;
lock->put_wrlock();
{
if (lock->get_type() == CEPH_LOCK_IVERSION ||
lock->get_type() == CEPH_LOCK_DVERSION)
- return local_xlock_start((LocalLock*)lock, mut);
+ return local_xlock_start(static_cast<LocalLock*>(lock), mut);
dout(7) << "xlock_start on " << *lock << " on " << *lock->get_parent() << dendl;
client_t client = mut->get_client();
void Locker::_finish_xlock(SimpleLock *lock, bool *pneed_issue)
{
assert(!lock->is_stable());
- if (lock->get_type() != CEPH_LOCK_DN && ((CInode*)lock->get_parent())->get_loner() >= 0)
+ if (lock->get_type() != CEPH_LOCK_DN && (static_cast<CInode*>(lock->get_parent())->get_loner()) >= 0)
lock->set_state(LOCK_EXCL);
else
lock->set_state(LOCK_LOCK);
{
if (lock->get_type() == CEPH_LOCK_IVERSION ||
lock->get_type() == CEPH_LOCK_DVERSION)
- return local_xlock_finish((LocalLock*)lock, mut);
+ return local_xlock_finish(static_cast<LocalLock*>(lock), mut);
dout(10) << "xlock_finish on " << *lock << " " << *lock->get_parent() << dendl;
try_eval(lock, &do_issue);
if (do_issue) {
- CInode *in = (CInode*)lock->get_parent();
+ CInode *in = static_cast<CInode*>(lock->get_parent());
if (in->is_head()) {
if (pneed_issue)
*pneed_issue = true;
while (!p.end()) {
ClientLease *l = *p;
++p;
- CDentry *parent = (CDentry*)l->parent;
+ CDentry *parent = static_cast<CDentry*>(l->parent);
dout(15) << " removing lease on " << *parent << dendl;
parent->remove_client_lease(l, this);
}
void Locker::revoke_client_leases(SimpleLock *lock)
{
int n = 0;
- CDentry *dn = (CDentry*)lock->get_parent();
+ CDentry *dn = static_cast<CDentry*>(lock->get_parent());
for (map<client_t, ClientLease*>::iterator p = dn->client_lease_map.begin();
p != dn->client_lease_map.end();
p++) {
n++;
assert(lock->get_type() == CEPH_LOCK_DN);
- CDentry *dn = (CDentry*)lock->get_parent();
+ CDentry *dn = static_cast<CDentry*>(lock->get_parent());
int mask = 1 | CEPH_LOCK_DN; // old and new bits
// i should also revoke the dir ICONTENT lease, if they have it!
//break;
case CEPH_LOCK_IFILE:
- handle_file_lock((ScatterLock*)lock, m);
+ handle_file_lock(static_cast<ScatterLock*>(lock), m);
break;
default:
CInode *in = 0;
int wanted = 0;
if (lock->get_type() != CEPH_LOCK_DN) {
- in = (CInode*)lock->get_parent();
+ in = static_cast<CInode*>(lock->get_parent());
in->get_caps_wanted(&wanted, NULL, lock->get_cap_shift());
}
CInode *in = 0;
if (lock->get_cap_shift())
- in = (CInode *)lock->get_parent();
+ in = static_cast<CInode *>(lock->get_parent());
int old_state = lock->get_state();
if (!gather && lock->is_dirty()) {
lock->get_parent()->auth_pin(lock);
- scatter_writebehind((ScatterLock*)lock);
+ scatter_writebehind(static_cast<ScatterLock*>(lock));
mds->mdlog->flush();
return false;
}
CInode *in = 0;
if (lock->get_cap_shift())
- in = (CInode *)lock->get_parent();
+ in = static_cast<CInode *>(lock->get_parent());
switch (lock->get_state()) {
case LOCK_SCAN:
CInode *in = 0;
if (lock->get_cap_shift())
- in = (CInode *)lock->get_parent();
+ in = static_cast<CInode *>(lock->get_parent());
int old_state = lock->get_state();
case LOCK_SCAN: lock->set_state(LOCK_SCAN_LOCK); break;
case LOCK_SYNC: lock->set_state(LOCK_SYNC_LOCK); break;
case LOCK_XSYN:
- file_excl((ScatterLock*)lock, need_issue);
+ file_excl(static_cast<ScatterLock*>(lock), need_issue);
if (lock->get_state() != LOCK_EXCL)
return;
// fall-thru
case LOCK_EXCL: lock->set_state(LOCK_EXCL_LOCK); break;
case LOCK_MIX: lock->set_state(LOCK_MIX_LOCK);
- ((ScatterLock *)lock)->clear_unscatter_wanted();
+ (static_cast<ScatterLock *>(lock))->clear_unscatter_wanted();
break;
case LOCK_TSYN: lock->set_state(LOCK_TSYN_LOCK); break;
default: assert(0);
if (!gather && lock->is_dirty()) {
lock->get_parent()->auth_pin(lock);
- scatter_writebehind((ScatterLock*)lock);
+ scatter_writebehind(static_cast<ScatterLock*>(lock));
mds->mdlog->flush();
return;
}
CInode *in = 0;
if (lock->get_cap_shift())
- in = (CInode *)lock->get_parent();
+ in = static_cast<CInode *>(lock->get_parent());
if (lock->is_stable())
lock->get_parent()->auth_pin(lock);
void Locker::scatter_writebehind(ScatterLock *lock)
{
- CInode *in = (CInode*)lock->get_parent();
+ CInode *in = static_cast<CInode*>(lock->get_parent());
dout(10) << "scatter_writebehind " << in->inode.mtime << " on " << *lock << " on " << *in << dendl;
// journal
void Locker::scatter_writebehind_finish(ScatterLock *lock, Mutation *mut)
{
- CInode *in = (CInode*)lock->get_parent();
+ CInode *in = static_cast<CInode*>(lock->get_parent());
dout(10) << "scatter_writebehind_finish on " << *lock << " on " << *in << dendl;
in->pop_and_dirty_projected_inode(mut->ls);
return;
}
- CInode *in = (CInode*)lock->get_parent();
+ CInode *in = static_cast<CInode*>(lock->get_parent());
if (!in->has_subtree_root_dirfrag() || in->is_base()) {
// i _should_ be sync.
if (!lock->is_wrlocked() &&
*/
void Locker::scatter_nudge(ScatterLock *lock, Context *c, bool forcelockchange)
{
- CInode *p = (CInode *)lock->get_parent();
+ CInode *p = static_cast<CInode *>(lock->get_parent());
if (p->is_frozen() || p->is_freezing()) {
dout(10) << "scatter_nudge waiting for unfreeze on " << *p << dendl;
switch (lock->get_type()) {
case CEPH_LOCK_IFILE:
if (p->is_replicated() && lock->get_state() != LOCK_MIX)
- scatter_mix((ScatterLock*)lock);
+ scatter_mix(static_cast<ScatterLock*>(lock));
else if (lock->get_state() != LOCK_LOCK)
- simple_lock((ScatterLock*)lock);
+ simple_lock(static_cast<ScatterLock*>(lock));
else
- simple_sync((ScatterLock*)lock);
+ simple_sync(static_cast<ScatterLock*>(lock));
break;
case CEPH_LOCK_IDFT:
assert(0 == "not fully implemented, at least not for filelock");
- CInode *in = (CInode *)lock->get_parent();
+ CInode *in = static_cast<CInode *>(lock->get_parent());
switch (lock->get_state()) {
case LOCK_SYNC: assert(0); // this shouldn't happen
void Locker::file_eval(ScatterLock *lock, bool *need_issue)
{
- CInode *in = (CInode*)lock->get_parent();
+ CInode *in = static_cast<CInode*>(lock->get_parent());
int loner_wanted, other_wanted;
int wanted = in->get_caps_wanted(&loner_wanted, &other_wanted, CEPH_CAP_SFILE);
dout(7) << "file_eval wanted=" << gcap_string(wanted)
{
dout(7) << "scatter_mix " << *lock << " on " << *lock->get_parent() << dendl;
- CInode *in = (CInode*)lock->get_parent();
+ CInode *in = static_cast<CInode*>(lock->get_parent());
assert(in->is_auth());
assert(lock->is_stable());
void Locker::file_excl(ScatterLock *lock, bool *need_issue)
{
- CInode *in = (CInode*)lock->get_parent();
+ CInode *in = static_cast<CInode*>(lock->get_parent());
dout(7) << "file_excl " << *lock << " on " << *lock->get_parent() << dendl;
assert(in->is_auth());
void Locker::file_xsyn(SimpleLock *lock, bool *need_issue)
{
dout(7) << "file_xsyn on " << *lock << " on " << *lock->get_parent() << dendl;
- CInode *in = (CInode *)lock->get_parent();
+ CInode *in = static_cast<CInode *>(lock->get_parent());
assert(in->is_auth());
assert(in->get_loner() >= 0 && in->mds_caps_wanted.empty());
void Locker::file_recover(ScatterLock *lock)
{
- CInode *in = (CInode *)lock->get_parent();
+ CInode *in = static_cast<CInode *>(lock->get_parent());
dout(7) << "file_recover " << *lock << " on " << *in << dendl;
assert(in->is_auth());
/* This function DOES put the passed message before returning */
void Locker::handle_file_lock(ScatterLock *lock, MLock *m)
{
- CInode *in = (CInode*)lock->get_parent();
+ CInode *in = static_cast<CInode*>(lock->get_parent());
int from = m->get_asker();
if (mds->is_rejoin()) {
break;
}
- ((ScatterLock *)lock)->finish_flush();
- ((ScatterLock *)lock)->clear_flushed();
+ (static_cast<ScatterLock *>(lock))->finish_flush();
+ (static_cast<ScatterLock *>(lock))->clear_flushed();
// ok
lock->decode_locked_state(m->get_data());
break;
case LOCK_AC_LOCKFLUSHED:
- ((ScatterLock *)lock)->finish_flush();
- ((ScatterLock *)lock)->clear_flushed();
+ (static_cast<ScatterLock *>(lock))->finish_flush();
+ (static_cast<ScatterLock *>(lock))->clear_flushed();
break;
case LOCK_AC_MIX: