dout(10) << " freezing srci " << *srcdnl->get_inode() << " with allowance " << allowance << dendl;
bool frozen_inode = srcdnl->get_inode()->freeze_inode(allowance);
- // unfreeze auth pin after freezing the inode to avoid queueing waiters
- if (srcdnl->get_inode()->is_frozen_auth_pin())
- mdr->unfreeze_auth_pin();
-
if (!frozen_inode) {
- srcdnl->get_inode()->add_waiter(CInode::WAIT_FROZEN, new C_MDS_RetryRequest(mdcache, mdr));
- return;
+ srcdnl->get_inode()->add_waiter(CInode::WAIT_FROZEN, new C_MDS_RetryRequest(mdcache, mdr));
+ return;
}
+ // unfreeze auth pin after freezing the inode to avoid queueing waiters
+ if (srcdnl->get_inode()->is_frozen_auth_pin())
+ mdr->unfreeze_auth_pin();
+
/*
* set ambiguous auth for srci
* NOTE: we don't worry about ambiguous cache expire as we do