<ahref="erasure_8h.html">Go to the documentation of this file.</a><divclass="fragment"><divclass="line"><aid="l00001"name="l00001"></a><spanclass="lineno"> 1</span><spanclass="comment">/*</span></div>
<divclass="line"><aid="l00002"name="l00002"></a><spanclass="lineno"> 2</span><spanclass="comment"> * This file is part of the Aaru Data Preservation Suite.</span></div>
<divclass="line"><aid="l00005"name="l00005"></a><spanclass="lineno"> 5</span><spanclass="comment"> * This library is free software; you can redistribute it and/or modify</span></div>
<divclass="line"><aid="l00006"name="l00006"></a><spanclass="lineno"> 6</span><spanclass="comment"> * it under the terms of the GNU Lesser General Public License as</span></div>
<divclass="line"><aid="l00007"name="l00007"></a><spanclass="lineno"> 7</span><spanclass="comment"> * published by the Free Software Foundation; either version 2.1 of the</span></div>
<divclass="line"><aid="l00008"name="l00008"></a><spanclass="lineno"> 8</span><spanclass="comment"> * License, or (at your option) any later version.</span></div>
<divclass="line"><aid="l00010"name="l00010"></a><spanclass="lineno"> 10</span><spanclass="comment"> * This library is distributed in the hope that it will be useful, but</span></div>
<divclass="line"><aid="l00011"name="l00011"></a><spanclass="lineno"> 11</span><spanclass="comment"> * WITHOUT ANY WARRANTY; without even the implied warranty of</span></div>
<divclass="line"><aid="l00012"name="l00012"></a><spanclass="lineno"> 12</span><spanclass="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</span></div>
<divclass="line"><aid="l00013"name="l00013"></a><spanclass="lineno"> 13</span><spanclass="comment"> * Lesser General Public License for more details.</span></div>
<divclass="line"><aid="l00015"name="l00015"></a><spanclass="lineno"> 15</span><spanclass="comment"> * You should have received a copy of the GNU Lesser General Public</span></div>
<divclass="line"><aid="l00016"name="l00016"></a><spanclass="lineno"> 16</span><spanclass="comment"> * License along with this library; if not, see <http://www.gnu.org/licenses/>.</span></div>
<divclass="ttc"id="astructAaruHeaderV2_html"><divclass="ttname"><ahref="structAaruHeaderV2.html">AaruHeaderV2</a></div><divclass="ttdoc">Version 2 container header with GUID, alignment shifts, and feature negotiation bitmaps.</div><divclass="ttdef"><b>Definition</b><ahref="header_8h_source.html#l00106">header.h:107</a></div></div>
<divclass="ttc"id="astructAaruRecoveryFooter_html"><divclass="ttname"><ahref="structAaruRecoveryFooter.html">AaruRecoveryFooter</a></div><divclass="ttdoc">Recovery footer written at the very end of the file (last 160 bytes).</div><divclass="ttdef"><b>Definition</b><ahref="#l00116">erasure.h:117</a></div></div>
<divclass="ttc"id="astructAaruRecoveryFooter_html_a2a0e7425f369422c197cda6b4ff56033"><divclass="ttname"><ahref="structAaruRecoveryFooter.html#a2a0e7425f369422c197cda6b4ff56033">AaruRecoveryFooter::headerCrc64</a></div><divclass="ttdeci">uint64_t headerCrc64</div><divclass="ttdoc">CRC64-ECMA of the original AaruHeaderV2 (147 bytes at offset 0).</div><divclass="ttdef"><b>Definition</b><ahref="#l00120">erasure.h:120</a></div></div>
<divclass="ttc"id="astructAaruRecoveryFooter_html_a67e4601f7be9a5f7e84cb3adfb98e68a"><divclass="ttname"><ahref="structAaruRecoveryFooter.html#a67e4601f7be9a5f7e84cb3adfb98e68a">AaruRecoveryFooter::ecmbOffset</a></div><divclass="ttdeci">uint64_t ecmbOffset</div><divclass="ttdoc">Absolute file offset of the primary ECMB.</div><divclass="ttdef"><b>Definition</b><ahref="#l00118">erasure.h:118</a></div></div>
<divclass="ttc"id="astructAaruRecoveryFooter_html_a8d65cec53b91b52d2bafb7e76eef818a"><divclass="ttname"><ahref="structAaruRecoveryFooter.html#a8d65cec53b91b52d2bafb7e76eef818a">AaruRecoveryFooter::footerMagic</a></div><divclass="ttdeci">uint64_t footerMagic</div><divclass="ttdoc">Must be AARU_RECOVERY_FOOTER_MAGIC (0x52464D4345525641).</div><divclass="ttdef"><b>Definition</b><ahref="#l00122">erasure.h:122</a></div></div>
<divclass="ttc"id="astructAaruRecoveryFooter_html_ad3f4ad3842317379eea5ad1bd3335482"><divclass="ttname"><ahref="structAaruRecoveryFooter.html#ad3f4ad3842317379eea5ad1bd3335482">AaruRecoveryFooter::ecmbLength</a></div><divclass="ttdeci">uint64_t ecmbLength</div><divclass="ttdoc">Total on-disk size of the ECMB (header + payload).</div><divclass="ttdef"><b>Definition</b><ahref="#l00119">erasure.h:119</a></div></div>
<divclass="ttc"id="astructAaruRecoveryFooter_html_afd53d818d8d4f4c23e4483bfea1701f5"><divclass="ttname"><ahref="structAaruRecoveryFooter.html#afd53d818d8d4f4c23e4483bfea1701f5">AaruRecoveryFooter::backupHeader</a></div><divclass="ttdeci">AaruHeaderV2 backupHeader</div><divclass="ttdoc">Complete copy of AaruHeaderV2 from file offset 0.</div><divclass="ttdef"><b>Definition</b><ahref="#l00121">erasure.h:121</a></div></div>
<divclass="ttc"id="astructErasureCodingMapHeader_html"><divclass="ttname"><ahref="structErasureCodingMapHeader.html">ErasureCodingMapHeader</a></div><divclass="ttdoc">Header for the Erasure Coding Map Block (BlockType::ErasureCodingMapBlock).</div><divclass="ttdef"><b>Definition</b><ahref="#l00049">erasure.h:50</a></div></div>
<divclass="ttc"id="astructErasureCodingMapHeader_html_a2aa7763da110a8e7550e61bd6110f83d"><divclass="ttname"><ahref="structErasureCodingMapHeader.html#a2aa7763da110a8e7550e61bd6110f83d">ErasureCodingMapHeader::cmpLength</a></div><divclass="ttdeci">uint64_t cmpLength</div><divclass="ttdoc">Size in bytes of the compressed mapping payload.</div><divclass="ttdef"><b>Definition</b><ahref="#l00055">erasure.h:55</a></div></div>
<divclass="ttc"id="astructErasureCodingMapHeader_html_aa686c5c90093d0ba86657c1f15f64a2d"><divclass="ttname"><ahref="structErasureCodingMapHeader.html#aa686c5c90093d0ba86657c1f15f64a2d">ErasureCodingMapHeader::cmpCrc64</a></div><divclass="ttdeci">uint64_t cmpCrc64</div><divclass="ttdoc">CRC64-ECMA of the compressed mapping payload.</div><divclass="ttdef"><b>Definition</b><ahref="#l00057">erasure.h:57</a></div></div>
<divclass="ttc"id="astructErasureCodingMapHeader_html_aa883d1e565b1856a7a16b2fcf8ee8b7d"><divclass="ttname"><ahref="structErasureCodingMapHeader.html#aa883d1e565b1856a7a16b2fcf8ee8b7d">ErasureCodingMapHeader::crc64</a></div><divclass="ttdeci">uint64_t crc64</div><divclass="ttdoc">CRC64-ECMA of the uncompressed mapping payload.</div><divclass="ttdef"><b>Definition</b><ahref="#l00058">erasure.h:58</a></div></div>
<divclass="ttc"id="astructErasureCodingMapHeader_html_aaf860b67807c5bf871e52ae617a076ae"><divclass="ttname"><ahref="structErasureCodingMapHeader.html#aaf860b67807c5bf871e52ae617a076ae">ErasureCodingMapHeader::compression</a></div><divclass="ttdeci">uint16_t compression</div><divclass="ttdoc">Compression algorithm for the mapping payload (CompressionType).</div><divclass="ttdef"><b>Definition</b><ahref="#l00054">erasure.h:54</a></div></div>
<divclass="ttc"id="astructErasureCodingMapHeader_html_ac1cce17abac0be6beccb121d7a3b24b2"><divclass="ttname"><ahref="structErasureCodingMapHeader.html#ac1cce17abac0be6beccb121d7a3b24b2">ErasureCodingMapHeader::identifier</a></div><divclass="ttdeci">uint32_t identifier</div><divclass="ttdoc">Block identifier, must be BlockType::ErasureCodingMapBlock (0x424D4345).</div><divclass="ttdef"><b>Definition</b><ahref="#l00051">erasure.h:51</a></div></div>
<divclass="ttc"id="astructErasureCodingMapHeader_html_accae80e978eeccc7c026eb5ade721aae"><divclass="ttname"><ahref="structErasureCodingMapHeader.html#accae80e978eeccc7c026eb5ade721aae">ErasureCodingMapHeader::stripeGroupCount</a></div><divclass="ttdeci">uint8_t stripeGroupCount</div><divclass="ttdoc">Number of stripe groups in payload (typically 5).</div><divclass="ttdef"><b>Definition</b><ahref="#l00053">erasure.h:53</a></div></div>
<divclass="ttc"id="astructErasureCodingMapHeader_html_ad52f12a467a76189e31b1c01fc0e6e65"><divclass="ttname"><ahref="structErasureCodingMapHeader.html#ad52f12a467a76189e31b1c01fc0e6e65">ErasureCodingMapHeader::length</a></div><divclass="ttdeci">uint64_t length</div><divclass="ttdoc">Size in bytes of the uncompressed mapping payload.</div><divclass="ttdef"><b>Definition</b><ahref="#l00056">erasure.h:56</a></div></div>
<divclass="ttc"id="astructStripeDataBlockEntry_html"><divclass="ttname"><ahref="structStripeDataBlockEntry.html">StripeDataBlockEntry</a></div><divclass="ttdoc">Per-data-block metadata within a stripe descriptor.</div><divclass="ttdef"><b>Definition</b><ahref="#l00087">erasure.h:88</a></div></div>
<divclass="ttc"id="astructStripeDataBlockEntry_html_a7aac714b3d98b543e792537fd7c8d3fc"><divclass="ttname"><ahref="structStripeDataBlockEntry.html#a7aac714b3d98b543e792537fd7c8d3fc">StripeDataBlockEntry::offset</a></div><divclass="ttdeci">uint64_t offset</div><divclass="ttdoc">Absolute file offset of the block.</div><divclass="ttdef"><b>Definition</b><ahref="#l00089">erasure.h:89</a></div></div>
<divclass="ttc"id="astructStripeDataBlockEntry_html_af85494afc772fe1469927c826e24a1b2"><divclass="ttname"><ahref="structStripeDataBlockEntry.html#af85494afc772fe1469927c826e24a1b2">StripeDataBlockEntry::shardCrc64</a></div><divclass="ttdeci">uint64_t shardCrc64</div><divclass="ttdoc">CRC64-ECMA of on-disk bytes zero-padded to shardSize.</div><divclass="ttdef"><b>Definition</b><ahref="#l00091">erasure.h:91</a></div></div>
<divclass="ttc"id="astructStripeGroupDescriptor_html"><divclass="ttname"><ahref="structStripeGroupDescriptor.html">StripeGroupDescriptor</a></div><divclass="ttdoc">Describes one protection group within the ECMB payload.</div><divclass="ttdef"><b>Definition</b><ahref="#l00068">erasure.h:69</a></div></div>
<divclass="ttc"id="astructStripeGroupDescriptor_html_a2a457b42f8562c872b0b7e0f1b054ef5"><divclass="ttname"><ahref="structStripeGroupDescriptor.html#a2a457b42f8562c872b0b7e0f1b054ef5">StripeGroupDescriptor::shardSize</a></div><divclass="ttdeci">uint32_t shardSize</div><divclass="ttdoc">Fixed shard size in bytes (max possible on-disk block size for this group).</div><divclass="ttdef"><b>Definition</b><ahref="#l00073">erasure.h:73</a></div></div>
<divclass="ttc"id="astructStripeGroupDescriptor_html_a46b938eb0fea65843e741c2cc240d14b"><divclass="ttname"><ahref="structStripeGroupDescriptor.html#a46b938eb0fea65843e741c2cc240d14b">StripeGroupDescriptor::K</a></div><divclass="ttdeci">uint16_t K</div><divclass="ttdoc">Number of data blocks per stripe.</div><divclass="ttdef"><b>Definition</b><ahref="#l00071">erasure.h:71</a></div></div>
<divclass="ttc"id="astructStripeGroupDescriptor_html_a6093f8c41fb1aa55c8367e2a92fe9f7f"><divclass="ttname"><ahref="structStripeGroupDescriptor.html#a6093f8c41fb1aa55c8367e2a92fe9f7f">StripeGroupDescriptor::groupType</a></div><divclass="ttdeci">uint8_t groupType</div><divclass="ttdoc">Protection group type (ErasureCodingGroupType).</div><divclass="ttdef"><b>Definition</b><ahref="#l00070">erasure.h:70</a></div></div>
<divclass="ttc"id="astructStripeGroupDescriptor_html_a747366878bf9d2d68b37fddc30346546"><divclass="ttname"><ahref="structStripeGroupDescriptor.html#a747366878bf9d2d68b37fddc30346546">StripeGroupDescriptor::interleaveDepth</a></div><divclass="ttdeci">uint16_t interleaveDepth</div><divclass="ttdoc">Interleave depth D (K for full interleave, 1 for consecutive).</div><divclass="ttdef"><b>Definition</b><ahref="#l00075">erasure.h:75</a></div></div>
<divclass="ttc"id="astructStripeGroupDescriptor_html_a9b737c4f6fda1894d51858d2a3d8d877"><divclass="ttname"><ahref="structStripeGroupDescriptor.html#a9b737c4f6fda1894d51858d2a3d8d877">StripeGroupDescriptor::stripeCount</a></div><divclass="ttdeci">uint32_t stripeCount</div><divclass="ttdoc">Number of stripes in this group.</div><divclass="ttdef"><b>Definition</b><ahref="#l00074">erasure.h:74</a></div></div>
<divclass="ttc"id="astructStripeGroupDescriptor_html_afd47dcff7fe194084c22dab9a6866c8b"><divclass="ttname"><ahref="structStripeGroupDescriptor.html#afd47dcff7fe194084c22dab9a6866c8b">StripeGroupDescriptor::M</a></div><divclass="ttdeci">uint16_t M</div><divclass="ttdoc">Number of parity blocks per stripe.</div><divclass="ttdef"><b>Definition</b><ahref="#l00072">erasure.h:72</a></div></div>
<divclass="ttc"id="astructStripeParityBlockEntry_html"><divclass="ttname"><ahref="structStripeParityBlockEntry.html">StripeParityBlockEntry</a></div><divclass="ttdoc">Per-parity-block metadata within a stripe descriptor.</div><divclass="ttdef"><b>Definition</b><ahref="#l00098">erasure.h:99</a></div></div>
<divclass="ttc"id="astructStripeParityBlockEntry_html_a4222801a62acbce61990ee79faf26050"><divclass="ttname"><ahref="structStripeParityBlockEntry.html#a4222801a62acbce61990ee79faf26050">StripeParityBlockEntry::offset</a></div><divclass="ttdeci">uint64_t offset</div><divclass="ttdoc">Absolute file offset of the parity DBLK.</div><divclass="ttdef"><b>Definition</b><ahref="#l00100">erasure.h:100</a></div></div>
</div><!-- fragment --></div><!-- contents -->
</div><!-- doc-content -->
</div><!-- container -->
<!-- start footer part -->
<divid="nav-path"class="navpath"><!-- id is needed for treeview function! -->
<liclass="footer">Generated by <ahref="https://www.doxygen.org/index.html"><imgclass="footer"src="doxygen.svg"width="104"height="31"alt="doxygen"/></a> 1.18.0 </li>