#pragma once #include "FileSystem.h" #include class DiskCache; class DiskBackedFS : public FS { public: virtual ~DiskBackedFS() override; virtual bool is_disk_backed() const override { return true; } DiskDevice& device() { return *m_device; } const DiskDevice& device() const { return *m_device; } virtual void flush_writes() override; protected: explicit DiskBackedFS(NonnullRefPtr&&); bool read_block(unsigned index, u8* buffer) const; bool read_blocks(unsigned index, unsigned count, u8* buffer) const; bool write_block(unsigned index, const u8*); bool write_blocks(unsigned index, unsigned count, const u8*); private: DiskCache& cache() const; NonnullRefPtr m_device; mutable OwnPtr m_cache; };