bool P3ReplicationGroup::removeReplica(UUIDPtr& uuid) { ACE_GUARD_RETURN(ACE_SYNCH_RECURSIVE_MUTEX, mon, m_lock, false); if (isThisPeer(uuid)) { //Removing ourselfs //clear the group and notify FT close(); m_ft->onReplicationGroupClose(getGroupUUID()); return true; } m_clientControlManager.remove(uuid); m_clientDataManager.remove(uuid); bool flag = false; list<OverlayPeerInfoPtr>::iterator iter = m_replicas.begin(); while (iter != m_replicas.end()) { if ((*iter)->getUUID()->isEqual(uuid)) { m_replicas.erase(iter); flag = true; break; } iter++; } return flag; }
bool AppleLVMVolume::initWithHeader(OSDictionary * props) { IOLog1("AppleLVMVolume::initWithHeader() entered\n"); if (lvProps) lvProps->release(); lvProps = props; lvProps->retain(); if (!getVolumeUUID()) return false; if (!getGroupUUID()) return false; OSNumber * number; number = OSDynamicCast(OSNumber, lvProps->getObject(kAppleLVMVolumeSequenceKey)); if (!number) return false; lvSequenceNumber = number->unsigned32BitValue(); number = OSDynamicCast(OSNumber, lvProps->getObject(kAppleLVMVolumeExtentCountKey)); if (!number) return false; lvExtentCount = number->unsigned64BitValue(); number = OSDynamicCast(OSNumber, lvProps->getObject(kAppleLVMVolumeSizeKey)); if (!number) return false; lvClaimedSize = number->unsigned64BitValue(); OSString * type = OSDynamicCast(OSString, lvProps->getObject(kAppleLVMVolumeTypeKey)); if (!type) return false; if (type->isEqualTo(kAppleLVMVolumeTypeConcat)) lvTypeID = kLVMTypeConcat; if (type->isEqualTo(kAppleLVMVolumeTypeBitMap)) lvTypeID = kLVMTypeBitMap; if (type->isEqualTo(kAppleLVMVolumeTypeSnapRO)) lvTypeID = kLVMTypeSnapRO; if (type->isEqualTo(kAppleLVMVolumeTypeSnapRW)) lvTypeID = kLVMTypeSnapRW; if (type->isEqualTo(kAppleLVMVolumeTypeMaster)) lvTypeID = kLVMTypeMaster; if (!lvTypeID) return false; lvSnapShot = NULL; // just clear these, they might not exist yet. lvBitMap = NULL; lvParent = NULL; IOLog1("AppleLVMVolume::initWithHeader() successful for %s, size = %llu extent count = %llu\n", getVolumeUUIDString(), lvClaimedSize, lvExtentCount); return true; }