public DuplexStorage(IStorage dataA, IStorage dataB, IStorage bitmap, int blockSize) { DataA = dataA; DataB = dataB; BitmapStorage = bitmap; BlockSize = blockSize; bitmap.GetSize(out long bitmapSize).ThrowIfFailure(); Bitmap = new DuplexBitmap(BitmapStorage, (int)(bitmapSize * 8)); DataA.GetSize(out long dataSize).ThrowIfFailure(); Length = dataSize; }
public void FsTrim() { // todo replace with a bitmap reader class when added BitArray bitmap = new DuplexBitmap(Map.GetFreeBlocksStorage(), Map.Header.JournalBlockCount + Map.Header.MainDataBlockCount).Bitmap; for (int i = 0; i < bitmap.Length; i++) { if (!bitmap[i]) { continue; } BaseStorage.Fill(SaveDataFileSystem.TrimFillValue, i * BlockSize, BlockSize); } Map.FsTrim(); }