Преглед изворни кода

Remove the cheesy block cache from DiskBackedFS.

This should be reimplemented with proper paging support. This approach was
mostly just chewing kmalloc memory.
Andreas Kling пре 6 година
родитељ
комит
42d9f18cae

+ 0 - 31
VirtualFileSystem/DiskBackedFileSystem.cpp

@@ -7,7 +7,6 @@ typedef int InterruptDisabler;
 #endif
 
 //#define DBFS_DEBUG
-#define BLOCK_CACHE
 
 DiskBackedFS::DiskBackedFS(RetainPtr<DiskDevice>&& device)
     : m_device(move(device))
@@ -43,18 +42,6 @@ ByteBuffer DiskBackedFS::readBlock(unsigned index) const
 #ifdef DBFS_DEBUG
     kprintf("DiskBackedFileSystem::readBlock %u\n", index);
 #endif
-
-#ifdef BLOCK_CACHE
-    {
-        LOCKER(m_blockCacheLock);
-        InterruptDisabler disabler;
-        auto it = m_blockCache.find(index);
-        if (it != m_blockCache.end()) {
-            return (*it).value;
-        }
-    }
-#endif
-
     auto buffer = ByteBuffer::create_uninitialized(blockSize());
     //kprintf("created block buffer with size %u\n", blockSize());
     DiskOffset baseOffset = static_cast<DiskOffset>(index) * static_cast<DiskOffset>(blockSize());
@@ -62,16 +49,6 @@ ByteBuffer DiskBackedFS::readBlock(unsigned index) const
     bool success = device().read(baseOffset, blockSize(), bufferPointer);
     ASSERT(success);
     ASSERT(buffer.size() == blockSize());
-
-#ifdef BLOCK_CACHE
-    {
-        LOCKER(m_blockCacheLock);
-        InterruptDisabler disabler;
-        if (m_blockCache.size() >= 32)
-            m_blockCache.removeOneRandomly();
-        m_blockCache.set(index, buffer);
-    }
-#endif
     return buffer;
 }
 
@@ -100,12 +77,4 @@ void DiskBackedFS::setBlockSize(unsigned blockSize)
     if (blockSize == m_blockSize)
         return;
     m_blockSize = blockSize;
-    invalidateCaches();
-}
-
-void DiskBackedFS::invalidateCaches()
-{
-    LOCKER(m_blockCacheLock);
-    InterruptDisabler disabler;
-    m_blockCache.clear();
 }

+ 0 - 6
VirtualFileSystem/DiskBackedFileSystem.h

@@ -2,8 +2,6 @@
 
 #include "FileSystem.h"
 #include <AK/ByteBuffer.h>
-#include <AK/HashMap.h>
-#include <AK/Lock.h>
 
 class DiskBackedFS : public FS {
 public:
@@ -18,7 +16,6 @@ protected:
     explicit DiskBackedFS(RetainPtr<DiskDevice>&&);
 
     void setBlockSize(unsigned);
-    void invalidateCaches();
 
     ByteBuffer readBlock(unsigned index) const;
     ByteBuffer readBlocks(unsigned index, unsigned count) const;
@@ -29,7 +26,4 @@ protected:
 private:
     size_t m_blockSize { 0 };
     RetainPtr<DiskDevice> m_device;
-
-    mutable SpinLock m_blockCacheLock;
-    mutable HashMap<unsigned, ByteBuffer> m_blockCache;
 };

+ 1 - 0
VirtualFileSystem/Ext2FileSystem.h

@@ -4,6 +4,7 @@
 #include "UnixTypes.h"
 #include <AK/Buffer.h>
 #include <AK/OwnPtr.h>
+#include <AK/Lock.h>
 #include "ext2_fs.h"
 
 struct ext2_group_desc;