Files
libaaruformat/docs/html/erasure__internal_8h_source.html

197 lines
21 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.18.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>libaaruformat: include/erasure_internal.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="codefolding.js"></script>
<script type="text/javascript" src="clipboard.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript" src="cookie.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">libaaruformat<span id="projectnumber">&#160;1.0</span>
</div>
<div id="projectbrief">Aaru Data Preservation Suite - Format Library</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.18.0 -->
<script type="text/javascript">
let searchBox = new SearchBox("searchBox", "search/",'.html');
</script>
<script type="text/javascript">
document.addEventListener('DOMContentLoaded', codefold.init);
</script>
<script type="application/json" id="doxygen-config">
{
"relPath": "",
"generateTreeView": true,
"searchEngine": true,
"serverBasedSearch": false,
"disableIndex": false,
"dynamicMenus": true,
"fullSidebar": false
}
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<div id="main-nav-mobile">
<div class="sm sm-dox"><input id="main-menu-state" type="checkbox"/>
<label class="main-menu-btn" for="main-menu-state">
<span class="main-menu-btn-icon"></span> Toggle main menu visibility</label>
<span id="searchBoxPos1"></span>
</div>
</div><!-- main-nav-mobile -->
<div id="main-nav">
<ul class="sm sm-dox" id="main-menu">
<li id="searchBoxPos2">
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<span id="MSearchSelect" class="search-icon"><span class="search-icon-dropdown"></span></span>
<input type="text" id="MSearchField" value="" placeholder="Search" accesskey="S"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><div id="MSearchCloseImg" class="close-icon"></div></a>
</span>
</div>
</li>
</ul>
</div><!-- main-nav -->
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
document.addEventListener('DOMContentLoaded',() => { initNavTree('erasure__internal_8h_source.html','',''); });
</script>
<div id="container">
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div class="header">
<div class="headertitle"><div class="title">erasure_internal.h</div></div>
</div><!--header-->
<div class="contents">
<a href="erasure__internal_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno"> 1</span><span class="comment">/*</span></div>
<div class="line"><a id="l00002" name="l00002"></a><span class="lineno"> 2</span><span class="comment"> * This file is part of the Aaru Data Preservation Suite.</span></div>
<div class="line"><a id="l00003" name="l00003"></a><span class="lineno"> 3</span><span class="comment"> * Copyright (c) 2019-2026 Natalia Portillo.</span></div>
<div class="line"><a id="l00004" name="l00004"></a><span class="lineno"> 4</span><span class="comment"> *</span></div>
<div class="line"><a id="l00005" name="l00005"></a><span class="lineno"> 5</span><span class="comment"> * This library is free software; you can redistribute it and/or modify</span></div>
<div class="line"><a id="l00006" name="l00006"></a><span class="lineno"> 6</span><span class="comment"> * it under the terms of the GNU Lesser General Public License as</span></div>
<div class="line"><a id="l00007" name="l00007"></a><span class="lineno"> 7</span><span class="comment"> * published by the Free Software Foundation; either version 2.1 of the</span></div>
<div class="line"><a id="l00008" name="l00008"></a><span class="lineno"> 8</span><span class="comment"> * License, or (at your option) any later version.</span></div>
<div class="line"><a id="l00009" name="l00009"></a><span class="lineno"> 9</span><span class="comment"> *</span></div>
<div class="line"><a id="l00010" name="l00010"></a><span class="lineno"> 10</span><span class="comment"> * This library is distributed in the hope that it will be useful, but</span></div>
<div class="line"><a id="l00011" name="l00011"></a><span class="lineno"> 11</span><span class="comment"> * WITHOUT ANY WARRANTY; without even the implied warranty of</span></div>
<div class="line"><a id="l00012" name="l00012"></a><span class="lineno"> 12</span><span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</span></div>
<div class="line"><a id="l00013" name="l00013"></a><span class="lineno"> 13</span><span class="comment"> * Lesser General Public License for more details.</span></div>
<div class="line"><a id="l00014" name="l00014"></a><span class="lineno"> 14</span><span class="comment"> *</span></div>
<div class="line"><a id="l00015" name="l00015"></a><span class="lineno"> 15</span><span class="comment"> * You should have received a copy of the GNU Lesser General Public</span></div>
<div class="line"><a id="l00016" name="l00016"></a><span class="lineno"> 16</span><span class="comment"> * License along with this library; if not, see &lt;http://www.gnu.org/licenses/&gt;.</span></div>
<div class="line"><a id="l00017" name="l00017"></a><span class="lineno"> 17</span><span class="comment"> */</span></div>
<div class="line"><a id="l00018" name="l00018"></a><span class="lineno"> 18</span> </div>
<div class="line"><a id="l00019" name="l00019"></a><span class="lineno"> 19</span><span class="preprocessor">#ifndef LIBAARUFORMAT_ERASURE_INTERNAL_H</span></div>
<div class="line"><a id="l00020" name="l00020"></a><span class="lineno"> 20</span><span class="preprocessor">#define LIBAARUFORMAT_ERASURE_INTERNAL_H</span></div>
<div class="line"><a id="l00021" name="l00021"></a><span class="lineno"> 21</span> </div>
<div class="line"><a id="l00022" name="l00022"></a><span class="lineno"> 22</span><span class="preprocessor">#include &quot;<a class="code" href="context_8h.html">aaruformat/context.h</a>&quot;</span></div>
<div class="line"><a id="l00023" name="l00023"></a><span class="lineno"> 23</span><span class="preprocessor">#include &quot;<a class="code" href="data_8h.html">aaruformat/structs/data.h</a>&quot;</span></div>
<div class="line"><a id="l00024" name="l00024"></a><span class="lineno"> 24</span> </div>
<div class="line"><a id="l00025" name="l00025"></a><span class="lineno"> 25</span><span class="comment">/* ---- Write path ---- */</span></div>
<div class="line"><a id="l00026" name="l00026"></a><span class="lineno"> 26</span> </div>
<div class="line"><a id="l00027" name="l00027"></a><span class="lineno"> 27</span><span class="keywordtype">void</span> <a class="code hl_function" href="erasure__internal_8h.html#a676c380c73d5adf73afd7613ec06b29d">ec_accumulate_data_block</a>(<a class="code hl_struct" href="structaaruformat__context.html">aaruformat_context</a> *ctx, <span class="keyword">const</span> <a class="code hl_struct" href="structBlockHeader.html">BlockHeader</a> *block_header, <span class="keyword">const</span> uint8_t *lzma_props,</div>
<div class="line"><a id="l00028" name="l00028"></a><span class="lineno"> 28</span> <span class="keyword">const</span> uint8_t *payload, uint32_t payload_size, uint64_t file_offset);</div>
<div class="line"><a id="l00029" name="l00029"></a><span class="lineno"> 29</span> </div>
<div class="line"><a id="l00030" name="l00030"></a><span class="lineno"> 30</span><span class="keywordtype">void</span> <a class="code hl_function" href="erasure__internal_8h.html#aa258c90d05ad57fc4c378679e5187e48">ec_flush_data_stripe</a>(<a class="code hl_struct" href="structaaruformat__context.html">aaruformat_context</a> *ctx, uint32_t slot);</div>
<div class="line"><a id="l00031" name="l00031"></a><span class="lineno"> 31</span> </div>
<div class="line"><a id="l00032" name="l00032"></a><span class="lineno"> 32</span><span class="keywordtype">void</span> <a class="code hl_function" href="erasure__internal_8h.html#a38a12ac5d36e23b28d2f110906b14126">ec_finalize</a>(<a class="code hl_struct" href="structaaruformat__context.html">aaruformat_context</a> *ctx);</div>
<div class="line"><a id="l00033" name="l00033"></a><span class="lineno"> 33</span> </div>
<div class="line"><a id="l00034" name="l00034"></a><span class="lineno"> 34</span><span class="comment">/* ---- Read path ---- */</span></div>
<div class="line"><a id="l00035" name="l00035"></a><span class="lineno"> 35</span></div>
<div class="line"><a id="l00043" name="l00043"></a><span class="lineno"> 43</span><span class="keywordtype">void</span> <a class="code hl_function" href="erasure__internal_8h.html#a18f424702fcd85725ee26c1cf7e253db">ec_load_ecmb</a>(<a class="code hl_struct" href="structaaruformat__context.html">aaruformat_context</a> *ctx);</div>
<div class="line"><a id="l00044" name="l00044"></a><span class="lineno"> 44</span></div>
<div class="line"><a id="l00059" name="l00059"></a><span class="lineno"> 59</span>int32_t <a class="code hl_function" href="erasure__internal_8h.html#a7a9ac507738cdf72e951f152edd4d233">ec_recover_data_block</a>(<a class="code hl_struct" href="structaaruformat__context.html">aaruformat_context</a> *ctx, uint64_t block_offset, uint64_t offset,</div>
<div class="line"><a id="l00060" name="l00060"></a><span class="lineno"> 60</span> uint8_t *data, uint32_t *length, uint8_t sector_status);</div>
<div class="line"><a id="l00061" name="l00061"></a><span class="lineno"> 61</span></div>
<div class="line"><a id="l00080" name="l00080"></a><span class="lineno"> 80</span>int32_t <a class="code hl_function" href="erasure__internal_8h.html#af7d7ad06ff421cd43197434e2999f2d7">ec_recover_raw_block</a>(<a class="code hl_struct" href="structaaruformat__context.html">aaruformat_context</a> *ctx, uint64_t block_offset,</div>
<div class="line"><a id="l00081" name="l00081"></a><span class="lineno"> 81</span> uint8_t **recovered_data, uint32_t *recovered_size,</div>
<div class="line"><a id="l00082" name="l00082"></a><span class="lineno"> 82</span> <span class="keywordtype">void</span> *stripes, uint32_t stripe_count, <span class="keywordtype">void</span> *lookup,</div>
<div class="line"><a id="l00083" name="l00083"></a><span class="lineno"> 83</span> uint16_t group_K, uint16_t group_M, uint32_t group_shard_size);</div>
<div class="line"><a id="l00084" name="l00084"></a><span class="lineno"> 84</span></div>
<div class="line"><a id="l00090" name="l00090"></a><span class="lineno"> 90</span>int32_t <a class="code hl_function" href="erasure__internal_8h.html#aa17442a11d3d3ef4b51b5129eed19b45">ec_recover_meta_block</a>(<a class="code hl_struct" href="structaaruformat__context.html">aaruformat_context</a> *ctx, uint64_t block_offset,</div>
<div class="line"><a id="l00091" name="l00091"></a><span class="lineno"> 91</span> uint8_t **recovered_data, uint32_t *recovered_size);</div>
<div class="line"><a id="l00092" name="l00092"></a><span class="lineno"> 92</span></div>
<div class="line"><a id="l00096" name="l00096"></a><span class="lineno"> 96</span>int32_t <a class="code hl_function" href="erasure__internal_8h.html#a41514b5f6f31a9a2207f2807da831e26">ec_recover_ddt_block</a>(<a class="code hl_struct" href="structaaruformat__context.html">aaruformat_context</a> *ctx, uint64_t block_offset,</div>
<div class="line"><a id="l00097" name="l00097"></a><span class="lineno"> 97</span> uint8_t **recovered_data, uint32_t *recovered_size);</div>
<div class="line"><a id="l00098" name="l00098"></a><span class="lineno"> 98</span> </div>
<div class="line"><a id="l00099" name="l00099"></a><span class="lineno"> 99</span><span class="comment">/* ---- Cleanup ---- */</span></div>
<div class="line"><a id="l00100" name="l00100"></a><span class="lineno"> 100</span> </div>
<div class="line"><a id="l00101" name="l00101"></a><span class="lineno"> 101</span><span class="keywordtype">void</span> <a class="code hl_function" href="erasure__internal_8h.html#ae5fe558b49013df6e932278061a2ab53">ec_free</a>(<a class="code hl_struct" href="structaaruformat__context.html">aaruformat_context</a> *ctx);</div>
<div class="line"><a id="l00102" name="l00102"></a><span class="lineno"> 102</span> </div>
<div class="line"><a id="l00103" name="l00103"></a><span class="lineno"> 103</span><span class="preprocessor">#endif </span><span class="comment">/* LIBAARUFORMAT_ERASURE_INTERNAL_H */</span><span class="preprocessor"></span></div>
<div class="ttc" id="acontext_8h_html"><div class="ttname"><a href="context_8h.html">context.h</a></div><div class="ttdoc">Central runtime context structures for libaaruformat (image state, caches, checksum buffers).</div></div>
<div class="ttc" id="adata_8h_html"><div class="ttname"><a href="data_8h.html">data.h</a></div><div class="ttdoc">On-disk layout structures for data-bearing and geometry blocks.</div></div>
<div class="ttc" id="aerasure__internal_8h_html_a18f424702fcd85725ee26c1cf7e253db"><div class="ttname"><a href="erasure__internal_8h.html#a18f424702fcd85725ee26c1cf7e253db">ec_load_ecmb</a></div><div class="ttdeci">void ec_load_ecmb(aaruformat_context *ctx)</div><div class="ttdoc">Try to load the ECMB from the recovery footer at EOF.</div><div class="ttdef"><b>Definition</b> <a href="erasure_8c_source.html#l01046">erasure.c:1046</a></div></div>
<div class="ttc" id="aerasure__internal_8h_html_a38a12ac5d36e23b28d2f110906b14126"><div class="ttname"><a href="erasure__internal_8h.html#a38a12ac5d36e23b28d2f110906b14126">ec_finalize</a></div><div class="ttdeci">void ec_finalize(aaruformat_context *ctx)</div><div class="ttdoc">Flush all partial data stripes and write parity for all groups + ECMB + recovery footer.</div><div class="ttdef"><b>Definition</b> <a href="erasure_8c_source.html#l00585">erasure.c:585</a></div></div>
<div class="ttc" id="aerasure__internal_8h_html_a41514b5f6f31a9a2207f2807da831e26"><div class="ttname"><a href="erasure__internal_8h.html#a41514b5f6f31a9a2207f2807da831e26">ec_recover_ddt_block</a></div><div class="ttdeci">int32_t ec_recover_ddt_block(aaruformat_context *ctx, uint64_t block_offset, uint8_t **recovered_data, uint32_t *recovered_size)</div><div class="ttdoc">Attempt to recover a DDT secondary block at a given file offset.</div><div class="ttdef"><b>Definition</b> <a href="erasure_8c_source.html#l00918">erasure.c:918</a></div></div>
<div class="ttc" id="aerasure__internal_8h_html_a676c380c73d5adf73afd7613ec06b29d"><div class="ttname"><a href="erasure__internal_8h.html#a676c380c73d5adf73afd7613ec06b29d">ec_accumulate_data_block</a></div><div class="ttdeci">void ec_accumulate_data_block(aaruformat_context *ctx, const BlockHeader *block_header, const uint8_t *lzma_props, const uint8_t *payload, uint32_t payload_size, uint64_t file_offset)</div><div class="ttdoc">Accumulate parity for a data block that was just written to disk.</div><div class="ttdef"><b>Definition</b> <a href="erasure_8c_source.html#l00209">erasure.c:209</a></div></div>
<div class="ttc" id="aerasure__internal_8h_html_a7a9ac507738cdf72e951f152edd4d233"><div class="ttname"><a href="erasure__internal_8h.html#a7a9ac507738cdf72e951f152edd4d233">ec_recover_data_block</a></div><div class="ttdeci">int32_t ec_recover_data_block(aaruformat_context *ctx, uint64_t block_offset, uint64_t offset, uint8_t *data, uint32_t *length, uint8_t sector_status)</div><div class="ttdoc">Attempt to recover a data block that failed decompression or CRC verification.</div><div class="ttdef"><b>Definition</b> <a href="erasure_8c_source.html#l01303">erasure.c:1303</a></div></div>
<div class="ttc" id="aerasure__internal_8h_html_aa17442a11d3d3ef4b51b5129eed19b45"><div class="ttname"><a href="erasure__internal_8h.html#aa17442a11d3d3ef4b51b5129eed19b45">ec_recover_meta_block</a></div><div class="ttdeci">int32_t ec_recover_meta_block(aaruformat_context *ctx, uint64_t block_offset, uint8_t **recovered_data, uint32_t *recovered_size)</div><div class="ttdoc">Attempt to recover a metadata/media-tag block at a given file offset.</div><div class="ttdef"><b>Definition</b> <a href="erasure_8c_source.html#l00909">erasure.c:909</a></div></div>
<div class="ttc" id="aerasure__internal_8h_html_aa258c90d05ad57fc4c378679e5187e48"><div class="ttname"><a href="erasure__internal_8h.html#aa258c90d05ad57fc4c378679e5187e48">ec_flush_data_stripe</a></div><div class="ttdeci">void ec_flush_data_stripe(aaruformat_context *ctx, uint32_t slot)</div><div class="ttdoc">Write M parity blocks for a completed data stripe slot and record the stripe descriptor.</div><div class="ttdef"><b>Definition</b> <a href="erasure_8c_source.html#l00323">erasure.c:323</a></div></div>
<div class="ttc" id="aerasure__internal_8h_html_ae5fe558b49013df6e932278061a2ab53"><div class="ttname"><a href="erasure__internal_8h.html#ae5fe558b49013df6e932278061a2ab53">ec_free</a></div><div class="ttdeci">void ec_free(aaruformat_context *ctx)</div><div class="ttdoc">Free all erasure coding state from the context.</div><div class="ttdef"><b>Definition</b> <a href="erasure_8c_source.html#l00934">erasure.c:934</a></div></div>
<div class="ttc" id="aerasure__internal_8h_html_af7d7ad06ff421cd43197434e2999f2d7"><div class="ttname"><a href="erasure__internal_8h.html#af7d7ad06ff421cd43197434e2999f2d7">ec_recover_raw_block</a></div><div class="ttdeci">int32_t ec_recover_raw_block(aaruformat_context *ctx, uint64_t block_offset, uint8_t **recovered_data, uint32_t *recovered_size, void *stripes, uint32_t stripe_count, void *lookup, uint16_t group_K, uint16_t group_M, uint32_t group_shard_size)</div><div class="ttdoc">Attempt to recover a raw block at a given file offset using a specified stripe group.</div><div class="ttdef"><b>Definition</b> <a href="erasure_8c_source.html#l00827">erasure.c:827</a></div></div>
<div class="ttc" id="astructBlockHeader_html"><div class="ttname"><a href="structBlockHeader.html">BlockHeader</a></div><div class="ttdoc">Header preceding the compressed data payload of a data block (BlockType::DataBlock).</div><div class="ttdef"><b>Definition</b> <a href="data_8h_source.html#l00070">data.h:71</a></div></div>
<div class="ttc" id="astructaaruformat__context_html"><div class="ttname"><a href="structaaruformat__context.html">aaruformat_context</a></div><div class="ttdoc">Master context representing an open or in‑creation Aaru image.</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00177">context.h:178</a></div></div>
</div><!-- fragment --></div><!-- contents -->
</div><!-- doc-content -->
</div><!-- container -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a href="erasure__internal_8h.html">erasure_internal.h</a></li>
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.18.0 </li>
</ul>
</div>
</body>
</html>