ceph/src/messages
Yan, Zheng 0fa487585e mds: fix freeze inode deadlock
CInode::freeze_inode() is used in the case of cross authority rename.
Server::handle_slave_rename_prep() calls it to wait for all other
operations on source inode to complete. This happens after all locks
for the rename operation are acquired. But to acquire locks, we need
auth pin locks' parent objects first. So there is an ABBA deadlock
if someone auth pins the source inode after locks for rename are
acquired and before Server::handle_slave_rename_prep() is called.
The fix is freeze and auth pin the source inode at the same time.

This patch introduces CInode::freeze_auth_pin(), it waits for all
other MDRequests to release auth pins, then change the inode to
FROZENAUTHPIN state, this state prevents other MDRequests from
getting new auth pins.

Signed-off-by: Yan, Zheng <zheng.z.yan@intel.com>
2012-12-01 12:52:23 -08:00
..
MAuth.h
MAuthReply.h messages: uninit values 2012-09-28 13:18:05 -07:00
MBackfillReserve.h message: add missing print statement for REJECT message 2012-11-01 01:05:01 -07:00
MCacheExpire.h messages: uninit values 2012-09-28 13:18:05 -07:00
MClientCapRelease.h
MClientCaps.h
MClientLease.h
MClientReconnect.h
MClientReply.h messages: uninit values 2012-09-28 13:18:05 -07:00
MClientRequest.h messages/MClientRequest.h: remove twice included sys/types.h 2012-11-28 08:25:43 -08:00
MClientRequestForward.h messages: uninit values 2012-09-28 13:18:05 -07:00
MClientSession.h
MClientSnap.h
MCommand.h
MCommandReply.h
MDentryLink.h
MDentryUnlink.h
MDirUpdate.h
MDiscover.h
MDiscoverReply.h
MExportCaps.h
MExportCapsAck.h
MExportDir.h
MExportDirAck.h
MExportDirCancel.h
MExportDirDiscover.h
MExportDirDiscoverAck.h
MExportDirFinish.h
MExportDirNotify.h
MExportDirNotifyAck.h
MExportDirPrep.h
MExportDirPrepAck.h
MForward.h mon: avoid large pass by value in MForward 2012-09-29 01:35:36 -07:00
MGenericMessage.h
MGetPoolStats.h
MGetPoolStatsReply.h
MHeartbeat.h
MInodeFileCaps.h
MLock.h
MLog.h messages: MLog: make ctor's uuid argument a const 2012-11-27 20:00:44 +00:00
MLogAck.h
MMDSBeacon.h
MMDSCacheRejoin.h
MMDSFindIno.h
MMDSFindInoReply.h
MMDSFragmentNotify.h
MMDSLoadTargets.h
MMDSMap.h
MMDSResolve.h
MMDSResolveAck.h
MMDSSlaveRequest.h mds: fix freeze inode deadlock 2012-12-01 12:52:23 -08:00
MMDSTableRequest.h
MMonCommand.h
MMonCommandAck.h
MMonElection.h mon: share quorum features on election victory 2012-09-12 17:33:01 -07:00
MMonGetMap.h
MMonGetVersion.h
MMonGetVersionReply.h
MMonGlobalID.h
MMonJoin.h MMonJoin: avoid large pass by value 2012-09-28 13:18:06 -07:00
MMonMap.h mon: conditionally encode old monmap when peer lacks feature 2012-06-21 17:10:29 -07:00
MMonPaxos.h mon: include global versions in paxos, slurp messages 2012-09-12 17:33:00 -07:00
MMonProbe.h mon: include global versions in paxos, slurp messages 2012-09-12 17:33:00 -07:00
MMonSubscribe.h
MMonSubscribeAck.h
MOSDAlive.h
MOSDBoot.h MOSDBoot: fix compatibility with ~argonaut 2012-10-04 17:01:33 -07:00
MOSDFailure.h MOSDFailure: avoid big pass by value 2012-09-28 13:18:06 -07:00
MOSDMap.h
MOSDOp.h OSD: separate class caps from normal read/write 2012-10-04 18:36:07 -07:00
MOSDOpReply.h
MOSDPGBackfill.h OSD,PG,ObjectStore: handle messages with old hobject_t encoding 2012-06-21 17:10:29 -07:00
MOSDPGCreate.h
MOSDPGInfo.h PG: compound messages must carry epoch_sent for each part 2012-07-05 10:14:58 -07:00
MOSDPGLog.h OSD,PG,ObjectStore: handle messages with old hobject_t encoding 2012-06-21 17:10:29 -07:00
MOSDPGMissing.h OSD,PG,ObjectStore: handle messages with old hobject_t encoding 2012-06-21 17:10:29 -07:00
MOSDPGNotify.h PG: compound messages must carry epoch_sent for each part 2012-07-05 10:14:58 -07:00
MOSDPGQuery.h PG: compound messages must carry epoch_sent for each part 2012-07-05 10:14:58 -07:00
MOSDPGRemove.h
MOSDPGScan.h OSD,PG,ObjectStore: handle messages with old hobject_t encoding 2012-06-21 17:10:29 -07:00
MOSDPGTemp.h
MOSDPGTrim.h
MOSDPing.h
MOSDRepScrub.h osd: deep scrub, read file contents from disk and compare digest 2012-09-05 14:19:19 -07:00
MOSDScrub.h osd: deep scrub, read file contents from disk and compare digest 2012-09-05 14:19:19 -07:00
MOSDSubOp.h MOSDSubOp: set hobject_incorrect_pool in decode_payload 2012-07-02 09:49:52 -07:00
MOSDSubOpReply.h OSD,PG,ObjectStore: handle messages with old hobject_t encoding 2012-06-21 17:10:29 -07:00
MPGStats.h
MPGStatsAck.h
MPing.h
MPoolOp.h
MPoolOpReply.h
MRecoveryReserve.h message: add MRecoveryReserve 2012-11-01 01:05:01 -07:00
MRemoveSnaps.h
MRoute.h MRoute: avoid pass by value 2012-09-28 13:18:05 -07:00
MStatfs.h
MStatfsReply.h
MWatchNotify.h
PaxosServiceMessage.h