beegfs/fsck/source/database/FileInode.h
2025-08-10 01:34:16 +02:00

100 lines
3.2 KiB
C++

#ifndef FILEINODE_H_
#define FILEINODE_H_
#include <common/fsck/FsckFileInode.h>
#include <database/EntryID.h>
namespace db {
struct FileInode {
EntryID id; /* 12 */
EntryID parentDirID; /* 24 */
EntryID origParentEntryID; /* 36 */
uint32_t parentNodeID; /* 40 */
uint32_t saveNodeID; /* 44 */
uint32_t origParentUID; /* 48 */
uint32_t uid; /* 52 */
uint32_t gid; /* 56 */
uint64_t fileSize; /* 64 */
uint64_t usedBlocks; /* 72 */
uint64_t numHardlinks; /* 80 */
uint64_t saveInode; /* 88 */
int32_t saveDevice; /* 92 */
uint32_t chunkSize; /* 96 */
enum {
NTARGETS = 6
};
uint16_t targets[NTARGETS]; /* 108 */
uint32_t isInlined:1;
uint32_t pathInfoFlags:4;
uint32_t stripePatternType:4;
uint32_t stripePatternSize:20;
uint32_t readable:1;
uint32_t isBuddyMirrored:1;
uint32_t isMismirrored:1; /* 112 */
typedef EntryID KeyType;
EntryID pkey() const { return id; }
FsckFileInode toInodeWithoutStripes() const
{
PathInfo info(origParentUID, origParentEntryID.str(), pathInfoFlags);
return FsckFileInode(id.str(), parentDirID.str(), NumNodeID(parentNodeID), info, uid, gid,
fileSize, numHardlinks, usedBlocks, {}, FsckStripePatternType(stripePatternType),
chunkSize, NumNodeID(saveNodeID), saveInode, saveDevice, isInlined, isBuddyMirrored,
readable, isMismirrored);
}
friend std::ostream& operator<<(std::ostream& os, FileInode const& obj)
{
os << "-------------" << "\n";
os << "FsckFileInode" << "\n";
os << "-------------" << "\n";
os << "EntryID: " << obj.id.str() << "\n";
os << "Parent dir's entryID: " << obj.parentDirID.str() << "\n";
os << "Orig parent dir's entryID: " << obj.origParentEntryID.str() << "\n";
os << "parent nodeID: " << obj.parentNodeID << "\n";
os << "save nodeID: " << obj.saveNodeID << "\n";
os << "origParentUID: " << obj.origParentUID << "\n";
os << "uid: " << obj.uid << "\n";
os << "gid: " << obj.gid << "\n";
os << "fileSize: " << obj.fileSize << "\n";
os << "usedBlocks: " << obj.usedBlocks << "\n";
os << "numHardlinks: " << obj.numHardlinks << "\n";
os << "saveInode: " << obj.saveInode << "\n";
os << "saveDevice: " << obj.saveDevice << "\n";
os << "chunkSize: " << obj.chunkSize << "\n";
os << "Stripe targets: [ ";
for (int i=0; i< NTARGETS; i++)
{
os << obj.targets[i] << " ";
}
os << "]\n";
os << "isInlined: " << obj.isInlined << "\n";
os << "pathInfoFlags: " << obj.pathInfoFlags << "\n";
os << "stripePatternType: " << obj.stripePatternType << "\n";
os << "stripePatternSize: " << obj.stripePatternSize << "\n";
os << "readable: " << obj.readable << "\n";
os << "isBuddyMirrored: " << obj.isBuddyMirrored << "\n";
os << "isMismirrored: " << obj.isMismirrored << "\n\n";
return os;
}
};
}
#endif