Document number 205065Version Rev. NIssue date 2019-02-04Sirius OBC and TCM User Manualwww.aacmicrotec.com Page 124 of 174Downloads from an auto-padded partition should take into account the additional paddingsize for written data when calculating the download size. The free and write pointers can beused to determine the total current size of all written data including padding.7.9.1.5. Partition virtual channelThis specifies which CCSDS virtual channel to be used for downloading of the data in thepartition. Currently virtual channels 0 and 1 are supported.7.9.2. RecoveryThe mass memory handler utilises the NVRAM to store on-going operation data, , which isused in the initialisation step in order to recover consistency after aborted write or freeoperations, caused for example by a power failure reset.If errors or inconsistencies are detected when the stored on-going parameters are read fromNVRAM at initialisation, the recovery associated with the unavailable item will be skippedand the initialisation will continue.The initialisation recovery is aggressive, and will prioritise a usable system over dataretention; any single block which exhibits metadata inconsistencies that make it impossibleto safely add it to the translation table will be erased and considered free.For continuous and circular partitions, further recovery is performed in order to ensure thatthe partition data range is continuous (which is required in order for the partition to beusable). If a discontinuity is discovered, the recovery process will erase data blocks from thehighest logical partition address and downwards, until a continuous range of data is left onthe partition. Such discontinuities can for example occur due to corrupt blocks, or if apartition is configured to include blocks with unknown contents (e.g. changing a directpartition into a continuous partition).Recovery does not take into account the format of the stored data and may for exampleleave a partition with data that no longer fulfils segmentation requirements for download.Recovery may cause the free and write pointers of continuous/circular partitions to move.An empty continuous/circular partition, where the write pointer is located exactly at the startof a block, will have the free and write pointers reset to address 0 if a reset and subsequentre-initialisation occurs.Recovery will cause rediscovery of previously freed data in a block in the followingscenarios:• If the block was not completely freed.• If data was freed from the block in a continuous/circular partition and the free did notmove past the block boundary.• If data was freed from the block in a continuous/circular partition and the write pointerwas located inside the block.For continuous/circular partitions, this data rediscovery will only occur in the block where thefree pointer was last located. For direct partitions, it will occur in every block which providesone of the scenarios listed above.