LLVM 22.0.0git
llvm::cas::ondisk Namespace Reference

Classes

class  DatabaseFile
 Encapsulate a database file, which: More...
class  InternalRef
 Standard 8 byte reference inside OnDiskGraphDB. More...
class  InternalRef4B
 Compact 4 byte reference inside OnDiskGraphDB for smaller references. More...
class  InternalRefArrayRef
 Array of internal node references. More...
class  object_refs_iterator
 Iterator for ObjectID. More...
class  ObjectHandle
 Handle for a loaded node object. More...
class  ObjectID
 Reference to a node. More...
class  OnDiskGraphDB
 On-disk CAS nodes database, independent of a particular hashing algorithm. More...
class  OnDiskKeyValueDB
 An on-disk key-value data store with the following properties: More...
class  TableHandle
 Generic handle for a table. More...

Typedefs

using object_refs_range = llvm::iterator_range<object_refs_iterator>
using MappedFileRegion = MappedFileRegionArena::RegionT

Functions

Error createTableConfigError (std::errc ErrC, StringRef Path, StringRef TableName, const Twine &Msg)
Error checkTable (StringRef Label, size_t Expected, size_t Observed, StringRef Path, StringRef TrieName)
Expected< std::optional< uint64_t > > getOverriddenMaxMappingSize ()
 Retrieves an overridden maximum mapping size for CAS files, if any, speicified by LLVM_CAS_MAX_MAPPING_SIZE in the environment or set by setMaxMappingSize().
void setMaxMappingSize (uint64_t Size)
 Set MaxMappingSize for ondisk CAS.
bool useSmallMappingSize (const Twine &Path)
 Whether to use a small file mapping for ondisk databases created in Path.
std::error_code lockFileThreadSafe (int FD, llvm::sys::fs::LockKind Kind)
 Thread-safe alternative to sys::fs::lockFile.
std::error_code unlockFileThreadSafe (int FD)
 Thread-safe alternative to sys::fs::unlockFile.
std::error_code tryLockFileThreadSafe (int FD, std::chrono::milliseconds Timeout=std::chrono::milliseconds(0), llvm::sys::fs::LockKind Kind=llvm::sys::fs::LockKind::Exclusive)
 Thread-safe alternative to sys::fs::tryLockFile.
Expected< size_t > preallocateFileTail (int FD, size_t CurrentSize, size_t NewSize)
 Allocate space for the file FD on disk, if the filesystem supports it.

Variables

constexpr StringLiteral CASFormatVersion = "v1"
 The version for all the ondisk database files.

Typedef Documentation

◆ MappedFileRegion

◆ object_refs_range

Function Documentation

◆ checkTable()

Error llvm::cas::ondisk::checkTable ( StringRef Label,
size_t Expected,
size_t Observed,
StringRef Path,
StringRef TrieName )

Definition at line 25 of file DatabaseFile.cpp.

References createTableConfigError(), and llvm::Error::success().

◆ createTableConfigError()

Error llvm::cas::ondisk::createTableConfigError ( std::errc ErrC,
StringRef Path,
StringRef TableName,
const Twine & Msg )

◆ getOverriddenMaxMappingSize()

Expected< std::optional< uint64_t > > llvm::cas::ondisk::getOverriddenMaxMappingSize ( )

Retrieves an overridden maximum mapping size for CAS files, if any, speicified by LLVM_CAS_MAX_MAPPING_SIZE in the environment or set by setMaxMappingSize().

If the value from environment is unreadable, returns an error.

Definition at line 37 of file OnDiskCommon.cpp.

References llvm::createStringError(), llvm::StringRef::getAsInteger(), llvm::sys::Process::GetEnv(), llvm::inconvertibleErrorCode(), OnDiskCASMaxMappingSize, Size, and llvm::Error::success().

Referenced by llvm::cas::ondisk::OnDiskGraphDB::open(), and llvm::cas::ondisk::OnDiskKeyValueDB::open().

◆ lockFileThreadSafe()

std::error_code llvm::cas::ondisk::lockFileThreadSafe ( int FD,
llvm::sys::fs::LockKind Kind )

Thread-safe alternative to sys::fs::lockFile.

This does not support all the platforms that sys::fs::lockFile does, so keep it in the CAS library for now.

Definition at line 67 of file OnDiskCommon.cpp.

References llvm::sys::fs::Exclusive, llvm::sys::fs::lockFile(), and llvm::make_error_code().

◆ preallocateFileTail()

Expected< size_t > llvm::cas::ondisk::preallocateFileTail ( int FD,
size_t CurrentSize,
size_t NewSize )

Allocate space for the file FD on disk, if the filesystem supports it.

On filesystems that support this operation, this ensures errors such as std::errc::no_space_on_device are detected before we write data.

Returns
the new size of the file, or an Error.

Definition at line 121 of file OnDiskCommon.cpp.

References assert(), llvm::createStringError(), and llvm::errnoAsErrorCode().

Referenced by llvm::cas::MappedFileRegionArena::allocateOffset(), and createTempFile().

◆ setMaxMappingSize()

void llvm::cas::ondisk::setMaxMappingSize ( uint64_t Size)

Set MaxMappingSize for ondisk CAS.

This function is not thread-safe and should be set before creaing any ondisk CAS and does not affect CAS already created. Set value 0 to use default size.

Definition at line 63 of file OnDiskCommon.cpp.

References OnDiskCASMaxMappingSize, and Size.

◆ tryLockFileThreadSafe()

std::error_code llvm::cas::ondisk::tryLockFileThreadSafe ( int FD,
std::chrono::milliseconds Timeout = std::chrono::milliseconds(0),
llvm::sys::fs::LockKind Kind = llvm::sys::fs::LockKind::Exclusive )

Thread-safe alternative to sys::fs::tryLockFile.

This does not support all the platforms that sys::fs::lockFile does, so keep it in the CAS library for now.

Definition at line 95 of file OnDiskCommon.cpp.

References llvm::sys::fs::Exclusive, llvm::make_error_code(), llvm::Timeout, and llvm::sys::fs::tryLockFile().

◆ unlockFileThreadSafe()

std::error_code llvm::cas::ondisk::unlockFileThreadSafe ( int FD)

Thread-safe alternative to sys::fs::unlockFile.

This does not support all the platforms that sys::fs::lockFile does, so keep it in the CAS library for now.

Definition at line 81 of file OnDiskCommon.cpp.

References llvm::make_error_code(), and llvm::sys::fs::unlockFile().

◆ useSmallMappingSize()

bool llvm::cas::ondisk::useSmallMappingSize ( const Twine & Path)

Whether to use a small file mapping for ondisk databases created in Path.

For some file system that doesn't support sparse file, use a smaller file mapping to avoid consuming too much disk space on creation.

Definition at line 166 of file OnDiskCommon.cpp.

References P.

Referenced by llvm::cas::ondisk::OnDiskGraphDB::open().

Variable Documentation

◆ CASFormatVersion

StringLiteral llvm::cas::ondisk::CASFormatVersion = "v1"
constexpr

The version for all the ondisk database files.

It needs to be bumped when compatibility breaking changes are introduced.

Definition at line 21 of file OnDiskCommon.h.

Referenced by llvm::cas::ondisk::OnDiskGraphDB::open(), and llvm::cas::ondisk::OnDiskKeyValueDB::open().