From 6cc0b66a4b51cbdd30b940f5847af5b9e8a8aa15 Mon Sep 17 00:00:00 2001 From: Ulimo Date: Fri, 17 Nov 2023 10:31:38 +0100 Subject: [PATCH] Directio error output (#131) * Write the error message from linux on failures * Create directory if it does not exist in direct io --- .../Internal/Unix/FileCacheUnixDirectWriter.cs | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/FlowtideDotNet.Storage/FileCache/Internal/Unix/FileCacheUnixDirectWriter.cs b/src/FlowtideDotNet.Storage/FileCache/Internal/Unix/FileCacheUnixDirectWriter.cs index fc2164006..97df9c581 100644 --- a/src/FlowtideDotNet.Storage/FileCache/Internal/Unix/FileCacheUnixDirectWriter.cs +++ b/src/FlowtideDotNet.Storage/FileCache/Internal/Unix/FileCacheUnixDirectWriter.cs @@ -60,6 +60,19 @@ private static string GetErrorMessage(int errorCode) public FileCacheUnixDirectWriter(string fileName, int sectorSize, FileCacheOptions fileCacheOptions) { this.alignment = sectorSize; + + var directoryName = Path.GetDirectoryName(fileName); + if (directoryName != null && !Directory.Exists(directoryName)) + { + Directory.CreateDirectory(directoryName); + } + + // Check if the file already exists, if so delete it + if (File.Exists(fileName)) + { + File.Delete(fileName); + } + this.fileDescriptor = open(fileName, O_RDWR | O_DIRECT | O_CREAT, S_IRUSR | S_IWUSR); if (this.fileDescriptor == -1) {