Project

General

Profile

Bug #4679 » 0001-mds-pass-proper-mask-to-CInode-get_caps_issued.patch

Zheng Yan, 04/12/2013 01:08 AM

View differences:

src/mds/CInode.h
// caps issued, wanted
int get_caps_issued(int *ploner = 0, int *pother = 0, int *pxlocker = 0,
int shift = 0, int mask = 0xffff);
int shift = 0, int mask = -1);
bool is_any_caps_wanted();
int get_caps_wanted(int *ploner = 0, int *pother = 0, int shift = 0, int mask = 0xffff);
int get_caps_wanted(int *ploner = 0, int *pother = 0, int shift = 0, int mask = -1);
bool issued_caps_need_gather(SimpleLock *lock);
void replicate_relax_locks();
src/mds/Locker.cc
int loner_issued = 0, other_issued = 0, xlocker_issued = 0;
if (caps && in->is_head()) {
in->get_caps_issued(&loner_issued, &other_issued, &xlocker_issued, lock->get_cap_shift(), 3);
in->get_caps_issued(&loner_issued, &other_issued, &xlocker_issued,
lock->get_cap_shift(), lock->get_cap_mask());
dout(10) << " next state is " << lock->get_state_name(next)
<< " issued/allows loner " << gcap_string(loner_issued)
<< "/" << gcap_string(lock->gcaps_allowed(CAP_LONER, next))
(2-2/5)