#pragma once #include #include #include #include #include #include #include namespace DB { namespace ErrorCodes { extern const int CANNOT_STATVFS; } using TemporaryFile = Poco::TemporaryFile; bool enoughSpaceInDirectory(const std::string & path, size_t data_size); std::unique_ptr createTemporaryFile(const std::string & path); /// Returns mount point of filesystem where absoulte_path (must exist) is located std::filesystem::path getMountPoint(std::filesystem::path absolute_path); /// Returns name of filesystem mounted to mount_point #if !defined(__linux__) [[noreturn]] #endif String getFilesystemName([[maybe_unused]] const String & mount_point); inline struct statvfs getStatVFS(const String & path) { struct statvfs fs; if (statvfs(path.c_str(), &fs) != 0) throwFromErrnoWithPath("Could not calculate available disk space (statvfs)", path, ErrorCodes::CANNOT_STATVFS); return fs; } }