public void FsTrim() { MetaRemapStorage.FsTrim(); DataRemapStorage.FsTrim(); DuplexStorage.FsTrim(); JournalStorage.FsTrim(); CoreDataIvfcStorage.FsTrim(); FatIvfcStorage?.FsTrim(); SaveDataFileSystemCore.FsTrim(); int unusedHeaderOffset = IsFirstHeaderInUse ? 0x4000 : 0; BaseStorage.Slice(unusedHeaderOffset, 0x4000).Fill(TrimFillValue); }
public HierarchicalDuplexStorage(DuplexFsLayerInfo[] layers, bool masterBit) { Layers = new DuplexStorage[layers.Length - 1]; for (int i = 0; i < Layers.Length; i++) { IStorage bitmap; if (i == 0) { bitmap = masterBit ? layers[0].DataB : layers[0].DataA; } else { bitmap = Layers[i - 1]; } Layers[i] = new DuplexStorage(layers[i + 1].DataA, layers[i + 1].DataB, bitmap, layers[i + 1].Info.BlockSize); } DataLayer = Layers[Layers.Length - 1]; _length = DataLayer.GetSize(); }