#ifndef CHECK_SUM_FS_H
#define CHECK_SUM_FS_H
#include <OS.h>
#define CHECK_SUM_FS_PRETTY_NAME "CheckSum File System"
static const uint64 kCheckSumFSSuperBlockOffset = 16 * B_PAGE_SIZE;
static const uint64 kCheckSumFSMinSize
= kCheckSumFSSuperBlockOffset + 16 * B_PAGE_SIZE;
static const uint32 kCheckSumFSNameLength = 256;
static const uint32 kCheckSumFSSignatureLength = 16;
#define CHECK_SUM_FS_SIGNATURE_1 "_1!cHEcKsUmfS!1_"
#define CHECK_SUM_FS_SIGNATURE_2 "-2@ChECkSumFs@2-"
static const uint32 kCheckSumFSVersion = 1;
struct checksumfs_super_block {
char signature1[kCheckSumFSSignatureLength];
uint32 version;
uint32 pad1;
uint64 totalBlocks;
uint64 freeBlocks;
uint64 rootDir;
uint64 blockBitmap;
char name[kCheckSumFSNameLength];
char signature2[kCheckSumFSSignatureLength];
} _PACKED;
struct checksumfs_node {
uint32 mode;
uint32 attributeType;
uint32 uid;
uint32 gid;
uint64 creationTime;
uint64 modificationTime;
uint64 changeTime;
uint64 hardLinks;
uint64 size;
uint64 parentDirectory;
uint64 attributeDirectory;
} _PACKED;
static const uint32 kCheckSumFSMaxDirEntryTreeDepth = 24;
struct checksumfs_dir_entry_tree {
uint16 depth;
} _PACKED;
struct checksumfs_dir_entry_block {
uint16 entryCount;
uint16 nameEnds[0];
};
#endif