#ifndef MSGHELPERREPAIR_H_ #define MSGHELPERREPAIR_H_ #include #include #include #include #include #include #include #include class MsgHelperRepair { public: static FhgfsOpsErr setNodeState(NumNodeID node, TargetConsistencyState state); static void deleteDanglingDirEntries(NumNodeID node, bool isBuddyMirrored, FsckDirEntryList* dentries, FsckDirEntryList* failedDeletes, std::set& secondariesWithRepair); static void createDefDirInodes(NumNodeID node, bool isBuddyMirrored, const std::vector>& entries, FsckDirInodeList* createdInodes, std::set& secondariesWithRepair); static void correctInodeOwnersInDentry(NumNodeID node, bool isBuddyMirrored, FsckDirEntryList* dentries, NumNodeIDList* owners, FsckDirEntryList* failedCorrections, std::set& secondariesWithRepair); static void correctInodeOwners(NumNodeID node, bool isBuddyMirrored, FsckDirInodeList* dirInodes, FsckDirInodeList* failedCorrections, std::set& secondariesWithRepair); static void deleteFiles(NumNodeID node, bool isBuddyMirrored, FsckDirEntryList* dentries, FsckDirEntryList* failedDeletes); static void deleteChunks(Node& node, FsckChunkList* chunks, FsckChunkList* failedDeletes); static NodeHandle referenceLostAndFoundOwner(EntryInfo* outLostAndFoundEntryInfo); static bool createLostAndFound(NodeHandle& outReferencedNode, EntryInfo& outLostAndFoundEntryInfo); static void linkToLostAndFound(Node& lostAndFoundNode, EntryInfo* lostAndFoundInfo, FsckDirInodeList* dirInodes, FsckDirInodeList* failedInodes, FsckDirEntryList* createdDentries, std::set& secondariesWithRepair); static void linkToLostAndFound(Node& lostAndFoundNode, EntryInfo* lostAndFoundInfo, FsckFileInodeList* fileInodes, FsckFileInodeList* failedInodes, FsckDirEntryList* createdDentries, std::set& secondariesWithRepair); static void createContDirs(NumNodeID node, bool isBuddyMirrored, FsckDirInodeList* inodes, StringList* failedCreates, std::set& secondariesWithRepair); static void updateFileAttribs(NumNodeID node, bool isBuddyMirrored, FsckFileInodeList* inodes, FsckFileInodeList* failedUpdates, std::set& secondariesWithRepair); static void updateDirAttribs(NumNodeID node, bool isBuddyMirrored, FsckDirInodeList* inodes, FsckDirInodeList* failedUpdates, std::set& secondariesWithRepair); static void recreateFsIDs(NumNodeID node, bool isBuddyMirrored, FsckDirEntryList* dentries, FsckDirEntryList* failedEntries, std::set& secondariesWithRepair); static void recreateDentries(NumNodeID node, bool isBuddyMirrored, FsckFsIDList* fsIDs, FsckFsIDList* failedCreates, FsckDirEntryList* createdDentries, FsckFileInodeList* createdInodes, std::set& secondariesWithRepair); static void fixChunkPermissions(Node& node, FsckChunkList& chunkList, PathInfoList& pathInfoList, FsckChunkList& failedChunks); static bool moveChunk(Node& node, FsckChunk& chunk, const std::string& moveTo, bool allowOverwrite); static void deleteFileInodes(NumNodeID node, bool isBuddyMirrored, FsckFileInodeList& inodes, StringList& failedDeletes, std::set& secondariesWithRepair); static void deleteDuplicateFileInodes(NumNodeID node, bool isBuddyMirrored, FsckDuplicateInodeInfoVector& dupInodes, StringList& failedEntries, std::set& secondariesWithRepair); static void deinlineFileInode(NumNodeID node, EntryInfo* entryInfo, StringList& failedEntries, std::set& secondariesWithRepair); private: MsgHelperRepair() {} public: // inliners }; #endif /* MSGHELPERREPAIR_H_ */