/* If this function returns false, the mdr has been placed
* on the appropriate wait list */
-bool Locker::acquire_locks(MDRequest *mdr,
+bool Locker::acquire_locks(MDRequestRef& mdr,
set<SimpleLock*> &rdlocks,
set<SimpleLock*> &wrlocks,
set<SimpleLock*> &xlocks,
return false;
}
-bool Locker::rdlock_start(SimpleLock *lock, MDRequest *mut, bool as_anon)
+bool Locker::rdlock_start(SimpleLock *lock, MDRequestRef& mut, bool as_anon)
{
dout(7) << "rdlock_start on " << *lock << " on " << *lock->get_parent() << dendl;
mut->locks.insert(lock);
}
-bool Locker::wrlock_start(SimpleLock *lock, MDRequest *mut, bool nowait)
+bool Locker::wrlock_start(SimpleLock *lock, MDRequestRef& mut, bool nowait)
{
if (lock->get_type() == CEPH_LOCK_IVERSION ||
lock->get_type() == CEPH_LOCK_DVERSION)
// remote wrlock
-void Locker::remote_wrlock_start(SimpleLock *lock, int target, MDRequest *mut)
+void Locker::remote_wrlock_start(SimpleLock *lock, int target, MDRequestRef& mut)
{
dout(7) << "remote_wrlock_start mds." << target << " on " << *lock << " on " << *lock->get_parent() << dendl;
// ------------------
// xlock
-bool Locker::xlock_start(SimpleLock *lock, MDRequest *mut)
+bool Locker::xlock_start(SimpleLock *lock, MDRequestRef& mut)
{
if (lock->get_type() == CEPH_LOCK_IVERSION ||
lock->get_type() == CEPH_LOCK_DVERSION)
}
};
-void Locker::process_request_cap_release(MDRequest *mdr, client_t client, const ceph_mds_request_release& item,
+void Locker::process_request_cap_release(MDRequestRef& mdr, client_t client, const ceph_mds_request_release& item,
const string &dname)
{
inodeno_t ino = (uint64_t)item.ino;
issue_caps(in, cap);
}
-void Locker::kick_cap_releases(MDRequest *mdr)
+void Locker::kick_cap_releases(MDRequestRef& mdr)
{
client_t client = mdr->get_client();
for (map<vinodeno_t,ceph_seq_t>::iterator p = mdr->cap_releases.begin();
mut->locks.insert(lock);
}
-bool Locker::local_wrlock_start(LocalLock *lock, MDRequest *mut)
+bool Locker::local_wrlock_start(LocalLock *lock, MDRequestRef& mut)
{
dout(7) << "local_wrlock_start on " << *lock
<< " on " << *lock->get_parent() << dendl;
}
}
-bool Locker::local_xlock_start(LocalLock *lock, MDRequest *mut)
+bool Locker::local_xlock_start(LocalLock *lock, MDRequestRef& mut)
{
dout(7) << "local_xlock_start on " << *lock
<< " on " << *lock->get_parent() << dendl;
void include_snap_rdlocks_wlayout(set<SimpleLock*>& rdlocks, CInode *in,
ceph_file_layout **layout);
- bool acquire_locks(MDRequest *mdr,
+ bool acquire_locks(MDRequestRef& mdr,
set<SimpleLock*> &rdlocks,
set<SimpleLock*> &wrlocks,
set<SimpleLock*> &xlocks,
bool _rdlock_kick(SimpleLock *lock, bool as_anon);
bool rdlock_try(SimpleLock *lock, client_t client, Context *c);
- bool rdlock_start(SimpleLock *lock, MDRequest *mut, bool as_anon=false);
+ bool rdlock_start(SimpleLock *lock, MDRequestRef& mut, bool as_anon=false);
void rdlock_finish(SimpleLock *lock, Mutation *mut, bool *pneed_issue);
bool can_rdlock_set(set<SimpleLock*>& locks);
bool rdlock_try_set(set<SimpleLock*>& locks);
void rdlock_take_set(set<SimpleLock*>& locks, Mutation *mut);
void wrlock_force(SimpleLock *lock, Mutation *mut);
- bool wrlock_start(SimpleLock *lock, MDRequest *mut, bool nowait=false);
+ bool wrlock_start(SimpleLock *lock, MDRequestRef& mut, bool nowait=false);
void wrlock_finish(SimpleLock *lock, Mutation *mut, bool *pneed_issue);
- void remote_wrlock_start(SimpleLock *lock, int target, MDRequest *mut);
+ void remote_wrlock_start(SimpleLock *lock, int target, MDRequestRef& mut);
void remote_wrlock_finish(SimpleLock *lock, int target, Mutation *mut);
- bool xlock_start(SimpleLock *lock, MDRequest *mut);
+ bool xlock_start(SimpleLock *lock, MDRequestRef& mut);
void _finish_xlock(SimpleLock *lock, client_t xlocker, bool *pneed_issue);
void xlock_finish(SimpleLock *lock, Mutation *mut, bool *pneed_issue);
// process_request_cap_release to preserve ordering.
bool should_defer_client_cap_frozen(CInode *in);
- void process_request_cap_release(MDRequest *mdr, client_t client, const ceph_mds_request_release& r,
+ void process_request_cap_release(MDRequestRef& mdr, client_t client, const ceph_mds_request_release& r,
const string &dname);
- void kick_cap_releases(MDRequest *mdr);
+ void kick_cap_releases(MDRequestRef& mdr);
void kick_issue_caps(CInode *in, client_t client, ceph_seq_t seq);
void remove_client_cap(CInode *in, client_t client);
public:
void local_wrlock_grab(LocalLock *lock, Mutation *mut);
protected:
- bool local_wrlock_start(LocalLock *lock, MDRequest *mut);
+ bool local_wrlock_start(LocalLock *lock, MDRequestRef& mut);
void local_wrlock_finish(LocalLock *lock, Mutation *mut);
- bool local_xlock_start(LocalLock *lock, MDRequest *mut);
+ bool local_xlock_start(LocalLock *lock, MDRequestRef& mut);
void local_xlock_finish(LocalLock *lock, Mutation *mut);