From 9cd0a34b5cfe1f40d00f04d9fe6227ddfe7df5b4 Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Tue, 16 Oct 2018 11:21:49 +0200 Subject: [PATCH] BlockDevice -> DiskDevice. BlockDevice was the wrong name for this abstraction, since a block device is a type of file in a unix system, and we should use that name for that concept in the fs implementation. --- VirtualFileSystem/BlockDevice.cpp | 9 ------ ...ileSystem.cpp => DiskBackedFileSystem.cpp} | 24 ++++++++-------- ...kedFileSystem.h => DiskBackedFileSystem.h} | 12 ++++---- VirtualFileSystem/DiskDevice.cpp | 9 ++++++ .../{BlockDevice.h => DiskDevice.h} | 6 ++-- VirtualFileSystem/Ext2FileSystem.cpp | 6 ++-- VirtualFileSystem/Ext2FileSystem.h | 8 +++--- ...ockDevice.cpp => FileBackedDiskDevice.cpp} | 28 +++++++++---------- ...edBlockDevice.h => FileBackedDiskDevice.h} | 10 +++---- VirtualFileSystem/FileSystem.h | 2 +- VirtualFileSystem/Makefile | 8 ++---- VirtualFileSystem/test.cpp | 4 +-- 12 files changed, 62 insertions(+), 64 deletions(-) delete mode 100644 VirtualFileSystem/BlockDevice.cpp rename VirtualFileSystem/{DeviceBackedFileSystem.cpp => DiskBackedFileSystem.cpp} (64%) rename VirtualFileSystem/{DeviceBackedFileSystem.h => DiskBackedFileSystem.h} (61%) create mode 100644 VirtualFileSystem/DiskDevice.cpp rename VirtualFileSystem/{BlockDevice.h => DiskDevice.h} (81%) rename VirtualFileSystem/{FileBackedBlockDevice.cpp => FileBackedDiskDevice.cpp} (57%) rename VirtualFileSystem/{FileBackedBlockDevice.h => FileBackedDiskDevice.h} (70%) diff --git a/VirtualFileSystem/BlockDevice.cpp b/VirtualFileSystem/BlockDevice.cpp deleted file mode 100644 index 3c53e8c426..0000000000 --- a/VirtualFileSystem/BlockDevice.cpp +++ /dev/null @@ -1,9 +0,0 @@ -#include "BlockDevice.h" - -BlockDevice::BlockDevice() -{ -} - -BlockDevice::~BlockDevice() -{ -} diff --git a/VirtualFileSystem/DeviceBackedFileSystem.cpp b/VirtualFileSystem/DiskBackedFileSystem.cpp similarity index 64% rename from VirtualFileSystem/DeviceBackedFileSystem.cpp rename to VirtualFileSystem/DiskBackedFileSystem.cpp index 5fc6b199b6..532f74a707 100644 --- a/VirtualFileSystem/DeviceBackedFileSystem.cpp +++ b/VirtualFileSystem/DiskBackedFileSystem.cpp @@ -1,40 +1,40 @@ -#include "DeviceBackedFileSystem.h" +#include "DiskBackedFileSystem.h" //#define DBFS_DEBUG -DeviceBackedFileSystem::DeviceBackedFileSystem(RetainPtr&& device) +DiskBackedFileSystem::DiskBackedFileSystem(RetainPtr&& device) : m_device(std::move(device)) { ASSERT(m_device); } -DeviceBackedFileSystem::~DeviceBackedFileSystem() +DiskBackedFileSystem::~DiskBackedFileSystem() { } -bool DeviceBackedFileSystem::writeBlock(unsigned index, const ByteBuffer& data) +bool DiskBackedFileSystem::writeBlock(unsigned index, const ByteBuffer& data) { ASSERT(data.size() == blockSize()); #ifdef DBFS_DEBUG - printf("DeviceBackedFileSystem::writeBlock %u\n", index); + printf("DiskBackedFileSystem::writeBlock %u\n", index); #endif qword baseOffset = static_cast(index) * static_cast(blockSize()); return device().write(baseOffset, blockSize(), data.pointer()); } -bool DeviceBackedFileSystem::writeBlocks(unsigned index, unsigned count, const ByteBuffer& data) +bool DiskBackedFileSystem::writeBlocks(unsigned index, unsigned count, const ByteBuffer& data) { #ifdef DBFS_DEBUG - printf("DeviceBackedFileSystem::writeBlocks %u x%u\n", index, count); + printf("DiskBackedFileSystem::writeBlocks %u x%u\n", index, count); #endif qword baseOffset = static_cast(index) * static_cast(blockSize()); return device().write(baseOffset, count * blockSize(), data.pointer()); } -ByteBuffer DeviceBackedFileSystem::readBlock(unsigned index) const +ByteBuffer DiskBackedFileSystem::readBlock(unsigned index) const { #ifdef DBFS_DEBUG - printf("DeviceBackedFileSystem::readBlock %u\n", index); + printf("DiskBackedFileSystem::readBlock %u\n", index); #endif auto buffer = ByteBuffer::createUninitialized(blockSize()); qword baseOffset = static_cast(index) * static_cast(blockSize()); @@ -44,7 +44,7 @@ ByteBuffer DeviceBackedFileSystem::readBlock(unsigned index) const return buffer; } -ByteBuffer DeviceBackedFileSystem::readBlocks(unsigned index, unsigned count) const +ByteBuffer DiskBackedFileSystem::readBlocks(unsigned index, unsigned count) const { if (!count) return nullptr; @@ -64,7 +64,7 @@ ByteBuffer DeviceBackedFileSystem::readBlocks(unsigned index, unsigned count) co return blocks; } -void DeviceBackedFileSystem::setBlockSize(unsigned blockSize) +void DiskBackedFileSystem::setBlockSize(unsigned blockSize) { if (blockSize == m_blockSize) return; @@ -72,7 +72,7 @@ void DeviceBackedFileSystem::setBlockSize(unsigned blockSize) invalidateCaches(); } -void DeviceBackedFileSystem::invalidateCaches() +void DiskBackedFileSystem::invalidateCaches() { // FIXME: Implement block cache. } diff --git a/VirtualFileSystem/DeviceBackedFileSystem.h b/VirtualFileSystem/DiskBackedFileSystem.h similarity index 61% rename from VirtualFileSystem/DeviceBackedFileSystem.h rename to VirtualFileSystem/DiskBackedFileSystem.h index 739f3c468d..4b5f880a0c 100644 --- a/VirtualFileSystem/DeviceBackedFileSystem.h +++ b/VirtualFileSystem/DiskBackedFileSystem.h @@ -3,17 +3,17 @@ #include "FileSystem.h" #include -class DeviceBackedFileSystem : public FileSystem { +class DiskBackedFileSystem : public FileSystem { public: - virtual ~DeviceBackedFileSystem() override; + virtual ~DiskBackedFileSystem() override; - BlockDevice& device() { return *m_device; } - const BlockDevice& device() const { return *m_device; } + DiskDevice& device() { return *m_device; } + const DiskDevice& device() const { return *m_device; } unsigned blockSize() const { return m_blockSize; } protected: - explicit DeviceBackedFileSystem(RetainPtr&&); + explicit DiskBackedFileSystem(RetainPtr&&); void setBlockSize(unsigned); void invalidateCaches(); @@ -26,5 +26,5 @@ protected: private: unsigned m_blockSize { 0 }; - RetainPtr m_device; + RetainPtr m_device; }; diff --git a/VirtualFileSystem/DiskDevice.cpp b/VirtualFileSystem/DiskDevice.cpp new file mode 100644 index 0000000000..62f7211421 --- /dev/null +++ b/VirtualFileSystem/DiskDevice.cpp @@ -0,0 +1,9 @@ +#include "DiskDevice.h" + +DiskDevice::DiskDevice() +{ +} + +DiskDevice::~DiskDevice() +{ +} diff --git a/VirtualFileSystem/BlockDevice.h b/VirtualFileSystem/DiskDevice.h similarity index 81% rename from VirtualFileSystem/BlockDevice.h rename to VirtualFileSystem/DiskDevice.h index e295ee801e..31d1418687 100644 --- a/VirtualFileSystem/BlockDevice.h +++ b/VirtualFileSystem/DiskDevice.h @@ -3,9 +3,9 @@ #include #include -class BlockDevice : public Retainable { +class DiskDevice : public Retainable { public: - virtual ~BlockDevice(); + virtual ~DiskDevice(); virtual unsigned blockSize() const = 0; virtual bool readBlock(unsigned index, byte*) const = 0; @@ -15,6 +15,6 @@ public: virtual bool write(qword offset, unsigned length, const byte*) = 0; protected: - BlockDevice(); + DiskDevice(); }; diff --git a/VirtualFileSystem/Ext2FileSystem.cpp b/VirtualFileSystem/Ext2FileSystem.cpp index d73d859060..9eb11755b4 100644 --- a/VirtualFileSystem/Ext2FileSystem.cpp +++ b/VirtualFileSystem/Ext2FileSystem.cpp @@ -10,13 +10,13 @@ //#define EXT2_DEBUG -RetainPtr Ext2FileSystem::create(RetainPtr device) +RetainPtr Ext2FileSystem::create(RetainPtr&& device) { return adopt(*new Ext2FileSystem(std::move(device))); } -Ext2FileSystem::Ext2FileSystem(RetainPtr device) - : DeviceBackedFileSystem(std::move(device)) +Ext2FileSystem::Ext2FileSystem(RetainPtr&& device) + : DiskBackedFileSystem(std::move(device)) { } diff --git a/VirtualFileSystem/Ext2FileSystem.h b/VirtualFileSystem/Ext2FileSystem.h index f7381a029f..346ab91d76 100644 --- a/VirtualFileSystem/Ext2FileSystem.h +++ b/VirtualFileSystem/Ext2FileSystem.h @@ -1,6 +1,6 @@ #pragma once -#include "DeviceBackedFileSystem.h" +#include "DiskBackedFileSystem.h" #include "UnixTypes.h" #include #include @@ -9,9 +9,9 @@ struct ext2_group_desc; struct ext2_inode; struct ext2_super_block; -class Ext2FileSystem final : public DeviceBackedFileSystem { +class Ext2FileSystem final : public DiskBackedFileSystem { public: - static RetainPtr create(RetainPtr); + static RetainPtr create(RetainPtr&&); virtual ~Ext2FileSystem() override; private: @@ -19,7 +19,7 @@ private: typedef unsigned GroupIndex; typedef unsigned InodeIndex; - explicit Ext2FileSystem(RetainPtr); + explicit Ext2FileSystem(RetainPtr&&); const ext2_super_block& superBlock() const; const ext2_group_desc& blockGroupDescriptor(unsigned groupIndex) const; diff --git a/VirtualFileSystem/FileBackedBlockDevice.cpp b/VirtualFileSystem/FileBackedDiskDevice.cpp similarity index 57% rename from VirtualFileSystem/FileBackedBlockDevice.cpp rename to VirtualFileSystem/FileBackedDiskDevice.cpp index ddf8bdb543..d857ff502e 100644 --- a/VirtualFileSystem/FileBackedBlockDevice.cpp +++ b/VirtualFileSystem/FileBackedDiskDevice.cpp @@ -1,18 +1,18 @@ #define _FILE_OFFSET_BITS 64 -#include "FileBackedBlockDevice.h" +#include "FileBackedDiskDevice.h" #include #include //#define FBBD_DEBUG #define IGNORE_FILE_LENGTH // Useful for e.g /dev/hda2 -RetainPtr FileBackedBlockDevice::create(String&& imagePath, unsigned blockSize) +RetainPtr FileBackedDiskDevice::create(String&& imagePath, unsigned blockSize) { - return adopt(*new FileBackedBlockDevice(std::move(imagePath), blockSize)); + return adopt(*new FileBackedDiskDevice(std::move(imagePath), blockSize)); } -FileBackedBlockDevice::FileBackedBlockDevice(String&& imagePath, unsigned blockSize) +FileBackedDiskDevice::FileBackedDiskDevice(String&& imagePath, unsigned blockSize) : m_imagePath(std::move(imagePath)) , m_blockSize(blockSize) { @@ -23,35 +23,35 @@ FileBackedBlockDevice::FileBackedBlockDevice(String&& imagePath, unsigned blockS m_file = fopen(m_imagePath.characters(), "r+"); } -FileBackedBlockDevice::~FileBackedBlockDevice() +FileBackedDiskDevice::~FileBackedDiskDevice() { } -unsigned FileBackedBlockDevice::blockSize() const +unsigned FileBackedDiskDevice::blockSize() const { return m_blockSize; } -bool FileBackedBlockDevice::readBlock(unsigned index, byte* out) const +bool FileBackedDiskDevice::readBlock(unsigned index, byte* out) const { qword offset = index * m_blockSize; return read(offset, blockSize(), out); } -bool FileBackedBlockDevice::writeBlock(unsigned index, const byte* data) +bool FileBackedDiskDevice::writeBlock(unsigned index, const byte* data) { qword offset = index * m_blockSize; return write(offset, blockSize(), data); } -bool FileBackedBlockDevice::read(qword offset, unsigned length, byte* out) const +bool FileBackedDiskDevice::read(qword offset, unsigned length, byte* out) const { #ifndef IGNORE_FILE_LENGTH if (offset + length >= m_fileLength) return false; #endif #ifdef FBBD_DEBUG - printf("[FileBackedBlockDevice] Read device @ offset %llx, length %u\n", offset, length); + printf("[FileBackedDiskDevice] Read device @ offset %llx, length %u\n", offset, length); #endif fseeko(m_file, offset, SEEK_SET); unsigned nread = fread(out, sizeof(byte), length, m_file); @@ -59,14 +59,14 @@ bool FileBackedBlockDevice::read(qword offset, unsigned length, byte* out) const return true; } -bool FileBackedBlockDevice::write(qword offset, unsigned length, const byte* data) +bool FileBackedDiskDevice::write(qword offset, unsigned length, const byte* data) { #ifndef IGNORE_FILE_LENGTH if (offset + length >= m_fileLength) return false; #endif #ifdef FBBD_DEBUG - printf("[FileBackedBlockDevice] Write device @ offset %llx, length %u\n", offset, length); + printf("[FileBackedDiskDevice] Write device @ offset %llx, length %u\n", offset, length); #endif fseeko(m_file, offset, SEEK_SET); // size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream); @@ -75,8 +75,8 @@ bool FileBackedBlockDevice::write(qword offset, unsigned length, const byte* dat return true; } -const char* FileBackedBlockDevice::className() const +const char* FileBackedDiskDevice::className() const { - return "FileBackedBlockDevice"; + return "FileBackedDiskDevice"; } diff --git a/VirtualFileSystem/FileBackedBlockDevice.h b/VirtualFileSystem/FileBackedDiskDevice.h similarity index 70% rename from VirtualFileSystem/FileBackedBlockDevice.h rename to VirtualFileSystem/FileBackedDiskDevice.h index dd1d81083f..7115ea0be6 100644 --- a/VirtualFileSystem/FileBackedBlockDevice.h +++ b/VirtualFileSystem/FileBackedDiskDevice.h @@ -1,15 +1,15 @@ #pragma once -#include "BlockDevice.h" +#include "DiskDevice.h" #include #include #include #include -class FileBackedBlockDevice final : public BlockDevice { +class FileBackedDiskDevice final : public DiskDevice { public: - static RetainPtr create(String&& imagePath, unsigned blockSize); - virtual ~FileBackedBlockDevice() override; + static RetainPtr create(String&& imagePath, unsigned blockSize); + virtual ~FileBackedDiskDevice() override; bool isValid() const { return m_file; } @@ -22,7 +22,7 @@ public: private: virtual const char* className() const override; - FileBackedBlockDevice(String&& imagePath, unsigned blockSize); + FileBackedDiskDevice(String&& imagePath, unsigned blockSize); String m_imagePath; FILE* m_file { nullptr }; diff --git a/VirtualFileSystem/FileSystem.h b/VirtualFileSystem/FileSystem.h index cde982323c..7476667569 100644 --- a/VirtualFileSystem/FileSystem.h +++ b/VirtualFileSystem/FileSystem.h @@ -1,6 +1,6 @@ #pragma once -#include "BlockDevice.h" +#include "DiskDevice.h" #include "InodeIdentifier.h" #include "InodeMetadata.h" #include "Limits.h" diff --git a/VirtualFileSystem/Makefile b/VirtualFileSystem/Makefile index d6114a4ba2..f54a746131 100644 --- a/VirtualFileSystem/Makefile +++ b/VirtualFileSystem/Makefile @@ -9,13 +9,13 @@ AK_OBJS = \ ../AK/kmalloc.o VFS_OBJS = \ - BlockDevice.o \ - FileBackedBlockDevice.o \ + DiskDevice.o \ + FileBackedDiskDevice.o \ FileSystem.o \ Ext2FileSystem.o \ VirtualFileSystem.o \ FileHandle.o \ - DeviceBackedFileSystem.o \ + DiskBackedFileSystem.o \ SyntheticFileSystem.o \ InodeIdentifier.o \ CharacterDevice.o \ @@ -29,8 +29,6 @@ OBJS = $(AK_OBJS) $(VFS_OBJS) CXXFLAGS = -std=c++17 -O0 -W -Wall -Wextra -Wconversion -I. -I.. -ggdb3 -Wno-class-memaccess -#test.o: BlockDevice.h FileBackedBlockDevice.h FileSystem.h Ext2FileSystem.h VirtualFileSystem.h FileHandle.h - all: $(PROGRAM) .cpp.o: diff --git a/VirtualFileSystem/test.cpp b/VirtualFileSystem/test.cpp index cc0a1286f3..24fb437003 100644 --- a/VirtualFileSystem/test.cpp +++ b/VirtualFileSystem/test.cpp @@ -1,5 +1,5 @@ #include "Ext2FileSystem.h" -#include "FileBackedBlockDevice.h" +#include "FileBackedDiskDevice.h" #include "VirtualFileSystem.h" #include "FileHandle.h" #include "SyntheticFileSystem.h" @@ -217,7 +217,7 @@ int main(int c, char** v) RetainPtr makeFileSystem(const char* imagePath) { - auto fsImage = FileBackedBlockDevice::create(imagePath, 512); + auto fsImage = FileBackedDiskDevice::create(imagePath, 512); if (!fsImage->isValid()) { fprintf(stderr, "Failed to open fs image file '%s'\n", imagePath); exit(1);