Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/windirstat/llfio.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJenkins nedprod CI <foo@nowhere>2018-09-03 11:39:24 +0300
committerJenkins nedprod CI <foo@nowhere>2018-09-03 11:39:24 +0300
commitcdb50ac7615265b3720d67ffdcbdab594a22830b (patch)
tree0cfbe4168abe38353a7d7f048f6e6e301f6eaffa
parent396b83f622bfd069ff81d90e299e39b088e26e27 (diff)
Travis CI updates documentation
-rw-r--r--classasync__file__handle.html4
-rw-r--r--classllfio__v2__xxx_1_1algorithm_1_1shared__fs__mutex_1_1atomic__append.html4
-rw-r--r--classllfio__v2__xxx_1_1algorithm_1_1shared__fs__mutex_1_1memory__map.html4
-rw-r--r--classllfio__v2__xxx_1_1file__handle-members.html4
-rw-r--r--classllfio__v2__xxx_1_1file__handle.html61
-rw-r--r--classllfio__v2__xxx_1_1file__handle.js2
-rw-r--r--classllfio__v2__xxx_1_1handle.html8
-rw-r--r--classllfio__v2__xxx_1_1io__handle-members.html29
-rw-r--r--classllfio__v2__xxx_1_1io__handle.html57
-rw-r--r--classllfio__v2__xxx_1_1io__handle.js1
-rw-r--r--classllfio__v2__xxx_1_1map__handle-members.html45
-rw-r--r--classllfio__v2__xxx_1_1map__handle.html59
-rw-r--r--classllfio__v2__xxx_1_1map__handle.js1
-rw-r--r--classllfio__v2__xxx_1_1mapped__file__handle-members.html4
-rw-r--r--classllfio__v2__xxx_1_1mapped__file__handle.html69
-rw-r--r--classllfio__v2__xxx_1_1mapped__file__handle.js2
-rw-r--r--classllfio__v2__xxx_1_1section__handle.html8
-rw-r--r--file__handle_8hpp.html2
-rw-r--r--file__handle_8hpp.js1
-rw-r--r--functions_func_r.html1
-rw-r--r--functions_r.html1
-rw-r--r--io__handle_8hpp.html2
-rw-r--r--io__handle_8hpp.js1
-rw-r--r--namespacellfio__v2__xxx.html92
-rw-r--r--namespacemembers.html2
-rw-r--r--namespacemembers_func.html2
-rw-r--r--navtreedata.js12
-rw-r--r--navtreeindex1.js4
-rw-r--r--navtreeindex2.js50
-rw-r--r--navtreeindex3.js40
-rw-r--r--navtreeindex4.js6
-rw-r--r--navtreeindex5.js42
-rw-r--r--navtreeindex6.js6
-rw-r--r--navtreeindex7.js6
-rw-r--r--navtreeindex8.js2
-rw-r--r--search/all_10.js2
-rw-r--r--search/functions_10.js2
37 files changed, 227 insertions, 411 deletions
diff --git a/classasync__file__handle.html b/classasync__file__handle.html
index 70fcd004..e037c2d4 100644
--- a/classasync__file__handle.html
+++ b/classasync__file__handle.html
@@ -409,7 +409,7 @@ class&#160;</td><td class="memItemRight" valign="bottom"><b>io_service</b></td><
</dl>
<dl class="section user"><dt>Errors returnable</dt><dd>Any of the values POSIX open() or CreateFile() can return. </dd></dl>
<div class="fragment"><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; {</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; <span class="comment">// Open it overlapped, otherwise no difference.</span></div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; OUTCOME_TRY(v, <a class="code" href="namespacellfio__v2__xxx.html#af31a062639499a79ef5cc8aed16ba65d">file_handle::file</a>(std::move(base), _path, _mode, _creation, _caching, flags | flag::overlapped));</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; <a class="code" href="classasync__file__handle.html">async_file_handle</a> ret(std::move(v));</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; ret._service = &amp;service;</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; <span class="keywordflow">return</span> std::move(ret);</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; }</div><div class="ttc" id="classasync__file__handle_html"><div class="ttname"><a href="classasync__file__handle.html">async_file_handle</a></div><div class="ttdoc">An asynchronous handle to an open something. </div><div class="ttdef"><b>Definition:</b> async_file_handle.hpp:63</div></div>
-<div class="ttc" id="namespacellfio__v2__xxx_html_af31a062639499a79ef5cc8aed16ba65d"><div class="ttname"><a href="namespacellfio__v2__xxx.html#af31a062639499a79ef5cc8aed16ba65d">llfio_v2_xxx::file</a></div><div class="ttdeci">result&lt; file_handle &gt; file(const path_handle &amp;base, file_handle::path_view_type path, file_handle::mode _mode=file_handle::mode::read, file_handle::creation _creation=file_handle::creation::open_existing, file_handle::caching _caching=file_handle::caching::all, file_handle::flag flags=file_handle::flag::none) noexcept</div><div class="ttdef"><b>Definition:</b> file_handle.hpp:317</div></div>
+<div class="ttc" id="namespacellfio__v2__xxx_html_af31a062639499a79ef5cc8aed16ba65d"><div class="ttname"><a href="namespacellfio__v2__xxx.html#af31a062639499a79ef5cc8aed16ba65d">llfio_v2_xxx::file</a></div><div class="ttdeci">result&lt; file_handle &gt; file(const path_handle &amp;base, file_handle::path_view_type path, file_handle::mode _mode=file_handle::mode::read, file_handle::creation _creation=file_handle::creation::open_existing, file_handle::caching _caching=file_handle::caching::all, file_handle::flag flags=file_handle::flag::none) noexcept</div><div class="ttdef"><b>Definition:</b> file_handle.hpp:333</div></div>
</div><!-- fragment -->
</div>
</div>
@@ -584,7 +584,7 @@ class&#160;</td><td class="memItemRight" valign="bottom"><b>io_service</b></td><
</div><div class="memdoc">
<p><em>Securely</em> create an async file handle creating a temporary anonymous inode in the filesystem referred to by <em>dirpath</em>. The inode created has no name nor accessible path on the filing system and ceases to exist as soon as the last handle is closed, making it ideal for use as a temporary file where other processes do not need to have access to its contents via some path on the filing system (a classic use case is for backing shared memory maps).</p>
<dl class="section user"><dt>Errors returnable</dt><dd>Any of the values POSIX open() or CreateFile() can return. </dd></dl>
-<div class="fragment"><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; {</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; <span class="comment">// Open it overlapped, otherwise no difference.</span></div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; OUTCOME_TRY(v, <a class="code" href="namespacellfio__v2__xxx.html#ac8d9dc908fe39f9c896e99f6b7a39d81">file_handle::temp_inode</a>(dir, _mode, flags | flag::overlapped));</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; <a class="code" href="classasync__file__handle.html">async_file_handle</a> ret(std::move(v));</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; ret._service = &amp;service;</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; <span class="keywordflow">return</span> std::move(ret);</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; }</div><div class="ttc" id="namespacellfio__v2__xxx_html_ac8d9dc908fe39f9c896e99f6b7a39d81"><div class="ttname"><a href="namespacellfio__v2__xxx.html#ac8d9dc908fe39f9c896e99f6b7a39d81">llfio_v2_xxx::temp_inode</a></div><div class="ttdeci">result&lt; file_handle &gt; temp_inode(const path_handle &amp;dirh=path_discovery::storage_backed_temporary_files_directory(), file_handle::mode _mode=file_handle::mode::write, file_handle::flag flags=file_handle::flag::none) noexcept</div><div class="ttdef"><b>Definition:</b> file_handle.hpp:364</div></div>
+<div class="fragment"><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; {</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; <span class="comment">// Open it overlapped, otherwise no difference.</span></div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; OUTCOME_TRY(v, <a class="code" href="namespacellfio__v2__xxx.html#ac8d9dc908fe39f9c896e99f6b7a39d81">file_handle::temp_inode</a>(dir, _mode, flags | flag::overlapped));</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; <a class="code" href="classasync__file__handle.html">async_file_handle</a> ret(std::move(v));</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; ret._service = &amp;service;</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; <span class="keywordflow">return</span> std::move(ret);</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; }</div><div class="ttc" id="namespacellfio__v2__xxx_html_ac8d9dc908fe39f9c896e99f6b7a39d81"><div class="ttname"><a href="namespacellfio__v2__xxx.html#ac8d9dc908fe39f9c896e99f6b7a39d81">llfio_v2_xxx::temp_inode</a></div><div class="ttdeci">result&lt; file_handle &gt; temp_inode(const path_handle &amp;dirh=path_discovery::storage_backed_temporary_files_directory(), file_handle::mode _mode=file_handle::mode::write, file_handle::flag flags=file_handle::flag::none) noexcept</div><div class="ttdef"><b>Definition:</b> file_handle.hpp:380</div></div>
<div class="ttc" id="classasync__file__handle_html"><div class="ttname"><a href="classasync__file__handle.html">async_file_handle</a></div><div class="ttdoc">An asynchronous handle to an open something. </div><div class="ttdef"><b>Definition:</b> async_file_handle.hpp:63</div></div>
</div><!-- fragment -->
</div>
diff --git a/classllfio__v2__xxx_1_1algorithm_1_1shared__fs__mutex_1_1atomic__append.html b/classllfio__v2__xxx_1_1algorithm_1_1shared__fs__mutex_1_1atomic__append.html
index 31054548..451ec2ac 100644
--- a/classllfio__v2__xxx_1_1algorithm_1_1shared__fs__mutex_1_1atomic__append.html
+++ b/classllfio__v2__xxx_1_1algorithm_1_1shared__fs__mutex_1_1atomic__append.html
@@ -251,10 +251,10 @@ Protected Member Functions</h2></td></tr>
<dl class="todo"><dt><b><a class="el" href="todo.html#_todo000006">Todo:</a></b></dt><dd>Read from header.last_known_good immediately if possible in order to avoid a duplicate read later </dd></dl>
<p>Implements <a class="el" href="classllfio__v2__xxx_1_1algorithm_1_1shared__fs__mutex_1_1shared__fs__mutex.html">llfio_v2_xxx::algorithm::shared_fs_mutex::shared_fs_mutex</a>.</p>
-<div class="fragment"><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; {</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; LLFIO_LOG_FUNCTION_CALL(<span class="keyword">this</span>);</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; atomic_append_detail::lock_request lock_request;</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; <span class="keywordflow">if</span>(out.entities.size() &gt; <span class="keyword">sizeof</span>(lock_request.entities) / <span class="keyword">sizeof</span>(lock_request.entities[0]))</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; {</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; <span class="keywordflow">return</span> errc::argument_list_too_long;</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; }</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160;</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; std::chrono::steady_clock::time_point began_steady;</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; std::chrono::system_clock::time_point end_utc;</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; <span class="keywordflow">if</span>(d)</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; {</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; <span class="keywordflow">if</span>((d).steady)</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; {</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; began_steady = std::chrono::steady_clock::now();</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; }</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; {</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; end_utc = (d).to_time_point();</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; }</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; }</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; <span class="comment">// Fire this if an error occurs</span></div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; <span class="keyword">auto</span> disableunlock = undoer([&amp;] { out.release(); });</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160;</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; <span class="comment">// Write my lock request immediately</span></div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; memset(&amp;lock_request, 0, <span class="keyword">sizeof</span>(lock_request));</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; lock_request.unique_id = _unique_id;</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; <span class="keyword">auto</span> count = std::chrono::system_clock::now() - std::chrono::system_clock::from_time_t(_header.time_offset);</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; lock_request.us_count = std::chrono::duration_cast&lt;std::chrono::microseconds&gt;(count).count();</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; lock_request.items = out.entities.size();</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; memcpy(lock_request.entities, out.entities.data(), <span class="keyword">sizeof</span>(lock_request.entities[0]) * out.entities.size());</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; <span class="keywordflow">if</span>(!_skip_hashing)</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; {</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; lock_request.hash = QUICKCPPLIB_NAMESPACE::algorithm::hash::fast_hash::hash((reinterpret_cast&lt;char *&gt;(&amp;lock_request)) + 16, <span class="keyword">sizeof</span>(lock_request) - 16);</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; }</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; <span class="comment">// My lock request will be the file&#39;s current length or higher</span></div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; OUTCOME_TRY(my_lock_request_offset, _h.<a class="code" href="classllfio__v2__xxx_1_1file__handle.html#a7991af58283025b80a7225866643f0b4">maximum_extent</a>());</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; {</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; OUTCOME_TRYV(_h.<a class="code" href="classllfio__v2__xxx_1_1handle.html#a101620e9fff0c0e8c346af0e9de58b6a">set_append_only</a>(<span class="keyword">true</span>));</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; <span class="keyword">auto</span> undo = undoer([<span class="keyword">this</span>] { (void) _h.<a class="code" href="classllfio__v2__xxx_1_1handle.html#a101620e9fff0c0e8c346af0e9de58b6a">set_append_only</a>(<span class="keyword">false</span>); });</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; file_handle::extent_guard append_guard;</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; <span class="keywordflow">if</span>(_nfs_compatibility)</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; {</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; <span class="keyword">auto</span> lastbyte = <span class="keyword">static_cast&lt;</span>file_handle::extent_type<span class="keyword">&gt;</span>(-1);</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; <span class="comment">// Lock up to the beginning of the shadow lock space</span></div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; lastbyte &amp;= ~(1ULL &lt;&lt; 63U);</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; OUTCOME_TRY(append_guard_, _h.<a class="code" href="classllfio__v2__xxx_1_1io__handle.html#a29cc9f2525f78dd73f8402cb59d97212">lock</a>(my_lock_request_offset, lastbyte, <span class="keyword">true</span>));</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; append_guard = std::move(append_guard_);</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; }</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; OUTCOME_TRYV(_h.<a class="code" href="classllfio__v2__xxx_1_1io__handle.html#a83884eca7b4cd09125a5cf8a155e6052">write</a>(0, {{reinterpret_cast&lt;byte *&gt;(&amp;lock_request), sizeof(lock_request)}}));</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; }</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160;</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; <span class="comment">// Find the record I just wrote</span></div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; <span class="keyword">alignas</span>(64) byte _buffer[4096 + 2048]; <span class="comment">// 6Kb cache line aligned buffer</span></div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; <span class="comment">// Read onwards from length as reported before I wrote my lock request</span></div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; <span class="comment">// until I find my lock request. This loop should never actually iterate</span></div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; <span class="comment">// except under extreme load conditions.</span><span class="comment"></span></div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160;<span class="comment"> //! \todo Read from header.last_known_good immediately if possible in order</span></div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160;<span class="comment"> //! to avoid a duplicate read later</span></div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160;<span class="comment"></span> <span class="keywordflow">for</span>(;;)</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; {</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; file_handle::buffer_type req{_buffer, <span class="keyword">sizeof</span>(_buffer)};</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; file_handle::io_result&lt;file_handle::buffers_type&gt; readoutcome = _h.<a class="code" href="classllfio__v2__xxx_1_1io__handle.html#a5f7485307a0704aa1680e5785be2035d">read</a>({req, my_lock_request_offset});</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; <span class="comment">// Should never happen :)</span></div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; <span class="keywordflow">if</span>(readoutcome.has_error())</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; {</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; LLFIO_LOG_FATAL(<span class="keyword">this</span>, <span class="stringliteral">&quot;atomic_append::lock() saw an error when searching for just written data&quot;</span>);</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; std::terminate();</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; }</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; <span class="keyword">const</span> atomic_append_detail::lock_request *record, *lastrecord;</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; <span class="keywordflow">for</span>(record = reinterpret_cast&lt;const atomic_append_detail::lock_request *&gt;(readoutcome.value()[0].data()), lastrecord = reinterpret_cast&lt;const atomic_append_detail::lock_request *&gt;(readoutcome.value()[0].data() + readoutcome.value()[0].size()); record &lt; lastrecord &amp;&amp; record-&gt;hash != lock_request.hash;</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; ++record)</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; {</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; my_lock_request_offset += <span class="keyword">sizeof</span>(atomic_append_detail::lock_request);</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; }</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; <span class="keywordflow">if</span>(record-&gt;hash == lock_request.hash)</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; {</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; }</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; }</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160;</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; <span class="comment">// extent_guard is now valid and will be unlocked on error</span></div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; out.hint = my_lock_request_offset;</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; disableunlock.dismiss();</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160;</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; <span class="comment">// Lock my request for writing so others can sleep on me</span></div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; file_handle::extent_guard my_request_guard;</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; <span class="keywordflow">if</span>(!spin_not_sleep)</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; {</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; <span class="keyword">auto</span> lock_offset = my_lock_request_offset;</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; <span class="comment">// Set the top bit to use the shadow lock space on Windows</span></div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; lock_offset |= (1ULL &lt;&lt; 63U);</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; OUTCOME_TRY(my_request_guard_, _h.<a class="code" href="classllfio__v2__xxx_1_1io__handle.html#a29cc9f2525f78dd73f8402cb59d97212">lock</a>(lock_offset, <span class="keyword">sizeof</span>(lock_request), <span class="keyword">true</span>));</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; my_request_guard = std::move(my_request_guard_);</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; }</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160;</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; <span class="comment">// Read every record preceding mine until header.first_known_good inclusive</span></div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; <span class="keyword">auto</span> record_offset = my_lock_request_offset - <span class="keyword">sizeof</span>(atomic_append_detail::lock_request);</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; <span class="keywordflow">do</span></div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; {</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; reload:</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; <span class="comment">// Refresh the header and load a snapshot of everything between record_offset</span></div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; <span class="comment">// and first_known_good or -6Kb, whichever the sooner</span></div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160; OUTCOME_TRYV(_read_header());</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; <span class="comment">// If there are no preceding records, we&#39;re done</span></div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; <span class="keywordflow">if</span>(record_offset &lt; _header.first_known_good)</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; {</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; }</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; <span class="keyword">auto</span> start_offset = record_offset;</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; <span class="keywordflow">if</span>(start_offset &gt; <span class="keyword">sizeof</span>(_buffer) - <span class="keyword">sizeof</span>(atomic_append_detail::lock_request))</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; {</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; start_offset -= <span class="keyword">sizeof</span>(_buffer) - <span class="keyword">sizeof</span>(atomic_append_detail::lock_request);</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; }</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; {</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; start_offset = <span class="keyword">sizeof</span>(atomic_append_detail::lock_request);</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; }</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; <span class="keywordflow">if</span>(start_offset &lt; _header.first_known_good)</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; {</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; start_offset = _header.first_known_good;</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160; }</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; assert(record_offset &gt;= start_offset);</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; assert(record_offset - start_offset &lt;= <span class="keyword">sizeof</span>(_buffer));</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; file_handle::buffer_type req{_buffer, (size_t)(record_offset - start_offset) + <span class="keyword">sizeof</span>(atomic_append_detail::lock_request)};</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160; OUTCOME_TRY(batchread, _h.<a class="code" href="classllfio__v2__xxx_1_1io__handle.html#a5f7485307a0704aa1680e5785be2035d">read</a>({req, start_offset}));</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; assert(batchread[0].size() == record_offset - start_offset + <span class="keyword">sizeof</span>(atomic_append_detail::lock_request));</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; <span class="keyword">const</span> atomic_append_detail::lock_request *record = <span class="keyword">reinterpret_cast&lt;</span>atomic_append_detail::lock_request *<span class="keyword">&gt;</span>(batchread[0].data() + batchread[0].size() - <span class="keyword">sizeof</span>(atomic_append_detail::lock_request));</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; <span class="keyword">const</span> atomic_append_detail::lock_request *firstrecord = <span class="keyword">reinterpret_cast&lt;</span>atomic_append_detail::lock_request *<span class="keyword">&gt;</span>(batchread[0].data());</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160;</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; <span class="comment">// Skip all completed lock requests or not mentioning any of my entities</span></div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; <span class="keywordflow">for</span>(; record &gt;= firstrecord; record_offset -= <span class="keyword">sizeof</span>(atomic_append_detail::lock_request), --record)</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; {</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; <span class="comment">// If a completed lock request, skip</span></div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; <span class="keywordflow">if</span>(!record-&gt;hash &amp;&amp; (record-&gt;unique_id == 0u))</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; {</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; }</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160; <span class="comment">// If record hash doesn&#39;t match contents it&#39;s a torn read, reload</span></div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; <span class="keywordflow">if</span>(!_skip_hashing)</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160; {</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160; <span class="keywordflow">if</span>(record-&gt;hash != QUICKCPPLIB_NAMESPACE::algorithm::hash::fast_hash::hash((reinterpret_cast&lt;const char *&gt;(record)) + 16, <span class="keyword">sizeof</span>(atomic_append_detail::lock_request) - 16))</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; {</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; <span class="keywordflow">goto</span> reload;</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; }</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; }</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160;</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160; <span class="comment">// Does this record lock anything I am locking?</span></div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; <span class="keywordflow">for</span>(<span class="keyword">const</span> <span class="keyword">auto</span> &amp;entity : out.entities)</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; {</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">size_t</span> n = 0; n &lt; record-&gt;items; n++)</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; {</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; <span class="keywordflow">if</span>(record-&gt;entities[n].value == entity.value)</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; {</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; <span class="comment">// Is the lock I want exclusive or the lock he wants exclusive?</span></div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; <span class="comment">// If so, need to block</span></div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160; <span class="keywordflow">if</span>((record-&gt;entities[n].exclusive != 0u) || (entity.exclusive != 0u))</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; {</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160; <span class="keywordflow">goto</span> beginwait;</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160; }</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; }</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160; }</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160; }</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; }</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; <span class="comment">// None of this batch of records has anything to do with my request, so keep going</span></div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160;</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160; beginwait:</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; <span class="comment">// Sleep until this record is freed using a shared lock</span></div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160; <span class="comment">// on the record in our way. Note there is a race here</span></div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160; <span class="comment">// between when the lock requester writes the lock</span></div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160; <span class="comment">// request and when he takes an exclusive lock on it,</span></div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160; <span class="comment">// so if our shared lock succeeds we need to immediately</span></div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160; <span class="comment">// unlock and retry based on the data.</span></div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160; std::this_thread::yield();</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160; <span class="keywordflow">if</span>(!spin_not_sleep)</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160; {</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160; deadline nd;</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160; <span class="keywordflow">if</span>(d)</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; {</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160; <span class="keywordflow">if</span>((d).steady)</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160; {</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160; std::chrono::nanoseconds ns = std::chrono::duration_cast&lt;std::chrono::nanoseconds&gt;((began_steady + std::chrono::nanoseconds((d).nsecs)) - std::chrono::steady_clock::now());</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; <span class="keywordflow">if</span>(ns.count() &lt; 0)</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; {</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; (nd).nsecs = 0;</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160; }</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160; {</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160; (nd).nsecs = ns.count();</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160; }</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160; }</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160; {</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160; (nd) = (d);</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160; }</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160; }</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160; <span class="keyword">auto</span> lock_offset = record_offset;</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; <span class="comment">// Set the top bit to use the shadow lock space on Windows</span></div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160; lock_offset |= (1ULL &lt;&lt; 63U);</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160; OUTCOME_TRYV(_h.<a class="code" href="classllfio__v2__xxx_1_1io__handle.html#a29cc9f2525f78dd73f8402cb59d97212">lock</a>(lock_offset, <span class="keyword">sizeof</span>(*record), <span class="keyword">false</span>, nd));</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160; }</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160; <span class="comment">// Make sure we haven&#39;t timed out during this wait</span></div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160; <span class="keywordflow">if</span>(d)</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160; {</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160; <span class="keywordflow">if</span>((d).steady)</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160; {</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160; <span class="keywordflow">if</span>(std::chrono::steady_clock::now() &gt;= (began_steady + std::chrono::nanoseconds((d).nsecs)))</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160; {</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160; <span class="keywordflow">return</span> errc::timed_out;</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160; }</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160; }</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160; {</div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160; <span class="keywordflow">if</span>(std::chrono::system_clock::now() &gt;= end_utc)</div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160; {</div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160; <span class="keywordflow">return</span> errc::timed_out;</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160; }</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160; }</div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160; }</div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160; } <span class="keywordflow">while</span>(record_offset &gt;= _header.first_known_good);</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160; <span class="keywordflow">return</span> success();</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160; }</div><div class="ttc" id="classllfio__v2__xxx_1_1io__handle_html_a83884eca7b4cd09125a5cf8a155e6052"><div class="ttname"><a href="classllfio__v2__xxx_1_1io__handle.html#a83884eca7b4cd09125a5cf8a155e6052">llfio_v2_xxx::io_handle::write</a></div><div class="ttdeci">virtual io_result&lt; const_buffers_type &gt; write(io_request&lt; const_buffers_type &gt; reqs, deadline d=deadline()) noexcept</div><div class="ttdoc">Write data to the open handle. </div></div>
+<div class="fragment"><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; {</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; LLFIO_LOG_FUNCTION_CALL(<span class="keyword">this</span>);</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; atomic_append_detail::lock_request lock_request;</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; <span class="keywordflow">if</span>(out.entities.size() &gt; <span class="keyword">sizeof</span>(lock_request.entities) / <span class="keyword">sizeof</span>(lock_request.entities[0]))</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; {</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; <span class="keywordflow">return</span> errc::argument_list_too_long;</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; }</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160;</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; std::chrono::steady_clock::time_point began_steady;</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; std::chrono::system_clock::time_point end_utc;</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; <span class="keywordflow">if</span>(d)</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; {</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; <span class="keywordflow">if</span>((d).steady)</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; {</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; began_steady = std::chrono::steady_clock::now();</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; }</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; {</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; end_utc = (d).to_time_point();</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; }</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; }</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; <span class="comment">// Fire this if an error occurs</span></div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; <span class="keyword">auto</span> disableunlock = undoer([&amp;] { out.release(); });</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160;</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; <span class="comment">// Write my lock request immediately</span></div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; memset(&amp;lock_request, 0, <span class="keyword">sizeof</span>(lock_request));</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; lock_request.unique_id = _unique_id;</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; <span class="keyword">auto</span> count = std::chrono::system_clock::now() - std::chrono::system_clock::from_time_t(_header.time_offset);</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; lock_request.us_count = std::chrono::duration_cast&lt;std::chrono::microseconds&gt;(count).count();</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; lock_request.items = out.entities.size();</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; memcpy(lock_request.entities, out.entities.data(), <span class="keyword">sizeof</span>(lock_request.entities[0]) * out.entities.size());</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; <span class="keywordflow">if</span>(!_skip_hashing)</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; {</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; lock_request.hash = QUICKCPPLIB_NAMESPACE::algorithm::hash::fast_hash::hash((reinterpret_cast&lt;char *&gt;(&amp;lock_request)) + 16, <span class="keyword">sizeof</span>(lock_request) - 16);</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; }</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; <span class="comment">// My lock request will be the file&#39;s current length or higher</span></div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; OUTCOME_TRY(my_lock_request_offset, _h.<a class="code" href="classllfio__v2__xxx_1_1file__handle.html#a7991af58283025b80a7225866643f0b4">maximum_extent</a>());</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; {</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; OUTCOME_TRYV(_h.<a class="code" href="classllfio__v2__xxx_1_1handle.html#a101620e9fff0c0e8c346af0e9de58b6a">set_append_only</a>(<span class="keyword">true</span>));</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; <span class="keyword">auto</span> undo = undoer([<span class="keyword">this</span>] { (void) _h.<a class="code" href="classllfio__v2__xxx_1_1handle.html#a101620e9fff0c0e8c346af0e9de58b6a">set_append_only</a>(<span class="keyword">false</span>); });</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; file_handle::extent_guard append_guard;</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; <span class="keywordflow">if</span>(_nfs_compatibility)</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; {</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; <span class="keyword">auto</span> lastbyte = <span class="keyword">static_cast&lt;</span>file_handle::extent_type<span class="keyword">&gt;</span>(-1);</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; <span class="comment">// Lock up to the beginning of the shadow lock space</span></div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; lastbyte &amp;= ~(1ULL &lt;&lt; 63U);</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; OUTCOME_TRY(append_guard_, _h.<a class="code" href="classllfio__v2__xxx_1_1io__handle.html#a29cc9f2525f78dd73f8402cb59d97212">lock</a>(my_lock_request_offset, lastbyte, <span class="keyword">true</span>));</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; append_guard = std::move(append_guard_);</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; }</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; OUTCOME_TRYV(_h.<a class="code" href="classllfio__v2__xxx_1_1io__handle.html#a83884eca7b4cd09125a5cf8a155e6052">write</a>(0, {{reinterpret_cast&lt;byte *&gt;(&amp;lock_request), sizeof(lock_request)}}));</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; }</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160;</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; <span class="comment">// Find the record I just wrote</span></div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; <span class="keyword">alignas</span>(64) byte _buffer[4096 + 2048]; <span class="comment">// 6Kb cache line aligned buffer</span></div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; <span class="comment">// Read onwards from length as reported before I wrote my lock request</span></div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; <span class="comment">// until I find my lock request. This loop should never actually iterate</span></div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; <span class="comment">// except under extreme load conditions.</span><span class="comment"></span></div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160;<span class="comment"> //! \todo Read from header.last_known_good immediately if possible in order</span></div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160;<span class="comment"> //! to avoid a duplicate read later</span></div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160;<span class="comment"></span> <span class="keywordflow">for</span>(;;)</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; {</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; file_handle::buffer_type req{_buffer, <span class="keyword">sizeof</span>(_buffer)};</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; file_handle::io_result&lt;file_handle::buffers_type&gt; readoutcome = _h.<a class="code" href="classllfio__v2__xxx_1_1file__handle.html#a6e46c6ea379152eb559ab15990f7c467">read</a>({req, my_lock_request_offset});</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; <span class="comment">// Should never happen :)</span></div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; <span class="keywordflow">if</span>(readoutcome.has_error())</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; {</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; LLFIO_LOG_FATAL(<span class="keyword">this</span>, <span class="stringliteral">&quot;atomic_append::lock() saw an error when searching for just written data&quot;</span>);</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; std::terminate();</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; }</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; <span class="keyword">const</span> atomic_append_detail::lock_request *record, *lastrecord;</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; <span class="keywordflow">for</span>(record = reinterpret_cast&lt;const atomic_append_detail::lock_request *&gt;(readoutcome.value()[0].data()), lastrecord = reinterpret_cast&lt;const atomic_append_detail::lock_request *&gt;(readoutcome.value()[0].data() + readoutcome.value()[0].size()); record &lt; lastrecord &amp;&amp; record-&gt;hash != lock_request.hash;</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; ++record)</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; {</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; my_lock_request_offset += <span class="keyword">sizeof</span>(atomic_append_detail::lock_request);</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; }</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; <span class="keywordflow">if</span>(record-&gt;hash == lock_request.hash)</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; {</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; }</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; }</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160;</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; <span class="comment">// extent_guard is now valid and will be unlocked on error</span></div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; out.hint = my_lock_request_offset;</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; disableunlock.dismiss();</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160;</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; <span class="comment">// Lock my request for writing so others can sleep on me</span></div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; file_handle::extent_guard my_request_guard;</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; <span class="keywordflow">if</span>(!spin_not_sleep)</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; {</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; <span class="keyword">auto</span> lock_offset = my_lock_request_offset;</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; <span class="comment">// Set the top bit to use the shadow lock space on Windows</span></div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; lock_offset |= (1ULL &lt;&lt; 63U);</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; OUTCOME_TRY(my_request_guard_, _h.<a class="code" href="classllfio__v2__xxx_1_1io__handle.html#a29cc9f2525f78dd73f8402cb59d97212">lock</a>(lock_offset, <span class="keyword">sizeof</span>(lock_request), <span class="keyword">true</span>));</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; my_request_guard = std::move(my_request_guard_);</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; }</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160;</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; <span class="comment">// Read every record preceding mine until header.first_known_good inclusive</span></div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; <span class="keyword">auto</span> record_offset = my_lock_request_offset - <span class="keyword">sizeof</span>(atomic_append_detail::lock_request);</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; <span class="keywordflow">do</span></div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; {</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; reload:</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; <span class="comment">// Refresh the header and load a snapshot of everything between record_offset</span></div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; <span class="comment">// and first_known_good or -6Kb, whichever the sooner</span></div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160; OUTCOME_TRYV(_read_header());</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; <span class="comment">// If there are no preceding records, we&#39;re done</span></div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; <span class="keywordflow">if</span>(record_offset &lt; _header.first_known_good)</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; {</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; }</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; <span class="keyword">auto</span> start_offset = record_offset;</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; <span class="keywordflow">if</span>(start_offset &gt; <span class="keyword">sizeof</span>(_buffer) - <span class="keyword">sizeof</span>(atomic_append_detail::lock_request))</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; {</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; start_offset -= <span class="keyword">sizeof</span>(_buffer) - <span class="keyword">sizeof</span>(atomic_append_detail::lock_request);</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; }</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; {</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; start_offset = <span class="keyword">sizeof</span>(atomic_append_detail::lock_request);</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; }</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; <span class="keywordflow">if</span>(start_offset &lt; _header.first_known_good)</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; {</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; start_offset = _header.first_known_good;</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160; }</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; assert(record_offset &gt;= start_offset);</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; assert(record_offset - start_offset &lt;= <span class="keyword">sizeof</span>(_buffer));</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; file_handle::buffer_type req{_buffer, (size_t)(record_offset - start_offset) + <span class="keyword">sizeof</span>(atomic_append_detail::lock_request)};</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160; OUTCOME_TRY(batchread, _h.<a class="code" href="classllfio__v2__xxx_1_1file__handle.html#a6e46c6ea379152eb559ab15990f7c467">read</a>({req, start_offset}));</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; assert(batchread[0].size() == record_offset - start_offset + <span class="keyword">sizeof</span>(atomic_append_detail::lock_request));</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; <span class="keyword">const</span> atomic_append_detail::lock_request *record = <span class="keyword">reinterpret_cast&lt;</span>atomic_append_detail::lock_request *<span class="keyword">&gt;</span>(batchread[0].data() + batchread[0].size() - <span class="keyword">sizeof</span>(atomic_append_detail::lock_request));</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; <span class="keyword">const</span> atomic_append_detail::lock_request *firstrecord = <span class="keyword">reinterpret_cast&lt;</span>atomic_append_detail::lock_request *<span class="keyword">&gt;</span>(batchread[0].data());</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160;</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; <span class="comment">// Skip all completed lock requests or not mentioning any of my entities</span></div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; <span class="keywordflow">for</span>(; record &gt;= firstrecord; record_offset -= <span class="keyword">sizeof</span>(atomic_append_detail::lock_request), --record)</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; {</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; <span class="comment">// If a completed lock request, skip</span></div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; <span class="keywordflow">if</span>(!record-&gt;hash &amp;&amp; (record-&gt;unique_id == 0u))</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; {</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; }</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160; <span class="comment">// If record hash doesn&#39;t match contents it&#39;s a torn read, reload</span></div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; <span class="keywordflow">if</span>(!_skip_hashing)</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160; {</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160; <span class="keywordflow">if</span>(record-&gt;hash != QUICKCPPLIB_NAMESPACE::algorithm::hash::fast_hash::hash((reinterpret_cast&lt;const char *&gt;(record)) + 16, <span class="keyword">sizeof</span>(atomic_append_detail::lock_request) - 16))</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; {</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; <span class="keywordflow">goto</span> reload;</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; }</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; }</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160;</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160; <span class="comment">// Does this record lock anything I am locking?</span></div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; <span class="keywordflow">for</span>(<span class="keyword">const</span> <span class="keyword">auto</span> &amp;entity : out.entities)</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; {</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">size_t</span> n = 0; n &lt; record-&gt;items; n++)</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; {</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; <span class="keywordflow">if</span>(record-&gt;entities[n].value == entity.value)</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; {</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; <span class="comment">// Is the lock I want exclusive or the lock he wants exclusive?</span></div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; <span class="comment">// If so, need to block</span></div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160; <span class="keywordflow">if</span>((record-&gt;entities[n].exclusive != 0u) || (entity.exclusive != 0u))</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; {</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160; <span class="keywordflow">goto</span> beginwait;</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160; }</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; }</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160; }</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160; }</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; }</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; <span class="comment">// None of this batch of records has anything to do with my request, so keep going</span></div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160;</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160; beginwait:</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; <span class="comment">// Sleep until this record is freed using a shared lock</span></div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160; <span class="comment">// on the record in our way. Note there is a race here</span></div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160; <span class="comment">// between when the lock requester writes the lock</span></div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160; <span class="comment">// request and when he takes an exclusive lock on it,</span></div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160; <span class="comment">// so if our shared lock succeeds we need to immediately</span></div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160; <span class="comment">// unlock and retry based on the data.</span></div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160; std::this_thread::yield();</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160; <span class="keywordflow">if</span>(!spin_not_sleep)</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160; {</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160; deadline nd;</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160; <span class="keywordflow">if</span>(d)</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; {</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160; <span class="keywordflow">if</span>((d).steady)</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160; {</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160; std::chrono::nanoseconds ns = std::chrono::duration_cast&lt;std::chrono::nanoseconds&gt;((began_steady + std::chrono::nanoseconds((d).nsecs)) - std::chrono::steady_clock::now());</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; <span class="keywordflow">if</span>(ns.count() &lt; 0)</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; {</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; (nd).nsecs = 0;</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160; }</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160; {</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160; (nd).nsecs = ns.count();</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160; }</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160; }</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160; {</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160; (nd) = (d);</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160; }</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160; }</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160; <span class="keyword">auto</span> lock_offset = record_offset;</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; <span class="comment">// Set the top bit to use the shadow lock space on Windows</span></div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160; lock_offset |= (1ULL &lt;&lt; 63U);</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160; OUTCOME_TRYV(_h.<a class="code" href="classllfio__v2__xxx_1_1io__handle.html#a29cc9f2525f78dd73f8402cb59d97212">lock</a>(lock_offset, <span class="keyword">sizeof</span>(*record), <span class="keyword">false</span>, nd));</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160; }</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160; <span class="comment">// Make sure we haven&#39;t timed out during this wait</span></div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160; <span class="keywordflow">if</span>(d)</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160; {</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160; <span class="keywordflow">if</span>((d).steady)</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160; {</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160; <span class="keywordflow">if</span>(std::chrono::steady_clock::now() &gt;= (began_steady + std::chrono::nanoseconds((d).nsecs)))</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160; {</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160; <span class="keywordflow">return</span> errc::timed_out;</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160; }</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160; }</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160; {</div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160; <span class="keywordflow">if</span>(std::chrono::system_clock::now() &gt;= end_utc)</div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160; {</div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160; <span class="keywordflow">return</span> errc::timed_out;</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160; }</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160; }</div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160; }</div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160; } <span class="keywordflow">while</span>(record_offset &gt;= _header.first_known_good);</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160; <span class="keywordflow">return</span> success();</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160; }</div><div class="ttc" id="classllfio__v2__xxx_1_1io__handle_html_a83884eca7b4cd09125a5cf8a155e6052"><div class="ttname"><a href="classllfio__v2__xxx_1_1io__handle.html#a83884eca7b4cd09125a5cf8a155e6052">llfio_v2_xxx::io_handle::write</a></div><div class="ttdeci">virtual io_result&lt; const_buffers_type &gt; write(io_request&lt; const_buffers_type &gt; reqs, deadline d=deadline()) noexcept</div><div class="ttdoc">Write data to the open handle. </div></div>
+<div class="ttc" id="classllfio__v2__xxx_1_1file__handle_html_a6e46c6ea379152eb559ab15990f7c467"><div class="ttname"><a href="classllfio__v2__xxx_1_1file__handle.html#a6e46c6ea379152eb559ab15990f7c467">llfio_v2_xxx::file_handle::read</a></div><div class="ttdeci">io_result&lt; size_type &gt; read(extent_type offset, std::initializer_list&lt; buffer_type &gt; lst, deadline d=deadline()) noexcept</div><div class="ttdoc">Convenience initialiser list based overload for read() </div><div class="ttdef"><b>Definition:</b> file_handle.hpp:243</div></div>
<div class="ttc" id="classllfio__v2__xxx_1_1io__handle_html_a29cc9f2525f78dd73f8402cb59d97212"><div class="ttname"><a href="classllfio__v2__xxx_1_1io__handle.html#a29cc9f2525f78dd73f8402cb59d97212">llfio_v2_xxx::io_handle::lock</a></div><div class="ttdeci">virtual result&lt; extent_guard &gt; lock(extent_type offset, extent_type bytes, bool exclusive=true, deadline d=deadline()) noexcept</div><div class="ttdoc">Tries to lock the range of bytes specified for shared or exclusive access. Be aware this passes throu...</div></div>
<div class="ttc" id="classllfio__v2__xxx_1_1handle_html_a101620e9fff0c0e8c346af0e9de58b6a"><div class="ttname"><a href="classllfio__v2__xxx_1_1handle.html#a101620e9fff0c0e8c346af0e9de58b6a">llfio_v2_xxx::handle::set_append_only</a></div><div class="ttdeci">virtual result&lt; void &gt; set_append_only(bool enable) noexcept</div></div>
-<div class="ttc" id="classllfio__v2__xxx_1_1io__handle_html_a5f7485307a0704aa1680e5785be2035d"><div class="ttname"><a href="classllfio__v2__xxx_1_1io__handle.html#a5f7485307a0704aa1680e5785be2035d">llfio_v2_xxx::io_handle::read</a></div><div class="ttdeci">virtual io_result&lt; buffers_type &gt; read(io_request&lt; buffers_type &gt; reqs, deadline d=deadline()) noexcept</div><div class="ttdoc">Read data from the open handle. </div></div>
<div class="ttc" id="classllfio__v2__xxx_1_1file__handle_html_a7991af58283025b80a7225866643f0b4"><div class="ttname"><a href="classllfio__v2__xxx_1_1file__handle.html#a7991af58283025b80a7225866643f0b4">llfio_v2_xxx::file_handle::maximum_extent</a></div><div class="ttdeci">virtual result&lt; extent_type &gt; maximum_extent() const noexcept</div></div>
</div><!-- fragment -->
</div>
diff --git a/classllfio__v2__xxx_1_1algorithm_1_1shared__fs__mutex_1_1memory__map.html b/classllfio__v2__xxx_1_1algorithm_1_1shared__fs__mutex_1_1memory__map.html
index 256b98c5..3c3943ab 100644
--- a/classllfio__v2__xxx_1_1algorithm_1_1shared__fs__mutex_1_1memory__map.html
+++ b/classllfio__v2__xxx_1_1algorithm_1_1shared__fs__mutex_1_1memory__map.html
@@ -277,7 +277,8 @@ template&lt;template&lt; class &gt; class Hasher = QUICKCPPLIB_NAMESPACE::algori
</table>
</div><div class="memdoc">
<p>Initialises a shared filing system mutex using the file at <em>lockfile</em>. </p><dl class="section user"><dt>Errors returnable</dt><dd>Awaiting the clang result&lt;&gt; AST parser which auto generates all the error codes which could occur, but a particularly important one is <code>errc::no_lock_available</code> which will be returned if the lock is in use by another computer on a network. </dd></dl>
-<div class="fragment"><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; {</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; LLFIO_LOG_FUNCTION_CALL(0);</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; <span class="keywordflow">try</span></div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; {</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; OUTCOME_TRY(ret, <a class="code" href="classllfio__v2__xxx_1_1file__handle.html#a09e6b3e9806b328a687a55e955b885a3">file_handle::file</a>(base, lockfile, <a class="code" href="classllfio__v2__xxx_1_1handle.html#aa3930273a2d4cabbac309e0b75701dcaaefb2a684e4afb7d55e6147fbe5a332ee">file_handle::mode::write</a>, file_handle::creation::if_needed, <a class="code" href="classllfio__v2__xxx_1_1handle.html#aecd3a7db6cee3aec07d32fe6f99e6852a0fb9cf5f04f61bb6f1151da57ceb1ca1">file_handle::caching::reads</a>));</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; file_handle temph;</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; <span class="comment">// Am I the first person to this file? Lock everything exclusively</span></div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; <span class="keyword">auto</span> lockinuse = ret.try_lock(_initialisingoffset, 2, <span class="keyword">true</span>);</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; <span class="keywordflow">if</span>(lockinuse.has_error())</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; {</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; <span class="keywordflow">if</span>(lockinuse.error() != errc::timed_out)</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; {</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; <span class="keywordflow">return</span> lockinuse.error();</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; }</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; <span class="comment">// Somebody else is also using this file, so try to read the hash index file I ought to use</span></div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; lockinuse = ret.lock(_lockinuseoffset, 1, <span class="keyword">false</span>); <span class="comment">// inuse shared access, blocking</span></div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; <span class="keywordflow">if</span>(!lockinuse)</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; {</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; <span class="keywordflow">return</span> lockinuse.error();</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; }</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; byte buffer[65536];</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; memset(buffer, 0, <span class="keyword">sizeof</span>(buffer));</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; OUTCOME_TRYV(ret.read(0, {{buffer, 65535}}));</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; path_view temphpath(reinterpret_cast&lt;filesystem::path::value_type *&gt;(buffer));</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; result&lt;file_handle&gt; _temph(in_place_type&lt;file_handle&gt;);</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; _temph = <a class="code" href="classllfio__v2__xxx_1_1file__handle.html#a09e6b3e9806b328a687a55e955b885a3">file_handle::file</a>({}, temphpath, <a class="code" href="classllfio__v2__xxx_1_1handle.html#aa3930273a2d4cabbac309e0b75701dcaaefb2a684e4afb7d55e6147fbe5a332ee">file_handle::mode::write</a>, file_handle::creation::open_existing, <a class="code" href="classllfio__v2__xxx_1_1handle.html#aecd3a7db6cee3aec07d32fe6f99e6852ad5197d93c063a2b1e22d1630a39b7aef">file_handle::caching::temporary</a>);</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; <span class="comment">// If temp file doesn&#39;t exist, I am on a different machine</span></div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; <span class="keywordflow">if</span>(!_temph)</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; {</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; <span class="comment">// Release the exclusive lock and tell caller that this lock is not available</span></div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; <span class="keywordflow">return</span> errc::no_lock_available;</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; }</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; temph = std::move(_temph.value());</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; <span class="comment">// Map the hash index file into memory for read/write access</span></div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; OUTCOME_TRY(temphsection, <a class="code" href="classllfio__v2__xxx_1_1section__handle.html#a00db3d1bbffbdb4237401568c441da21">section_handle::section</a>(temph, HashIndexSize));</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; OUTCOME_TRY(temphmap, <a class="code" href="classllfio__v2__xxx_1_1map__handle.html#adf0cad925c9d6accd5bd7fc3aa49884c">map_handle::map</a>(temphsection, HashIndexSize));</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; <span class="comment">// Map the path file into memory with its maximum possible size, read only</span></div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; OUTCOME_TRY(hsection, <a class="code" href="classllfio__v2__xxx_1_1section__handle.html#a00db3d1bbffbdb4237401568c441da21">section_handle::section</a>(ret, 65536, <a class="code" href="namespacellfio__v2__xxx.html#a225e15680392dfa9e1dda42afcc09672">section_handle::flag::read</a>));</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; OUTCOME_TRY(hmap, <a class="code" href="classllfio__v2__xxx_1_1map__handle.html#adf0cad925c9d6accd5bd7fc3aa49884c">map_handle::map</a>(hsection, 0, 0, <a class="code" href="namespacellfio__v2__xxx.html#a225e15680392dfa9e1dda42afcc09672">section_handle::flag::read</a>));</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; <span class="keywordflow">return</span> memory_map(std::move(ret), std::move(temph), std::move(lockinuse.value()), std::move(hmap), std::move(temphmap));</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; }</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160;</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; <span class="comment">// I am the first person to be using this (stale?) file, so create a new hash index file in /tmp</span></div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; <span class="keyword">auto</span> &amp;tempdirh = <a class="code" href="namespacellfio__v2__xxx_1_1path__discovery.html#ade18f14d3ef37488e8967c87faa04d29">path_discovery::memory_backed_temporary_files_directory</a>().<a class="code" href="classllfio__v2__xxx_1_1handle.html#a5c7f6a0a8ffdea22763c75a9319ba0c2">is_valid</a>() ? <a class="code" href="namespacellfio__v2__xxx_1_1path__discovery.html#ade18f14d3ef37488e8967c87faa04d29">path_discovery::memory_backed_temporary_files_directory</a>() : path_discovery::<a class="code" href="namespacellfio__v2__xxx_1_1path__discovery.html#a2dd74ea752f3f511d58ccccdcac7f4fd">storage_backed_temporary_files_directory</a>();</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; OUTCOME_TRY(_temph, <a class="code" href="classllfio__v2__xxx_1_1file__handle.html#a3141a85996e46a3cc6b238d321198e47">file_handle::random_file</a>(tempdirh));</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; temph = std::move(_temph);</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; <span class="comment">// Truncate it out to the hash index size, and map it into memory for read/write access</span></div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; OUTCOME_TRYV(temph.truncate(HashIndexSize));</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; OUTCOME_TRY(temphsection, <a class="code" href="classllfio__v2__xxx_1_1section__handle.html#a00db3d1bbffbdb4237401568c441da21">section_handle::section</a>(temph, HashIndexSize));</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; OUTCOME_TRY(temphmap, <a class="code" href="classllfio__v2__xxx_1_1map__handle.html#adf0cad925c9d6accd5bd7fc3aa49884c">map_handle::map</a>(temphsection, HashIndexSize));</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; <span class="comment">// Write the path of my new hash index file, padding zeros to the nearest page size</span></div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; <span class="comment">// multiple to work around a race condition in the Linux kernel</span></div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; OUTCOME_TRY(temppath, temph.current_path());</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; <span class="keywordtype">char</span> buffer[4096];</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; memset(buffer, 0, <span class="keyword">sizeof</span>(buffer));</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; <span class="keywordtype">size_t</span> bytes = temppath.native().size() * <span class="keyword">sizeof</span>(*temppath.c_str());</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; file_handle::const_buffer_type buffers[] = {{<span class="keyword">reinterpret_cast&lt;</span><span class="keyword">const </span>byte *<span class="keyword">&gt;</span>(temppath.c_str()), bytes}, {<span class="keyword">reinterpret_cast&lt;</span><span class="keyword">const </span>byte *<span class="keyword">&gt;</span>(buffer), 4096 - (bytes % 4096)}};</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; OUTCOME_TRYV(ret.truncate(65536));</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; OUTCOME_TRYV(ret.write({buffers, 0}));</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; <span class="comment">// Map for read the maximum possible path file size, again to avoid race problems</span></div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; OUTCOME_TRY(hsection, <a class="code" href="classllfio__v2__xxx_1_1section__handle.html#a00db3d1bbffbdb4237401568c441da21">section_handle::section</a>(ret, 65536, <a class="code" href="namespacellfio__v2__xxx.html#a225e15680392dfa9e1dda42afcc09672">section_handle::flag::read</a>));</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; OUTCOME_TRY(hmap, <a class="code" href="classllfio__v2__xxx_1_1map__handle.html#adf0cad925c9d6accd5bd7fc3aa49884c">map_handle::map</a>(hsection, 0, 0, <a class="code" href="namespacellfio__v2__xxx.html#a225e15680392dfa9e1dda42afcc09672">section_handle::flag::read</a>));</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; <span class="comment">/* Take shared locks on inuse. Even if this implementation doesn&#39;t implement</span></div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160;<span class="comment"> atomic downgrade of exclusive range to shared range, we&#39;re fully prepared for other users</span></div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160;<span class="comment"> now. The _initialisingoffset remains exclusive to prevent double entry into this init routine.</span></div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; OUTCOME_TRY(lockinuse2, ret.lock(_lockinuseoffset, 1, <span class="keyword">false</span>));</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; lockinuse = std::move(lockinuse2); <span class="comment">// releases exclusive lock on all three offsets</span></div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; <span class="keywordflow">return</span> memory_map(std::move(ret), std::move(temph), std::move(lockinuse.value()), std::move(hmap), std::move(temphmap));</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; }</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; <span class="keywordflow">catch</span>(...)</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; {</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; <span class="keywordflow">return</span> error_from_exception();</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; }</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; }</div><div class="ttc" id="classllfio__v2__xxx_1_1file__handle_html_a09e6b3e9806b328a687a55e955b885a3"><div class="ttname"><a href="classllfio__v2__xxx_1_1file__handle.html#a09e6b3e9806b328a687a55e955b885a3">llfio_v2_xxx::file_handle::file</a></div><div class="ttdeci">static result&lt; file_handle &gt; file(const path_handle &amp;base, path_view_type path, mode _mode=mode::read, creation _creation=creation::open_existing, caching _caching=caching::all, flag flags=flag::none) noexcept</div></div>
+<div class="fragment"><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; {</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; LLFIO_LOG_FUNCTION_CALL(0);</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; <span class="keywordflow">try</span></div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; {</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; OUTCOME_TRY(ret, <a class="code" href="classllfio__v2__xxx_1_1file__handle.html#a09e6b3e9806b328a687a55e955b885a3">file_handle::file</a>(base, lockfile, <a class="code" href="classllfio__v2__xxx_1_1handle.html#aa3930273a2d4cabbac309e0b75701dcaaefb2a684e4afb7d55e6147fbe5a332ee">file_handle::mode::write</a>, file_handle::creation::if_needed, <a class="code" href="classllfio__v2__xxx_1_1handle.html#aecd3a7db6cee3aec07d32fe6f99e6852a0fb9cf5f04f61bb6f1151da57ceb1ca1">file_handle::caching::reads</a>));</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; file_handle temph;</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; <span class="comment">// Am I the first person to this file? Lock everything exclusively</span></div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; <span class="keyword">auto</span> lockinuse = ret.try_lock(_initialisingoffset, 2, <span class="keyword">true</span>);</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; <span class="keywordflow">if</span>(lockinuse.has_error())</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; {</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; <span class="keywordflow">if</span>(lockinuse.error() != errc::timed_out)</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; {</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; <span class="keywordflow">return</span> lockinuse.error();</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; }</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; <span class="comment">// Somebody else is also using this file, so try to read the hash index file I ought to use</span></div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; lockinuse = ret.lock(_lockinuseoffset, 1, <span class="keyword">false</span>); <span class="comment">// inuse shared access, blocking</span></div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; <span class="keywordflow">if</span>(!lockinuse)</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; {</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; <span class="keywordflow">return</span> lockinuse.error();</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; }</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; byte buffer[65536];</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; memset(buffer, 0, <span class="keyword">sizeof</span>(buffer));</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; OUTCOME_TRYV(ret.read(0, {{buffer, 65535}}));</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; path_view temphpath(reinterpret_cast&lt;filesystem::path::value_type *&gt;(buffer));</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; result&lt;file_handle&gt; _temph(in_place_type&lt;file_handle&gt;);</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; _temph = <a class="code" href="classllfio__v2__xxx_1_1file__handle.html#a09e6b3e9806b328a687a55e955b885a3">file_handle::file</a>({}, temphpath, <a class="code" href="classllfio__v2__xxx_1_1handle.html#aa3930273a2d4cabbac309e0b75701dcaaefb2a684e4afb7d55e6147fbe5a332ee">file_handle::mode::write</a>, file_handle::creation::open_existing, <a class="code" href="classllfio__v2__xxx_1_1handle.html#aecd3a7db6cee3aec07d32fe6f99e6852ad5197d93c063a2b1e22d1630a39b7aef">file_handle::caching::temporary</a>);</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; <span class="comment">// If temp file doesn&#39;t exist, I am on a different machine</span></div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; <span class="keywordflow">if</span>(!_temph)</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; {</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; <span class="comment">// Release the exclusive lock and tell caller that this lock is not available</span></div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; <span class="keywordflow">return</span> errc::no_lock_available;</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; }</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; temph = std::move(_temph.value());</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; <span class="comment">// Map the hash index file into memory for read/write access</span></div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; OUTCOME_TRY(temphsection, <a class="code" href="classllfio__v2__xxx_1_1section__handle.html#a00db3d1bbffbdb4237401568c441da21">section_handle::section</a>(temph, HashIndexSize));</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; OUTCOME_TRY(temphmap, <a class="code" href="classllfio__v2__xxx_1_1map__handle.html#adf0cad925c9d6accd5bd7fc3aa49884c">map_handle::map</a>(temphsection, HashIndexSize));</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; <span class="comment">// Map the path file into memory with its maximum possible size, read only</span></div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; OUTCOME_TRY(hsection, <a class="code" href="classllfio__v2__xxx_1_1section__handle.html#a00db3d1bbffbdb4237401568c441da21">section_handle::section</a>(ret, 65536, <a class="code" href="namespacellfio__v2__xxx.html#af678f58d20e1f0962ff0744150342683">section_handle::flag::read</a>));</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; OUTCOME_TRY(hmap, <a class="code" href="classllfio__v2__xxx_1_1map__handle.html#adf0cad925c9d6accd5bd7fc3aa49884c">map_handle::map</a>(hsection, 0, 0, <a class="code" href="namespacellfio__v2__xxx.html#af678f58d20e1f0962ff0744150342683">section_handle::flag::read</a>));</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; <span class="keywordflow">return</span> memory_map(std::move(ret), std::move(temph), std::move(lockinuse.value()), std::move(hmap), std::move(temphmap));</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; }</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160;</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; <span class="comment">// I am the first person to be using this (stale?) file, so create a new hash index file in /tmp</span></div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; <span class="keyword">auto</span> &amp;tempdirh = <a class="code" href="namespacellfio__v2__xxx_1_1path__discovery.html#ade18f14d3ef37488e8967c87faa04d29">path_discovery::memory_backed_temporary_files_directory</a>().<a class="code" href="classllfio__v2__xxx_1_1handle.html#a5c7f6a0a8ffdea22763c75a9319ba0c2">is_valid</a>() ? <a class="code" href="namespacellfio__v2__xxx_1_1path__discovery.html#ade18f14d3ef37488e8967c87faa04d29">path_discovery::memory_backed_temporary_files_directory</a>() : path_discovery::<a class="code" href="namespacellfio__v2__xxx_1_1path__discovery.html#a2dd74ea752f3f511d58ccccdcac7f4fd">storage_backed_temporary_files_directory</a>();</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; OUTCOME_TRY(_temph, <a class="code" href="classllfio__v2__xxx_1_1file__handle.html#a3141a85996e46a3cc6b238d321198e47">file_handle::random_file</a>(tempdirh));</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; temph = std::move(_temph);</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; <span class="comment">// Truncate it out to the hash index size, and map it into memory for read/write access</span></div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; OUTCOME_TRYV(temph.truncate(HashIndexSize));</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; OUTCOME_TRY(temphsection, <a class="code" href="classllfio__v2__xxx_1_1section__handle.html#a00db3d1bbffbdb4237401568c441da21">section_handle::section</a>(temph, HashIndexSize));</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; OUTCOME_TRY(temphmap, <a class="code" href="classllfio__v2__xxx_1_1map__handle.html#adf0cad925c9d6accd5bd7fc3aa49884c">map_handle::map</a>(temphsection, HashIndexSize));</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; <span class="comment">// Write the path of my new hash index file, padding zeros to the nearest page size</span></div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; <span class="comment">// multiple to work around a race condition in the Linux kernel</span></div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; OUTCOME_TRY(temppath, temph.current_path());</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; <span class="keywordtype">char</span> buffer[4096];</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; memset(buffer, 0, <span class="keyword">sizeof</span>(buffer));</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; <span class="keywordtype">size_t</span> bytes = temppath.native().size() * <span class="keyword">sizeof</span>(*temppath.c_str());</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; file_handle::const_buffer_type buffers[] = {{<span class="keyword">reinterpret_cast&lt;</span><span class="keyword">const </span>byte *<span class="keyword">&gt;</span>(temppath.c_str()), bytes}, {<span class="keyword">reinterpret_cast&lt;</span><span class="keyword">const </span>byte *<span class="keyword">&gt;</span>(buffer), 4096 - (bytes % 4096)}};</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; OUTCOME_TRYV(ret.truncate(65536));</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; OUTCOME_TRYV(ret.write({buffers, 0}));</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; <span class="comment">// Map for read the maximum possible path file size, again to avoid race problems</span></div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; OUTCOME_TRY(hsection, <a class="code" href="classllfio__v2__xxx_1_1section__handle.html#a00db3d1bbffbdb4237401568c441da21">section_handle::section</a>(ret, 65536, <a class="code" href="namespacellfio__v2__xxx.html#af678f58d20e1f0962ff0744150342683">section_handle::flag::read</a>));</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; OUTCOME_TRY(hmap, <a class="code" href="classllfio__v2__xxx_1_1map__handle.html#adf0cad925c9d6accd5bd7fc3aa49884c">map_handle::map</a>(hsection, 0, 0, <a class="code" href="namespacellfio__v2__xxx.html#af678f58d20e1f0962ff0744150342683">section_handle::flag::read</a>));</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; <span class="comment">/* Take shared locks on inuse. Even if this implementation doesn&#39;t implement</span></div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160;<span class="comment"> atomic downgrade of exclusive range to shared range, we&#39;re fully prepared for other users</span></div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160;<span class="comment"> now. The _initialisingoffset remains exclusive to prevent double entry into this init routine.</span></div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; OUTCOME_TRY(lockinuse2, ret.lock(_lockinuseoffset, 1, <span class="keyword">false</span>));</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; lockinuse = std::move(lockinuse2); <span class="comment">// releases exclusive lock on all three offsets</span></div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; <span class="keywordflow">return</span> memory_map(std::move(ret), std::move(temph), std::move(lockinuse.value()), std::move(hmap), std::move(temphmap));</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; }</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; <span class="keywordflow">catch</span>(...)</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; {</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; <span class="keywordflow">return</span> error_from_exception();</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; }</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; }</div><div class="ttc" id="namespacellfio__v2__xxx_html_af678f58d20e1f0962ff0744150342683"><div class="ttname"><a href="namespacellfio__v2__xxx.html#af678f58d20e1f0962ff0744150342683">llfio_v2_xxx::read</a></div><div class="ttdeci">file_handle::io_result&lt; file_handle::size_type &gt; read(file_handle &amp;self, file_handle::extent_type offset, std::initializer_list&lt; file_handle::buffer_type &gt; lst, deadline d=deadline()) noexcept</div><div class="ttdef"><b>Definition:</b> file_handle.hpp:385</div></div>
+<div class="ttc" id="classllfio__v2__xxx_1_1file__handle_html_a09e6b3e9806b328a687a55e955b885a3"><div class="ttname"><a href="classllfio__v2__xxx_1_1file__handle.html#a09e6b3e9806b328a687a55e955b885a3">llfio_v2_xxx::file_handle::file</a></div><div class="ttdeci">static result&lt; file_handle &gt; file(const path_handle &amp;base, path_view_type path, mode _mode=mode::read, creation _creation=creation::open_existing, caching _caching=caching::all, flag flags=flag::none) noexcept</div></div>
<div class="ttc" id="classllfio__v2__xxx_1_1handle_html_aa3930273a2d4cabbac309e0b75701dcaaefb2a684e4afb7d55e6147fbe5a332ee"><div class="ttname"><a href="classllfio__v2__xxx_1_1handle.html#aa3930273a2d4cabbac309e0b75701dcaaefb2a684e4afb7d55e6147fbe5a332ee">llfio_v2_xxx::handle::mode::write</a></div><div class="ttdoc">Ability to read and write (READ_CONTROL|FILE_READ_DATA|FILE_READ_ATTRIBUTES|FILE_READ_EA|FILE_WRITE_D...</div></div>
<div class="ttc" id="classllfio__v2__xxx_1_1map__handle_html_adf0cad925c9d6accd5bd7fc3aa49884c"><div class="ttname"><a href="classllfio__v2__xxx_1_1map__handle.html#adf0cad925c9d6accd5bd7fc3aa49884c">llfio_v2_xxx::map_handle::map</a></div><div class="ttdeci">static result&lt; map_handle &gt; map(size_type bytes, bool zeroed=false, section_handle::flag _flag=section_handle::flag::readwrite) noexcept</div></div>
<div class="ttc" id="classllfio__v2__xxx_1_1file__handle_html_a3141a85996e46a3cc6b238d321198e47"><div class="ttname"><a href="classllfio__v2__xxx_1_1file__handle.html#a3141a85996e46a3cc6b238d321198e47">llfio_v2_xxx::file_handle::random_file</a></div><div class="ttdeci">static result&lt; file_handle &gt; random_file(const path_handle &amp;dirpath, mode _mode=mode::write, caching _caching=caching::temporary, flag flags=flag::none) noexcept</div><div class="ttdef"><b>Definition:</b> file_handle.hpp:135</div></div>
@@ -285,7 +286,6 @@ template&lt;template&lt; class &gt; class Hasher = QUICKCPPLIB_NAMESPACE::algori
<div class="ttc" id="classllfio__v2__xxx_1_1section__handle_html_a00db3d1bbffbdb4237401568c441da21"><div class="ttname"><a href="classllfio__v2__xxx_1_1section__handle.html#a00db3d1bbffbdb4237401568c441da21">llfio_v2_xxx::section_handle::section</a></div><div class="ttdeci">static result&lt; section_handle &gt; section(file_handle &amp;backing, extent_type maximum_size, flag _flag) noexcept</div><div class="ttdoc">Create a memory section backed by a file. </div></div>
<div class="ttc" id="classllfio__v2__xxx_1_1handle_html_aecd3a7db6cee3aec07d32fe6f99e6852ad5197d93c063a2b1e22d1630a39b7aef"><div class="ttname"><a href="classllfio__v2__xxx_1_1handle.html#aecd3a7db6cee3aec07d32fe6f99e6852ad5197d93c063a2b1e22d1630a39b7aef">llfio_v2_xxx::handle::caching::temporary</a></div><div class="ttdoc">Cache reads and writes of data and metadata so they complete immediately, only sending any updates to...</div></div>
<div class="ttc" id="classllfio__v2__xxx_1_1handle_html_aecd3a7db6cee3aec07d32fe6f99e6852a0fb9cf5f04f61bb6f1151da57ceb1ca1"><div class="ttname"><a href="classllfio__v2__xxx_1_1handle.html#aecd3a7db6cee3aec07d32fe6f99e6852a0fb9cf5f04f61bb6f1151da57ceb1ca1">llfio_v2_xxx::handle::caching::reads</a></div><div class="ttdoc">Cache reads only. Writes of data and metadata do not complete until reaching storage (O_SYNC)...</div></div>
-<div class="ttc" id="namespacellfio__v2__xxx_html_a225e15680392dfa9e1dda42afcc09672"><div class="ttname"><a href="namespacellfio__v2__xxx.html#a225e15680392dfa9e1dda42afcc09672">llfio_v2_xxx::read</a></div><div class="ttdeci">io_handle::io_result&lt; io_handle::buffers_type &gt; read(io_handle &amp;self, io_handle::io_request&lt; io_handle::buffers_type &gt; reqs, deadline d=deadline()) noexcept</div><div class="ttdoc">Read data from the open handle. </div><div class="ttdef"><b>Definition:</b> io_handle.hpp:568</div></div>
<div class="ttc" id="namespacellfio__v2__xxx_1_1path__discovery_html_a2dd74ea752f3f511d58ccccdcac7f4fd"><div class="ttname"><a href="namespacellfio__v2__xxx_1_1path__discovery.html#a2dd74ea752f3f511d58ccccdcac7f4fd">llfio_v2_xxx::path_discovery::storage_backed_temporary_files_directory</a></div><div class="ttdeci">const path_handle &amp; storage_backed_temporary_files_directory() noexcept</div><div class="ttdoc">Returns a reference to an open handle to a verified temporary directory where files created are store...</div></div>
<div class="ttc" id="namespacellfio__v2__xxx_1_1path__discovery_html_ade18f14d3ef37488e8967c87faa04d29"><div class="ttname"><a href="namespacellfio__v2__xxx_1_1path__discovery.html#ade18f14d3ef37488e8967c87faa04d29">llfio_v2_xxx::path_discovery::memory_backed_temporary_files_directory</a></div><div class="ttdeci">const path_handle &amp; memory_backed_temporary_files_directory() noexcept</div><div class="ttdoc">Returns a reference to an open handle to a verified temporary directory where files created are store...</div></div>
</div><!-- fragment -->
diff --git a/classllfio__v2__xxx_1_1file__handle-members.html b/classllfio__v2__xxx_1_1file__handle-members.html
index 0a3055af..c37bc421 100644
--- a/classllfio__v2__xxx_1_1file__handle-members.html
+++ b/classllfio__v2__xxx_1_1file__handle-members.html
@@ -177,8 +177,8 @@ $(document).ready(function(){initNavTree('classllfio__v2__xxx_1_1file__handle.ht
<tr bgcolor="#f0f0f0"><td class="entry"><b>path_type</b> typedef (defined in <a class="el" href="classllfio__v2__xxx_1_1file__handle.html">llfio_v2_xxx::file_handle</a>)</td><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1file__handle.html">llfio_v2_xxx::file_handle</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>path_view_type</b> typedef (defined in <a class="el" href="classllfio__v2__xxx_1_1file__handle.html">llfio_v2_xxx::file_handle</a>)</td><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1file__handle.html">llfio_v2_xxx::file_handle</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1file__handle.html#a3141a85996e46a3cc6b238d321198e47">random_file</a>(const path_handle &amp;dirpath, mode _mode=mode::write, caching _caching=caching::temporary, flag flags=flag::none) noexcept</td><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1file__handle.html">llfio_v2_xxx::file_handle</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1io__handle.html#a5f7485307a0704aa1680e5785be2035d">read</a>(io_request&lt; buffers_type &gt; reqs, deadline d=deadline()) noexcept</td><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1io__handle.html">llfio_v2_xxx::io_handle</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
- <tr><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1io__handle.html#aac0369e8025ae1320e7d607922f61b48">read</a>(extent_type offset, std::initializer_list&lt; buffer_type &gt; lst, deadline d=deadline()) noexcept</td><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1io__handle.html">llfio_v2_xxx::io_handle</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1file__handle.html#a6e46c6ea379152eb559ab15990f7c467">read</a>(extent_type offset, std::initializer_list&lt; buffer_type &gt; lst, deadline d=deadline()) noexcept</td><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1file__handle.html">llfio_v2_xxx::file_handle</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1io__handle.html#a5f7485307a0704aa1680e5785be2035d">llfio_v2_xxx::io_handle::read</a>(io_request&lt; buffers_type &gt; reqs, deadline d=deadline()) noexcept</td><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1io__handle.html">llfio_v2_xxx::io_handle</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1handle.html#a1d273e38c061eb11f5012f624e9a202e">release</a>() noexcept</td><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1handle.html">llfio_v2_xxx::handle</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
<tr><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1fs__handle.html#a8700edc9ecd4dd35d5aad7c65dd0eca2">relink</a>(const path_handle &amp;base, path_view_type path, bool atomic_replace=true, deadline d=std::chrono::seconds(30)) noexcept</td><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1fs__handle.html">llfio_v2_xxx::fs_handle</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1handle.html#a751e912d8dab755ea969a418c1d544eb">requires_aligned_io</a>() const noexcept</td><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1handle.html">llfio_v2_xxx::handle</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
diff --git a/classllfio__v2__xxx_1_1file__handle.html b/classllfio__v2__xxx_1_1file__handle.html
index 6cfa5e97..0def2a02 100644
--- a/classllfio__v2__xxx_1_1file__handle.html
+++ b/classllfio__v2__xxx_1_1file__handle.html
@@ -234,6 +234,10 @@ virtual <a class="el" href="structllfio__v2__xxx_1_1io__handle_1_1io__result.htm
<a class="el" href="classllfio__v2__xxx_1_1io__service.html">io_service</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classllfio__v2__xxx_1_1file__handle.html#ae7735588338065ede0ab9b7f979bc65a">service</a> () const noexcept</td></tr>
<tr class="memdesc:ae7735588338065ede0ab9b7f979bc65a"><td class="mdescLeft">&#160;</td><td class="mdescRight">The i/o service this handle is attached to, if any. <br /></td></tr>
<tr class="separator:ae7735588338065ede0ab9b7f979bc65a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a6e46c6ea379152eb559ab15990f7c467"><td class="memItemLeft" align="right" valign="top"><a id="a6e46c6ea379152eb559ab15990f7c467"></a>
+<a class="el" href="structllfio__v2__xxx_1_1io__handle_1_1io__result.html">io_result</a>&lt; size_type &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classllfio__v2__xxx_1_1file__handle.html#a6e46c6ea379152eb559ab15990f7c467">read</a> (extent_type offset, std::initializer_list&lt; <a class="el" href="structllfio__v2__xxx_1_1io__handle_1_1buffer__type.html">buffer_type</a> &gt; lst, <a class="el" href="structllfio__v2__xxx_1_1deadline.html">deadline</a> d=<a class="el" href="structllfio__v2__xxx_1_1deadline.html">deadline</a>()) noexcept</td></tr>
+<tr class="memdesc:a6e46c6ea379152eb559ab15990f7c467"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convenience initialiser list based overload for <code>read()</code> <br /></td></tr>
+<tr class="separator:a6e46c6ea379152eb559ab15990f7c467"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7991af58283025b80a7225866643f0b4"><td class="memItemLeft" align="right" valign="top">virtual result&lt; extent_type &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classllfio__v2__xxx_1_1file__handle.html#a7991af58283025b80a7225866643f0b4">maximum_extent</a> () const noexcept</td></tr>
<tr class="separator:a7991af58283025b80a7225866643f0b4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2be41c54aff8578e2d0afbf4ae73049f"><td class="memItemLeft" align="right" valign="top">virtual result&lt; extent_type &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classllfio__v2__xxx_1_1file__handle.html#a2be41c54aff8578e2d0afbf4ae73049f">truncate</a> (extent_type newsize) noexcept</td></tr>
@@ -250,8 +254,6 @@ virtual <a class="el" href="structllfio__v2__xxx_1_1io__handle_1_1io__result.htm
<tr class="memitem:a5f7485307a0704aa1680e5785be2035d"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="structllfio__v2__xxx_1_1io__handle_1_1io__result.html">io_result</a>&lt; buffers_type &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classllfio__v2__xxx_1_1io__handle.html#a5f7485307a0704aa1680e5785be2035d">read</a> (<a class="el" href="structllfio__v2__xxx_1_1io__handle_1_1io__request.html">io_request</a>&lt; buffers_type &gt; reqs, <a class="el" href="structllfio__v2__xxx_1_1deadline.html">deadline</a> d=<a class="el" href="structllfio__v2__xxx_1_1deadline.html">deadline</a>()) noexcept</td></tr>
<tr class="memdesc:a5f7485307a0704aa1680e5785be2035d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Read data from the open handle. <a href="#a5f7485307a0704aa1680e5785be2035d">More...</a><br /></td></tr>
<tr class="separator:a5f7485307a0704aa1680e5785be2035d"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:aac0369e8025ae1320e7d607922f61b48"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structllfio__v2__xxx_1_1io__handle_1_1io__result.html">io_result</a>&lt; size_type &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classllfio__v2__xxx_1_1io__handle.html#aac0369e8025ae1320e7d607922f61b48">read</a> (extent_type offset, std::initializer_list&lt; <a class="el" href="structllfio__v2__xxx_1_1io__handle_1_1buffer__type.html">buffer_type</a> &gt; lst, <a class="el" href="structllfio__v2__xxx_1_1deadline.html">deadline</a> d=<a class="el" href="structllfio__v2__xxx_1_1deadline.html">deadline</a>()) noexcept</td></tr>
-<tr class="separator:aac0369e8025ae1320e7d607922f61b48"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a83884eca7b4cd09125a5cf8a155e6052"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="structllfio__v2__xxx_1_1io__handle_1_1io__result.html">io_result</a>&lt; const_buffers_type &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classllfio__v2__xxx_1_1io__handle.html#a83884eca7b4cd09125a5cf8a155e6052">write</a> (<a class="el" href="structllfio__v2__xxx_1_1io__handle_1_1io__request.html">io_request</a>&lt; const_buffers_type &gt; reqs, <a class="el" href="structllfio__v2__xxx_1_1deadline.html">deadline</a> d=<a class="el" href="structllfio__v2__xxx_1_1deadline.html">deadline</a>()) noexcept</td></tr>
<tr class="memdesc:a83884eca7b4cd09125a5cf8a155e6052"><td class="mdescLeft">&#160;</td><td class="mdescRight">Write data to the open handle. <a href="#a83884eca7b4cd09125a5cf8a155e6052">More...</a><br /></td></tr>
<tr class="separator:a83884eca7b4cd09125a5cf8a155e6052"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -878,7 +880,7 @@ For portability, you can only assume that barriers write order for a single hand
</table>
</div><div class="memdoc">
<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
-<div class="fragment"><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160; {</div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160; <span class="keywordtype">size_t</span> bytes = 0;</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160; <span class="keywordflow">for</span>(<span class="keyword">auto</span> &amp;i : reqs.buffers)</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160; {</div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160; <span class="keywordflow">if</span>(bytes + i.size() &lt; bytes)</div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160; {</div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160; <span class="keywordflow">return</span> errc::value_too_large;</div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160; }</div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160; bytes += i.size();</div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160; }</div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classllfio__v2__xxx_1_1io__handle.html#a29cc9f2525f78dd73f8402cb59d97212">lock</a>(reqs.offset, bytes, <span class="keyword">false</span>, d);</div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160; }</div><div class="ttc" id="classllfio__v2__xxx_1_1io__handle_html_a29cc9f2525f78dd73f8402cb59d97212"><div class="ttname"><a href="classllfio__v2__xxx_1_1io__handle.html#a29cc9f2525f78dd73f8402cb59d97212">llfio_v2_xxx::io_handle::lock</a></div><div class="ttdeci">virtual result&lt; extent_guard &gt; lock(extent_type offset, extent_type bytes, bool exclusive=true, deadline d=deadline()) noexcept</div><div class="ttdoc">Tries to lock the range of bytes specified for shared or exclusive access. Be aware this passes throu...</div></div>
+<div class="fragment"><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160; {</div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160; <span class="keywordtype">size_t</span> bytes = 0;</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160; <span class="keywordflow">for</span>(<span class="keyword">auto</span> &amp;i : reqs.buffers)</div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160; {</div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160; <span class="keywordflow">if</span>(bytes + i.size() &lt; bytes)</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160; {</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160; <span class="keywordflow">return</span> errc::value_too_large;</div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160; }</div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160; bytes += i.size();</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160; }</div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classllfio__v2__xxx_1_1io__handle.html#a29cc9f2525f78dd73f8402cb59d97212">lock</a>(reqs.offset, bytes, <span class="keyword">false</span>, d);</div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160; }</div><div class="ttc" id="classllfio__v2__xxx_1_1io__handle_html_a29cc9f2525f78dd73f8402cb59d97212"><div class="ttname"><a href="classllfio__v2__xxx_1_1io__handle.html#a29cc9f2525f78dd73f8402cb59d97212">llfio_v2_xxx::io_handle::lock</a></div><div class="ttdeci">virtual result&lt; extent_guard &gt; lock(extent_type offset, extent_type bytes, bool exclusive=true, deadline d=deadline()) noexcept</div><div class="ttdoc">Tries to lock the range of bytes specified for shared or exclusive access. Be aware this passes throu...</div></div>
</div><!-- fragment -->
</div>
</div>
@@ -916,7 +918,7 @@ For portability, you can only assume that barriers write order for a single hand
</table>
</div><div class="memdoc">
<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
-<div class="fragment"><div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160; {</div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160; <span class="keywordtype">size_t</span> bytes = 0;</div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160; <span class="keywordflow">for</span>(<span class="keyword">auto</span> &amp;i : reqs.buffers)</div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160; {</div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160; <span class="keywordflow">if</span>(bytes + i.size() &lt; bytes)</div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160; {</div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160; <span class="keywordflow">return</span> errc::value_too_large;</div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160; }</div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160; bytes += i.size();</div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160; }</div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classllfio__v2__xxx_1_1io__handle.html#a29cc9f2525f78dd73f8402cb59d97212">lock</a>(reqs.offset, bytes, <span class="keyword">true</span>, d);</div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160; }</div><div class="ttc" id="classllfio__v2__xxx_1_1io__handle_html_a29cc9f2525f78dd73f8402cb59d97212"><div class="ttname"><a href="classllfio__v2__xxx_1_1io__handle.html#a29cc9f2525f78dd73f8402cb59d97212">llfio_v2_xxx::io_handle::lock</a></div><div class="ttdeci">virtual result&lt; extent_guard &gt; lock(extent_type offset, extent_type bytes, bool exclusive=true, deadline d=deadline()) noexcept</div><div class="ttdoc">Tries to lock the range of bytes specified for shared or exclusive access. Be aware this passes throu...</div></div>
+<div class="fragment"><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160; {</div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160; <span class="keywordtype">size_t</span> bytes = 0;</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160; <span class="keywordflow">for</span>(<span class="keyword">auto</span> &amp;i : reqs.buffers)</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160; {</div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160; <span class="keywordflow">if</span>(bytes + i.size() &lt; bytes)</div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160; {</div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160; <span class="keywordflow">return</span> errc::value_too_large;</div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160; }</div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160; bytes += i.size();</div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160; }</div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classllfio__v2__xxx_1_1io__handle.html#a29cc9f2525f78dd73f8402cb59d97212">lock</a>(reqs.offset, bytes, <span class="keyword">true</span>, d);</div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160; }</div><div class="ttc" id="classllfio__v2__xxx_1_1io__handle_html_a29cc9f2525f78dd73f8402cb59d97212"><div class="ttname"><a href="classllfio__v2__xxx_1_1io__handle.html#a29cc9f2525f78dd73f8402cb59d97212">llfio_v2_xxx::io_handle::lock</a></div><div class="ttdeci">virtual result&lt; extent_guard &gt; lock(extent_type offset, extent_type bytes, bool exclusive=true, deadline d=deadline()) noexcept</div><div class="ttdoc">Tries to lock the range of bytes specified for shared or exclusive access. Be aware this passes throu...</div></div>
</div><!-- fragment -->
</div>
</div>
@@ -1063,7 +1065,7 @@ For portability, you can only assume that barriers write order for a single hand
</div>
</div>
<a id="a5f7485307a0704aa1680e5785be2035d"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a5f7485307a0704aa1680e5785be2035d">&#9670;&nbsp;</a></span>read() <span class="overload">[1/2]</span></h2>
+<h2 class="memtitle"><span class="permalink"><a href="#a5f7485307a0704aa1680e5785be2035d">&#9670;&nbsp;</a></span>read()</h2>
<div class="memitem">
<div class="memproto">
@@ -1111,51 +1113,6 @@ For portability, you can only assume that barriers write order for a single hand
</div>
</div>
-<a id="aac0369e8025ae1320e7d607922f61b48"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#aac0369e8025ae1320e7d607922f61b48">&#9670;&nbsp;</a></span>read() <span class="overload">[2/2]</span></h2>
-
-<div class="memitem">
-<div class="memproto">
-<table class="mlabels">
- <tr>
- <td class="mlabels-left">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="structllfio__v2__xxx_1_1io__handle_1_1io__result.html">io_result</a>&lt;size_type&gt; llfio_v2_xxx::io_handle::read </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="classllfio__v2__xxx_1_1handle.html#a4ee58f1b6a24af5e64d850d1e3eed07f">extent_type</a>&#160;</td>
- <td class="paramname"><em>offset</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">std::initializer_list&lt; <a class="el" href="structllfio__v2__xxx_1_1io__handle_1_1buffer__type.html">buffer_type</a> &gt;&#160;</td>
- <td class="paramname"><em>lst</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype"><a class="el" href="structllfio__v2__xxx_1_1deadline.html">deadline</a>&#160;</td>
- <td class="paramname"><em>d</em> = <code><a class="el" href="structllfio__v2__xxx_1_1deadline.html">deadline</a>()</code>&#160;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td>
- </tr>
- </table>
- </td>
- <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">noexcept</span><span class="mlabel">inherited</span></span> </td>
- </tr>
-</table>
-</div><div class="memdoc">
-<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
-<div class="fragment"><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; {</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; buffer_type *_reqs = <span class="keyword">reinterpret_cast&lt;</span>buffer_type *<span class="keyword">&gt;</span>(alloca(<span class="keyword">sizeof</span>(buffer_type) * lst.size()));</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; memcpy(_reqs, lst.begin(), <span class="keyword">sizeof</span>(buffer_type) * lst.size());</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; io_request&lt;buffers_type&gt; reqs(<a class="code" href="classllfio__v2__xxx_1_1io__handle.html#a8f525d9665b524442b46cd55678817ed">buffers_type</a>(_reqs, lst.size()), offset);</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; <span class="keyword">auto</span> ret = <a class="code" href="classllfio__v2__xxx_1_1io__handle.html#a5f7485307a0704aa1680e5785be2035d">read</a>(reqs, d);</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; <span class="keywordflow">if</span>(ret)</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; {</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; <span class="keywordflow">return</span> ret.bytes_transferred();</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; }</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; <span class="keywordflow">return</span> ret.error();</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; }</div><div class="ttc" id="classllfio__v2__xxx_1_1io__handle_html_a8f525d9665b524442b46cd55678817ed"><div class="ttname"><a href="classllfio__v2__xxx_1_1io__handle.html#a8f525d9665b524442b46cd55678817ed">llfio_v2_xxx::io_handle::buffers_type</a></div><div class="ttdeci">span&lt; buffer_type &gt; buffers_type</div><div class="ttdoc">The scatter buffers type used by this handle. Guaranteed to be TrivialType apart from construction...</div><div class="ttdef"><b>Definition:</b> io_handle.hpp:161</div></div>
-<div class="ttc" id="classllfio__v2__xxx_1_1io__handle_html_a5f7485307a0704aa1680e5785be2035d"><div class="ttname"><a href="classllfio__v2__xxx_1_1io__handle.html#a5f7485307a0704aa1680e5785be2035d">llfio_v2_xxx::io_handle::read</a></div><div class="ttdeci">virtual io_result&lt; buffers_type &gt; read(io_request&lt; buffers_type &gt; reqs, deadline d=deadline()) noexcept</div><div class="ttdoc">Read data from the open handle. </div></div>
-</div><!-- fragment -->
-</div>
-</div>
<a id="a8700edc9ecd4dd35d5aad7c65dd0eca2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8700edc9ecd4dd35d5aad7c65dd0eca2">&#9670;&nbsp;</a></span>relink()</h2>
@@ -1430,7 +1387,7 @@ For portability, you can only assume that barriers write order for a single hand
</table>
</div><div class="memdoc">
<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
-<div class="fragment"><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160;{ <span class="keywordflow">return</span> <a class="code" href="classllfio__v2__xxx_1_1io__handle.html#a29cc9f2525f78dd73f8402cb59d97212">lock</a>(offset, bytes, exclusive, deadline(std::chrono::seconds(0))); }</div><div class="ttc" id="classllfio__v2__xxx_1_1io__handle_html_a29cc9f2525f78dd73f8402cb59d97212"><div class="ttname"><a href="classllfio__v2__xxx_1_1io__handle.html#a29cc9f2525f78dd73f8402cb59d97212">llfio_v2_xxx::io_handle::lock</a></div><div class="ttdeci">virtual result&lt; extent_guard &gt; lock(extent_type offset, extent_type bytes, bool exclusive=true, deadline d=deadline()) noexcept</div><div class="ttdoc">Tries to lock the range of bytes specified for shared or exclusive access. Be aware this passes throu...</div></div>
+<div class="fragment"><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160;{ <span class="keywordflow">return</span> <a class="code" href="classllfio__v2__xxx_1_1io__handle.html#a29cc9f2525f78dd73f8402cb59d97212">lock</a>(offset, bytes, exclusive, deadline(std::chrono::seconds(0))); }</div><div class="ttc" id="classllfio__v2__xxx_1_1io__handle_html_a29cc9f2525f78dd73f8402cb59d97212"><div class="ttname"><a href="classllfio__v2__xxx_1_1io__handle.html#a29cc9f2525f78dd73f8402cb59d97212">llfio_v2_xxx::io_handle::lock</a></div><div class="ttdeci">virtual result&lt; extent_guard &gt; lock(extent_type offset, extent_type bytes, bool exclusive=true, deadline d=deadline()) noexcept</div><div class="ttdoc">Tries to lock the range of bytes specified for shared or exclusive access. Be aware this passes throu...</div></div>
</div><!-- fragment -->
</div>
</div>
@@ -1607,7 +1564,7 @@ For portability, you can only assume that barriers write order for a single hand
</table>
</div><div class="memdoc">
<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
-<div class="fragment"><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; {</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; const_buffer_type *_reqs = <span class="keyword">reinterpret_cast&lt;</span>const_buffer_type *<span class="keyword">&gt;</span>(alloca(<span class="keyword">sizeof</span>(const_buffer_type) * lst.size()));</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; memcpy(_reqs, lst.begin(), <span class="keyword">sizeof</span>(const_buffer_type) * lst.size());</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; io_request&lt;const_buffers_type&gt; reqs(<a class="code" href="classllfio__v2__xxx_1_1io__handle.html#a693a8c64bb7de1a6835d6a151e37aa0e">const_buffers_type</a>(_reqs, lst.size()), offset);</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; <span class="keyword">auto</span> ret = <a class="code" href="classllfio__v2__xxx_1_1io__handle.html#a83884eca7b4cd09125a5cf8a155e6052">write</a>(reqs, d);</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; <span class="keywordflow">if</span>(ret)</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; {</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; <span class="keywordflow">return</span> ret.bytes_transferred();</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; }</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; <span class="keywordflow">return</span> ret.error();</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; }</div><div class="ttc" id="classllfio__v2__xxx_1_1io__handle_html_a693a8c64bb7de1a6835d6a151e37aa0e"><div class="ttname"><a href="classllfio__v2__xxx_1_1io__handle.html#a693a8c64bb7de1a6835d6a151e37aa0e">llfio_v2_xxx::io_handle::const_buffers_type</a></div><div class="ttdeci">span&lt; const_buffer_type &gt; const_buffers_type</div><div class="ttdoc">The gather buffers type used by this handle. Guaranteed to be TrivialType apart from construction...</div><div class="ttdef"><b>Definition:</b> io_handle.hpp:163</div></div>
+<div class="fragment"><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; {</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; const_buffer_type *_reqs = <span class="keyword">reinterpret_cast&lt;</span>const_buffer_type *<span class="keyword">&gt;</span>(alloca(<span class="keyword">sizeof</span>(const_buffer_type) * lst.size()));</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; memcpy(_reqs, lst.begin(), <span class="keyword">sizeof</span>(const_buffer_type) * lst.size());</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; io_request&lt;const_buffers_type&gt; reqs(<a class="code" href="classllfio__v2__xxx_1_1io__handle.html#a693a8c64bb7de1a6835d6a151e37aa0e">const_buffers_type</a>(_reqs, lst.size()), offset);</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; <span class="keyword">auto</span> ret = <a class="code" href="classllfio__v2__xxx_1_1io__handle.html#a83884eca7b4cd09125a5cf8a155e6052">write</a>(reqs, d);</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; <span class="keywordflow">if</span>(ret)</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; {</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; <span class="keywordflow">return</span> ret.bytes_transferred();</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; }</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; <span class="keywordflow">return</span> ret.error();</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160; }</div><div class="ttc" id="classllfio__v2__xxx_1_1io__handle_html_a693a8c64bb7de1a6835d6a151e37aa0e"><div class="ttname"><a href="classllfio__v2__xxx_1_1io__handle.html#a693a8c64bb7de1a6835d6a151e37aa0e">llfio_v2_xxx::io_handle::const_buffers_type</a></div><div class="ttdeci">span&lt; const_buffer_type &gt; const_buffers_type</div><div class="ttdoc">The gather buffers type used by this handle. Guaranteed to be TrivialType apart from construction...</div><div class="ttdef"><b>Definition:</b> io_handle.hpp:163</div></div>
<div class="ttc" id="classllfio__v2__xxx_1_1io__handle_html_a83884eca7b4cd09125a5cf8a155e6052"><div class="ttname"><a href="classllfio__v2__xxx_1_1io__handle.html#a83884eca7b4cd09125a5cf8a155e6052">llfio_v2_xxx::io_handle::write</a></div><div class="ttdeci">virtual io_result&lt; const_buffers_type &gt; write(io_request&lt; const_buffers_type &gt; reqs, deadline d=deadline()) noexcept</div><div class="ttdoc">Write data to the open handle. </div></div>
</div><!-- fragment -->
</div>
diff --git a/classllfio__v2__xxx_1_1file__handle.js b/classllfio__v2__xxx_1_1file__handle.js
index a12f9e32..71ec40be 100644
--- a/classllfio__v2__xxx_1_1file__handle.js
+++ b/classllfio__v2__xxx_1_1file__handle.js
@@ -72,8 +72,8 @@ var classllfio__v2__xxx_1_1file__handle =
[ "operator=", "classllfio__v2__xxx_1_1file__handle.html#a3bba96c52082c14bf168e12f4e9e2fa6", null ],
[ "operator=", "classllfio__v2__xxx_1_1file__handle.html#abcfaf6aee5ab7a92e7c5bb5aed0fff9a", null ],
[ "parent_path_handle", "classllfio__v2__xxx_1_1file__handle.html#a865caad2f7f4bdf12fb74aabfe3c5ff5", null ],
+ [ "read", "classllfio__v2__xxx_1_1file__handle.html#a6e46c6ea379152eb559ab15990f7c467", null ],
[ "read", "classllfio__v2__xxx_1_1file__handle.html#a5f7485307a0704aa1680e5785be2035d", null ],
- [ "read", "classllfio__v2__xxx_1_1file__handle.html#aac0369e8025ae1320e7d607922f61b48", null ],
[ "release", "classllfio__v2__xxx_1_1file__handle.html#a1d273e38c061eb11f5012f624e9a202e", null ],
[ "relink", "classllfio__v2__xxx_1_1file__handle.html#a8700edc9ecd4dd35d5aad7c65dd0eca2", null ],
[ "requires_aligned_io", "classllfio__v2__xxx_1_1file__handle.html#a751e912d8dab755ea969a418c1d544eb", null ],
diff --git a/classllfio__v2__xxx_1_1handle.html b/classllfio__v2__xxx_1_1handle.html
index a8526eb0..71e3d268 100644
--- a/classllfio__v2__xxx_1_1handle.html
+++ b/classllfio__v2__xxx_1_1handle.html
@@ -452,7 +452,7 @@ std::ostream &amp;&#160;</td><td class="memItemRight" valign="bottom"><b>operato
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="af0b352d0f273ba6fa70c178b2c2fee42a244f58cf07c35fd48d7524b289551e5c"></a>truncate&#160;</td><td class="fielddoc"><p>Atomically truncate on open, leaving creation date unmodified. </p>
</td></tr>
</table>
-<div class="fragment"><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; : <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span></div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; {</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; open_existing = 0,</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; only_if_not_exist,</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; if_needed,</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <a class="code" href="namespacellfio__v2__xxx.html#a16ee1bea5a5791ecde266420e00fba81">truncate</a> <span class="comment">//!&lt; Atomically truncate on open, leaving creation date unmodified.</span></div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160;<span class="comment"></span> <span class="comment">// NOTE: IF UPDATING THIS UPDATE THE std::ostream PRINTER BELOW!!!</span></div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; };</div><div class="ttc" id="namespacellfio__v2__xxx_html_a16ee1bea5a5791ecde266420e00fba81"><div class="ttname"><a href="namespacellfio__v2__xxx.html#a16ee1bea5a5791ecde266420e00fba81">llfio_v2_xxx::truncate</a></div><div class="ttdeci">result&lt; file_handle::extent_type &gt; truncate(file_handle &amp;self, file_handle::extent_type newsize) noexcept</div><div class="ttdef"><b>Definition:</b> file_handle.hpp:385</div></div>
+<div class="fragment"><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; : <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span></div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; {</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; open_existing = 0,</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; only_if_not_exist,</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; if_needed,</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <a class="code" href="namespacellfio__v2__xxx.html#a16ee1bea5a5791ecde266420e00fba81">truncate</a> <span class="comment">//!&lt; Atomically truncate on open, leaving creation date unmodified.</span></div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160;<span class="comment"></span> <span class="comment">// NOTE: IF UPDATING THIS UPDATE THE std::ostream PRINTER BELOW!!!</span></div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; };</div><div class="ttc" id="namespacellfio__v2__xxx_html_a16ee1bea5a5791ecde266420e00fba81"><div class="ttname"><a href="namespacellfio__v2__xxx.html#a16ee1bea5a5791ecde266420e00fba81">llfio_v2_xxx::truncate</a></div><div class="ttdeci">result&lt; file_handle::extent_type &gt; truncate(file_handle &amp;self, file_handle::extent_type newsize) noexcept</div><div class="ttdef"><b>Definition:</b> file_handle.hpp:406</div></div>
</div><!-- fragment -->
</div>
</div>
@@ -491,9 +491,9 @@ std::ostream &amp;&#160;</td><td class="memItemRight" valign="bottom"><b>operato
<tr><td class="fieldname"><a id="aa3930273a2d4cabbac309e0b75701dcaa9516dfb15f51c7ee19a4d46b8c0dbe1d"></a>append&#160;</td><td class="fielddoc"><p>All mainstream OSs and CIFS guarantee this is atomic with respect to all other appenders (FILE_APPEND_DATA|SYNCHRONISE or O_APPEND) </p>
</td></tr>
</table>
-<div class="fragment"><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; : <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> <span class="comment">// bit 0 set means writable</span></div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; {</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; unchanged = 0,</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <a class="code" href="classllfio__v2__xxx_1_1handle.html#a5929f46f42112bd805ab5001bfbf9d2aae6fb35b3d125d5d76bbef95b1d804298">none</a> = 2, <span class="comment">//!&lt; No ability to read or write anything, but can synchronise (SYNCHRONIZE or 0)</span></div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;<span class="comment"></span> attr_read = 4, <span class="comment">//!&lt; Ability to read attributes (FILE_READ_ATTRIBUTES|SYNCHRONIZE or O_RDONLY)</span></div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;<span class="comment"></span> attr_write = 5, <span class="comment">//!&lt; Ability to read and write attributes (FILE_READ_ATTRIBUTES|FILE_WRITE_ATTRIBUTES|SYNCHRONIZE or O_RDONLY)</span></div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;<span class="comment"></span> <a class="code" href="namespacellfio__v2__xxx.html#a225e15680392dfa9e1dda42afcc09672">read</a> = 6, <span class="comment">//!&lt; Ability to read (READ_CONTROL|FILE_READ_DATA|FILE_READ_ATTRIBUTES|FILE_READ_EA|SYNCHRONISE or O_RDONLY)</span></div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;<span class="comment"></span> <a class="code" href="namespacellfio__v2__xxx.html#a5a8908704c9988bbecc69c2359e6fd4a">write</a> = 7, <span class="comment">//!&lt; Ability to read and write (READ_CONTROL|FILE_READ_DATA|FILE_READ_ATTRIBUTES|FILE_READ_EA|FILE_WRITE_DATA|FILE_WRITE_ATTRIBUTES|FILE_WRITE_EA|FILE_APPEND_DATA|SYNCHRONISE or O_RDWR)</span></div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;<span class="comment"></span> append = 9 <span class="comment">//!&lt; All mainstream OSs and CIFS guarantee this is atomic with respect to all other appenders (FILE_APPEND_DATA|SYNCHRONISE or O_APPEND)</span></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;<span class="comment"></span> <span class="comment">// NOTE: IF UPDATING THIS UPDATE THE std::ostream PRINTER BELOW!!!</span></div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; };</div><div class="ttc" id="classllfio__v2__xxx_1_1handle_html_a5929f46f42112bd805ab5001bfbf9d2aae6fb35b3d125d5d76bbef95b1d804298"><div class="ttname"><a href="classllfio__v2__xxx_1_1handle.html#a5929f46f42112bd805ab5001bfbf9d2aae6fb35b3d125d5d76bbef95b1d804298">llfio_v2_xxx::handle::none</a></div><div class="ttdoc">No flags. </div><div class="ttdef"><b>Definition:</b> handle.hpp:99</div></div>
-<div class="ttc" id="namespacellfio__v2__xxx_html_a5a8908704c9988bbecc69c2359e6fd4a"><div class="ttname"><a href="namespacellfio__v2__xxx.html#a5a8908704c9988bbecc69c2359e6fd4a">llfio_v2_xxx::write</a></div><div class="ttdeci">io_handle::io_result&lt; io_handle::const_buffers_type &gt; write(io_handle &amp;self, io_handle::io_request&lt; io_handle::const_buffers_type &gt; reqs, deadline d=deadline()) noexcept</div><div class="ttdoc">Write data to the open handle. </div><div class="ttdef"><b>Definition:</b> io_handle.hpp:599</div></div>
-<div class="ttc" id="namespacellfio__v2__xxx_html_a225e15680392dfa9e1dda42afcc09672"><div class="ttname"><a href="namespacellfio__v2__xxx.html#a225e15680392dfa9e1dda42afcc09672">llfio_v2_xxx::read</a></div><div class="ttdeci">io_handle::io_result&lt; io_handle::buffers_type &gt; read(io_handle &amp;self, io_handle::io_request&lt; io_handle::buffers_type &gt; reqs, deadline d=deadline()) noexcept</div><div class="ttdoc">Read data from the open handle. </div><div class="ttdef"><b>Definition:</b> io_handle.hpp:568</div></div>
+<div class="fragment"><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; : <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> <span class="comment">// bit 0 set means writable</span></div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; {</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; unchanged = 0,</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <a class="code" href="classllfio__v2__xxx_1_1handle.html#a5929f46f42112bd805ab5001bfbf9d2aae6fb35b3d125d5d76bbef95b1d804298">none</a> = 2, <span class="comment">//!&lt; No ability to read or write anything, but can synchronise (SYNCHRONIZE or 0)</span></div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;<span class="comment"></span> attr_read = 4, <span class="comment">//!&lt; Ability to read attributes (FILE_READ_ATTRIBUTES|SYNCHRONIZE or O_RDONLY)</span></div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;<span class="comment"></span> attr_write = 5, <span class="comment">//!&lt; Ability to read and write attributes (FILE_READ_ATTRIBUTES|FILE_WRITE_ATTRIBUTES|SYNCHRONIZE or O_RDONLY)</span></div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;<span class="comment"></span> <a class="code" href="namespacellfio__v2__xxx.html#af678f58d20e1f0962ff0744150342683">read</a> = 6, <span class="comment">//!&lt; Ability to read (READ_CONTROL|FILE_READ_DATA|FILE_READ_ATTRIBUTES|FILE_READ_EA|SYNCHRONISE or O_RDONLY)</span></div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;<span class="comment"></span> <a class="code" href="namespacellfio__v2__xxx.html#a5a8908704c9988bbecc69c2359e6fd4a">write</a> = 7, <span class="comment">//!&lt; Ability to read and write (READ_CONTROL|FILE_READ_DATA|FILE_READ_ATTRIBUTES|FILE_READ_EA|FILE_WRITE_DATA|FILE_WRITE_ATTRIBUTES|FILE_WRITE_EA|FILE_APPEND_DATA|SYNCHRONISE or O_RDWR)</span></div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;<span class="comment"></span> append = 9 <span class="comment">//!&lt; All mainstream OSs and CIFS guarantee this is atomic with respect to all other appenders (FILE_APPEND_DATA|SYNCHRONISE or O_APPEND)</span></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;<span class="comment"></span> <span class="comment">// NOTE: IF UPDATING THIS UPDATE THE std::ostream PRINTER BELOW!!!</span></div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; };</div><div class="ttc" id="namespacellfio__v2__xxx_html_af678f58d20e1f0962ff0744150342683"><div class="ttname"><a href="namespacellfio__v2__xxx.html#af678f58d20e1f0962ff0744150342683">llfio_v2_xxx::read</a></div><div class="ttdeci">file_handle::io_result&lt; file_handle::size_type &gt; read(file_handle &amp;self, file_handle::extent_type offset, std::initializer_list&lt; file_handle::buffer_type &gt; lst, deadline d=deadline()) noexcept</div><div class="ttdef"><b>Definition:</b> file_handle.hpp:385</div></div>
+<div class="ttc" id="classllfio__v2__xxx_1_1handle_html_a5929f46f42112bd805ab5001bfbf9d2aae6fb35b3d125d5d76bbef95b1d804298"><div class="ttname"><a href="classllfio__v2__xxx_1_1handle.html#a5929f46f42112bd805ab5001bfbf9d2aae6fb35b3d125d5d76bbef95b1d804298">llfio_v2_xxx::handle::none</a></div><div class="ttdoc">No flags. </div><div class="ttdef"><b>Definition:</b> handle.hpp:99</div></div>
+<div class="ttc" id="namespacellfio__v2__xxx_html_a5a8908704c9988bbecc69c2359e6fd4a"><div class="ttname"><a href="namespacellfio__v2__xxx.html#a5a8908704c9988bbecc69c2359e6fd4a">llfio_v2_xxx::write</a></div><div class="ttdeci">io_handle::io_result&lt; io_handle::const_buffers_type &gt; write(io_handle &amp;self, io_handle::io_request&lt; io_handle::const_buffers_type &gt; reqs, deadline d=deadline()) noexcept</div><div class="ttdoc">Write data to the open handle. </div><div class="ttdef"><b>Definition:</b> io_handle.hpp:580</div></div>
</div><!-- fragment -->
</div>
</div>
diff --git a/classllfio__v2__xxx_1_1io__handle-members.html b/classllfio__v2__xxx_1_1io__handle-members.html
index d15ad030..2afc1495 100644
--- a/classllfio__v2__xxx_1_1io__handle-members.html
+++ b/classllfio__v2__xxx_1_1io__handle-members.html
@@ -147,21 +147,20 @@ $(document).ready(function(){initNavTree('classllfio__v2__xxx_1_1io__handle.html
<tr><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1handle.html#a5929f46f42112bd805ab5001bfbf9d2aab099987c48559cca2de094c74ffc702a">overlapped</a> enum value</td><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1handle.html">llfio_v2_xxx::handle</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>path_type</b> typedef (defined in <a class="el" href="classllfio__v2__xxx_1_1io__handle.html">llfio_v2_xxx::io_handle</a>)</td><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1io__handle.html">llfio_v2_xxx::io_handle</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1io__handle.html#a5f7485307a0704aa1680e5785be2035d">read</a>(io_request&lt; buffers_type &gt; reqs, deadline d=deadline()) noexcept</td><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1io__handle.html">llfio_v2_xxx::io_handle</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1io__handle.html#aac0369e8025ae1320e7d607922f61b48">read</a>(extent_type offset, std::initializer_list&lt; buffer_type &gt; lst, deadline d=deadline()) noexcept</td><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1io__handle.html">llfio_v2_xxx::io_handle</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1handle.html#a1d273e38c061eb11f5012f624e9a202e">release</a>() noexcept</td><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1handle.html">llfio_v2_xxx::handle</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1handle.html#a751e912d8dab755ea969a418c1d544eb">requires_aligned_io</a>() const noexcept</td><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1handle.html">llfio_v2_xxx::handle</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1handle.html#a101620e9fff0c0e8c346af0e9de58b6a">set_append_only</a>(bool enable) noexcept</td><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1handle.html">llfio_v2_xxx::handle</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
- <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>size_type</b> typedef (defined in <a class="el" href="classllfio__v2__xxx_1_1io__handle.html">llfio_v2_xxx::io_handle</a>)</td><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1io__handle.html">llfio_v2_xxx::io_handle</a></td><td class="entry"></td></tr>
- <tr><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1handle.html#a4716696b8700953889006251e0678aa4">swap</a>(handle &amp;o) noexcept</td><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1handle.html">llfio_v2_xxx::handle</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1io__handle.html#ae1abb705dbe9890e103365bf7c61521e">try_lock</a>(extent_type offset, extent_type bytes, bool exclusive=true) noexcept</td><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1io__handle.html">llfio_v2_xxx::io_handle</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1handle.html#a5929f46f42112bd805ab5001bfbf9d2aa72328d49ab1e37950ff31891b47a6962">unlink_on_first_close</a> enum value</td><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1handle.html">llfio_v2_xxx::handle</a></td><td class="entry"></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1io__handle.html#ad720c4c7f350fe06291534d1cbf2feb5">unlock</a>(extent_type offset, extent_type bytes) noexcept</td><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1io__handle.html">llfio_v2_xxx::io_handle</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
- <tr><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1handle.html#a5929f46f42112bd805ab5001bfbf9d2aaafd26e37b4a783bd9814549fb4ff6cd0">win_disable_sparse_file_creation</a> enum value</td><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1handle.html">llfio_v2_xxx::handle</a></td><td class="entry"></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1handle.html#a5929f46f42112bd805ab5001bfbf9d2aacf17c790c4b3af070b11bc5b75911f9c">win_disable_unlink_emulation</a> enum value</td><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1handle.html">llfio_v2_xxx::handle</a></td><td class="entry"></td></tr>
- <tr><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1io__handle.html#a83884eca7b4cd09125a5cf8a155e6052">write</a>(io_request&lt; const_buffers_type &gt; reqs, deadline d=deadline()) noexcept</td><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1io__handle.html">llfio_v2_xxx::io_handle</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1io__handle.html#ab500784aa806dc7c2d90028d2f72de57">write</a>(extent_type offset, std::initializer_list&lt; const_buffer_type &gt; lst, deadline d=deadline()) noexcept</td><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1io__handle.html">llfio_v2_xxx::io_handle</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr bgcolor="#f0f0f0"><td class="entry"><b>~handle</b>() (defined in <a class="el" href="classllfio__v2__xxx_1_1handle.html">llfio_v2_xxx::handle</a>)</td><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1handle.html">llfio_v2_xxx::handle</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
- <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>~io_handle</b>()=default (defined in <a class="el" href="classllfio__v2__xxx_1_1io__handle.html">llfio_v2_xxx::io_handle</a>)</td><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1io__handle.html">llfio_v2_xxx::io_handle</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1handle.html#a1d273e38c061eb11f5012f624e9a202e">release</a>() noexcept</td><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1handle.html">llfio_v2_xxx::handle</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1handle.html#a751e912d8dab755ea969a418c1d544eb">requires_aligned_io</a>() const noexcept</td><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1handle.html">llfio_v2_xxx::handle</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1handle.html#a101620e9fff0c0e8c346af0e9de58b6a">set_append_only</a>(bool enable) noexcept</td><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1handle.html">llfio_v2_xxx::handle</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+ <tr bgcolor="#f0f0f0"><td class="entry"><b>size_type</b> typedef (defined in <a class="el" href="classllfio__v2__xxx_1_1io__handle.html">llfio_v2_xxx::io_handle</a>)</td><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1io__handle.html">llfio_v2_xxx::io_handle</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1handle.html#a4716696b8700953889006251e0678aa4">swap</a>(handle &amp;o) noexcept</td><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1handle.html">llfio_v2_xxx::handle</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1io__handle.html#ae1abb705dbe9890e103365bf7c61521e">try_lock</a>(extent_type offset, extent_type bytes, bool exclusive=true) noexcept</td><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1io__handle.html">llfio_v2_xxx::io_handle</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1handle.html#a5929f46f42112bd805ab5001bfbf9d2aa72328d49ab1e37950ff31891b47a6962">unlink_on_first_close</a> enum value</td><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1handle.html">llfio_v2_xxx::handle</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1io__handle.html#ad720c4c7f350fe06291534d1cbf2feb5">unlock</a>(extent_type offset, extent_type bytes) noexcept</td><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1io__handle.html">llfio_v2_xxx::io_handle</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1handle.html#a5929f46f42112bd805ab5001bfbf9d2aaafd26e37b4a783bd9814549fb4ff6cd0">win_disable_sparse_file_creation</a> enum value</td><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1handle.html">llfio_v2_xxx::handle</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1handle.html#a5929f46f42112bd805ab5001bfbf9d2aacf17c790c4b3af070b11bc5b75911f9c">win_disable_unlink_emulation</a> enum value</td><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1handle.html">llfio_v2_xxx::handle</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1io__handle.html#a83884eca7b4cd09125a5cf8a155e6052">write</a>(io_request&lt; const_buffers_type &gt; reqs, deadline d=deadline()) noexcept</td><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1io__handle.html">llfio_v2_xxx::io_handle</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1io__handle.html#ab500784aa806dc7c2d90028d2f72de57">write</a>(extent_type offset, std::initializer_list&lt; const_buffer_type &gt; lst, deadline d=deadline()) noexcept</td><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1io__handle.html">llfio_v2_xxx::io_handle</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>~handle</b>() (defined in <a class="el" href="classllfio__v2__xxx_1_1handle.html">llfio_v2_xxx::handle</a>)</td><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1handle.html">llfio_v2_xxx::handle</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+ <tr bgcolor="#f0f0f0"><td class="entry"><b>~io_handle</b>()=default (defined in <a class="el" href="classllfio__v2__xxx_1_1io__handle.html">llfio_v2_xxx::io_handle</a>)</td><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1io__handle.html">llfio_v2_xxx::io_handle</a></td><td class="entry"></td></tr>
</table></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
diff --git a/classllfio__v2__xxx_1_1io__handle.html b/classllfio__v2__xxx_1_1io__handle.html
index b78ee872..ab84789a 100644
--- a/classllfio__v2__xxx_1_1io__handle.html
+++ b/classllfio__v2__xxx_1_1io__handle.html
@@ -212,8 +212,6 @@ constexpr&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href=
<tr class="memitem:a5f7485307a0704aa1680e5785be2035d"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="structllfio__v2__xxx_1_1io__handle_1_1io__result.html">io_result</a>&lt; <a class="el" href="classllfio__v2__xxx_1_1io__handle.html#a8f525d9665b524442b46cd55678817ed">buffers_type</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classllfio__v2__xxx_1_1io__handle.html#a5f7485307a0704aa1680e5785be2035d">read</a> (<a class="el" href="structllfio__v2__xxx_1_1io__handle_1_1io__request.html">io_request</a>&lt; <a class="el" href="classllfio__v2__xxx_1_1io__handle.html#a8f525d9665b524442b46cd55678817ed">buffers_type</a> &gt; reqs, <a class="el" href="structllfio__v2__xxx_1_1deadline.html">deadline</a> d=<a class="el" href="structllfio__v2__xxx_1_1deadline.html">deadline</a>()) noexcept</td></tr>
<tr class="memdesc:a5f7485307a0704aa1680e5785be2035d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Read data from the open handle. <a href="#a5f7485307a0704aa1680e5785be2035d">More...</a><br /></td></tr>
<tr class="separator:a5f7485307a0704aa1680e5785be2035d"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:aac0369e8025ae1320e7d607922f61b48"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structllfio__v2__xxx_1_1io__handle_1_1io__result.html">io_result</a>&lt; <a class="el" href="classllfio__v2__xxx_1_1handle.html#aed9587571c3fb932adadddc1beeeed58">size_type</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classllfio__v2__xxx_1_1io__handle.html#aac0369e8025ae1320e7d607922f61b48">read</a> (<a class="el" href="classllfio__v2__xxx_1_1handle.html#a4ee58f1b6a24af5e64d850d1e3eed07f">extent_type</a> offset, std::initializer_list&lt; <a class="el" href="structllfio__v2__xxx_1_1io__handle_1_1buffer__type.html">buffer_type</a> &gt; lst, <a class="el" href="structllfio__v2__xxx_1_1deadline.html">deadline</a> d=<a class="el" href="structllfio__v2__xxx_1_1deadline.html">deadline</a>()) noexcept</td></tr>
-<tr class="separator:aac0369e8025ae1320e7d607922f61b48"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a83884eca7b4cd09125a5cf8a155e6052"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="structllfio__v2__xxx_1_1io__handle_1_1io__result.html">io_result</a>&lt; <a class="el" href="classllfio__v2__xxx_1_1io__handle.html#a693a8c64bb7de1a6835d6a151e37aa0e">const_buffers_type</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classllfio__v2__xxx_1_1io__handle.html#a83884eca7b4cd09125a5cf8a155e6052">write</a> (<a class="el" href="structllfio__v2__xxx_1_1io__handle_1_1io__request.html">io_request</a>&lt; <a class="el" href="classllfio__v2__xxx_1_1io__handle.html#a693a8c64bb7de1a6835d6a151e37aa0e">const_buffers_type</a> &gt; reqs, <a class="el" href="structllfio__v2__xxx_1_1deadline.html">deadline</a> d=<a class="el" href="structllfio__v2__xxx_1_1deadline.html">deadline</a>()) noexcept</td></tr>
<tr class="memdesc:a83884eca7b4cd09125a5cf8a155e6052"><td class="mdescLeft">&#160;</td><td class="mdescRight">Write data to the open handle. <a href="#a83884eca7b4cd09125a5cf8a155e6052">More...</a><br /></td></tr>
<tr class="separator:a83884eca7b4cd09125a5cf8a155e6052"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -670,7 +668,7 @@ For portability, you can only assume that barriers write order for a single hand
</table>
</div><div class="memdoc">
<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
-<div class="fragment"><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160; {</div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160; <span class="keywordtype">size_t</span> bytes = 0;</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160; <span class="keywordflow">for</span>(<span class="keyword">auto</span> &amp;i : reqs.buffers)</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160; {</div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160; <span class="keywordflow">if</span>(bytes + i.size() &lt; bytes)</div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160; {</div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160; <span class="keywordflow">return</span> errc::value_too_large;</div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160; }</div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160; bytes += i.size();</div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160; }</div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classllfio__v2__xxx_1_1io__handle.html#a29cc9f2525f78dd73f8402cb59d97212">lock</a>(reqs.offset, bytes, <span class="keyword">false</span>, d);</div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160; }</div><div class="ttc" id="classllfio__v2__xxx_1_1io__handle_html_a29cc9f2525f78dd73f8402cb59d97212"><div class="ttname"><a href="classllfio__v2__xxx_1_1io__handle.html#a29cc9f2525f78dd73f8402cb59d97212">llfio_v2_xxx::io_handle::lock</a></div><div class="ttdeci">virtual result&lt; extent_guard &gt; lock(extent_type offset, extent_type bytes, bool exclusive=true, deadline d=deadline()) noexcept</div><div class="ttdoc">Tries to lock the range of bytes specified for shared or exclusive access. Be aware this passes throu...</div></div>
+<div class="fragment"><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160; {</div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160; <span class="keywordtype">size_t</span> bytes = 0;</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160; <span class="keywordflow">for</span>(<span class="keyword">auto</span> &amp;i : reqs.buffers)</div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160; {</div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160; <span class="keywordflow">if</span>(bytes + i.size() &lt; bytes)</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160; {</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160; <span class="keywordflow">return</span> errc::value_too_large;</div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160; }</div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160; bytes += i.size();</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160; }</div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classllfio__v2__xxx_1_1io__handle.html#a29cc9f2525f78dd73f8402cb59d97212">lock</a>(reqs.offset, bytes, <span class="keyword">false</span>, d);</div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160; }</div><div class="ttc" id="classllfio__v2__xxx_1_1io__handle_html_a29cc9f2525f78dd73f8402cb59d97212"><div class="ttname"><a href="classllfio__v2__xxx_1_1io__handle.html#a29cc9f2525f78dd73f8402cb59d97212">llfio_v2_xxx::io_handle::lock</a></div><div class="ttdeci">virtual result&lt; extent_guard &gt; lock(extent_type offset, extent_type bytes, bool exclusive=true, deadline d=deadline()) noexcept</div><div class="ttdoc">Tries to lock the range of bytes specified for shared or exclusive access. Be aware this passes throu...</div></div>
</div><!-- fragment -->
</div>
</div>
@@ -708,7 +706,7 @@ For portability, you can only assume that barriers write order for a single hand
</table>
</div><div class="memdoc">
<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
-<div class="fragment"><div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160; {</div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160; <span class="keywordtype">size_t</span> bytes = 0;</div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160; <span class="keywordflow">for</span>(<span class="keyword">auto</span> &amp;i : reqs.buffers)</div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160; {</div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160; <span class="keywordflow">if</span>(bytes + i.size() &lt; bytes)</div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160; {</div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160; <span class="keywordflow">return</span> errc::value_too_large;</div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160; }</div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160; bytes += i.size();</div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160; }</div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classllfio__v2__xxx_1_1io__handle.html#a29cc9f2525f78dd73f8402cb59d97212">lock</a>(reqs.offset, bytes, <span class="keyword">true</span>, d);</div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160; }</div><div class="ttc" id="classllfio__v2__xxx_1_1io__handle_html_a29cc9f2525f78dd73f8402cb59d97212"><div class="ttname"><a href="classllfio__v2__xxx_1_1io__handle.html#a29cc9f2525f78dd73f8402cb59d97212">llfio_v2_xxx::io_handle::lock</a></div><div class="ttdeci">virtual result&lt; extent_guard &gt; lock(extent_type offset, extent_type bytes, bool exclusive=true, deadline d=deadline()) noexcept</div><div class="ttdoc">Tries to lock the range of bytes specified for shared or exclusive access. Be aware this passes throu...</div></div>
+<div class="fragment"><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160; {</div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160; <span class="keywordtype">size_t</span> bytes = 0;</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160; <span class="keywordflow">for</span>(<span class="keyword">auto</span> &amp;i : reqs.buffers)</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160; {</div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160; <span class="keywordflow">if</span>(bytes + i.size() &lt; bytes)</div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160; {</div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160; <span class="keywordflow">return</span> errc::value_too_large;</div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160; }</div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160; bytes += i.size();</div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160; }</div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classllfio__v2__xxx_1_1io__handle.html#a29cc9f2525f78dd73f8402cb59d97212">lock</a>(reqs.offset, bytes, <span class="keyword">true</span>, d);</div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160; }</div><div class="ttc" id="classllfio__v2__xxx_1_1io__handle_html_a29cc9f2525f78dd73f8402cb59d97212"><div class="ttname"><a href="classllfio__v2__xxx_1_1io__handle.html#a29cc9f2525f78dd73f8402cb59d97212">llfio_v2_xxx::io_handle::lock</a></div><div class="ttdeci">virtual result&lt; extent_guard &gt; lock(extent_type offset, extent_type bytes, bool exclusive=true, deadline d=deadline()) noexcept</div><div class="ttdoc">Tries to lock the range of bytes specified for shared or exclusive access. Be aware this passes throu...</div></div>
</div><!-- fragment -->
</div>
</div>
@@ -743,7 +741,7 @@ For portability, you can only assume that barriers write order for a single hand
</div>
</div>
<a id="a5f7485307a0704aa1680e5785be2035d"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a5f7485307a0704aa1680e5785be2035d">&#9670;&nbsp;</a></span>read() <span class="overload">[1/2]</span></h2>
+<h2 class="memtitle"><span class="permalink"><a href="#a5f7485307a0704aa1680e5785be2035d">&#9670;&nbsp;</a></span>read()</h2>
<div class="memitem">
<div class="memproto">
@@ -791,51 +789,6 @@ For portability, you can only assume that barriers write order for a single hand
</div>
</div>
-<a id="aac0369e8025ae1320e7d607922f61b48"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#aac0369e8025ae1320e7d607922f61b48">&#9670;&nbsp;</a></span>read() <span class="overload">[2/2]</span></h2>
-
-<div class="memitem">
-<div class="memproto">
-<table class="mlabels">
- <tr>
- <td class="mlabels-left">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="structllfio__v2__xxx_1_1io__handle_1_1io__result.html">io_result</a>&lt;<a class="el" href="classllfio__v2__xxx_1_1handle.html#aed9587571c3fb932adadddc1beeeed58">size_type</a>&gt; llfio_v2_xxx::io_handle::read </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="classllfio__v2__xxx_1_1handle.html#a4ee58f1b6a24af5e64d850d1e3eed07f">extent_type</a>&#160;</td>
- <td class="paramname"><em>offset</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">std::initializer_list&lt; <a class="el" href="structllfio__v2__xxx_1_1io__handle_1_1buffer__type.html">buffer_type</a> &gt;&#160;</td>
- <td class="paramname"><em>lst</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype"><a class="el" href="structllfio__v2__xxx_1_1deadline.html">deadline</a>&#160;</td>
- <td class="paramname"><em>d</em> = <code><a class="el" href="structllfio__v2__xxx_1_1deadline.html">deadline</a>()</code>&#160;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td>
- </tr>
- </table>
- </td>
- <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">noexcept</span></span> </td>
- </tr>
-</table>
-</div><div class="memdoc">
-<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
-<div class="fragment"><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; {</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; buffer_type *_reqs = <span class="keyword">reinterpret_cast&lt;</span>buffer_type *<span class="keyword">&gt;</span>(alloca(<span class="keyword">sizeof</span>(buffer_type) * lst.size()));</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; memcpy(_reqs, lst.begin(), <span class="keyword">sizeof</span>(buffer_type) * lst.size());</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; io_request&lt;buffers_type&gt; reqs(<a class="code" href="classllfio__v2__xxx_1_1io__handle.html#a8f525d9665b524442b46cd55678817ed">buffers_type</a>(_reqs, lst.size()), offset);</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; <span class="keyword">auto</span> ret = <a class="code" href="classllfio__v2__xxx_1_1io__handle.html#a5f7485307a0704aa1680e5785be2035d">read</a>(reqs, d);</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; <span class="keywordflow">if</span>(ret)</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; {</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; <span class="keywordflow">return</span> ret.bytes_transferred();</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; }</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; <span class="keywordflow">return</span> ret.error();</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; }</div><div class="ttc" id="classllfio__v2__xxx_1_1io__handle_html_a8f525d9665b524442b46cd55678817ed"><div class="ttname"><a href="classllfio__v2__xxx_1_1io__handle.html#a8f525d9665b524442b46cd55678817ed">llfio_v2_xxx::io_handle::buffers_type</a></div><div class="ttdeci">span&lt; buffer_type &gt; buffers_type</div><div class="ttdoc">The scatter buffers type used by this handle. Guaranteed to be TrivialType apart from construction...</div><div class="ttdef"><b>Definition:</b> io_handle.hpp:161</div></div>
-<div class="ttc" id="classllfio__v2__xxx_1_1io__handle_html_a5f7485307a0704aa1680e5785be2035d"><div class="ttname"><a href="classllfio__v2__xxx_1_1io__handle.html#a5f7485307a0704aa1680e5785be2035d">llfio_v2_xxx::io_handle::read</a></div><div class="ttdeci">virtual io_result&lt; buffers_type &gt; read(io_request&lt; buffers_type &gt; reqs, deadline d=deadline()) noexcept</div><div class="ttdoc">Read data from the open handle. </div></div>
-</div><!-- fragment -->
-</div>
-</div>
<a id="a101620e9fff0c0e8c346af0e9de58b6a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a101620e9fff0c0e8c346af0e9de58b6a">&#9670;&nbsp;</a></span>set_append_only()</h2>
@@ -906,7 +859,7 @@ For portability, you can only assume that barriers write order for a single hand
</table>
</div><div class="memdoc">
<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
-<div class="fragment"><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160;{ <span class="keywordflow">return</span> <a class="code" href="classllfio__v2__xxx_1_1io__handle.html#a29cc9f2525f78dd73f8402cb59d97212">lock</a>(offset, bytes, exclusive, deadline(std::chrono::seconds(0))); }</div><div class="ttc" id="classllfio__v2__xxx_1_1io__handle_html_a29cc9f2525f78dd73f8402cb59d97212"><div class="ttname"><a href="classllfio__v2__xxx_1_1io__handle.html#a29cc9f2525f78dd73f8402cb59d97212">llfio_v2_xxx::io_handle::lock</a></div><div class="ttdeci">virtual result&lt; extent_guard &gt; lock(extent_type offset, extent_type bytes, bool exclusive=true, deadline d=deadline()) noexcept</div><div class="ttdoc">Tries to lock the range of bytes specified for shared or exclusive access. Be aware this passes throu...</div></div>
+<div class="fragment"><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160;{ <span class="keywordflow">return</span> <a class="code" href="classllfio__v2__xxx_1_1io__handle.html#a29cc9f2525f78dd73f8402cb59d97212">lock</a>(offset, bytes, exclusive, deadline(std::chrono::seconds(0))); }</div><div class="ttc" id="classllfio__v2__xxx_1_1io__handle_html_a29cc9f2525f78dd73f8402cb59d97212"><div class="ttname"><a href="classllfio__v2__xxx_1_1io__handle.html#a29cc9f2525f78dd73f8402cb59d97212">llfio_v2_xxx::io_handle::lock</a></div><div class="ttdeci">virtual result&lt; extent_guard &gt; lock(extent_type offset, extent_type bytes, bool exclusive=true, deadline d=deadline()) noexcept</div><div class="ttdoc">Tries to lock the range of bytes specified for shared or exclusive access. Be aware this passes throu...</div></div>
</div><!-- fragment -->
</div>
</div>
@@ -1046,7 +999,7 @@ For portability, you can only assume that barriers write order for a single hand
</table>
</div><div class="memdoc">
<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
-<div class="fragment"><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; {</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; const_buffer_type *_reqs = <span class="keyword">reinterpret_cast&lt;</span>const_buffer_type *<span class="keyword">&gt;</span>(alloca(<span class="keyword">sizeof</span>(const_buffer_type) * lst.size()));</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; memcpy(_reqs, lst.begin(), <span class="keyword">sizeof</span>(const_buffer_type) * lst.size());</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; io_request&lt;const_buffers_type&gt; reqs(<a class="code" href="classllfio__v2__xxx_1_1io__handle.html#a693a8c64bb7de1a6835d6a151e37aa0e">const_buffers_type</a>(_reqs, lst.size()), offset);</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; <span class="keyword">auto</span> ret = <a class="code" href="classllfio__v2__xxx_1_1io__handle.html#a83884eca7b4cd09125a5cf8a155e6052">write</a>(reqs, d);</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; <span class="keywordflow">if</span>(ret)</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; {</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; <span class="keywordflow">return</span> ret.bytes_transferred();</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; }</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; <span class="keywordflow">return</span> ret.error();</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; }</div><div class="ttc" id="classllfio__v2__xxx_1_1io__handle_html_a693a8c64bb7de1a6835d6a151e37aa0e"><div class="ttname"><a href="classllfio__v2__xxx_1_1io__handle.html#a693a8c64bb7de1a6835d6a151e37aa0e">llfio_v2_xxx::io_handle::const_buffers_type</a></div><div class="ttdeci">span&lt; const_buffer_type &gt; const_buffers_type</div><div class="ttdoc">The gather buffers type used by this handle. Guaranteed to be TrivialType apart from construction...</div><div class="ttdef"><b>Definition:</b> io_handle.hpp:163</div></div>
+<div class="fragment"><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; {</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; const_buffer_type *_reqs = <span class="keyword">reinterpret_cast&lt;</span>const_buffer_type *<span class="keyword">&gt;</span>(alloca(<span class="keyword">sizeof</span>(const_buffer_type) * lst.size()));</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; memcpy(_reqs, lst.begin(), <span class="keyword">sizeof</span>(const_buffer_type) * lst.size());</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; io_request&lt;const_buffers_type&gt; reqs(<a class="code" href="classllfio__v2__xxx_1_1io__handle.html#a693a8c64bb7de1a6835d6a151e37aa0e">const_buffers_type</a>(_reqs, lst.size()), offset);</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; <span class="keyword">auto</span> ret = <a class="code" href="classllfio__v2__xxx_1_1io__handle.html#a83884eca7b4cd09125a5cf8a155e6052">write</a>(reqs, d);</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; <span class="keywordflow">if</span>(ret)</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; {</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; <span class="keywordflow">return</span> ret.bytes_transferred();</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; }</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; <span class="keywordflow">return</span> ret.error();</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160; }</div><div class="ttc" id="classllfio__v2__xxx_1_1io__handle_html_a693a8c64bb7de1a6835d6a151e37aa0e"><div class="ttname"><a href="classllfio__v2__xxx_1_1io__handle.html#a693a8c64bb7de1a6835d6a151e37aa0e">llfio_v2_xxx::io_handle::const_buffers_type</a></div><div class="ttdeci">span&lt; const_buffer_type &gt; const_buffers_type</div><div class="ttdoc">The gather buffers type used by this handle. Guaranteed to be TrivialType apart from construction...</div><div class="ttdef"><b>Definition:</b> io_handle.hpp:163</div></div>
<div class="ttc" id="classllfio__v2__xxx_1_1io__handle_html_a83884eca7b4cd09125a5cf8a155e6052"><div class="ttname"><a href="classllfio__v2__xxx_1_1io__handle.html#a83884eca7b4cd09125a5cf8a155e6052">llfio_v2_xxx::io_handle::write</a></div><div class="ttdeci">virtual io_result&lt; const_buffers_type &gt; write(io_request&lt; const_buffers_type &gt; reqs, deadline d=deadline()) noexcept</div><div class="ttdoc">Write data to the open handle. </div></div>
</div><!-- fragment -->
</div>
diff --git a/classllfio__v2__xxx_1_1io__handle.js b/classllfio__v2__xxx_1_1io__handle.js
index 5ab66464..9f4b6b74 100644
--- a/classllfio__v2__xxx_1_1io__handle.js
+++ b/classllfio__v2__xxx_1_1io__handle.js
@@ -64,7 +64,6 @@ var classllfio__v2__xxx_1_1io__handle =
[ "operator=", "classllfio__v2__xxx_1_1io__handle.html#a6098bb852a95257b513067cd300fc83f", null ],
[ "operator=", "classllfio__v2__xxx_1_1io__handle.html#a7e31726ff57b2eca62591209c17ad4a4", null ],
[ "read", "classllfio__v2__xxx_1_1io__handle.html#a5f7485307a0704aa1680e5785be2035d", null ],
- [ "read", "classllfio__v2__xxx_1_1io__handle.html#aac0369e8025ae1320e7d607922f61b48", null ],
[ "release", "classllfio__v2__xxx_1_1io__handle.html#a1d273e38c061eb11f5012f624e9a202e", null ],
[ "requires_aligned_io", "classllfio__v2__xxx_1_1io__handle.html#a751e912d8dab755ea969a418c1d544eb", null ],
[ "set_append_only", "classllfio__v2__xxx_1_1io__handle.html#a101620e9fff0c0e8c346af0e9de58b6a", null ],
diff --git a/classllfio__v2__xxx_1_1map__handle-members.html b/classllfio__v2__xxx_1_1map__handle-members.html
index fa16de8b..3ffd83ef 100644
--- a/classllfio__v2__xxx_1_1map__handle-members.html
+++ b/classllfio__v2__xxx_1_1map__handle-members.html
@@ -181,29 +181,28 @@ $(document).ready(function(){initNavTree('classllfio__v2__xxx_1_1map__handle.htm
<tr><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1map__handle.html#af047e43f418d68c618fab258b733302d">prefetch</a>(buffer_type region) noexcept</td><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1map__handle.html">llfio_v2_xxx::map_handle</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1map__handle.html#a073cdca57e3e3718d2eb285be51d5c92">read</a>(io_request&lt; buffers_type &gt; reqs, deadline d=deadline()) noexcept override</td><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1map__handle.html">llfio_v2_xxx::map_handle</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
<tr><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1io__handle.html#a5f7485307a0704aa1680e5785be2035d">llfio_v2_xxx::io_handle::read</a>(io_request&lt; buffers_type &gt; reqs, deadline d=deadline()) noexcept</td><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1io__handle.html">llfio_v2_xxx::io_handle</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1io__handle.html#aac0369e8025ae1320e7d607922f61b48">llfio_v2_xxx::io_handle::read</a>(extent_type offset, std::initializer_list&lt; buffer_type &gt; lst, deadline d=deadline()) noexcept</td><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1io__handle.html">llfio_v2_xxx::io_handle</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1map__handle.html#a06cfd3521ff08782a848821951510f11">release</a>() noexcept override</td><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1map__handle.html">llfio_v2_xxx::map_handle</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1handle.html#a751e912d8dab755ea969a418c1d544eb">requires_aligned_io</a>() const noexcept</td><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1handle.html">llfio_v2_xxx::handle</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1map__handle.html#a173539843aebd387bb8ca06246067ead">section</a>() const noexcept</td><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1map__handle.html">llfio_v2_xxx::map_handle</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1handle.html#a101620e9fff0c0e8c346af0e9de58b6a">set_append_only</a>(bool enable) noexcept</td><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1handle.html">llfio_v2_xxx::handle</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
- <tr><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1map__handle.html#a7a27e949d3333a75e96f5d979e2d6bbf">set_section</a>(section_handle *s) noexcept</td><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1map__handle.html">llfio_v2_xxx::map_handle</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>size_type</b> typedef (defined in <a class="el" href="classllfio__v2__xxx_1_1map__handle.html">llfio_v2_xxx::map_handle</a>)</td><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1map__handle.html">llfio_v2_xxx::map_handle</a></td><td class="entry"></td></tr>
- <tr><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1map__handle.html#a2049c6f936df05dd539919f947355506">swap</a>(map_handle &amp;o) noexcept</td><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1map__handle.html">llfio_v2_xxx::map_handle</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1handle.html#a4716696b8700953889006251e0678aa4">llfio_v2_xxx::io_handle::swap</a>(handle &amp;o) noexcept</td><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1handle.html">llfio_v2_xxx::handle</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1map__handle.html#a1fb1c874bdab5540c3310e468e41325a">truncate</a>(size_type newsize, bool permit_relocation=false) noexcept</td><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1map__handle.html">llfio_v2_xxx::map_handle</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1io__handle.html#ae1abb705dbe9890e103365bf7c61521e">try_lock</a>(extent_type offset, extent_type bytes, bool exclusive=true) noexcept</td><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1io__handle.html">llfio_v2_xxx::io_handle</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1handle.html#a5929f46f42112bd805ab5001bfbf9d2aa72328d49ab1e37950ff31891b47a6962">unlink_on_first_close</a> enum value</td><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1handle.html">llfio_v2_xxx::handle</a></td><td class="entry"></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1io__handle.html#ad720c4c7f350fe06291534d1cbf2feb5">unlock</a>(extent_type offset, extent_type bytes) noexcept</td><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1io__handle.html">llfio_v2_xxx::io_handle</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
- <tr><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1map__handle.html#ac7aeb0aa6182a22d0242340eb6d341b9">update_map</a>() noexcept</td><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1map__handle.html">llfio_v2_xxx::map_handle</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1handle.html#a5929f46f42112bd805ab5001bfbf9d2aaafd26e37b4a783bd9814549fb4ff6cd0">win_disable_sparse_file_creation</a> enum value</td><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1handle.html">llfio_v2_xxx::handle</a></td><td class="entry"></td></tr>
- <tr><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1handle.html#a5929f46f42112bd805ab5001bfbf9d2aacf17c790c4b3af070b11bc5b75911f9c">win_disable_unlink_emulation</a> enum value</td><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1handle.html">llfio_v2_xxx::handle</a></td><td class="entry"></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1map__handle.html#a90afda5433656ed35a5814e048cc1f1b">write</a>(io_request&lt; const_buffers_type &gt; reqs, deadline d=deadline()) noexcept override</td><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1map__handle.html">llfio_v2_xxx::map_handle</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
- <tr><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1io__handle.html#a83884eca7b4cd09125a5cf8a155e6052">llfio_v2_xxx::io_handle::write</a>(io_request&lt; const_buffers_type &gt; reqs, deadline d=deadline()) noexcept</td><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1io__handle.html">llfio_v2_xxx::io_handle</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1io__handle.html#ab500784aa806dc7c2d90028d2f72de57">llfio_v2_xxx::io_handle::write</a>(extent_type offset, std::initializer_list&lt; const_buffer_type &gt; lst, deadline d=deadline()) noexcept</td><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1io__handle.html">llfio_v2_xxx::io_handle</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1map__handle.html#a0b87515430eb0220950b4c17a3da745f">zero_memory</a>(buffer_type region) noexcept</td><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1map__handle.html">llfio_v2_xxx::map_handle</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>~handle</b>() (defined in <a class="el" href="classllfio__v2__xxx_1_1handle.html">llfio_v2_xxx::handle</a>)</td><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1handle.html">llfio_v2_xxx::handle</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
- <tr bgcolor="#f0f0f0"><td class="entry"><b>~io_handle</b>()=default (defined in <a class="el" href="classllfio__v2__xxx_1_1io__handle.html">llfio_v2_xxx::io_handle</a>)</td><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1io__handle.html">llfio_v2_xxx::io_handle</a></td><td class="entry"></td></tr>
- <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>~map_handle</b>() override (defined in <a class="el" href="classllfio__v2__xxx_1_1map__handle.html">llfio_v2_xxx::map_handle</a>)</td><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1map__handle.html">llfio_v2_xxx::map_handle</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1map__handle.html#a06cfd3521ff08782a848821951510f11">release</a>() noexcept override</td><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1map__handle.html">llfio_v2_xxx::map_handle</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1handle.html#a751e912d8dab755ea969a418c1d544eb">requires_aligned_io</a>() const noexcept</td><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1handle.html">llfio_v2_xxx::handle</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1map__handle.html#a173539843aebd387bb8ca06246067ead">section</a>() const noexcept</td><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1map__handle.html">llfio_v2_xxx::map_handle</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1handle.html#a101620e9fff0c0e8c346af0e9de58b6a">set_append_only</a>(bool enable) noexcept</td><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1handle.html">llfio_v2_xxx::handle</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1map__handle.html#a7a27e949d3333a75e96f5d979e2d6bbf">set_section</a>(section_handle *s) noexcept</td><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1map__handle.html">llfio_v2_xxx::map_handle</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0"><td class="entry"><b>size_type</b> typedef (defined in <a class="el" href="classllfio__v2__xxx_1_1map__handle.html">llfio_v2_xxx::map_handle</a>)</td><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1map__handle.html">llfio_v2_xxx::map_handle</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1map__handle.html#a2049c6f936df05dd539919f947355506">swap</a>(map_handle &amp;o) noexcept</td><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1map__handle.html">llfio_v2_xxx::map_handle</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1handle.html#a4716696b8700953889006251e0678aa4">llfio_v2_xxx::io_handle::swap</a>(handle &amp;o) noexcept</td><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1handle.html">llfio_v2_xxx::handle</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1map__handle.html#a1fb1c874bdab5540c3310e468e41325a">truncate</a>(size_type newsize, bool permit_relocation=false) noexcept</td><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1map__handle.html">llfio_v2_xxx::map_handle</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1io__handle.html#ae1abb705dbe9890e103365bf7c61521e">try_lock</a>(extent_type offset, extent_type bytes, bool exclusive=true) noexcept</td><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1io__handle.html">llfio_v2_xxx::io_handle</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1handle.html#a5929f46f42112bd805ab5001bfbf9d2aa72328d49ab1e37950ff31891b47a6962">unlink_on_first_close</a> enum value</td><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1handle.html">llfio_v2_xxx::handle</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1io__handle.html#ad720c4c7f350fe06291534d1cbf2feb5">unlock</a>(extent_type offset, extent_type bytes) noexcept</td><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1io__handle.html">llfio_v2_xxx::io_handle</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1map__handle.html#ac7aeb0aa6182a22d0242340eb6d341b9">update_map</a>() noexcept</td><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1map__handle.html">llfio_v2_xxx::map_handle</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1handle.html#a5929f46f42112bd805ab5001bfbf9d2aaafd26e37b4a783bd9814549fb4ff6cd0">win_disable_sparse_file_creation</a> enum value</td><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1handle.html">llfio_v2_xxx::handle</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1handle.html#a5929f46f42112bd805ab5001bfbf9d2aacf17c790c4b3af070b11bc5b75911f9c">win_disable_unlink_emulation</a> enum value</td><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1handle.html">llfio_v2_xxx::handle</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1map__handle.html#a90afda5433656ed35a5814e048cc1f1b">write</a>(io_request&lt; const_buffers_type &gt; reqs, deadline d=deadline()) noexcept override</td><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1map__handle.html">llfio_v2_xxx::map_handle</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1io__handle.html#a83884eca7b4cd09125a5cf8a155e6052">llfio_v2_xxx::io_handle::write</a>(io_request&lt; const_buffers_type &gt; reqs, deadline d=deadline()) noexcept</td><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1io__handle.html">llfio_v2_xxx::io_handle</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1io__handle.html#ab500784aa806dc7c2d90028d2f72de57">llfio_v2_xxx::io_handle::write</a>(extent_type offset, std::initializer_list&lt; const_buffer_type &gt; lst, deadline d=deadline()) noexcept</td><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1io__handle.html">llfio_v2_xxx::io_handle</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1map__handle.html#a0b87515430eb0220950b4c17a3da745f">zero_memory</a>(buffer_type region) noexcept</td><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1map__handle.html">llfio_v2_xxx::map_handle</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0"><td class="entry"><b>~handle</b>() (defined in <a class="el" href="classllfio__v2__xxx_1_1handle.html">llfio_v2_xxx::handle</a>)</td><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1handle.html">llfio_v2_xxx::handle</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+ <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>~io_handle</b>()=default (defined in <a class="el" href="classllfio__v2__xxx_1_1io__handle.html">llfio_v2_xxx::io_handle</a>)</td><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1io__handle.html">llfio_v2_xxx::io_handle</a></td><td class="entry"></td></tr>
+ <tr bgcolor="#f0f0f0"><td class="entry"><b>~map_handle</b>() override (defined in <a class="el" href="classllfio__v2__xxx_1_1map__handle.html">llfio_v2_xxx::map_handle</a>)</td><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1map__handle.html">llfio_v2_xxx::map_handle</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
</table></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
diff --git a/classllfio__v2__xxx_1_1map__handle.html b/classllfio__v2__xxx_1_1map__handle.html
index 15f96864..156c1cec 100644
--- a/classllfio__v2__xxx_1_1map__handle.html
+++ b/classllfio__v2__xxx_1_1map__handle.html
@@ -272,8 +272,6 @@ result&lt; <a class="el" href="structllfio__v2__xxx_1_1io__handle_1_1buffer__typ
<tr class="memitem:a5f7485307a0704aa1680e5785be2035d"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="structllfio__v2__xxx_1_1io__handle_1_1io__result.html">io_result</a>&lt; <a class="el" href="classllfio__v2__xxx_1_1io__handle.html#a8f525d9665b524442b46cd55678817ed">buffers_type</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classllfio__v2__xxx_1_1io__handle.html#a5f7485307a0704aa1680e5785be2035d">read</a> (<a class="el" href="structllfio__v2__xxx_1_1io__handle_1_1io__request.html">io_request</a>&lt; <a class="el" href="classllfio__v2__xxx_1_1io__handle.html#a8f525d9665b524442b46cd55678817ed">buffers_type</a> &gt; reqs, <a class="el" href="structllfio__v2__xxx_1_1deadline.html">deadline</a> d=<a class="el" href="structllfio__v2__xxx_1_1deadline.html">deadline</a>()) noexcept</td></tr>
<tr class="memdesc:a5f7485307a0704aa1680e5785be2035d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Read data from the open handle. <a href="#a5f7485307a0704aa1680e5785be2035d">More...</a><br /></td></tr>
<tr class="separator:a5f7485307a0704aa1680e5785be2035d"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:aac0369e8025ae1320e7d607922f61b48"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structllfio__v2__xxx_1_1io__handle_1_1io__result.html">io_result</a>&lt; <a class="el" href="classllfio__v2__xxx_1_1handle.html#aed9587571c3fb932adadddc1beeeed58">size_type</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classllfio__v2__xxx_1_1io__handle.html#aac0369e8025ae1320e7d607922f61b48">read</a> (<a class="el" href="classllfio__v2__xxx_1_1handle.html#a4ee58f1b6a24af5e64d850d1e3eed07f">extent_type</a> <a class="el" href="classllfio__v2__xxx_1_1map__handle.html#a9b65f62129418d02a925e6ef56220198">offset</a>, std::initializer_list&lt; <a class="el" href="structllfio__v2__xxx_1_1io__handle_1_1buffer__type.html">buffer_type</a> &gt; lst, <a class="el" href="structllfio__v2__xxx_1_1deadline.html">deadline</a> d=<a class="el" href="structllfio__v2__xxx_1_1deadline.html">deadline</a>()) noexcept</td></tr>
-<tr class="separator:aac0369e8025ae1320e7d607922f61b48"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a83884eca7b4cd09125a5cf8a155e6052"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="structllfio__v2__xxx_1_1io__handle_1_1io__result.html">io_result</a>&lt; <a class="el" href="classllfio__v2__xxx_1_1io__handle.html#a693a8c64bb7de1a6835d6a151e37aa0e">const_buffers_type</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classllfio__v2__xxx_1_1io__handle.html#a83884eca7b4cd09125a5cf8a155e6052">write</a> (<a class="el" href="structllfio__v2__xxx_1_1io__handle_1_1io__request.html">io_request</a>&lt; <a class="el" href="classllfio__v2__xxx_1_1io__handle.html#a693a8c64bb7de1a6835d6a151e37aa0e">const_buffers_type</a> &gt; reqs, <a class="el" href="structllfio__v2__xxx_1_1deadline.html">deadline</a> d=<a class="el" href="structllfio__v2__xxx_1_1deadline.html">deadline</a>()) noexcept</td></tr>
<tr class="memdesc:a83884eca7b4cd09125a5cf8a155e6052"><td class="mdescLeft">&#160;</td><td class="mdescRight">Write data to the open handle. <a href="#a83884eca7b4cd09125a5cf8a155e6052">More...</a><br /></td></tr>
<tr class="separator:a83884eca7b4cd09125a5cf8a155e6052"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -839,7 +837,7 @@ For portability, you can only assume that barriers write order for a single hand
</table>
</div><div class="memdoc">
<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
-<div class="fragment"><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160; {</div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160; <span class="keywordtype">size_t</span> bytes = 0;</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160; <span class="keywordflow">for</span>(<span class="keyword">auto</span> &amp;i : reqs.buffers)</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160; {</div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160; <span class="keywordflow">if</span>(bytes + i.size() &lt; bytes)</div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160; {</div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160; <span class="keywordflow">return</span> errc::value_too_large;</div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160; }</div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160; bytes += i.size();</div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160; }</div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classllfio__v2__xxx_1_1io__handle.html#a29cc9f2525f78dd73f8402cb59d97212">lock</a>(reqs.offset, bytes, <span class="keyword">false</span>, d);</div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160; }</div><div class="ttc" id="classllfio__v2__xxx_1_1io__handle_html_a29cc9f2525f78dd73f8402cb59d97212"><div class="ttname"><a href="classllfio__v2__xxx_1_1io__handle.html#a29cc9f2525f78dd73f8402cb59d97212">llfio_v2_xxx::io_handle::lock</a></div><div class="ttdeci">virtual result&lt; extent_guard &gt; lock(extent_type offset, extent_type bytes, bool exclusive=true, deadline d=deadline()) noexcept</div><div class="ttdoc">Tries to lock the range of bytes specified for shared or exclusive access. Be aware this passes throu...</div></div>
+<div class="fragment"><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160; {</div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160; <span class="keywordtype">size_t</span> bytes = 0;</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160; <span class="keywordflow">for</span>(<span class="keyword">auto</span> &amp;i : reqs.buffers)</div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160; {</div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160; <span class="keywordflow">if</span>(bytes + i.size() &lt; bytes)</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160; {</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160; <span class="keywordflow">return</span> errc::value_too_large;</div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160; }</div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160; bytes += i.size();</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160; }</div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classllfio__v2__xxx_1_1io__handle.html#a29cc9f2525f78dd73f8402cb59d97212">lock</a>(reqs.offset, bytes, <span class="keyword">false</span>, d);</div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160; }</div><div class="ttc" id="classllfio__v2__xxx_1_1io__handle_html_a29cc9f2525f78dd73f8402cb59d97212"><div class="ttname"><a href="classllfio__v2__xxx_1_1io__handle.html#a29cc9f2525f78dd73f8402cb59d97212">llfio_v2_xxx::io_handle::lock</a></div><div class="ttdeci">virtual result&lt; extent_guard &gt; lock(extent_type offset, extent_type bytes, bool exclusive=true, deadline d=deadline()) noexcept</div><div class="ttdoc">Tries to lock the range of bytes specified for shared or exclusive access. Be aware this passes throu...</div></div>
</div><!-- fragment -->
</div>
</div>
@@ -877,7 +875,7 @@ For portability, you can only assume that barriers write order for a single hand
</table>
</div><div class="memdoc">
<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
-<div class="fragment"><div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160; {</div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160; <span class="keywordtype">size_t</span> bytes = 0;</div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160; <span class="keywordflow">for</span>(<span class="keyword">auto</span> &amp;i : reqs.buffers)</div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160; {</div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160; <span class="keywordflow">if</span>(bytes + i.size() &lt; bytes)</div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160; {</div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160; <span class="keywordflow">return</span> errc::value_too_large;</div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160; }</div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160; bytes += i.size();</div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160; }</div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classllfio__v2__xxx_1_1io__handle.html#a29cc9f2525f78dd73f8402cb59d97212">lock</a>(reqs.offset, bytes, <span class="keyword">true</span>, d);</div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160; }</div><div class="ttc" id="classllfio__v2__xxx_1_1io__handle_html_a29cc9f2525f78dd73f8402cb59d97212"><div class="ttname"><a href="classllfio__v2__xxx_1_1io__handle.html#a29cc9f2525f78dd73f8402cb59d97212">llfio_v2_xxx::io_handle::lock</a></div><div class="ttdeci">virtual result&lt; extent_guard &gt; lock(extent_type offset, extent_type bytes, bool exclusive=true, deadline d=deadline()) noexcept</div><div class="ttdoc">Tries to lock the range of bytes specified for shared or exclusive access. Be aware this passes throu...</div></div>
+<div class="fragment"><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160; {</div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160; <span class="keywordtype">size_t</span> bytes = 0;</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160; <span class="keywordflow">for</span>(<span class="keyword">auto</span> &amp;i : reqs.buffers)</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160; {</div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160; <span class="keywordflow">if</span>(bytes + i.size() &lt; bytes)</div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160; {</div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160; <span class="keywordflow">return</span> errc::value_too_large;</div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160; }</div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160; bytes += i.size();</div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160; }</div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classllfio__v2__xxx_1_1io__handle.html#a29cc9f2525f78dd73f8402cb59d97212">lock</a>(reqs.offset, bytes, <span class="keyword">true</span>, d);</div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160; }</div><div class="ttc" id="classllfio__v2__xxx_1_1io__handle_html_a29cc9f2525f78dd73f8402cb59d97212"><div class="ttname"><a href="classllfio__v2__xxx_1_1io__handle.html#a29cc9f2525f78dd73f8402cb59d97212">llfio_v2_xxx::io_handle::lock</a></div><div class="ttdeci">virtual result&lt; extent_guard &gt; lock(extent_type offset, extent_type bytes, bool exclusive=true, deadline d=deadline()) noexcept</div><div class="ttdoc">Tries to lock the range of bytes specified for shared or exclusive access. Be aware this passes throu...</div></div>
</div><!-- fragment -->
</div>
</div>
@@ -1050,7 +1048,7 @@ For portability, you can only assume that barriers write order for a single hand
</div>
</div>
<a id="a5f7485307a0704aa1680e5785be2035d"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a5f7485307a0704aa1680e5785be2035d">&#9670;&nbsp;</a></span>read() <span class="overload">[1/3]</span></h2>
+<h2 class="memtitle"><span class="permalink"><a href="#a5f7485307a0704aa1680e5785be2035d">&#9670;&nbsp;</a></span>read() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
@@ -1098,53 +1096,8 @@ For portability, you can only assume that barriers write order for a single hand
</div>
</div>
-<a id="aac0369e8025ae1320e7d607922f61b48"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#aac0369e8025ae1320e7d607922f61b48">&#9670;&nbsp;</a></span>read() <span class="overload">[2/3]</span></h2>
-
-<div class="memitem">
-<div class="memproto">
-<table class="mlabels">
- <tr>
- <td class="mlabels-left">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="structllfio__v2__xxx_1_1io__handle_1_1io__result.html">io_result</a>&lt;<a class="el" href="classllfio__v2__xxx_1_1handle.html#aed9587571c3fb932adadddc1beeeed58">size_type</a>&gt; llfio_v2_xxx::io_handle::read </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="classllfio__v2__xxx_1_1handle.html#a4ee58f1b6a24af5e64d850d1e3eed07f">extent_type</a>&#160;</td>
- <td class="paramname"><em>offset</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">std::initializer_list&lt; <a class="el" href="structllfio__v2__xxx_1_1io__handle_1_1buffer__type.html">buffer_type</a> &gt;&#160;</td>
- <td class="paramname"><em>lst</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype"><a class="el" href="structllfio__v2__xxx_1_1deadline.html">deadline</a>&#160;</td>
- <td class="paramname"><em>d</em> = <code><a class="el" href="structllfio__v2__xxx_1_1deadline.html">deadline</a>()</code>&#160;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td>
- </tr>
- </table>
- </td>
- <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">noexcept</span><span class="mlabel">inherited</span></span> </td>
- </tr>
-</table>
-</div><div class="memdoc">
-<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
-<div class="fragment"><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; {</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; buffer_type *_reqs = <span class="keyword">reinterpret_cast&lt;</span>buffer_type *<span class="keyword">&gt;</span>(alloca(<span class="keyword">sizeof</span>(buffer_type) * lst.size()));</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; memcpy(_reqs, lst.begin(), <span class="keyword">sizeof</span>(buffer_type) * lst.size());</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; io_request&lt;buffers_type&gt; reqs(<a class="code" href="classllfio__v2__xxx_1_1io__handle.html#a8f525d9665b524442b46cd55678817ed">buffers_type</a>(_reqs, lst.size()), offset);</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; <span class="keyword">auto</span> ret = <a class="code" href="classllfio__v2__xxx_1_1io__handle.html#a5f7485307a0704aa1680e5785be2035d">read</a>(reqs, d);</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; <span class="keywordflow">if</span>(ret)</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; {</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; <span class="keywordflow">return</span> ret.bytes_transferred();</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; }</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; <span class="keywordflow">return</span> ret.error();</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; }</div><div class="ttc" id="classllfio__v2__xxx_1_1io__handle_html_a8f525d9665b524442b46cd55678817ed"><div class="ttname"><a href="classllfio__v2__xxx_1_1io__handle.html#a8f525d9665b524442b46cd55678817ed">llfio_v2_xxx::io_handle::buffers_type</a></div><div class="ttdeci">span&lt; buffer_type &gt; buffers_type</div><div class="ttdoc">The scatter buffers type used by this handle. Guaranteed to be TrivialType apart from construction...</div><div class="ttdef"><b>Definition:</b> io_handle.hpp:161</div></div>
-<div class="ttc" id="classllfio__v2__xxx_1_1io__handle_html_a5f7485307a0704aa1680e5785be2035d"><div class="ttname"><a href="classllfio__v2__xxx_1_1io__handle.html#a5f7485307a0704aa1680e5785be2035d">llfio_v2_xxx::io_handle::read</a></div><div class="ttdeci">virtual io_result&lt; buffers_type &gt; read(io_request&lt; buffers_type &gt; reqs, deadline d=deadline()) noexcept</div><div class="ttdoc">Read data from the open handle. </div></div>
-</div><!-- fragment -->
-</div>
-</div>
<a id="a073cdca57e3e3718d2eb285be51d5c92"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a073cdca57e3e3718d2eb285be51d5c92">&#9670;&nbsp;</a></span>read() <span class="overload">[3/3]</span></h2>
+<h2 class="memtitle"><span class="permalink"><a href="#a073cdca57e3e3718d2eb285be51d5c92">&#9670;&nbsp;</a></span>read() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
@@ -1311,7 +1264,7 @@ For portability, you can only assume that barriers write order for a single hand
</table>
</div><div class="memdoc">
<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
-<div class="fragment"><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160;{ <span class="keywordflow">return</span> <a class="code" href="classllfio__v2__xxx_1_1io__handle.html#a29cc9f2525f78dd73f8402cb59d97212">lock</a>(offset, bytes, exclusive, deadline(std::chrono::seconds(0))); }</div><div class="ttc" id="classllfio__v2__xxx_1_1io__handle_html_a29cc9f2525f78dd73f8402cb59d97212"><div class="ttname"><a href="classllfio__v2__xxx_1_1io__handle.html#a29cc9f2525f78dd73f8402cb59d97212">llfio_v2_xxx::io_handle::lock</a></div><div class="ttdeci">virtual result&lt; extent_guard &gt; lock(extent_type offset, extent_type bytes, bool exclusive=true, deadline d=deadline()) noexcept</div><div class="ttdoc">Tries to lock the range of bytes specified for shared or exclusive access. Be aware this passes throu...</div></div>
+<div class="fragment"><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160;{ <span class="keywordflow">return</span> <a class="code" href="classllfio__v2__xxx_1_1io__handle.html#a29cc9f2525f78dd73f8402cb59d97212">lock</a>(offset, bytes, exclusive, deadline(std::chrono::seconds(0))); }</div><div class="ttc" id="classllfio__v2__xxx_1_1io__handle_html_a29cc9f2525f78dd73f8402cb59d97212"><div class="ttname"><a href="classllfio__v2__xxx_1_1io__handle.html#a29cc9f2525f78dd73f8402cb59d97212">llfio_v2_xxx::io_handle::lock</a></div><div class="ttdeci">virtual result&lt; extent_guard &gt; lock(extent_type offset, extent_type bytes, bool exclusive=true, deadline d=deadline()) noexcept</div><div class="ttdoc">Tries to lock the range of bytes specified for shared or exclusive access. Be aware this passes throu...</div></div>
</div><!-- fragment -->
</div>
</div>
@@ -1451,7 +1404,7 @@ For portability, you can only assume that barriers write order for a single hand
</table>
</div><div class="memdoc">
<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
-<div class="fragment"><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; {</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; const_buffer_type *_reqs = <span class="keyword">reinterpret_cast&lt;</span>const_buffer_type *<span class="keyword">&gt;</span>(alloca(<span class="keyword">sizeof</span>(const_buffer_type) * lst.size()));</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; memcpy(_reqs, lst.begin(), <span class="keyword">sizeof</span>(const_buffer_type) * lst.size());</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; io_request&lt;const_buffers_type&gt; reqs(<a class="code" href="classllfio__v2__xxx_1_1io__handle.html#a693a8c64bb7de1a6835d6a151e37aa0e">const_buffers_type</a>(_reqs, lst.size()), offset);</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; <span class="keyword">auto</span> ret = <a class="code" href="classllfio__v2__xxx_1_1io__handle.html#a83884eca7b4cd09125a5cf8a155e6052">write</a>(reqs, d);</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; <span class="keywordflow">if</span>(ret)</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; {</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; <span class="keywordflow">return</span> ret.bytes_transferred();</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; }</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; <span class="keywordflow">return</span> ret.error();</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; }</div><div class="ttc" id="classllfio__v2__xxx_1_1io__handle_html_a693a8c64bb7de1a6835d6a151e37aa0e"><div class="ttname"><a href="classllfio__v2__xxx_1_1io__handle.html#a693a8c64bb7de1a6835d6a151e37aa0e">llfio_v2_xxx::io_handle::const_buffers_type</a></div><div class="ttdeci">span&lt; const_buffer_type &gt; const_buffers_type</div><div class="ttdoc">The gather buffers type used by this handle. Guaranteed to be TrivialType apart from construction...</div><div class="ttdef"><b>Definition:</b> io_handle.hpp:163</div></div>
+<div class="fragment"><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; {</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; const_buffer_type *_reqs = <span class="keyword">reinterpret_cast&lt;</span>const_buffer_type *<span class="keyword">&gt;</span>(alloca(<span class="keyword">sizeof</span>(const_buffer_type) * lst.size()));</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; memcpy(_reqs, lst.begin(), <span class="keyword">sizeof</span>(const_buffer_type) * lst.size());</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; io_request&lt;const_buffers_type&gt; reqs(<a class="code" href="classllfio__v2__xxx_1_1io__handle.html#a693a8c64bb7de1a6835d6a151e37aa0e">const_buffers_type</a>(_reqs, lst.size()), offset);</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; <span class="keyword">auto</span> ret = <a class="code" href="classllfio__v2__xxx_1_1io__handle.html#a83884eca7b4cd09125a5cf8a155e6052">write</a>(reqs, d);</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; <span class="keywordflow">if</span>(ret)</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; {</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; <span class="keywordflow">return</span> ret.bytes_transferred();</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; }</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; <span class="keywordflow">return</span> ret.error();</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160; }</div><div class="ttc" id="classllfio__v2__xxx_1_1io__handle_html_a693a8c64bb7de1a6835d6a151e37aa0e"><div class="ttname"><a href="classllfio__v2__xxx_1_1io__handle.html#a693a8c64bb7de1a6835d6a151e37aa0e">llfio_v2_xxx::io_handle::const_buffers_type</a></div><div class="ttdeci">span&lt; const_buffer_type &gt; const_buffers_type</div><div class="ttdoc">The gather buffers type used by this handle. Guaranteed to be TrivialType apart from construction...</div><div class="ttdef"><b>Definition:</b> io_handle.hpp:163</div></div>
<div class="ttc" id="classllfio__v2__xxx_1_1io__handle_html_a83884eca7b4cd09125a5cf8a155e6052"><div class="ttname"><a href="classllfio__v2__xxx_1_1io__handle.html#a83884eca7b4cd09125a5cf8a155e6052">llfio_v2_xxx::io_handle::write</a></div><div class="ttdeci">virtual io_result&lt; const_buffers_type &gt; write(io_request&lt; const_buffers_type &gt; reqs, deadline d=deadline()) noexcept</div><div class="ttdoc">Write data to the open handle. </div></div>
</div><!-- fragment -->
</div>
diff --git a/classllfio__v2__xxx_1_1map__handle.js b/classllfio__v2__xxx_1_1map__handle.js
index 81b1a56a..e70ea2bb 100644
--- a/classllfio__v2__xxx_1_1map__handle.js
+++ b/classllfio__v2__xxx_1_1map__handle.js
@@ -72,7 +72,6 @@ var classllfio__v2__xxx_1_1map__handle =
[ "operator=", "classllfio__v2__xxx_1_1map__handle.html#a01dcb36c0a955692e016a90656a6ceb2", null ],
[ "page_size", "classllfio__v2__xxx_1_1map__handle.html#a7224b586e457183ebcb0a694e282d0fc", null ],
[ "read", "classllfio__v2__xxx_1_1map__handle.html#a5f7485307a0704aa1680e5785be2035d", null ],
- [ "read", "classllfio__v2__xxx_1_1map__handle.html#aac0369e8025ae1320e7d607922f61b48", null ],
[ "read", "classllfio__v2__xxx_1_1map__handle.html#a073cdca57e3e3718d2eb285be51d5c92", null ],
[ "release", "classllfio__v2__xxx_1_1map__handle.html#a06cfd3521ff08782a848821951510f11", null ],
[ "requires_aligned_io", "classllfio__v2__xxx_1_1map__handle.html#a751e912d8dab755ea969a418c1d544eb", null ],
diff --git a/classllfio__v2__xxx_1_1mapped__file__handle-members.html b/classllfio__v2__xxx_1_1mapped__file__handle-members.html
index f274ec9e..fef1bfaf 100644
--- a/classllfio__v2__xxx_1_1mapped__file__handle-members.html
+++ b/classllfio__v2__xxx_1_1mapped__file__handle-members.html
@@ -200,8 +200,8 @@ $(document).ready(function(){initNavTree('classllfio__v2__xxx_1_1mapped__file__h
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>path_view_type</b> typedef (defined in <a class="el" href="classllfio__v2__xxx_1_1mapped__file__handle.html">llfio_v2_xxx::mapped_file_handle</a>)</td><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1mapped__file__handle.html">llfio_v2_xxx::mapped_file_handle</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1file__handle.html#a3141a85996e46a3cc6b238d321198e47">random_file</a>(const path_handle &amp;dirpath, mode _mode=mode::write, caching _caching=caching::temporary, flag flags=flag::none) noexcept</td><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1file__handle.html">llfio_v2_xxx::file_handle</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1mapped__file__handle.html#ae4ca3f09ab781322c22f903d31ec7aa9">read</a>(io_request&lt; buffers_type &gt; reqs, deadline d=deadline()) noexcept override</td><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1mapped__file__handle.html">llfio_v2_xxx::mapped_file_handle</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
- <tr><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1io__handle.html#a5f7485307a0704aa1680e5785be2035d">llfio_v2_xxx::file_handle::read</a>(io_request&lt; buffers_type &gt; reqs, deadline d=deadline()) noexcept</td><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1io__handle.html">llfio_v2_xxx::io_handle</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1io__handle.html#aac0369e8025ae1320e7d607922f61b48">llfio_v2_xxx::file_handle::read</a>(extent_type offset, std::initializer_list&lt; buffer_type &gt; lst, deadline d=deadline()) noexcept</td><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1io__handle.html">llfio_v2_xxx::io_handle</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1file__handle.html#a6e46c6ea379152eb559ab15990f7c467">llfio_v2_xxx::file_handle::read</a>(extent_type offset, std::initializer_list&lt; buffer_type &gt; lst, deadline d=deadline()) noexcept</td><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1file__handle.html">llfio_v2_xxx::file_handle</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1io__handle.html#a5f7485307a0704aa1680e5785be2035d">llfio_v2_xxx::io_handle::read</a>(io_request&lt; buffers_type &gt; reqs, deadline d=deadline()) noexcept</td><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1io__handle.html">llfio_v2_xxx::io_handle</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
<tr><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1mapped__file__handle.html#a4072a4f2448ef3b8c7075fa8734acf71">release</a>() noexcept override</td><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1mapped__file__handle.html">llfio_v2_xxx::mapped_file_handle</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1fs__handle.html#a8700edc9ecd4dd35d5aad7c65dd0eca2">relink</a>(const path_handle &amp;base, path_view_type path, bool atomic_replace=true, deadline d=std::chrono::seconds(30)) noexcept</td><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1fs__handle.html">llfio_v2_xxx::fs_handle</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
<tr><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1handle.html#a751e912d8dab755ea969a418c1d544eb">requires_aligned_io</a>() const noexcept</td><td class="entry"><a class="el" href="classllfio__v2__xxx_1_1handle.html">llfio_v2_xxx::handle</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
diff --git a/classllfio__v2__xxx_1_1mapped__file__handle.html b/classllfio__v2__xxx_1_1mapped__file__handle.html
index 37d0f466..afd6096f 100644
--- a/classllfio__v2__xxx_1_1mapped__file__handle.html
+++ b/classllfio__v2__xxx_1_1mapped__file__handle.html
@@ -312,17 +312,19 @@ void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="clas
<a class="el" href="classllfio__v2__xxx_1_1io__service.html">io_service</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classllfio__v2__xxx_1_1file__handle.html#ae7735588338065ede0ab9b7f979bc65a">service</a> () const noexcept</td></tr>
<tr class="memdesc:ae7735588338065ede0ab9b7f979bc65a"><td class="mdescLeft">&#160;</td><td class="mdescRight">The i/o service this handle is attached to, if any. <br /></td></tr>
<tr class="separator:ae7735588338065ede0ab9b7f979bc65a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a6e46c6ea379152eb559ab15990f7c467"><td class="memItemLeft" align="right" valign="top"><a id="a6e46c6ea379152eb559ab15990f7c467"></a>
+<a class="el" href="structllfio__v2__xxx_1_1io__handle_1_1io__result.html">io_result</a>&lt; size_type &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classllfio__v2__xxx_1_1file__handle.html#a6e46c6ea379152eb559ab15990f7c467">read</a> (extent_type offset, std::initializer_list&lt; <a class="el" href="structllfio__v2__xxx_1_1io__handle_1_1buffer__type.html">buffer_type</a> &gt; lst, <a class="el" href="structllfio__v2__xxx_1_1deadline.html">deadline</a> d=<a class="el" href="structllfio__v2__xxx_1_1deadline.html">deadline</a>()) noexcept</td></tr>
+<tr class="memdesc:a6e46c6ea379152eb559ab15990f7c467"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convenience initialiser list based overload for <code>read()</code> <br /></td></tr>
+<tr class="separator:a6e46c6ea379152eb559ab15990f7c467"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a5f7485307a0704aa1680e5785be2035d"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="structllfio__v2__xxx_1_1io__handle_1_1io__result.html">io_result</a>&lt; buffers_type &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classllfio__v2__xxx_1_1io__handle.html#a5f7485307a0704aa1680e5785be2035d">read</a> (<a class="el" href="structllfio__v2__xxx_1_1io__handle_1_1io__request.html">io_request</a>&lt; buffers_type &gt; reqs, <a class="el" href="structllfio__v2__xxx_1_1deadline.html">deadline</a> d=<a class="el" href="structllfio__v2__xxx_1_1deadline.html">deadline</a>()) noexcept</td></tr>
+<tr class="memdesc:a5f7485307a0704aa1680e5785be2035d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Read data from the open handle. <a href="#a5f7485307a0704aa1680e5785be2035d">More...</a><br /></td></tr>
+<tr class="separator:a5f7485307a0704aa1680e5785be2035d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1c2c1c27b1be6414415b3fc3fcda88b2"><td class="memItemLeft" align="right" valign="top">virtual result&lt; std::vector&lt; std::pair&lt; extent_type, extent_type &gt; &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classllfio__v2__xxx_1_1file__handle.html#a1c2c1c27b1be6414415b3fc3fcda88b2">extents</a> () const noexcept</td></tr>
<tr class="memdesc:a1c2c1c27b1be6414415b3fc3fcda88b2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns a list of currently valid extents for this open file. WARNING: racy! <a href="#a1c2c1c27b1be6414415b3fc3fcda88b2">More...</a><br /></td></tr>
<tr class="separator:a1c2c1c27b1be6414415b3fc3fcda88b2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ade38a6d55a4eda3c6d5e196683b129a7"><td class="memItemLeft" align="right" valign="top">virtual size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classllfio__v2__xxx_1_1io__handle.html#ade38a6d55a4eda3c6d5e196683b129a7">max_buffers</a> () const noexcept</td></tr>
<tr class="memdesc:ade38a6d55a4eda3c6d5e196683b129a7"><td class="mdescLeft">&#160;</td><td class="mdescRight">The <em>maximum</em> number of buffers which a single read or write syscall can process at a time for this specific open handle. On POSIX, this is known as <code>IOV_MAX</code>. <a href="#ade38a6d55a4eda3c6d5e196683b129a7">More...</a><br /></td></tr>
<tr class="separator:ade38a6d55a4eda3c6d5e196683b129a7"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a5f7485307a0704aa1680e5785be2035d"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="structllfio__v2__xxx_1_1io__handle_1_1io__result.html">io_result</a>&lt; buffers_type &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classllfio__v2__xxx_1_1io__handle.html#a5f7485307a0704aa1680e5785be2035d">read</a> (<a class="el" href="structllfio__v2__xxx_1_1io__handle_1_1io__request.html">io_request</a>&lt; buffers_type &gt; reqs, <a class="el" href="structllfio__v2__xxx_1_1deadline.html">deadline</a> d=<a class="el" href="structllfio__v2__xxx_1_1deadline.html">deadline</a>()) noexcept</td></tr>
-<tr class="memdesc:a5f7485307a0704aa1680e5785be2035d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Read data from the open handle. <a href="#a5f7485307a0704aa1680e5785be2035d">More...</a><br /></td></tr>
-<tr class="separator:a5f7485307a0704aa1680e5785be2035d"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:aac0369e8025ae1320e7d607922f61b48"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structllfio__v2__xxx_1_1io__handle_1_1io__result.html">io_result</a>&lt; size_type &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classllfio__v2__xxx_1_1io__handle.html#aac0369e8025ae1320e7d607922f61b48">read</a> (extent_type offset, std::initializer_list&lt; <a class="el" href="structllfio__v2__xxx_1_1io__handle_1_1buffer__type.html">buffer_type</a> &gt; lst, <a class="el" href="structllfio__v2__xxx_1_1deadline.html">deadline</a> d=<a class="el" href="structllfio__v2__xxx_1_1deadline.html">deadline</a>()) noexcept</td></tr>
-<tr class="separator:aac0369e8025ae1320e7d607922f61b48"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a83884eca7b4cd09125a5cf8a155e6052"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="structllfio__v2__xxx_1_1io__handle_1_1io__result.html">io_result</a>&lt; const_buffers_type &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classllfio__v2__xxx_1_1io__handle.html#a83884eca7b4cd09125a5cf8a155e6052">write</a> (<a class="el" href="structllfio__v2__xxx_1_1io__handle_1_1io__request.html">io_request</a>&lt; const_buffers_type &gt; reqs, <a class="el" href="structllfio__v2__xxx_1_1deadline.html">deadline</a> d=<a class="el" href="structllfio__v2__xxx_1_1deadline.html">deadline</a>()) noexcept</td></tr>
<tr class="memdesc:a83884eca7b4cd09125a5cf8a155e6052"><td class="mdescLeft">&#160;</td><td class="mdescRight">Write data to the open handle. <a href="#a83884eca7b4cd09125a5cf8a155e6052">More...</a><br /></td></tr>
<tr class="separator:a83884eca7b4cd09125a5cf8a155e6052"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -967,7 +969,7 @@ For portability, you can only assume that barriers write order for a single hand
</table>
</div><div class="memdoc">
<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
-<div class="fragment"><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160; {</div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160; <span class="keywordtype">size_t</span> bytes = 0;</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160; <span class="keywordflow">for</span>(<span class="keyword">auto</span> &amp;i : reqs.buffers)</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160; {</div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160; <span class="keywordflow">if</span>(bytes + i.size() &lt; bytes)</div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160; {</div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160; <span class="keywordflow">return</span> errc::value_too_large;</div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160; }</div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160; bytes += i.size();</div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160; }</div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classllfio__v2__xxx_1_1io__handle.html#a29cc9f2525f78dd73f8402cb59d97212">lock</a>(reqs.offset, bytes, <span class="keyword">false</span>, d);</div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160; }</div><div class="ttc" id="classllfio__v2__xxx_1_1io__handle_html_a29cc9f2525f78dd73f8402cb59d97212"><div class="ttname"><a href="classllfio__v2__xxx_1_1io__handle.html#a29cc9f2525f78dd73f8402cb59d97212">llfio_v2_xxx::io_handle::lock</a></div><div class="ttdeci">virtual result&lt; extent_guard &gt; lock(extent_type offset, extent_type bytes, bool exclusive=true, deadline d=deadline()) noexcept</div><div class="ttdoc">Tries to lock the range of bytes specified for shared or exclusive access. Be aware this passes throu...</div></div>
+<div class="fragment"><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160; {</div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160; <span class="keywordtype">size_t</span> bytes = 0;</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160; <span class="keywordflow">for</span>(<span class="keyword">auto</span> &amp;i : reqs.buffers)</div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160; {</div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160; <span class="keywordflow">if</span>(bytes + i.size() &lt; bytes)</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160; {</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160; <span class="keywordflow">return</span> errc::value_too_large;</div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160; }</div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160; bytes += i.size();</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160; }</div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classllfio__v2__xxx_1_1io__handle.html#a29cc9f2525f78dd73f8402cb59d97212">lock</a>(reqs.offset, bytes, <span class="keyword">false</span>, d);</div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160; }</div><div class="ttc" id="classllfio__v2__xxx_1_1io__handle_html_a29cc9f2525f78dd73f8402cb59d97212"><div class="ttname"><a href="classllfio__v2__xxx_1_1io__handle.html#a29cc9f2525f78dd73f8402cb59d97212">llfio_v2_xxx::io_handle::lock</a></div><div class="ttdeci">virtual result&lt; extent_guard &gt; lock(extent_type offset, extent_type bytes, bool exclusive=true, deadline d=deadline()) noexcept</div><div class="ttdoc">Tries to lock the range of bytes specified for shared or exclusive access. Be aware this passes throu...</div></div>
</div><!-- fragment -->
</div>
</div>
@@ -1005,7 +1007,7 @@ For portability, you can only assume that barriers write order for a single hand
</table>
</div><div class="memdoc">
<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
-<div class="fragment"><div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160; {</div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160; <span class="keywordtype">size_t</span> bytes = 0;</div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160; <span class="keywordflow">for</span>(<span class="keyword">auto</span> &amp;i : reqs.buffers)</div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160; {</div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160; <span class="keywordflow">if</span>(bytes + i.size() &lt; bytes)</div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160; {</div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160; <span class="keywordflow">return</span> errc::value_too_large;</div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160; }</div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160; bytes += i.size();</div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160; }</div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classllfio__v2__xxx_1_1io__handle.html#a29cc9f2525f78dd73f8402cb59d97212">lock</a>(reqs.offset, bytes, <span class="keyword">true</span>, d);</div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160; }</div><div class="ttc" id="classllfio__v2__xxx_1_1io__handle_html_a29cc9f2525f78dd73f8402cb59d97212"><div class="ttname"><a href="classllfio__v2__xxx_1_1io__handle.html#a29cc9f2525f78dd73f8402cb59d97212">llfio_v2_xxx::io_handle::lock</a></div><div class="ttdeci">virtual result&lt; extent_guard &gt; lock(extent_type offset, extent_type bytes, bool exclusive=true, deadline d=deadline()) noexcept</div><div class="ttdoc">Tries to lock the range of bytes specified for shared or exclusive access. Be aware this passes throu...</div></div>
+<div class="fragment"><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160; {</div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160; <span class="keywordtype">size_t</span> bytes = 0;</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160; <span class="keywordflow">for</span>(<span class="keyword">auto</span> &amp;i : reqs.buffers)</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160; {</div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160; <span class="keywordflow">if</span>(bytes + i.size() &lt; bytes)</div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160; {</div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160; <span class="keywordflow">return</span> errc::value_too_large;</div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160; }</div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160; bytes += i.size();</div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160; }</div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classllfio__v2__xxx_1_1io__handle.html#a29cc9f2525f78dd73f8402cb59d97212">lock</a>(reqs.offset, bytes, <span class="keyword">true</span>, d);</div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160; }</div><div class="ttc" id="classllfio__v2__xxx_1_1io__handle_html_a29cc9f2525f78dd73f8402cb59d97212"><div class="ttname"><a href="classllfio__v2__xxx_1_1io__handle.html#a29cc9f2525f78dd73f8402cb59d97212">llfio_v2_xxx::io_handle::lock</a></div><div class="ttdeci">virtual result&lt; extent_guard &gt; lock(extent_type offset, extent_type bytes, bool exclusive=true, deadline d=deadline()) noexcept</div><div class="ttdoc">Tries to lock the range of bytes specified for shared or exclusive access. Be aware this passes throu...</div></div>
</div><!-- fragment -->
</div>
</div>
@@ -1444,7 +1446,7 @@ For portability, you can only assume that barriers write order for a single hand
</div>
</div>
<a id="a5f7485307a0704aa1680e5785be2035d"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a5f7485307a0704aa1680e5785be2035d">&#9670;&nbsp;</a></span>read() <span class="overload">[1/3]</span></h2>
+<h2 class="memtitle"><span class="permalink"><a href="#a5f7485307a0704aa1680e5785be2035d">&#9670;&nbsp;</a></span>read() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
@@ -1492,53 +1494,8 @@ For portability, you can only assume that barriers write order for a single hand
</div>
</div>
-<a id="aac0369e8025ae1320e7d607922f61b48"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#aac0369e8025ae1320e7d607922f61b48">&#9670;&nbsp;</a></span>read() <span class="overload">[2/3]</span></h2>
-
-<div class="memitem">
-<div class="memproto">
-<table class="mlabels">
- <tr>
- <td class="mlabels-left">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="structllfio__v2__xxx_1_1io__handle_1_1io__result.html">io_result</a>&lt;size_type&gt; llfio_v2_xxx::io_handle::read </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="classllfio__v2__xxx_1_1handle.html#a4ee58f1b6a24af5e64d850d1e3eed07f">extent_type</a>&#160;</td>
- <td class="paramname"><em>offset</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">std::initializer_list&lt; <a class="el" href="structllfio__v2__xxx_1_1io__handle_1_1buffer__type.html">buffer_type</a> &gt;&#160;</td>
- <td class="paramname"><em>lst</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype"><a class="el" href="structllfio__v2__xxx_1_1deadline.html">deadline</a>&#160;</td>
- <td class="paramname"><em>d</em> = <code><a class="el" href="structllfio__v2__xxx_1_1deadline.html">deadline</a>()</code>&#160;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td>
- </tr>
- </table>
- </td>
- <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">noexcept</span><span class="mlabel">inherited</span></span> </td>
- </tr>
-</table>
-</div><div class="memdoc">
-<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
-<div class="fragment"><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; {</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; buffer_type *_reqs = <span class="keyword">reinterpret_cast&lt;</span>buffer_type *<span class="keyword">&gt;</span>(alloca(<span class="keyword">sizeof</span>(buffer_type) * lst.size()));</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; memcpy(_reqs, lst.begin(), <span class="keyword">sizeof</span>(buffer_type) * lst.size());</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; io_request&lt;buffers_type&gt; reqs(<a class="code" href="classllfio__v2__xxx_1_1io__handle.html#a8f525d9665b524442b46cd55678817ed">buffers_type</a>(_reqs, lst.size()), offset);</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; <span class="keyword">auto</span> ret = <a class="code" href="classllfio__v2__xxx_1_1io__handle.html#a5f7485307a0704aa1680e5785be2035d">read</a>(reqs, d);</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; <span class="keywordflow">if</span>(ret)</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; {</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; <span class="keywordflow">return</span> ret.bytes_transferred();</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; }</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; <span class="keywordflow">return</span> ret.error();</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; }</div><div class="ttc" id="classllfio__v2__xxx_1_1io__handle_html_a8f525d9665b524442b46cd55678817ed"><div class="ttname"><a href="classllfio__v2__xxx_1_1io__handle.html#a8f525d9665b524442b46cd55678817ed">llfio_v2_xxx::io_handle::buffers_type</a></div><div class="ttdeci">span&lt; buffer_type &gt; buffers_type</div><div class="ttdoc">The scatter buffers type used by this handle. Guaranteed to be TrivialType apart from construction...</div><div class="ttdef"><b>Definition:</b> io_handle.hpp:161</div></div>
-<div class="ttc" id="classllfio__v2__xxx_1_1io__handle_html_a5f7485307a0704aa1680e5785be2035d"><div class="ttname"><a href="classllfio__v2__xxx_1_1io__handle.html#a5f7485307a0704aa1680e5785be2035d">llfio_v2_xxx::io_handle::read</a></div><div class="ttdeci">virtual io_result&lt; buffers_type &gt; read(io_request&lt; buffers_type &gt; reqs, deadline d=deadline()) noexcept</div><div class="ttdoc">Read data from the open handle. </div></div>
-</div><!-- fragment -->
-</div>
-</div>
<a id="ae4ca3f09ab781322c22f903d31ec7aa9"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#ae4ca3f09ab781322c22f903d31ec7aa9">&#9670;&nbsp;</a></span>read() <span class="overload">[3/3]</span></h2>
+<h2 class="memtitle"><span class="permalink"><a href="#ae4ca3f09ab781322c22f903d31ec7aa9">&#9670;&nbsp;</a></span>read() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
@@ -1898,7 +1855,7 @@ For portability, you can only assume that barriers write order for a single hand
</table>
</div><div class="memdoc">
<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
-<div class="fragment"><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160;{ <span class="keywordflow">return</span> <a class="code" href="classllfio__v2__xxx_1_1io__handle.html#a29cc9f2525f78dd73f8402cb59d97212">lock</a>(offset, bytes, exclusive, deadline(std::chrono::seconds(0))); }</div><div class="ttc" id="classllfio__v2__xxx_1_1io__handle_html_a29cc9f2525f78dd73f8402cb59d97212"><div class="ttname"><a href="classllfio__v2__xxx_1_1io__handle.html#a29cc9f2525f78dd73f8402cb59d97212">llfio_v2_xxx::io_handle::lock</a></div><div class="ttdeci">virtual result&lt; extent_guard &gt; lock(extent_type offset, extent_type bytes, bool exclusive=true, deadline d=deadline()) noexcept</div><div class="ttdoc">Tries to lock the range of bytes specified for shared or exclusive access. Be aware this passes throu...</div></div>
+<div class="fragment"><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160;{ <span class="keywordflow">return</span> <a class="code" href="classllfio__v2__xxx_1_1io__handle.html#a29cc9f2525f78dd73f8402cb59d97212">lock</a>(offset, bytes, exclusive, deadline(std::chrono::seconds(0))); }</div><div class="ttc" id="classllfio__v2__xxx_1_1io__handle_html_a29cc9f2525f78dd73f8402cb59d97212"><div class="ttname"><a href="classllfio__v2__xxx_1_1io__handle.html#a29cc9f2525f78dd73f8402cb59d97212">llfio_v2_xxx::io_handle::lock</a></div><div class="ttdeci">virtual result&lt; extent_guard &gt; lock(extent_type offset, extent_type bytes, bool exclusive=true, deadline d=deadline()) noexcept</div><div class="ttdoc">Tries to lock the range of bytes specified for shared or exclusive access. Be aware this passes throu...</div></div>
</div><!-- fragment -->
</div>
</div>
@@ -2104,7 +2061,7 @@ For portability, you can only assume that barriers write order for a single hand
</table>
</div><div class="memdoc">
<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
-<div class="fragment"><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; {</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; const_buffer_type *_reqs = <span class="keyword">reinterpret_cast&lt;</span>const_buffer_type *<span class="keyword">&gt;</span>(alloca(<span class="keyword">sizeof</span>(const_buffer_type) * lst.size()));</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; memcpy(_reqs, lst.begin(), <span class="keyword">sizeof</span>(const_buffer_type) * lst.size());</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; io_request&lt;const_buffers_type&gt; reqs(<a class="code" href="classllfio__v2__xxx_1_1io__handle.html#a693a8c64bb7de1a6835d6a151e37aa0e">const_buffers_type</a>(_reqs, lst.size()), offset);</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; <span class="keyword">auto</span> ret = <a class="code" href="classllfio__v2__xxx_1_1io__handle.html#a83884eca7b4cd09125a5cf8a155e6052">write</a>(reqs, d);</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; <span class="keywordflow">if</span>(ret)</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; {</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; <span class="keywordflow">return</span> ret.bytes_transferred();</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; }</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; <span class="keywordflow">return</span> ret.error();</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; }</div><div class="ttc" id="classllfio__v2__xxx_1_1io__handle_html_a693a8c64bb7de1a6835d6a151e37aa0e"><div class="ttname"><a href="classllfio__v2__xxx_1_1io__handle.html#a693a8c64bb7de1a6835d6a151e37aa0e">llfio_v2_xxx::io_handle::const_buffers_type</a></div><div class="ttdeci">span&lt; const_buffer_type &gt; const_buffers_type</div><div class="ttdoc">The gather buffers type used by this handle. Guaranteed to be TrivialType apart from construction...</div><div class="ttdef"><b>Definition:</b> io_handle.hpp:163</div></div>
+<div class="fragment"><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; {</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; const_buffer_type *_reqs = <span class="keyword">reinterpret_cast&lt;</span>const_buffer_type *<span class="keyword">&gt;</span>(alloca(<span class="keyword">sizeof</span>(const_buffer_type) * lst.size()));</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; memcpy(_reqs, lst.begin(), <span class="keyword">sizeof</span>(const_buffer_type) * lst.size());</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; io_request&lt;const_buffers_type&gt; reqs(<a class="code" href="classllfio__v2__xxx_1_1io__handle.html#a693a8c64bb7de1a6835d6a151e37aa0e">const_buffers_type</a>(_reqs, lst.size()), offset);</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; <span class="keyword">auto</span> ret = <a class="code" href="classllfio__v2__xxx_1_1io__handle.html#a83884eca7b4cd09125a5cf8a155e6052">write</a>(reqs, d);</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; <span class="keywordflow">if</span>(ret)</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; {</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; <span class="keywordflow">return</span> ret.bytes_transferred();</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; }</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; <span class="keywordflow">return</span> ret.error();</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160; }</div><div class="ttc" id="classllfio__v2__xxx_1_1io__handle_html_a693a8c64bb7de1a6835d6a151e37aa0e"><div class="ttname"><a href="classllfio__v2__xxx_1_1io__handle.html#a693a8c64bb7de1a6835d6a151e37aa0e">llfio_v2_xxx::io_handle::const_buffers_type</a></div><div class="ttdeci">span&lt; const_buffer_type &gt; const_buffers_type</div><div class="ttdoc">The gather buffers type used by this handle. Guaranteed to be TrivialType apart from construction...</div><div class="ttdef"><b>Definition:</b> io_handle.hpp:163</div></div>
<div class="ttc" id="classllfio__v2__xxx_1_1io__handle_html_a83884eca7b4cd09125a5cf8a155e6052"><div class="ttname"><a href="classllfio__v2__xxx_1_1io__handle.html#a83884eca7b4cd09125a5cf8a155e6052">llfio_v2_xxx::io_handle::write</a></div><div class="ttdeci">virtual io_result&lt; const_buffers_type &gt; write(io_request&lt; const_buffers_type &gt; reqs, deadline d=deadline()) noexcept</div><div class="ttdoc">Write data to the open handle. </div></div>
</div><!-- fragment -->
</div>
diff --git a/classllfio__v2__xxx_1_1mapped__file__handle.js b/classllfio__v2__xxx_1_1mapped__file__handle.js
index 8487c34e..7314ef8f 100644
--- a/classllfio__v2__xxx_1_1mapped__file__handle.js
+++ b/classllfio__v2__xxx_1_1mapped__file__handle.js
@@ -79,8 +79,8 @@ var classllfio__v2__xxx_1_1mapped__file__handle =
[ "operator=", "classllfio__v2__xxx_1_1mapped__file__handle.html#a606d8adfa6139b48b0007b97dae5a303", null ],
[ "page_size", "classllfio__v2__xxx_1_1mapped__file__handle.html#a0f147e2d7d2758605019d9ea0dd8a35b", null ],
[ "parent_path_handle", "classllfio__v2__xxx_1_1mapped__file__handle.html#a865caad2f7f4bdf12fb74aabfe3c5ff5", null ],
+ [ "read", "classllfio__v2__xxx_1_1mapped__file__handle.html#a6e46c6ea379152eb559ab15990f7c467", null ],
[ "read", "classllfio__v2__xxx_1_1mapped__file__handle.html#a5f7485307a0704aa1680e5785be2035d", null ],
- [ "read", "classllfio__v2__xxx_1_1mapped__file__handle.html#aac0369e8025ae1320e7d607922f61b48", null ],
[ "read", "classllfio__v2__xxx_1_1mapped__file__handle.html#ae4ca3f09ab781322c22f903d31ec7aa9", null ],
[ "release", "classllfio__v2__xxx_1_1mapped__file__handle.html#a4072a4f2448ef3b8c7075fa8734acf71", null ],
[ "relink", "classllfio__v2__xxx_1_1mapped__file__handle.html#a8700edc9ecd4dd35d5aad7c65dd0eca2", null ],
diff --git a/classllfio__v2__xxx_1_1section__handle.html b/classllfio__v2__xxx_1_1section__handle.html
index 76d43443..84bc14b8 100644
--- a/classllfio__v2__xxx_1_1section__handle.html
+++ b/classllfio__v2__xxx_1_1section__handle.html
@@ -490,7 +490,7 @@ flag&#160;</td><td class="memItemRight" valign="bottom"><b>_flags</b> {flag::non
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="af0b352d0f273ba6fa70c178b2c2fee42a244f58cf07c35fd48d7524b289551e5c"></a>truncate&#160;</td><td class="fielddoc"><p>Atomically truncate on open, leaving creation date unmodified. </p>
</td></tr>
</table>
-<div class="fragment"><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; : <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span></div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; {</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; open_existing = 0,</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; only_if_not_exist,</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; if_needed,</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <a class="code" href="namespacellfio__v2__xxx.html#a16ee1bea5a5791ecde266420e00fba81">truncate</a> <span class="comment">//!&lt; Atomically truncate on open, leaving creation date unmodified.</span></div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160;<span class="comment"></span> <span class="comment">// NOTE: IF UPDATING THIS UPDATE THE std::ostream PRINTER BELOW!!!</span></div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; };</div><div class="ttc" id="namespacellfio__v2__xxx_html_a16ee1bea5a5791ecde266420e00fba81"><div class="ttname"><a href="namespacellfio__v2__xxx.html#a16ee1bea5a5791ecde266420e00fba81">llfio_v2_xxx::truncate</a></div><div class="ttdeci">result&lt; file_handle::extent_type &gt; truncate(file_handle &amp;self, file_handle::extent_type newsize) noexcept</div><div class="ttdef"><b>Definition:</b> file_handle.hpp:385</div></div>
+<div class="fragment"><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; : <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span></div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; {</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; open_existing = 0,</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; only_if_not_exist,</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; if_needed,</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <a class="code" href="namespacellfio__v2__xxx.html#a16ee1bea5a5791ecde266420e00fba81">truncate</a> <span class="comment">//!&lt; Atomically truncate on open, leaving creation date unmodified.</span></div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160;<span class="comment"></span> <span class="comment">// NOTE: IF UPDATING THIS UPDATE THE std::ostream PRINTER BELOW!!!</span></div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; };</div><div class="ttc" id="namespacellfio__v2__xxx_html_a16ee1bea5a5791ecde266420e00fba81"><div class="ttname"><a href="namespacellfio__v2__xxx.html#a16ee1bea5a5791ecde266420e00fba81">llfio_v2_xxx::truncate</a></div><div class="ttdeci">result&lt; file_handle::extent_type &gt; truncate(file_handle &amp;self, file_handle::extent_type newsize) noexcept</div><div class="ttdef"><b>Definition:</b> file_handle.hpp:406</div></div>
</div><!-- fragment -->
</div>
</div>
@@ -529,9 +529,9 @@ flag&#160;</td><td class="memItemRight" valign="bottom"><b>_flags</b> {flag::non
<tr><td class="fieldname"><a id="aa3930273a2d4cabbac309e0b75701dcaa9516dfb15f51c7ee19a4d46b8c0dbe1d"></a>append&#160;</td><td class="fielddoc"><p>All mainstream OSs and CIFS guarantee this is atomic with respect to all other appenders (FILE_APPEND_DATA|SYNCHRONISE or O_APPEND) </p>
</td></tr>
</table>
-<div class="fragment"><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; : <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> <span class="comment">// bit 0 set means writable</span></div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; {</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; unchanged = 0,</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <a class="code" href="classllfio__v2__xxx_1_1handle.html#a5929f46f42112bd805ab5001bfbf9d2aae6fb35b3d125d5d76bbef95b1d804298">none</a> = 2, <span class="comment">//!&lt; No ability to read or write anything, but can synchronise (SYNCHRONIZE or 0)</span></div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;<span class="comment"></span> attr_read = 4, <span class="comment">//!&lt; Ability to read attributes (FILE_READ_ATTRIBUTES|SYNCHRONIZE or O_RDONLY)</span></div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;<span class="comment"></span> attr_write = 5, <span class="comment">//!&lt; Ability to read and write attributes (FILE_READ_ATTRIBUTES|FILE_WRITE_ATTRIBUTES|SYNCHRONIZE or O_RDONLY)</span></div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;<span class="comment"></span> <a class="code" href="namespacellfio__v2__xxx.html#a225e15680392dfa9e1dda42afcc09672">read</a> = 6, <span class="comment">//!&lt; Ability to read (READ_CONTROL|FILE_READ_DATA|FILE_READ_ATTRIBUTES|FILE_READ_EA|SYNCHRONISE or O_RDONLY)</span></div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;<span class="comment"></span> <a class="code" href="namespacellfio__v2__xxx.html#a5a8908704c9988bbecc69c2359e6fd4a">write</a> = 7, <span class="comment">//!&lt; Ability to read and write (READ_CONTROL|FILE_READ_DATA|FILE_READ_ATTRIBUTES|FILE_READ_EA|FILE_WRITE_DATA|FILE_WRITE_ATTRIBUTES|FILE_WRITE_EA|FILE_APPEND_DATA|SYNCHRONISE or O_RDWR)</span></div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;<span class="comment"></span> append = 9 <span class="comment">//!&lt; All mainstream OSs and CIFS guarantee this is atomic with respect to all other appenders (FILE_APPEND_DATA|SYNCHRONISE or O_APPEND)</span></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;<span class="comment"></span> <span class="comment">// NOTE: IF UPDATING THIS UPDATE THE std::ostream PRINTER BELOW!!!</span></div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; };</div><div class="ttc" id="classllfio__v2__xxx_1_1handle_html_a5929f46f42112bd805ab5001bfbf9d2aae6fb35b3d125d5d76bbef95b1d804298"><div class="ttname"><a href="classllfio__v2__xxx_1_1handle.html#a5929f46f42112bd805ab5001bfbf9d2aae6fb35b3d125d5d76bbef95b1d804298">llfio_v2_xxx::handle::none</a></div><div class="ttdoc">No flags. </div><div class="ttdef"><b>Definition:</b> handle.hpp:99</div></div>
-<div class="ttc" id="namespacellfio__v2__xxx_html_a5a8908704c9988bbecc69c2359e6fd4a"><div class="ttname"><a href="namespacellfio__v2__xxx.html#a5a8908704c9988bbecc69c2359e6fd4a">llfio_v2_xxx::write</a></div><div class="ttdeci">io_handle::io_result&lt; io_handle::const_buffers_type &gt; write(io_handle &amp;self, io_handle::io_request&lt; io_handle::const_buffers_type &gt; reqs, deadline d=deadline()) noexcept</div><div class="ttdoc">Write data to the open handle. </div><div class="ttdef"><b>Definition:</b> io_handle.hpp:599</div></div>
-<div class="ttc" id="namespacellfio__v2__xxx_html_a225e15680392dfa9e1dda42afcc09672"><div class="ttname"><a href="namespacellfio__v2__xxx.html#a225e15680392dfa9e1dda42afcc09672">llfio_v2_xxx::read</a></div><div class="ttdeci">io_handle::io_result&lt; io_handle::buffers_type &gt; read(io_handle &amp;self, io_handle::io_request&lt; io_handle::buffers_type &gt; reqs, deadline d=deadline()) noexcept</div><div class="ttdoc">Read data from the open handle. </div><div class="ttdef"><b>Definition:</b> io_handle.hpp:568</div></div>
+<div class="fragment"><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; : <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> <span class="comment">// bit 0 set means writable</span></div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; {</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; unchanged = 0,</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <a class="code" href="classllfio__v2__xxx_1_1handle.html#a5929f46f42112bd805ab5001bfbf9d2aae6fb35b3d125d5d76bbef95b1d804298">none</a> = 2, <span class="comment">//!&lt; No ability to read or write anything, but can synchronise (SYNCHRONIZE or 0)</span></div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;<span class="comment"></span> attr_read = 4, <span class="comment">//!&lt; Ability to read attributes (FILE_READ_ATTRIBUTES|SYNCHRONIZE or O_RDONLY)</span></div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;<span class="comment"></span> attr_write = 5, <span class="comment">//!&lt; Ability to read and write attributes (FILE_READ_ATTRIBUTES|FILE_WRITE_ATTRIBUTES|SYNCHRONIZE or O_RDONLY)</span></div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;<span class="comment"></span> <a class="code" href="namespacellfio__v2__xxx.html#af678f58d20e1f0962ff0744150342683">read</a> = 6, <span class="comment">//!&lt; Ability to read (READ_CONTROL|FILE_READ_DATA|FILE_READ_ATTRIBUTES|FILE_READ_EA|SYNCHRONISE or O_RDONLY)</span></div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;<span class="comment"></span> <a class="code" href="namespacellfio__v2__xxx.html#a5a8908704c9988bbecc69c2359e6fd4a">write</a> = 7, <span class="comment">//!&lt; Ability to read and write (READ_CONTROL|FILE_READ_DATA|FILE_READ_ATTRIBUTES|FILE_READ_EA|FILE_WRITE_DATA|FILE_WRITE_ATTRIBUTES|FILE_WRITE_EA|FILE_APPEND_DATA|SYNCHRONISE or O_RDWR)</span></div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;<span class="comment"></span> append = 9 <span class="comment">//!&lt; All mainstream OSs and CIFS guarantee this is atomic with respect to all other appenders (FILE_APPEND_DATA|SYNCHRONISE or O_APPEND)</span></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;<span class="comment"></span> <span class="comment">// NOTE: IF UPDATING THIS UPDATE THE std::ostream PRINTER BELOW!!!</span></div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; };</div><div class="ttc" id="namespacellfio__v2__xxx_html_af678f58d20e1f0962ff0744150342683"><div class="ttname"><a href="namespacellfio__v2__xxx.html#af678f58d20e1f0962ff0744150342683">llfio_v2_xxx::read</a></div><div class="ttdeci">file_handle::io_result&lt; file_handle::size_type &gt; read(file_handle &amp;self, file_handle::extent_type offset, std::initializer_list&lt; file_handle::buffer_type &gt; lst, deadline d=deadline()) noexcept</div><div class="ttdef"><b>Definition:</b> file_handle.hpp:385</div></div>
+<div class="ttc" id="classllfio__v2__xxx_1_1handle_html_a5929f46f42112bd805ab5001bfbf9d2aae6fb35b3d125d5d76bbef95b1d804298"><div class="ttname"><a href="classllfio__v2__xxx_1_1handle.html#a5929f46f42112bd805ab5001bfbf9d2aae6fb35b3d125d5d76bbef95b1d804298">llfio_v2_xxx::handle::none</a></div><div class="ttdoc">No flags. </div><div class="ttdef"><b>Definition:</b> handle.hpp:99</div></div>
+<div class="ttc" id="namespacellfio__v2__xxx_html_a5a8908704c9988bbecc69c2359e6fd4a"><div class="ttname"><a href="namespacellfio__v2__xxx.html#a5a8908704c9988bbecc69c2359e6fd4a">llfio_v2_xxx::write</a></div><div class="ttdeci">io_handle::io_result&lt; io_handle::const_buffers_type &gt; write(io_handle &amp;self, io_handle::io_request&lt; io_handle::const_buffers_type &gt; reqs, deadline d=deadline()) noexcept</div><div class="ttdoc">Write data to the open handle. </div><div class="ttdef"><b>Definition:</b> io_handle.hpp:580</div></div>
</div><!-- fragment -->
</div>
</div>
diff --git a/file__handle_8hpp.html b/file__handle_8hpp.html
index 81d04825..452fab5b 100644
--- a/file__handle_8hpp.html
+++ b/file__handle_8hpp.html
@@ -124,6 +124,8 @@ void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="name
<tr class="separator:a70d9ef3b988a880d171015b754bb7b27"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac8d9dc908fe39f9c896e99f6b7a39d81"><td class="memItemLeft" align="right" valign="top">result&lt; file_handle &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacellfio__v2__xxx.html#ac8d9dc908fe39f9c896e99f6b7a39d81">llfio_v2_xxx::temp_inode</a> (const path_handle &amp;dirh=path_discovery::storage_backed_temporary_files_directory(), file_handle::mode _mode=file_handle::mode::write, file_handle::flag flags=file_handle::flag::none) noexcept</td></tr>
<tr class="separator:ac8d9dc908fe39f9c896e99f6b7a39d81"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:af678f58d20e1f0962ff0744150342683"><td class="memItemLeft" align="right" valign="top">file_handle::io_result&lt; file_handle::size_type &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacellfio__v2__xxx.html#af678f58d20e1f0962ff0744150342683">llfio_v2_xxx::read</a> (file_handle &amp;self, file_handle::extent_type offset, std::initializer_list&lt; file_handle::buffer_type &gt; lst, deadline d=deadline()) noexcept</td></tr>
+<tr class="separator:af678f58d20e1f0962ff0744150342683"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1759f4cee184d433f4446a39ff8bfa02"><td class="memItemLeft" align="right" valign="top">result&lt; file_handle::extent_type &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacellfio__v2__xxx.html#a1759f4cee184d433f4446a39ff8bfa02">llfio_v2_xxx::maximum_extent</a> (const file_handle &amp;self) noexcept</td></tr>
<tr class="separator:a1759f4cee184d433f4446a39ff8bfa02"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a16ee1bea5a5791ecde266420e00fba81"><td class="memItemLeft" align="right" valign="top">result&lt; file_handle::extent_type &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacellfio__v2__xxx.html#a16ee1bea5a5791ecde266420e00fba81">llfio_v2_xxx::truncate</a> (file_handle &amp;self, file_handle::extent_type newsize) noexcept</td></tr>
diff --git a/file__handle_8hpp.js b/file__handle_8hpp.js
index 0153d1f1..6dbafffa 100644
--- a/file__handle_8hpp.js
+++ b/file__handle_8hpp.js
@@ -6,6 +6,7 @@ var file__handle_8hpp =
[ "file", "file__handle_8hpp.html#af31a062639499a79ef5cc8aed16ba65d", null ],
[ "maximum_extent", "file__handle_8hpp.html#a1759f4cee184d433f4446a39ff8bfa02", null ],
[ "random_file", "file__handle_8hpp.html#a5bc9df0fdb554e757d14cf40af0bbb4e", null ],
+ [ "read", "file__handle_8hpp.html#af678f58d20e1f0962ff0744150342683", null ],
[ "swap", "file__handle_8hpp.html#a2542466a055a0c024dee2704e9e32519", null ],
[ "temp_file", "file__handle_8hpp.html#a70d9ef3b988a880d171015b754bb7b27", null ],
[ "temp_inode", "file__handle_8hpp.html#ac8d9dc908fe39f9c896e99f6b7a39d81", null ],
diff --git a/functions_func_r.html b/functions_func_r.html
index b7d41fb0..5bc7ac7c 100644
--- a/functions_func_r.html
+++ b/functions_func_r.html
@@ -100,6 +100,7 @@ $(document).ready(function(){initNavTree('functions_func_r.html','');});
</li>
<li>read()
: <a class="el" href="classllfio__v2__xxx_1_1directory__handle.html#a45c13e16ecc131cbe5107e6affe94f33">llfio_v2_xxx::directory_handle</a>
+, <a class="el" href="classllfio__v2__xxx_1_1file__handle.html#a6e46c6ea379152eb559ab15990f7c467">llfio_v2_xxx::file_handle</a>
, <a class="el" href="classllfio__v2__xxx_1_1io__handle.html#a5f7485307a0704aa1680e5785be2035d">llfio_v2_xxx::io_handle</a>
, <a class="el" href="classllfio__v2__xxx_1_1map__handle.html#a073cdca57e3e3718d2eb285be51d5c92">llfio_v2_xxx::map_handle</a>
, <a class="el" href="classllfio__v2__xxx_1_1mapped__file__handle.html#ae4ca3f09ab781322c22f903d31ec7aa9">llfio_v2_xxx::mapped_file_handle</a>
diff --git a/functions_r.html b/functions_r.html
index ed03dbec..3264ff59 100644
--- a/functions_r.html
+++ b/functions_r.html
@@ -103,6 +103,7 @@ $(document).ready(function(){initNavTree('functions_r.html','');});
</li>
<li>read()
: <a class="el" href="classllfio__v2__xxx_1_1directory__handle.html#a45c13e16ecc131cbe5107e6affe94f33">llfio_v2_xxx::directory_handle</a>
+, <a class="el" href="classllfio__v2__xxx_1_1file__handle.html#a6e46c6ea379152eb559ab15990f7c467">llfio_v2_xxx::file_handle</a>
, <a class="el" href="classllfio__v2__xxx_1_1io__handle.html#a5f7485307a0704aa1680e5785be2035d">llfio_v2_xxx::io_handle</a>
, <a class="el" href="classllfio__v2__xxx_1_1map__handle.html#a073cdca57e3e3718d2eb285be51d5c92">llfio_v2_xxx::map_handle</a>
, <a class="el" href="classllfio__v2__xxx_1_1mapped__file__handle.html#ae4ca3f09ab781322c22f903d31ec7aa9">llfio_v2_xxx::mapped_file_handle</a>
diff --git a/io__handle_8hpp.html b/io__handle_8hpp.html
index aa486210..96cb6545 100644
--- a/io__handle_8hpp.html
+++ b/io__handle_8hpp.html
@@ -123,8 +123,6 @@ Functions</h2></td></tr>
<tr class="memitem:a225e15680392dfa9e1dda42afcc09672"><td class="memItemLeft" align="right" valign="top">io_handle::io_result&lt; io_handle::buffers_type &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacellfio__v2__xxx.html#a225e15680392dfa9e1dda42afcc09672">llfio_v2_xxx::read</a> (io_handle &amp;self, io_handle::io_request&lt; io_handle::buffers_type &gt; reqs, deadline d=deadline()) noexcept</td></tr>
<tr class="memdesc:a225e15680392dfa9e1dda42afcc09672"><td class="mdescLeft">&#160;</td><td class="mdescRight">Read data from the open handle. <a href="namespacellfio__v2__xxx.html#a225e15680392dfa9e1dda42afcc09672">More...</a><br /></td></tr>
<tr class="separator:a225e15680392dfa9e1dda42afcc09672"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a7c4b2c6794e73f6bd11c5d14fd16cea9"><td class="memItemLeft" align="right" valign="top">io_handle::io_result&lt; io_handle::size_type &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacellfio__v2__xxx.html#a7c4b2c6794e73f6bd11c5d14fd16cea9">llfio_v2_xxx::read</a> (io_handle &amp;self, io_handle::extent_type offset, std::initializer_list&lt; io_handle::buffer_type &gt; lst, deadline d=deadline()) noexcept</td></tr>
-<tr class="separator:a7c4b2c6794e73f6bd11c5d14fd16cea9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5a8908704c9988bbecc69c2359e6fd4a"><td class="memItemLeft" align="right" valign="top">io_handle::io_result&lt; io_handle::const_buffers_type &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacellfio__v2__xxx.html#a5a8908704c9988bbecc69c2359e6fd4a">llfio_v2_xxx::write</a> (io_handle &amp;self, io_handle::io_request&lt; io_handle::const_buffers_type &gt; reqs, deadline d=deadline()) noexcept</td></tr>
<tr class="memdesc:a5a8908704c9988bbecc69c2359e6fd4a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Write data to the open handle. <a href="namespacellfio__v2__xxx.html#a5a8908704c9988bbecc69c2359e6fd4a">More...</a><br /></td></tr>
<tr class="separator:a5a8908704c9988bbecc69c2359e6fd4a"><td class="memSeparator" colspan="2">&#160;</td></tr>
diff --git a/io__handle_8hpp.js b/io__handle_8hpp.js
index fcc4be34..1ca12583 100644
--- a/io__handle_8hpp.js
+++ b/io__handle_8hpp.js
@@ -8,7 +8,6 @@ var io__handle_8hpp =
[ "extent_guard", "classllfio__v2__xxx_1_1io__handle_1_1extent__guard.html", "classllfio__v2__xxx_1_1io__handle_1_1extent__guard" ],
[ "barrier", "io__handle_8hpp.html#a4fad22759dab40321cabd37c755880fe", null ],
[ "read", "io__handle_8hpp.html#a225e15680392dfa9e1dda42afcc09672", null ],
- [ "read", "io__handle_8hpp.html#a7c4b2c6794e73f6bd11c5d14fd16cea9", null ],
[ "write", "io__handle_8hpp.html#a5a8908704c9988bbecc69c2359e6fd4a", null ],
[ "write", "io__handle_8hpp.html#a5ea3d93e8b2c7f6e3fca7a9cde734312", null ]
]; \ No newline at end of file
diff --git a/namespacellfio__v2__xxx.html b/namespacellfio__v2__xxx.html
index 10b29eb2..cf4ae087 100644
--- a/namespacellfio__v2__xxx.html
+++ b/namespacellfio__v2__xxx.html
@@ -250,6 +250,8 @@ void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="name
<tr class="separator:a70d9ef3b988a880d171015b754bb7b27"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac8d9dc908fe39f9c896e99f6b7a39d81"><td class="memItemLeft" align="right" valign="top">result&lt; <a class="el" href="classllfio__v2__xxx_1_1file__handle.html">file_handle</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacellfio__v2__xxx.html#ac8d9dc908fe39f9c896e99f6b7a39d81">temp_inode</a> (const <a class="el" href="classllfio__v2__xxx_1_1path__handle.html">path_handle</a> &amp;dirh=<a class="el" href="namespacellfio__v2__xxx_1_1path__discovery.html#a2dd74ea752f3f511d58ccccdcac7f4fd">path_discovery::storage_backed_temporary_files_directory</a>(), <a class="el" href="classllfio__v2__xxx_1_1handle.html#aa3930273a2d4cabbac309e0b75701dca">file_handle::mode</a> _mode=<a class="el" href="classllfio__v2__xxx_1_1handle.html#aa3930273a2d4cabbac309e0b75701dcaaefb2a684e4afb7d55e6147fbe5a332ee">file_handle::mode::write</a>, file_handle::flag flags=file_handle::flag::none) noexcept</td></tr>
<tr class="separator:ac8d9dc908fe39f9c896e99f6b7a39d81"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:af678f58d20e1f0962ff0744150342683"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structllfio__v2__xxx_1_1io__handle_1_1io__result.html">file_handle::io_result</a>&lt; file_handle::size_type &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacellfio__v2__xxx.html#af678f58d20e1f0962ff0744150342683">read</a> (<a class="el" href="classllfio__v2__xxx_1_1file__handle.html">file_handle</a> &amp;self, file_handle::extent_type offset, std::initializer_list&lt; <a class="el" href="structllfio__v2__xxx_1_1io__handle_1_1buffer__type.html">file_handle::buffer_type</a> &gt; lst, <a class="el" href="structllfio__v2__xxx_1_1deadline.html">deadline</a> d=<a class="el" href="structllfio__v2__xxx_1_1deadline.html">deadline</a>()) noexcept</td></tr>
+<tr class="separator:af678f58d20e1f0962ff0744150342683"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1759f4cee184d433f4446a39ff8bfa02"><td class="memItemLeft" align="right" valign="top">result&lt; file_handle::extent_type &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacellfio__v2__xxx.html#a1759f4cee184d433f4446a39ff8bfa02">maximum_extent</a> (const <a class="el" href="classllfio__v2__xxx_1_1file__handle.html">file_handle</a> &amp;self) noexcept</td></tr>
<tr class="separator:a1759f4cee184d433f4446a39ff8bfa02"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a16ee1bea5a5791ecde266420e00fba81"><td class="memItemLeft" align="right" valign="top">result&lt; file_handle::extent_type &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacellfio__v2__xxx.html#a16ee1bea5a5791ecde266420e00fba81">truncate</a> (<a class="el" href="classllfio__v2__xxx_1_1file__handle.html">file_handle</a> &amp;self, file_handle::extent_type newsize) noexcept</td></tr>
@@ -291,8 +293,6 @@ result&lt; void &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class
<tr class="memitem:a225e15680392dfa9e1dda42afcc09672"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structllfio__v2__xxx_1_1io__handle_1_1io__result.html">io_handle::io_result</a>&lt; <a class="el" href="classllfio__v2__xxx_1_1io__handle.html#a8f525d9665b524442b46cd55678817ed">io_handle::buffers_type</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacellfio__v2__xxx.html#a225e15680392dfa9e1dda42afcc09672">read</a> (<a class="el" href="classllfio__v2__xxx_1_1io__handle.html">io_handle</a> &amp;self, <a class="el" href="structllfio__v2__xxx_1_1io__handle_1_1io__request.html">io_handle::io_request</a>&lt; <a class="el" href="classllfio__v2__xxx_1_1io__handle.html#a8f525d9665b524442b46cd55678817ed">io_handle::buffers_type</a> &gt; reqs, <a class="el" href="structllfio__v2__xxx_1_1deadline.html">deadline</a> d=<a class="el" href="structllfio__v2__xxx_1_1deadline.html">deadline</a>()) noexcept</td></tr>
<tr class="memdesc:a225e15680392dfa9e1dda42afcc09672"><td class="mdescLeft">&#160;</td><td class="mdescRight">Read data from the open handle. <a href="#a225e15680392dfa9e1dda42afcc09672">More...</a><br /></td></tr>
<tr class="separator:a225e15680392dfa9e1dda42afcc09672"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a7c4b2c6794e73f6bd11c5d14fd16cea9"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structllfio__v2__xxx_1_1io__handle_1_1io__result.html">io_handle::io_result</a>&lt; io_handle::size_type &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacellfio__v2__xxx.html#a7c4b2c6794e73f6bd11c5d14fd16cea9">read</a> (<a class="el" href="classllfio__v2__xxx_1_1io__handle.html">io_handle</a> &amp;self, io_handle::extent_type offset, std::initializer_list&lt; <a class="el" href="structllfio__v2__xxx_1_1io__handle_1_1buffer__type.html">io_handle::buffer_type</a> &gt; lst, <a class="el" href="structllfio__v2__xxx_1_1deadline.html">deadline</a> d=<a class="el" href="structllfio__v2__xxx_1_1deadline.html">deadline</a>()) noexcept</td></tr>
-<tr class="separator:a7c4b2c6794e73f6bd11c5d14fd16cea9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5a8908704c9988bbecc69c2359e6fd4a"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structllfio__v2__xxx_1_1io__handle_1_1io__result.html">io_handle::io_result</a>&lt; <a class="el" href="classllfio__v2__xxx_1_1io__handle.html#a693a8c64bb7de1a6835d6a151e37aa0e">io_handle::const_buffers_type</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacellfio__v2__xxx.html#a5a8908704c9988bbecc69c2359e6fd4a">write</a> (<a class="el" href="classllfio__v2__xxx_1_1io__handle.html">io_handle</a> &amp;self, <a class="el" href="structllfio__v2__xxx_1_1io__handle_1_1io__request.html">io_handle::io_request</a>&lt; <a class="el" href="classllfio__v2__xxx_1_1io__handle.html#a693a8c64bb7de1a6835d6a151e37aa0e">io_handle::const_buffers_type</a> &gt; reqs, <a class="el" href="structllfio__v2__xxx_1_1deadline.html">deadline</a> d=<a class="el" href="structllfio__v2__xxx_1_1deadline.html">deadline</a>()) noexcept</td></tr>
<tr class="memdesc:a5a8908704c9988bbecc69c2359e6fd4a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Write data to the open handle. <a href="#a5a8908704c9988bbecc69c2359e6fd4a">More...</a><br /></td></tr>
<tr class="separator:a5a8908704c9988bbecc69c2359e6fd4a"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -500,7 +500,7 @@ For portability, you can only assume that barriers write order for a single hand
</dl>
<dl class="section user"><dt>Errors returnable</dt><dd>Any of the values POSIX fdatasync() or Windows NtFlushBuffersFileEx() can return. </dd></dl>
<dl class="section user"><dt>Memory Allocations</dt><dd>None. </dd></dl>
-<div class="fragment"><div class="line"><a name="l00641"></a><span class="lineno"> 641</span>&#160;{</div><div class="line"><a name="l00642"></a><span class="lineno"> 642</span>&#160; <span class="keywordflow">return</span> <span class="keyword">self</span>.barrier(std::forward&lt;decltype(reqs)&gt;(reqs), std::forward&lt;decltype(wait_for_device)&gt;(wait_for_device), std::forward&lt;decltype(and_metadata)&gt;(and_metadata), std::forward&lt;decltype(d)&gt;(d));</div><div class="line"><a name="l00643"></a><span class="lineno"> 643</span>&#160;}</div></div><!-- fragment -->
+<div class="fragment"><div class="line"><a name="l00622"></a><span class="lineno"> 622</span>&#160;{</div><div class="line"><a name="l00623"></a><span class="lineno"> 623</span>&#160; <span class="keywordflow">return</span> <span class="keyword">self</span>.barrier(std::forward&lt;decltype(reqs)&gt;(reqs), std::forward&lt;decltype(wait_for_device)&gt;(wait_for_device), std::forward&lt;decltype(and_metadata)&gt;(and_metadata), std::forward&lt;decltype(d)&gt;(d));</div><div class="line"><a name="l00624"></a><span class="lineno"> 624</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="a3d02b45677b6189566e862d5bcd4d5c8"></a>
@@ -688,7 +688,7 @@ For portability, you can only assume that barriers write order for a single hand
</dd>
</dl>
<dl class="section user"><dt>Errors returnable</dt><dd>Any of the values POSIX open() or CreateFile() can return. </dd></dl>
-<div class="fragment"><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160;{</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacellfio__v2__xxx.html#af31a062639499a79ef5cc8aed16ba65d">file_handle::file</a>(std::forward&lt;decltype(base)&gt;(base), std::forward&lt;decltype(<a class="code" href="namespacellfio__v2__xxx.html#a49f7bb77eb38fbe1280019225b66b78b">path</a>)&gt;(<a class="code" href="namespacellfio__v2__xxx.html#a49f7bb77eb38fbe1280019225b66b78b">path</a>), std::forward&lt;decltype(_mode)&gt;(_mode), std::forward&lt;decltype(_creation)&gt;(_creation), std::forward&lt;decltype(_caching)&gt;(_caching), std::forward&lt;decltype(flags)&gt;(flags));</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160;}</div><div class="ttc" id="namespacellfio__v2__xxx_html_af31a062639499a79ef5cc8aed16ba65d"><div class="ttname"><a href="namespacellfio__v2__xxx.html#af31a062639499a79ef5cc8aed16ba65d">llfio_v2_xxx::file</a></div><div class="ttdeci">result&lt; file_handle &gt; file(const path_handle &amp;base, file_handle::path_view_type path, file_handle::mode _mode=file_handle::mode::read, file_handle::creation _creation=file_handle::creation::open_existing, file_handle::caching _caching=file_handle::caching::all, file_handle::flag flags=file_handle::flag::none) noexcept</div><div class="ttdef"><b>Definition:</b> file_handle.hpp:317</div></div>
+<div class="fragment"><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160;{</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacellfio__v2__xxx.html#af31a062639499a79ef5cc8aed16ba65d">file_handle::file</a>(std::forward&lt;decltype(base)&gt;(base), std::forward&lt;decltype(<a class="code" href="namespacellfio__v2__xxx.html#a49f7bb77eb38fbe1280019225b66b78b">path</a>)&gt;(<a class="code" href="namespacellfio__v2__xxx.html#a49f7bb77eb38fbe1280019225b66b78b">path</a>), std::forward&lt;decltype(_mode)&gt;(_mode), std::forward&lt;decltype(_creation)&gt;(_creation), std::forward&lt;decltype(_caching)&gt;(_caching), std::forward&lt;decltype(flags)&gt;(flags));</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160;}</div><div class="ttc" id="namespacellfio__v2__xxx_html_af31a062639499a79ef5cc8aed16ba65d"><div class="ttname"><a href="namespacellfio__v2__xxx.html#af31a062639499a79ef5cc8aed16ba65d">llfio_v2_xxx::file</a></div><div class="ttdeci">result&lt; file_handle &gt; file(const path_handle &amp;base, file_handle::path_view_type path, file_handle::mode _mode=file_handle::mode::read, file_handle::creation _creation=file_handle::creation::open_existing, file_handle::caching _caching=file_handle::caching::all, file_handle::flag flags=file_handle::flag::none) noexcept</div><div class="ttdef"><b>Definition:</b> file_handle.hpp:333</div></div>
<div class="ttc" id="namespacellfio__v2__xxx_html_a49f7bb77eb38fbe1280019225b66b78b"><div class="ttname"><a href="namespacellfio__v2__xxx.html#a49f7bb77eb38fbe1280019225b66b78b">llfio_v2_xxx::path</a></div><div class="ttdeci">result&lt; path_handle &gt; path(const path_handle &amp;base, path_handle::path_view_type path) noexcept</div><div class="ttdef"><b>Definition:</b> path_handle.hpp:155</div></div>
</div><!-- fragment -->
</div>
@@ -1139,7 +1139,7 @@ For portability, you can only assume that barriers write order for a single hand
</div><div class="memdoc">
<p>Return the current maximum permitted extent of the file.</p>
<dl class="section user"><dt>Errors returnable</dt><dd>Any of the values POSIX fstat() or GetFileInformationByHandleEx() can return. </dd></dl>
-<div class="fragment"><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160;{</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; <span class="keywordflow">return</span> <span class="keyword">self</span>.maximum_extent();</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160;}</div></div><!-- fragment -->
+<div class="fragment"><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160;{</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; <span class="keywordflow">return</span> <span class="keyword">self</span>.maximum_extent();</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="a49f7bb77eb38fbe1280019225b66b78b"></a>
@@ -1307,12 +1307,12 @@ For portability, you can only assume that barriers write order for a single hand
</div><div class="memdoc">
<p>Create a file handle creating a randomly named file on a path. The file is opened exclusively with <code>creation::only_if_not_exist</code> so it will never collide with nor overwrite any existing file. Note also that caching defaults to temporary which hints to the OS to only flush changes to physical storage as lately as possible.</p>
<dl class="section user"><dt>Errors returnable</dt><dd>Any of the values POSIX open() or CreateFile() can return. </dd></dl>
-<div class="fragment"><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160;{</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacellfio__v2__xxx.html#a5bc9df0fdb554e757d14cf40af0bbb4e">file_handle::random_file</a>(std::forward&lt;decltype(dirpath)&gt;(dirpath), std::forward&lt;decltype(_mode)&gt;(_mode), std::forward&lt;decltype(_caching)&gt;(_caching), std::forward&lt;decltype(flags)&gt;(flags));</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160;}</div><div class="ttc" id="namespacellfio__v2__xxx_html_a5bc9df0fdb554e757d14cf40af0bbb4e"><div class="ttname"><a href="namespacellfio__v2__xxx.html#a5bc9df0fdb554e757d14cf40af0bbb4e">llfio_v2_xxx::random_file</a></div><div class="ttdeci">result&lt; file_handle &gt; random_file(const path_handle &amp;dirpath, file_handle::mode _mode=file_handle::mode::write, file_handle::caching _caching=file_handle::caching::temporary, file_handle::flag flags=file_handle::flag::none) noexcept</div><div class="ttdef"><b>Definition:</b> file_handle.hpp:330</div></div>
+<div class="fragment"><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160;{</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacellfio__v2__xxx.html#a5bc9df0fdb554e757d14cf40af0bbb4e">file_handle::random_file</a>(std::forward&lt;decltype(dirpath)&gt;(dirpath), std::forward&lt;decltype(_mode)&gt;(_mode), std::forward&lt;decltype(_caching)&gt;(_caching), std::forward&lt;decltype(flags)&gt;(flags));</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160;}</div><div class="ttc" id="namespacellfio__v2__xxx_html_a5bc9df0fdb554e757d14cf40af0bbb4e"><div class="ttname"><a href="namespacellfio__v2__xxx.html#a5bc9df0fdb554e757d14cf40af0bbb4e">llfio_v2_xxx::random_file</a></div><div class="ttdeci">result&lt; file_handle &gt; random_file(const path_handle &amp;dirpath, file_handle::mode _mode=file_handle::mode::write, file_handle::caching _caching=file_handle::caching::temporary, file_handle::flag flags=file_handle::flag::none) noexcept</div><div class="ttdef"><b>Definition:</b> file_handle.hpp:346</div></div>
</div><!-- fragment -->
</div>
</div>
-<a id="a225e15680392dfa9e1dda42afcc09672"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a225e15680392dfa9e1dda42afcc09672">&#9670;&nbsp;</a></span>read() <span class="overload">[1/3]</span></h2>
+<a id="af678f58d20e1f0962ff0744150342683"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#af678f58d20e1f0962ff0744150342683">&#9670;&nbsp;</a></span>read() <span class="overload">[1/3]</span></h2>
<div class="memitem">
<div class="memproto">
@@ -1321,16 +1321,22 @@ For portability, you can only assume that barriers write order for a single hand
<td class="mlabels-left">
<table class="memname">
<tr>
- <td class="memname"><a class="el" href="structllfio__v2__xxx_1_1io__handle_1_1io__result.html">io_handle::io_result</a>&lt;<a class="el" href="classllfio__v2__xxx_1_1io__handle.html#a8f525d9665b524442b46cd55678817ed">io_handle::buffers_type</a>&gt; llfio_v2_xxx::read </td>
+ <td class="memname"><a class="el" href="structllfio__v2__xxx_1_1io__handle_1_1io__result.html">file_handle::io_result</a>&lt;file_handle::size_type&gt; llfio_v2_xxx::read </td>
<td>(</td>
- <td class="paramtype"><a class="el" href="classllfio__v2__xxx_1_1io__handle.html">io_handle</a> &amp;&#160;</td>
+ <td class="paramtype"><a class="el" href="classllfio__v2__xxx_1_1file__handle.html">file_handle</a> &amp;&#160;</td>
<td class="paramname"><em>self</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
- <td class="paramtype"><a class="el" href="structllfio__v2__xxx_1_1io__handle_1_1io__request.html">io_handle::io_request</a>&lt; <a class="el" href="classllfio__v2__xxx_1_1io__handle.html#a8f525d9665b524442b46cd55678817ed">io_handle::buffers_type</a> &gt;&#160;</td>
- <td class="paramname"><em>reqs</em>, </td>
+ <td class="paramtype">file_handle::extent_type&#160;</td>
+ <td class="paramname"><em>offset</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">std::initializer_list&lt; <a class="el" href="structllfio__v2__xxx_1_1io__handle_1_1buffer__type.html">file_handle::buffer_type</a> &gt;&#160;</td>
+ <td class="paramname"><em>lst</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
@@ -1350,25 +1356,12 @@ For portability, you can only assume that barriers write order for a single hand
</tr>
</table>
</div><div class="memdoc">
-
-<p>Read data from the open handle. </p>
-<dl class="section warning"><dt>Warning</dt><dd>Depending on the implementation backend, <b>very</b> different buffers may be returned than you supplied. You should <b>always</b> use the buffers returned and assume that they point to different memory and that each buffer's size will have changed.</dd></dl>
-<dl class="section return"><dt>Returns</dt><dd>The buffers read, which may not be the buffers input. The size of each scatter-gather buffer is updated with the number of bytes of that buffer transferred, and the pointer to the data may be <em>completely</em> different to what was submitted (e.g. it may point into a memory map). </dd></dl>
-<dl class="params"><dt>Parameters</dt><dd>
- <table class="params">
- <tr><td class="paramname">self</td><td>The object whose member function to call. </td></tr>
- <tr><td class="paramname">reqs</td><td>A scatter-gather and offset request. </td></tr>
- <tr><td class="paramname">d</td><td>An optional deadline by which the i/o must complete, else it is cancelled. Note function may return significantly after this deadline if the i/o takes long to cancel. </td></tr>
- </table>
- </dd>
-</dl>
-<dl class="section user"><dt>Errors returnable</dt><dd>Any of the values POSIX read() can return, <code>errc::timed_out</code>, <code>errc::operation_canceled</code>. <code>errc::not_supported</code> may be returned if deadline i/o is not possible with this particular handle configuration (e.g. reading from regular files on POSIX or reading from a non-overlapped HANDLE on Windows). </dd></dl>
-<dl class="section user"><dt>Memory Allocations</dt><dd>The default synchronous implementation in file_handle performs no memory allocation. The asynchronous implementation in async_file_handle performs one calloc and one free. </dd></dl>
-<div class="fragment"><div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160;{</div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span>&#160; <span class="keywordflow">return</span> <span class="keyword">self</span>.read(std::forward&lt;decltype(reqs)&gt;(reqs), std::forward&lt;decltype(d)&gt;(d));</div><div class="line"><a name="l00571"></a><span class="lineno"> 571</span>&#160;}</div></div><!-- fragment -->
+<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
+<div class="fragment"><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160;{</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; <span class="keywordflow">return</span> <span class="keyword">self</span>.read(std::forward&lt;decltype(offset)&gt;(offset), std::forward&lt;decltype(lst)&gt;(lst), std::forward&lt;decltype(d)&gt;(d));</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
-<a id="a7c4b2c6794e73f6bd11c5d14fd16cea9"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a7c4b2c6794e73f6bd11c5d14fd16cea9">&#9670;&nbsp;</a></span>read() <span class="overload">[2/3]</span></h2>
+<a id="a225e15680392dfa9e1dda42afcc09672"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a225e15680392dfa9e1dda42afcc09672">&#9670;&nbsp;</a></span>read() <span class="overload">[2/3]</span></h2>
<div class="memitem">
<div class="memproto">
@@ -1377,7 +1370,7 @@ For portability, you can only assume that barriers write order for a single hand
<td class="mlabels-left">
<table class="memname">
<tr>
- <td class="memname"><a class="el" href="structllfio__v2__xxx_1_1io__handle_1_1io__result.html">io_handle::io_result</a>&lt;io_handle::size_type&gt; llfio_v2_xxx::read </td>
+ <td class="memname"><a class="el" href="structllfio__v2__xxx_1_1io__handle_1_1io__result.html">io_handle::io_result</a>&lt;<a class="el" href="classllfio__v2__xxx_1_1io__handle.html#a8f525d9665b524442b46cd55678817ed">io_handle::buffers_type</a>&gt; llfio_v2_xxx::read </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classllfio__v2__xxx_1_1io__handle.html">io_handle</a> &amp;&#160;</td>
<td class="paramname"><em>self</em>, </td>
@@ -1385,14 +1378,8 @@ For portability, you can only assume that barriers write order for a single hand
<tr>
<td class="paramkey"></td>
<td></td>
- <td class="paramtype">io_handle::extent_type&#160;</td>
- <td class="paramname"><em>offset</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">std::initializer_list&lt; <a class="el" href="structllfio__v2__xxx_1_1io__handle_1_1buffer__type.html">io_handle::buffer_type</a> &gt;&#160;</td>
- <td class="paramname"><em>lst</em>, </td>
+ <td class="paramtype"><a class="el" href="structllfio__v2__xxx_1_1io__handle_1_1io__request.html">io_handle::io_request</a>&lt; <a class="el" href="classllfio__v2__xxx_1_1io__handle.html#a8f525d9665b524442b46cd55678817ed">io_handle::buffers_type</a> &gt;&#160;</td>
+ <td class="paramname"><em>reqs</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
@@ -1412,8 +1399,21 @@ For portability, you can only assume that barriers write order for a single hand
</tr>
</table>
</div><div class="memdoc">
-<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
-<div class="fragment"><div class="line"><a name="l00574"></a><span class="lineno"> 574</span>&#160;{</div><div class="line"><a name="l00575"></a><span class="lineno"> 575</span>&#160; <span class="keywordflow">return</span> <span class="keyword">self</span>.read(std::forward&lt;decltype(offset)&gt;(offset), std::forward&lt;decltype(lst)&gt;(lst), std::forward&lt;decltype(d)&gt;(d));</div><div class="line"><a name="l00576"></a><span class="lineno"> 576</span>&#160;}</div></div><!-- fragment -->
+
+<p>Read data from the open handle. </p>
+<dl class="section warning"><dt>Warning</dt><dd>Depending on the implementation backend, <b>very</b> different buffers may be returned than you supplied. You should <b>always</b> use the buffers returned and assume that they point to different memory and that each buffer's size will have changed.</dd></dl>
+<dl class="section return"><dt>Returns</dt><dd>The buffers read, which may not be the buffers input. The size of each scatter-gather buffer is updated with the number of bytes of that buffer transferred, and the pointer to the data may be <em>completely</em> different to what was submitted (e.g. it may point into a memory map). </dd></dl>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramname">self</td><td>The object whose member function to call. </td></tr>
+ <tr><td class="paramname">reqs</td><td>A scatter-gather and offset request. </td></tr>
+ <tr><td class="paramname">d</td><td>An optional deadline by which the i/o must complete, else it is cancelled. Note function may return significantly after this deadline if the i/o takes long to cancel. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section user"><dt>Errors returnable</dt><dd>Any of the values POSIX read() can return, <code>errc::timed_out</code>, <code>errc::operation_canceled</code>. <code>errc::not_supported</code> may be returned if deadline i/o is not possible with this particular handle configuration (e.g. reading from regular files on POSIX or reading from a non-overlapped HANDLE on Windows). </dd></dl>
+<dl class="section user"><dt>Memory Allocations</dt><dd>The default synchronous implementation in file_handle performs no memory allocation. The asynchronous implementation in async_file_handle performs one calloc and one free. </dd></dl>
+<div class="fragment"><div class="line"><a name="l00555"></a><span class="lineno"> 555</span>&#160;{</div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160; <span class="keywordflow">return</span> <span class="keyword">self</span>.read(std::forward&lt;decltype(reqs)&gt;(reqs), std::forward&lt;decltype(d)&gt;(d));</div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="ab993693c98cdb52e2d611f8f9e24e4e2"></a>
@@ -1807,7 +1807,7 @@ For portability, you can only assume that barriers write order for a single hand
<p>Create a file handle creating the named file on some path which the OS declares to be suitable for temporary files. Most OSs are very lazy about flushing changes made to these temporary files. Note the default flags are to have the newly created file deleted on first handle close. Note also that an empty name is equivalent to calling <code>random_file(path_discovery::storage_backed_temporary_files_directory())</code> and the creation parameter is ignored.</p>
<dl class="section note"><dt>Note</dt><dd>If the temporary file you are creating is not going to have its path sent to another process for usage, this is the WRONG function to use. Use <code>temp_inode()</code> instead, it is far more secure.</dd></dl>
<dl class="section user"><dt>Errors returnable</dt><dd>Any of the values POSIX open() or CreateFile() can return. </dd></dl>
-<div class="fragment"><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160;{</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacellfio__v2__xxx.html#a70d9ef3b988a880d171015b754bb7b27">file_handle::temp_file</a>(std::forward&lt;decltype(name)&gt;(name), std::forward&lt;decltype(_mode)&gt;(_mode), std::forward&lt;decltype(_creation)&gt;(_creation), std::forward&lt;decltype(_caching)&gt;(_caching), std::forward&lt;decltype(flags)&gt;(flags));</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160;}</div><div class="ttc" id="namespacellfio__v2__xxx_html_a70d9ef3b988a880d171015b754bb7b27"><div class="ttname"><a href="namespacellfio__v2__xxx.html#a70d9ef3b988a880d171015b754bb7b27">llfio_v2_xxx::temp_file</a></div><div class="ttdeci">result&lt; file_handle &gt; temp_file(file_handle::path_view_type name=file_handle::path_view_type(), file_handle::mode _mode=file_handle::mode::write, file_handle::creation _creation=file_handle::creation::if_needed, file_handle::caching _caching=file_handle::caching::temporary, file_handle::flag flags=file_handle::flag::unlink_on_first_close) noexcept</div><div class="ttdef"><b>Definition:</b> file_handle.hpp:349</div></div>
+<div class="fragment"><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160;{</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacellfio__v2__xxx.html#a70d9ef3b988a880d171015b754bb7b27">file_handle::temp_file</a>(std::forward&lt;decltype(name)&gt;(name), std::forward&lt;decltype(_mode)&gt;(_mode), std::forward&lt;decltype(_creation)&gt;(_creation), std::forward&lt;decltype(_caching)&gt;(_caching), std::forward&lt;decltype(flags)&gt;(flags));</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160;}</div><div class="ttc" id="namespacellfio__v2__xxx_html_a70d9ef3b988a880d171015b754bb7b27"><div class="ttname"><a href="namespacellfio__v2__xxx.html#a70d9ef3b988a880d171015b754bb7b27">llfio_v2_xxx::temp_file</a></div><div class="ttdeci">result&lt; file_handle &gt; temp_file(file_handle::path_view_type name=file_handle::path_view_type(), file_handle::mode _mode=file_handle::mode::write, file_handle::creation _creation=file_handle::creation::if_needed, file_handle::caching _caching=file_handle::caching::temporary, file_handle::flag flags=file_handle::flag::unlink_on_first_close) noexcept</div><div class="ttdef"><b>Definition:</b> file_handle.hpp:365</div></div>
</div><!-- fragment -->
</div>
</div>
@@ -1852,7 +1852,7 @@ For portability, you can only assume that barriers write order for a single hand
</div><div class="memdoc">
<p><em>Securely</em> create a file handle creating a temporary anonymous inode in the filesystem referred to by <em>dirpath</em>. The inode created has no name nor accessible path on the filing system and ceases to exist as soon as the last handle is closed, making it ideal for use as a temporary file where other processes do not need to have access to its contents via some path on the filing system (a classic use case is for backing shared memory maps).</p>
<dl class="section user"><dt>Errors returnable</dt><dd>Any of the values POSIX open() or CreateFile() can return. </dd></dl>
-<div class="fragment"><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160;{</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacellfio__v2__xxx.html#ac8d9dc908fe39f9c896e99f6b7a39d81">file_handle::temp_inode</a>(std::forward&lt;decltype(dirh)&gt;(dirh), std::forward&lt;decltype(_mode)&gt;(_mode), std::forward&lt;decltype(flags)&gt;(flags));</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160;}</div><div class="ttc" id="namespacellfio__v2__xxx_html_ac8d9dc908fe39f9c896e99f6b7a39d81"><div class="ttname"><a href="namespacellfio__v2__xxx.html#ac8d9dc908fe39f9c896e99f6b7a39d81">llfio_v2_xxx::temp_inode</a></div><div class="ttdeci">result&lt; file_handle &gt; temp_inode(const path_handle &amp;dirh=path_discovery::storage_backed_temporary_files_directory(), file_handle::mode _mode=file_handle::mode::write, file_handle::flag flags=file_handle::flag::none) noexcept</div><div class="ttdef"><b>Definition:</b> file_handle.hpp:364</div></div>
+<div class="fragment"><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160;{</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacellfio__v2__xxx.html#ac8d9dc908fe39f9c896e99f6b7a39d81">file_handle::temp_inode</a>(std::forward&lt;decltype(dirh)&gt;(dirh), std::forward&lt;decltype(_mode)&gt;(_mode), std::forward&lt;decltype(flags)&gt;(flags));</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160;}</div><div class="ttc" id="namespacellfio__v2__xxx_html_ac8d9dc908fe39f9c896e99f6b7a39d81"><div class="ttname"><a href="namespacellfio__v2__xxx.html#ac8d9dc908fe39f9c896e99f6b7a39d81">llfio_v2_xxx::temp_inode</a></div><div class="ttdeci">result&lt; file_handle &gt; temp_inode(const path_handle &amp;dirh=path_discovery::storage_backed_temporary_files_directory(), file_handle::mode _mode=file_handle::mode::write, file_handle::flag flags=file_handle::flag::none) noexcept</div><div class="ttdef"><b>Definition:</b> file_handle.hpp:380</div></div>
</div><!-- fragment -->
</div>
</div>
@@ -1899,7 +1899,7 @@ For portability, you can only assume that barriers write order for a single hand
</dd>
</dl>
<dl class="section user"><dt>Errors returnable</dt><dd>Any of the values POSIX ftruncate() or SetFileInformationByHandle() can return. </dd></dl>
-<div class="fragment"><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160;{</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; <span class="keywordflow">return</span> <span class="keyword">self</span>.truncate(std::forward&lt;decltype(newsize)&gt;(newsize));</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160;}</div></div><!-- fragment -->
+<div class="fragment"><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160;{</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160; <span class="keywordflow">return</span> <span class="keyword">self</span>.truncate(std::forward&lt;decltype(newsize)&gt;(newsize));</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="aa6b0c71dfe04ceae64818d4c91d05537"></a>
@@ -2101,7 +2101,7 @@ For portability, you can only assume that barriers write order for a single hand
</dl>
<dl class="section user"><dt>Errors returnable</dt><dd>Any of the values POSIX write() can return, <code>errc::timed_out</code>, <code>errc::operation_canceled</code>. <code>errc::not_supported</code> may be returned if deadline i/o is not possible with this particular handle configuration (e.g. writing to regular files on POSIX or writing to a non-overlapped HANDLE on Windows). </dd></dl>
<dl class="section user"><dt>Memory Allocations</dt><dd>The default synchronous implementation in file_handle performs no memory allocation. The asynchronous implementation in async_file_handle performs one calloc and one free. </dd></dl>
-<div class="fragment"><div class="line"><a name="l00600"></a><span class="lineno"> 600</span>&#160;{</div><div class="line"><a name="l00601"></a><span class="lineno"> 601</span>&#160; <span class="keywordflow">return</span> <span class="keyword">self</span>.write(std::forward&lt;decltype(reqs)&gt;(reqs), std::forward&lt;decltype(d)&gt;(d));</div><div class="line"><a name="l00602"></a><span class="lineno"> 602</span>&#160;}</div></div><!-- fragment -->
+<div class="fragment"><div class="line"><a name="l00581"></a><span class="lineno"> 581</span>&#160;{</div><div class="line"><a name="l00582"></a><span class="lineno"> 582</span>&#160; <span class="keywordflow">return</span> <span class="keyword">self</span>.write(std::forward&lt;decltype(reqs)&gt;(reqs), std::forward&lt;decltype(d)&gt;(d));</div><div class="line"><a name="l00583"></a><span class="lineno"> 583</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="a5ea3d93e8b2c7f6e3fca7a9cde734312"></a>
@@ -2150,7 +2150,7 @@ For portability, you can only assume that barriers write order for a single hand
</table>
</div><div class="memdoc">
<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
-<div class="fragment"><div class="line"><a name="l00605"></a><span class="lineno"> 605</span>&#160;{</div><div class="line"><a name="l00606"></a><span class="lineno"> 606</span>&#160; <span class="keywordflow">return</span> <span class="keyword">self</span>.write(std::forward&lt;decltype(offset)&gt;(offset), std::forward&lt;decltype(lst)&gt;(lst), std::forward&lt;decltype(d)&gt;(d));</div><div class="line"><a name="l00607"></a><span class="lineno"> 607</span>&#160;}</div></div><!-- fragment -->
+<div class="fragment"><div class="line"><a name="l00586"></a><span class="lineno"> 586</span>&#160;{</div><div class="line"><a name="l00587"></a><span class="lineno"> 587</span>&#160; <span class="keywordflow">return</span> <span class="keyword">self</span>.write(std::forward&lt;decltype(offset)&gt;(offset), std::forward&lt;decltype(lst)&gt;(lst), std::forward&lt;decltype(d)&gt;(d));</div><div class="line"><a name="l00588"></a><span class="lineno"> 588</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="a681ed7e98ac17e6bb336b9287365141b"></a>
@@ -2268,7 +2268,7 @@ For portability, you can only assume that barriers write order for a single hand
</dl>
<dl class="section user"><dt>Errors returnable</dt><dd>Any of the values POSIX write() can return, <code>errc::timed_out</code>, <code>errc::operation_canceled</code>. <code>errc::not_supported</code> may be returned if deadline i/o is not possible with this particular handle configuration (e.g. writing to regular files on POSIX or writing to a non-overlapped HANDLE on Windows). </dd></dl>
<dl class="section user"><dt>Memory Allocations</dt><dd>The default synchronous implementation in file_handle performs no memory allocation. The asynchronous implementation in async_file_handle may perform one calloc and one free. </dd></dl>
-<div class="fragment"><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160;{</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160; <span class="keywordflow">return</span> <span class="keyword">self</span>.zero(std::forward&lt;decltype(offset)&gt;(offset), std::forward&lt;decltype(bytes)&gt;(bytes), std::forward&lt;decltype(d)&gt;(d));</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160;}</div></div><!-- fragment -->
+<div class="fragment"><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160;{</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160; <span class="keywordflow">return</span> <span class="keyword">self</span>.zero(std::forward&lt;decltype(offset)&gt;(offset), std::forward&lt;decltype(bytes)&gt;(bytes), std::forward&lt;decltype(d)&gt;(d));</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
</div><!-- contents -->
diff --git a/namespacemembers.html b/namespacemembers.html
index eba2544e..51f359c1 100644
--- a/namespacemembers.html
+++ b/namespacemembers.html
@@ -245,7 +245,7 @@ $(document).ready(function(){initNavTree('namespacemembers.html','');});
: <a class="el" href="namespacellfio__v2__xxx_1_1utils.html#a6a29cf29a4b097411f6c1e5274bfb417">llfio_v2_xxx::utils</a>
</li>
<li>read()
-: <a class="el" href="namespacellfio__v2__xxx.html#a225e15680392dfa9e1dda42afcc09672">llfio_v2_xxx</a>
+: <a class="el" href="namespacellfio__v2__xxx.html#af678f58d20e1f0962ff0744150342683">llfio_v2_xxx</a>
</li>
<li>relink()
: <a class="el" href="namespacellfio__v2__xxx.html#a60fa5c64c83ce05c8287c5379d082e49">llfio_v2_xxx</a>
diff --git a/namespacemembers_func.html b/namespacemembers_func.html
index 41485f7f..52b4dd20 100644
--- a/namespacemembers_func.html
+++ b/namespacemembers_func.html
@@ -242,7 +242,7 @@ $(document).ready(function(){initNavTree('namespacemembers_func.html','');});
: <a class="el" href="namespacellfio__v2__xxx_1_1utils.html#a6a29cf29a4b097411f6c1e5274bfb417">llfio_v2_xxx::utils</a>
</li>
<li>read()
-: <a class="el" href="namespacellfio__v2__xxx.html#a225e15680392dfa9e1dda42afcc09672">llfio_v2_xxx</a>
+: <a class="el" href="namespacellfio__v2__xxx.html#af678f58d20e1f0962ff0744150342683">llfio_v2_xxx</a>
</li>
<li>relink()
: <a class="el" href="namespacellfio__v2__xxx.html#a60fa5c64c83ce05c8287c5379d082e49">llfio_v2_xxx</a>
diff --git a/navtreedata.js b/navtreedata.js
index 35421f85..e14e5921 100644
--- a/navtreedata.js
+++ b/navtreedata.js
@@ -41,12 +41,12 @@ var NAVTREEINDEX =
"annotated.html",
"classllfio__v2__xxx_1_1algorithm_1_1shared__fs__mutex_1_1shared__fs__mutex_1_1entities__guard.html#a573150086df5bb6db571443b98f08776",
"classllfio__v2__xxx_1_1file__handle.html#af0b8ea283f0b1c107173ad5768e5301c",
-"classllfio__v2__xxx_1_1map__handle.html#a5929f46f42112bd805ab5001bfbf9d2aa07122ea63cdc5b2c07e764d95a816d3d",
-"classllfio__v2__xxx_1_1path__handle.html#ad011e3d216b5194b92f90502d9bb6b99",
-"config_8hpp.html#a02c02d05e24d34c25324c192df11c0b4",
-"storage__profile_8hpp.html#a62ea39b41b0ae8ffd6e78db0ff9a819e",
-"structllfio__v2__xxx_1_1construct_3_01path__handle_01_4.html",
-"structllfio__v2__xxx_1_1statfs__t.html#aa8b39815508e9252da673c7e18666cd7"
+"classllfio__v2__xxx_1_1map__handle.html#a5929f46f42112bd805ab5001bfbf9d2aa334c4a4c42fdb79d7ebc3e73b517e6f8",
+"classllfio__v2__xxx_1_1path__handle.html#ad397dbfc5cd5eb53f203a2c1c9540a2e",
+"config_8hpp.html#a163aaaaa4d238aebd5fb9acec82006dd",
+"storage__profile_8hpp.html#a789770254f4c4170e6bbb8dea9f7eec6",
+"structllfio__v2__xxx_1_1construct_3_01path__handle_01_4.html#adb05fe97d8584c32fd91f6c7ae2b1f82",
+"structllfio__v2__xxx_1_1statfs__t.html#ac5414fc2f10e4d6f78617666a0353072"
];
var SYNCONMSG = 'click to disable panel synchronisation';
diff --git a/navtreeindex1.js b/navtreeindex1.js
index f24f67f8..012656be 100644
--- a/navtreeindex1.js
+++ b/navtreeindex1.js
@@ -201,11 +201,12 @@ var NAVTREEINDEX1 =
"classllfio__v2__xxx_1_1file__handle.html#a5c7f6a0a8ffdea22763c75a9319ba0c2":[3,0,0,18,46],
"classllfio__v2__xxx_1_1file__handle.html#a5eca081e5b1eb5c00ad46136911bb7f4":[3,0,0,18,22],
"classllfio__v2__xxx_1_1file__handle.html#a5f710a7dc78385ffeea9d0619243dd8f":[3,0,0,18,15],
-"classllfio__v2__xxx_1_1file__handle.html#a5f7485307a0704aa1680e5785be2035d":[3,0,0,18,58],
+"classllfio__v2__xxx_1_1file__handle.html#a5f7485307a0704aa1680e5785be2035d":[3,0,0,18,59],
"classllfio__v2__xxx_1_1file__handle.html#a664770d5a3dc9db34d177622cb494779":[3,0,0,18,19],
"classllfio__v2__xxx_1_1file__handle.html#a665ddf5aa47e1d8a94580570a0457c8a":[3,0,0,18,32],
"classllfio__v2__xxx_1_1file__handle.html#a68412ff0d490ac8d545ec2766d2da677":[3,0,0,18,13],
"classllfio__v2__xxx_1_1file__handle.html#a695ce0ed1606d540cfa452790ea71632":[3,0,0,18,44],
+"classllfio__v2__xxx_1_1file__handle.html#a6e46c6ea379152eb559ab15990f7c467":[3,0,0,18,58],
"classllfio__v2__xxx_1_1file__handle.html#a7126a726b2a06e4c1eca1a94c41163ff":[3,0,0,18,25],
"classllfio__v2__xxx_1_1file__handle.html#a72f5dad56f8bb4544d36637892f74ae7":[3,0,0,18,21],
"classllfio__v2__xxx_1_1file__handle.html#a751e912d8dab755ea969a418c1d544eb":[3,0,0,18,62],
@@ -228,7 +229,6 @@ var NAVTREEINDEX1 =
"classllfio__v2__xxx_1_1file__handle.html#a9cb49b1828d6a0cf4a7ea6668c38ca42":[3,0,0,18,20],
"classllfio__v2__xxx_1_1file__handle.html#aa2c2b2847fd039b9c255633e6031817a":[3,0,0,18,81],
"classllfio__v2__xxx_1_1file__handle.html#aa3ec366f663f85fb4d679542b8c1b41a":[3,0,0,18,29],
-"classllfio__v2__xxx_1_1file__handle.html#aac0369e8025ae1320e7d607922f61b48":[3,0,0,18,59],
"classllfio__v2__xxx_1_1file__handle.html#aad6465d30ee438b860ccc59c0e0fc4dc":[3,0,0,18,66],
"classllfio__v2__xxx_1_1file__handle.html#ab500784aa806dc7c2d90028d2f72de57":[3,0,0,18,75],
"classllfio__v2__xxx_1_1file__handle.html#ab9983ea970040b905a4eb6180595e2e6":[3,0,0,18,28],
diff --git a/navtreeindex2.js b/navtreeindex2.js
index 3a24196a..1622a639 100644
--- a/navtreeindex2.js
+++ b/navtreeindex2.js
@@ -105,10 +105,10 @@ var NAVTREEINDEX2 =
"classllfio__v2__xxx_1_1io__handle.html#a00a85eec5a41f7edb2c574d40cf04535":[3,0,0,21,27],
"classllfio__v2__xxx_1_1io__handle.html#a013936bc1254b1a47567fe29698d1b1c":[3,0,0,21,28],
"classllfio__v2__xxx_1_1io__handle.html#a018de0f7c177e3cff239016d14582e9a":[3,0,0,21,31],
-"classllfio__v2__xxx_1_1io__handle.html#a101620e9fff0c0e8c346af0e9de58b6a":[3,0,0,21,53],
+"classllfio__v2__xxx_1_1io__handle.html#a101620e9fff0c0e8c346af0e9de58b6a":[3,0,0,21,52],
"classllfio__v2__xxx_1_1io__handle.html#a198e1c294966a28919d2f0698e3608b8":[3,0,0,21,44],
-"classllfio__v2__xxx_1_1io__handle.html#a1d273e38c061eb11f5012f624e9a202e":[3,0,0,21,51],
-"classllfio__v2__xxx_1_1io__handle.html#a1d6911771ac743fd9d64063c12429deb":[3,0,0,21,61],
+"classllfio__v2__xxx_1_1io__handle.html#a1d273e38c061eb11f5012f624e9a202e":[3,0,0,21,50],
+"classllfio__v2__xxx_1_1io__handle.html#a1d6911771ac743fd9d64063c12429deb":[3,0,0,21,60],
"classllfio__v2__xxx_1_1io__handle.html#a211fee447a47bdeb5424a2a5ae1de852":[3,0,0,21,40],
"classllfio__v2__xxx_1_1io__handle.html#a29cc9f2525f78dd73f8402cb59d97212":[3,0,0,21,42],
"classllfio__v2__xxx_1_1io__handle.html#a2dba93b4357324599fe4b4375cdf9737":[3,0,0,21,20],
@@ -116,7 +116,7 @@ var NAVTREEINDEX2 =
"classllfio__v2__xxx_1_1io__handle.html#a369f8ec6a682030f8e7f5749eb7bc77e":[3,0,0,21,43],
"classllfio__v2__xxx_1_1io__handle.html#a3d1224d5941b8c70761b2dcc2ba31217":[3,0,0,21,13],
"classllfio__v2__xxx_1_1io__handle.html#a4471012e7b85ac6dea1d0af43f1ee4e6":[3,0,0,21,22],
-"classllfio__v2__xxx_1_1io__handle.html#a4716696b8700953889006251e0678aa4":[3,0,0,21,54],
+"classllfio__v2__xxx_1_1io__handle.html#a4716696b8700953889006251e0678aa4":[3,0,0,21,53],
"classllfio__v2__xxx_1_1io__handle.html#a4ca48bdcd6d6bf8b41d0cebb304fe9ce":[3,0,0,21,30],
"classllfio__v2__xxx_1_1io__handle.html#a4fc8d70aa6805d7ea2ee9a48a19ce107":[3,0,0,21,9],
"classllfio__v2__xxx_1_1io__handle.html#a5422bf3cbcf7107722ed20df04ae8eb0":[3,0,0,21,10],
@@ -143,12 +143,12 @@ var NAVTREEINDEX2 =
"classllfio__v2__xxx_1_1io__handle.html#a70374e65bae2e28bd94bffc0d73d1099":[3,0,0,21,12],
"classllfio__v2__xxx_1_1io__handle.html#a7117e0e4327c09103c1f27a9363c8b24":[3,0,0,21,16],
"classllfio__v2__xxx_1_1io__handle.html#a7126a726b2a06e4c1eca1a94c41163ff":[3,0,0,21,21],
-"classllfio__v2__xxx_1_1io__handle.html#a751e912d8dab755ea969a418c1d544eb":[3,0,0,21,52],
+"classllfio__v2__xxx_1_1io__handle.html#a751e912d8dab755ea969a418c1d544eb":[3,0,0,21,51],
"classllfio__v2__xxx_1_1io__handle.html#a7751fbb4b1aff527f469412ea33116ed":[3,0,0,21,35],
"classllfio__v2__xxx_1_1io__handle.html#a7e31726ff57b2eca62591209c17ad4a4":[3,0,0,21,48],
"classllfio__v2__xxx_1_1io__handle.html#a8036792f332459064172d7b0cfaee3cf":[3,0,0,21,23],
"classllfio__v2__xxx_1_1io__handle.html#a8085cb3b40982c6dbd874547c183fd5e":[3,0,0,21,32],
-"classllfio__v2__xxx_1_1io__handle.html#a83884eca7b4cd09125a5cf8a155e6052":[3,0,0,21,57],
+"classllfio__v2__xxx_1_1io__handle.html#a83884eca7b4cd09125a5cf8a155e6052":[3,0,0,21,56],
"classllfio__v2__xxx_1_1io__handle.html#a8896fe978137f142648901cdfe7ab71f":[3,0,0,21,6],
"classllfio__v2__xxx_1_1io__handle.html#a8f525d9665b524442b46cd55678817ed":[3,0,0,21,5],
"classllfio__v2__xxx_1_1io__handle.html#a90bf8668df002dac5a7d9397486b2946":[3,0,0,21,41],
@@ -156,22 +156,21 @@ var NAVTREEINDEX2 =
"classllfio__v2__xxx_1_1io__handle.html#a97e0884c27147b4929be98961b8e9254":[3,0,0,21,34],
"classllfio__v2__xxx_1_1io__handle.html#aa27be0c27aeb13dd6a9dfb22e190bed3":[3,0,0,21,17],
"classllfio__v2__xxx_1_1io__handle.html#aa3ec366f663f85fb4d679542b8c1b41a":[3,0,0,21,24],
-"classllfio__v2__xxx_1_1io__handle.html#aac0369e8025ae1320e7d607922f61b48":[3,0,0,21,50],
"classllfio__v2__xxx_1_1io__handle.html#ab4b195f6b8cee1ffd48e28545245c762":[3,0,0,21,15],
-"classllfio__v2__xxx_1_1io__handle.html#ab500784aa806dc7c2d90028d2f72de57":[3,0,0,21,58],
+"classllfio__v2__xxx_1_1io__handle.html#ab500784aa806dc7c2d90028d2f72de57":[3,0,0,21,57],
"classllfio__v2__xxx_1_1io__handle.html#ac3aa3dc009822c0e437f317864534feb":[3,0,0,21,29],
-"classllfio__v2__xxx_1_1io__handle.html#ad720c4c7f350fe06291534d1cbf2feb5":[3,0,0,21,56],
-"classllfio__v2__xxx_1_1io__handle.html#ad758cf1eb2e0b4c63583eab05e7f6820":[3,0,0,21,60],
+"classllfio__v2__xxx_1_1io__handle.html#ad720c4c7f350fe06291534d1cbf2feb5":[3,0,0,21,55],
+"classllfio__v2__xxx_1_1io__handle.html#ad758cf1eb2e0b4c63583eab05e7f6820":[3,0,0,21,59],
"classllfio__v2__xxx_1_1io__handle.html#ade0d0e05b844e77f425669da87bf48bb":[3,0,0,21,33],
"classllfio__v2__xxx_1_1io__handle.html#ade38a6d55a4eda3c6d5e196683b129a7":[3,0,0,21,45],
"classllfio__v2__xxx_1_1io__handle.html#ae0d5de068f71628e9491c5669f89dca0":[3,0,0,21,38],
-"classllfio__v2__xxx_1_1io__handle.html#ae1abb705dbe9890e103365bf7c61521e":[3,0,0,21,55],
+"classllfio__v2__xxx_1_1io__handle.html#ae1abb705dbe9890e103365bf7c61521e":[3,0,0,21,54],
"classllfio__v2__xxx_1_1io__handle.html#ae2956bce00d899553c80f9de7f585984":[3,0,0,21,11],
"classllfio__v2__xxx_1_1io__handle.html#ae91c8db1fca923c7743b257c125c77f7":[3,0,0,21,19],
"classllfio__v2__xxx_1_1io__handle.html#aeb43111b811438b9193f4561e89a0a5b":[3,0,0,21,18],
"classllfio__v2__xxx_1_1io__handle.html#aeea4389189021b94dde6d8f2c3ccc5b3":[3,0,0,21,25],
"classllfio__v2__xxx_1_1io__handle.html#af74f2ad7f0cffb4161d0bd137710436c":[3,0,0,21,8],
-"classllfio__v2__xxx_1_1io__handle.html#affb091ded80ffde7c0c3854e2abc52fd":[3,0,0,21,59],
+"classllfio__v2__xxx_1_1io__handle.html#affb091ded80ffde7c0c3854e2abc52fd":[3,0,0,21,58],
"classllfio__v2__xxx_1_1io__handle_1_1extent__guard.html":[3,0,0,21,2],
"classllfio__v2__xxx_1_1io__handle_1_1extent__guard.html#a1cba060d80264049627a0a074cc6bcb3":[3,0,0,21,2,8],
"classllfio__v2__xxx_1_1io__handle_1_1extent__guard.html#a1f1bf0b1f64fe65785a5e4cacebc7b5f":[3,0,0,21,2,7],
@@ -225,17 +224,17 @@ var NAVTREEINDEX2 =
"classllfio__v2__xxx_1_1map__handle.html#a013936bc1254b1a47567fe29698d1b1c":[3,0,0,24,32],
"classllfio__v2__xxx_1_1map__handle.html#a018de0f7c177e3cff239016d14582e9a":[3,0,0,24,35],
"classllfio__v2__xxx_1_1map__handle.html#a01dcb36c0a955692e016a90656a6ceb2":[3,0,0,24,55],
-"classllfio__v2__xxx_1_1map__handle.html#a04d5b12318493f32de67854714001ab2":[3,0,0,24,75],
-"classllfio__v2__xxx_1_1map__handle.html#a06cfd3521ff08782a848821951510f11":[3,0,0,24,60],
-"classllfio__v2__xxx_1_1map__handle.html#a073cdca57e3e3718d2eb285be51d5c92":[3,0,0,24,59],
-"classllfio__v2__xxx_1_1map__handle.html#a0b6166d8c12c8b8430d6204dc701bf25":[3,0,0,24,83],
-"classllfio__v2__xxx_1_1map__handle.html#a0b87515430eb0220950b4c17a3da745f":[3,0,0,24,74],
-"classllfio__v2__xxx_1_1map__handle.html#a101620e9fff0c0e8c346af0e9de58b6a":[3,0,0,24,63],
-"classllfio__v2__xxx_1_1map__handle.html#a173539843aebd387bb8ca06246067ead":[3,0,0,24,62],
+"classllfio__v2__xxx_1_1map__handle.html#a04d5b12318493f32de67854714001ab2":[3,0,0,24,74],
+"classllfio__v2__xxx_1_1map__handle.html#a06cfd3521ff08782a848821951510f11":[3,0,0,24,59],
+"classllfio__v2__xxx_1_1map__handle.html#a073cdca57e3e3718d2eb285be51d5c92":[3,0,0,24,58],
+"classllfio__v2__xxx_1_1map__handle.html#a0b6166d8c12c8b8430d6204dc701bf25":[3,0,0,24,82],
+"classllfio__v2__xxx_1_1map__handle.html#a0b87515430eb0220950b4c17a3da745f":[3,0,0,24,73],
+"classllfio__v2__xxx_1_1map__handle.html#a101620e9fff0c0e8c346af0e9de58b6a":[3,0,0,24,62],
+"classllfio__v2__xxx_1_1map__handle.html#a173539843aebd387bb8ca06246067ead":[3,0,0,24,61],
"classllfio__v2__xxx_1_1map__handle.html#a198e1c294966a28919d2f0698e3608b8":[3,0,0,24,50],
-"classllfio__v2__xxx_1_1map__handle.html#a1d6911771ac743fd9d64063c12429deb":[3,0,0,24,85],
-"classllfio__v2__xxx_1_1map__handle.html#a1fb1c874bdab5540c3310e468e41325a":[3,0,0,24,67],
-"classllfio__v2__xxx_1_1map__handle.html#a2049c6f936df05dd539919f947355506":[3,0,0,24,66],
+"classllfio__v2__xxx_1_1map__handle.html#a1d6911771ac743fd9d64063c12429deb":[3,0,0,24,84],
+"classllfio__v2__xxx_1_1map__handle.html#a1fb1c874bdab5540c3310e468e41325a":[3,0,0,24,66],
+"classllfio__v2__xxx_1_1map__handle.html#a2049c6f936df05dd539919f947355506":[3,0,0,24,65],
"classllfio__v2__xxx_1_1map__handle.html#a211fee447a47bdeb5424a2a5ae1de852":[3,0,0,24,45],
"classllfio__v2__xxx_1_1map__handle.html#a22cfe5a7c6868d0952fde18f62f71195":[3,0,0,24,54],
"classllfio__v2__xxx_1_1map__handle.html#a29cc9f2525f78dd73f8402cb59d97212":[3,0,0,24,48],
@@ -244,10 +243,11 @@ var NAVTREEINDEX2 =
"classllfio__v2__xxx_1_1map__handle.html#a3efb39f1b54a7c156a3e0ee2a953712d":[3,0,0,24,31],
"classllfio__v2__xxx_1_1map__handle.html#a433596cf8fbaf7fa81c6ff8807c18b4e":[3,0,0,24,16],
"classllfio__v2__xxx_1_1map__handle.html#a4471012e7b85ac6dea1d0af43f1ee4e6":[3,0,0,24,21],
-"classllfio__v2__xxx_1_1map__handle.html#a4716696b8700953889006251e0678aa4":[3,0,0,24,65],
-"classllfio__v2__xxx_1_1map__handle.html#a486f8bbb3ea986b6f2e877d9ea5ba81d":[3,0,0,24,84],
+"classllfio__v2__xxx_1_1map__handle.html#a4716696b8700953889006251e0678aa4":[3,0,0,24,64],
+"classllfio__v2__xxx_1_1map__handle.html#a486f8bbb3ea986b6f2e877d9ea5ba81d":[3,0,0,24,83],
"classllfio__v2__xxx_1_1map__handle.html#a4ca48bdcd6d6bf8b41d0cebb304fe9ce":[3,0,0,24,34],
"classllfio__v2__xxx_1_1map__handle.html#a4e59feb68c5df85b377be5dd3ee563ab":[3,0,0,24,2],
"classllfio__v2__xxx_1_1map__handle.html#a518ff43602ac8e32ae48a198d0de1d75":[3,0,0,24,30],
-"classllfio__v2__xxx_1_1map__handle.html#a5929f46f42112bd805ab5001bfbf9d2a":[3,0,0,24,13]
+"classllfio__v2__xxx_1_1map__handle.html#a5929f46f42112bd805ab5001bfbf9d2a":[3,0,0,24,13],
+"classllfio__v2__xxx_1_1map__handle.html#a5929f46f42112bd805ab5001bfbf9d2aa07122ea63cdc5b2c07e764d95a816d3d":[3,0,0,24,13,12]
};
diff --git a/navtreeindex3.js b/navtreeindex3.js
index 50c86a14..28f352ba 100644
--- a/navtreeindex3.js
+++ b/navtreeindex3.js
@@ -1,6 +1,5 @@
var NAVTREEINDEX3 =
{
-"classllfio__v2__xxx_1_1map__handle.html#a5929f46f42112bd805ab5001bfbf9d2aa07122ea63cdc5b2c07e764d95a816d3d":[3,0,0,24,13,12],
"classllfio__v2__xxx_1_1map__handle.html#a5929f46f42112bd805ab5001bfbf9d2aa334c4a4c42fdb79d7ebc3e73b517e6f8":[3,0,0,24,13,1],
"classllfio__v2__xxx_1_1map__handle.html#a5929f46f42112bd805ab5001bfbf9d2aa334c4a4c42fdb79d7ebc3e73b517e6f8":[3,0,0,24,13,2],
"classllfio__v2__xxx_1_1map__handle.html#a5929f46f42112bd805ab5001bfbf9d2aa4557d4caa81561875089ae5f819fb2c3":[3,0,0,24,13,6],
@@ -15,25 +14,25 @@ var NAVTREEINDEX3 =
"classllfio__v2__xxx_1_1map__handle.html#a5929f46f42112bd805ab5001bfbf9d2aaf131856fed08b53ec642fbdc6d063de0":[3,0,0,24,13,7],
"classllfio__v2__xxx_1_1map__handle.html#a5c7f6a0a8ffdea22763c75a9319ba0c2":[3,0,0,24,44],
"classllfio__v2__xxx_1_1map__handle.html#a5f7485307a0704aa1680e5785be2035d":[3,0,0,24,57],
-"classllfio__v2__xxx_1_1map__handle.html#a6508b68a3a2748d16ba58c5052fb1149":[3,0,0,24,76],
-"classllfio__v2__xxx_1_1map__handle.html#a67fb29deeca27a58ca3d78c792ca5435":[3,0,0,24,80],
-"classllfio__v2__xxx_1_1map__handle.html#a68216d4c582fc817fa86229dce397146":[3,0,0,24,78],
+"classllfio__v2__xxx_1_1map__handle.html#a6508b68a3a2748d16ba58c5052fb1149":[3,0,0,24,75],
+"classllfio__v2__xxx_1_1map__handle.html#a67fb29deeca27a58ca3d78c792ca5435":[3,0,0,24,79],
+"classllfio__v2__xxx_1_1map__handle.html#a68216d4c582fc817fa86229dce397146":[3,0,0,24,77],
"classllfio__v2__xxx_1_1map__handle.html#a695ce0ed1606d540cfa452790ea71632":[3,0,0,24,42],
"classllfio__v2__xxx_1_1map__handle.html#a70374e65bae2e28bd94bffc0d73d1099":[3,0,0,24,11],
"classllfio__v2__xxx_1_1map__handle.html#a7126a726b2a06e4c1eca1a94c41163ff":[3,0,0,24,20],
"classllfio__v2__xxx_1_1map__handle.html#a7224b586e457183ebcb0a694e282d0fc":[3,0,0,24,56],
"classllfio__v2__xxx_1_1map__handle.html#a7456b95e191ec373af61af6541dd4737":[3,0,0,24,19],
-"classllfio__v2__xxx_1_1map__handle.html#a751e912d8dab755ea969a418c1d544eb":[3,0,0,24,61],
+"classllfio__v2__xxx_1_1map__handle.html#a751e912d8dab755ea969a418c1d544eb":[3,0,0,24,60],
"classllfio__v2__xxx_1_1map__handle.html#a77452c0f4be2e1c9cdda5a59512b1887":[3,0,0,24,36],
"classllfio__v2__xxx_1_1map__handle.html#a7751fbb4b1aff527f469412ea33116ed":[3,0,0,24,40],
"classllfio__v2__xxx_1_1map__handle.html#a776d7d6acd8d80b54c086eafbc1d57c9":[3,0,0,24,4],
-"classllfio__v2__xxx_1_1map__handle.html#a7a27e949d3333a75e96f5d979e2d6bbf":[3,0,0,24,64],
+"classllfio__v2__xxx_1_1map__handle.html#a7a27e949d3333a75e96f5d979e2d6bbf":[3,0,0,24,63],
"classllfio__v2__xxx_1_1map__handle.html#a8036792f332459064172d7b0cfaee3cf":[3,0,0,24,22],
"classllfio__v2__xxx_1_1map__handle.html#a8085cb3b40982c6dbd874547c183fd5e":[3,0,0,24,37],
"classllfio__v2__xxx_1_1map__handle.html#a80e2ea0a3d7289b55911375fe44cf1fd":[3,0,0,24,1],
-"classllfio__v2__xxx_1_1map__handle.html#a83884eca7b4cd09125a5cf8a155e6052":[3,0,0,24,71],
+"classllfio__v2__xxx_1_1map__handle.html#a83884eca7b4cd09125a5cf8a155e6052":[3,0,0,24,70],
"classllfio__v2__xxx_1_1map__handle.html#a85903a9f61228497b09bf5071ffc255b":[3,0,0,24,17],
-"classllfio__v2__xxx_1_1map__handle.html#a90afda5433656ed35a5814e048cc1f1b":[3,0,0,24,73],
+"classllfio__v2__xxx_1_1map__handle.html#a90afda5433656ed35a5814e048cc1f1b":[3,0,0,24,72],
"classllfio__v2__xxx_1_1map__handle.html#a90bf8668df002dac5a7d9397486b2946":[3,0,0,24,46],
"classllfio__v2__xxx_1_1map__handle.html#a936a1df99ed13959c716f434fec642a0":[3,0,0,24,10],
"classllfio__v2__xxx_1_1map__handle.html#a942b0d276c9f20fe41baab679b88fe72":[3,0,0,24,52],
@@ -41,35 +40,34 @@ var NAVTREEINDEX3 =
"classllfio__v2__xxx_1_1map__handle.html#a9b3f12d17a9fc0cfbe15d389f896caa7":[3,0,0,24,28],
"classllfio__v2__xxx_1_1map__handle.html#a9b65f62129418d02a925e6ef56220198":[3,0,0,24,53],
"classllfio__v2__xxx_1_1map__handle.html#a9c69e0d3f3fa2c213bdd4deabc6c2279":[3,0,0,24,15],
-"classllfio__v2__xxx_1_1map__handle.html#a9ff113f78e71337f78c9139ca202fe6a":[3,0,0,24,81],
+"classllfio__v2__xxx_1_1map__handle.html#a9ff113f78e71337f78c9139ca202fe6a":[3,0,0,24,80],
"classllfio__v2__xxx_1_1map__handle.html#aa3225a2ee86b12e6099d15a2a87b99b4":[3,0,0,24,18],
"classllfio__v2__xxx_1_1map__handle.html#aa3ec366f663f85fb4d679542b8c1b41a":[3,0,0,24,23],
"classllfio__v2__xxx_1_1map__handle.html#aa954d9b40b2685bbc8a229e3907c297d":[3,0,0,24,14],
"classllfio__v2__xxx_1_1map__handle.html#aaa8a74dfd708c27f547a6ebd6298d043":[3,0,0,24,7],
-"classllfio__v2__xxx_1_1map__handle.html#aac0369e8025ae1320e7d607922f61b48":[3,0,0,24,58],
"classllfio__v2__xxx_1_1map__handle.html#ab352528186444502bbd2784518e61548":[3,0,0,24,6],
"classllfio__v2__xxx_1_1map__handle.html#ab3eba2db55f7fd082a395ea225826ba0":[3,0,0,24,3],
-"classllfio__v2__xxx_1_1map__handle.html#ab500784aa806dc7c2d90028d2f72de57":[3,0,0,24,72],
+"classllfio__v2__xxx_1_1map__handle.html#ab500784aa806dc7c2d90028d2f72de57":[3,0,0,24,71],
"classllfio__v2__xxx_1_1map__handle.html#ab6704788ecc652589c3e155f47b40a5e":[3,0,0,24,27],
"classllfio__v2__xxx_1_1map__handle.html#ab814c4ba9fb6486c21f701a00691df2f":[3,0,0,24,9],
"classllfio__v2__xxx_1_1map__handle.html#ab9bd6d309f13b72291b2bf7dd495cda4":[3,0,0,24,8],
"classllfio__v2__xxx_1_1map__handle.html#ab9fb41b19bd14bba06e3df8f41e9087d":[3,0,0,24,24],
"classllfio__v2__xxx_1_1map__handle.html#ac3aa3dc009822c0e437f317864534feb":[3,0,0,24,33],
-"classllfio__v2__xxx_1_1map__handle.html#ac7aeb0aa6182a22d0242340eb6d341b9":[3,0,0,24,70],
+"classllfio__v2__xxx_1_1map__handle.html#ac7aeb0aa6182a22d0242340eb6d341b9":[3,0,0,24,69],
"classllfio__v2__xxx_1_1map__handle.html#ac7d048f830c0b2563fb4b50eb0597152":[3,0,0,24,25],
"classllfio__v2__xxx_1_1map__handle.html#acf99226dfe0cb36b0650d71159a74631":[3,0,0,24,0],
"classllfio__v2__xxx_1_1map__handle.html#ad2fce2bd5cd3798196c0dcf87f569ef7":[3,0,0,24,47],
-"classllfio__v2__xxx_1_1map__handle.html#ad720c4c7f350fe06291534d1cbf2feb5":[3,0,0,24,69],
-"classllfio__v2__xxx_1_1map__handle.html#ad758cf1eb2e0b4c63583eab05e7f6820":[3,0,0,24,79],
+"classllfio__v2__xxx_1_1map__handle.html#ad720c4c7f350fe06291534d1cbf2feb5":[3,0,0,24,68],
+"classllfio__v2__xxx_1_1map__handle.html#ad758cf1eb2e0b4c63583eab05e7f6820":[3,0,0,24,78],
"classllfio__v2__xxx_1_1map__handle.html#addcc662f728bb854dc83d7fbbbef7f19":[3,0,0,24,12],
"classllfio__v2__xxx_1_1map__handle.html#ade0d0e05b844e77f425669da87bf48bb":[3,0,0,24,38],
"classllfio__v2__xxx_1_1map__handle.html#ade38a6d55a4eda3c6d5e196683b129a7":[3,0,0,24,51],
"classllfio__v2__xxx_1_1map__handle.html#ae0d5de068f71628e9491c5669f89dca0":[3,0,0,24,43],
-"classllfio__v2__xxx_1_1map__handle.html#ae1abb705dbe9890e103365bf7c61521e":[3,0,0,24,68],
-"classllfio__v2__xxx_1_1map__handle.html#ae44bc69b964c2140a3bab80dd8aed205":[3,0,0,24,82],
+"classllfio__v2__xxx_1_1map__handle.html#ae1abb705dbe9890e103365bf7c61521e":[3,0,0,24,67],
+"classllfio__v2__xxx_1_1map__handle.html#ae44bc69b964c2140a3bab80dd8aed205":[3,0,0,24,81],
"classllfio__v2__xxx_1_1map__handle.html#aeea4389189021b94dde6d8f2c3ccc5b3":[3,0,0,24,26],
"classllfio__v2__xxx_1_1map__handle.html#af00a09029160be2f81bb55958271dc7a":[3,0,0,24,5],
-"classllfio__v2__xxx_1_1map__handle.html#affb091ded80ffde7c0c3854e2abc52fd":[3,0,0,24,77],
+"classllfio__v2__xxx_1_1map__handle.html#affb091ded80ffde7c0c3854e2abc52fd":[3,0,0,24,76],
"classllfio__v2__xxx_1_1map__view.html":[3,0,0,25],
"classllfio__v2__xxx_1_1map__view.html#a22be05bfdf389ec2fe1e38364a709968":[3,0,0,25,1],
"classllfio__v2__xxx_1_1map__view.html#a8d8ce42d796c179afd1efbb7d65f3198":[3,0,0,25,5],
@@ -142,12 +140,13 @@ var NAVTREEINDEX3 =
"classllfio__v2__xxx_1_1mapped__file__handle.html#a5929f46f42112bd805ab5001bfbf9d2aae6fb35b3d125d5d76bbef95b1d804298":[3,0,0,27,17,0],
"classllfio__v2__xxx_1_1mapped__file__handle.html#a5929f46f42112bd805ab5001bfbf9d2aaf131856fed08b53ec642fbdc6d063de0":[3,0,0,27,17,7],
"classllfio__v2__xxx_1_1mapped__file__handle.html#a5c7f6a0a8ffdea22763c75a9319ba0c2":[3,0,0,27,50],
-"classllfio__v2__xxx_1_1mapped__file__handle.html#a5f7485307a0704aa1680e5785be2035d":[3,0,0,27,65],
+"classllfio__v2__xxx_1_1mapped__file__handle.html#a5f7485307a0704aa1680e5785be2035d":[3,0,0,27,66],
"classllfio__v2__xxx_1_1mapped__file__handle.html#a606d8adfa6139b48b0007b97dae5a303":[3,0,0,27,62],
"classllfio__v2__xxx_1_1mapped__file__handle.html#a609d84c0abc8efadb678237b48d1011b":[3,0,0,27,4],
"classllfio__v2__xxx_1_1mapped__file__handle.html#a60ebe6a1e7e0831c0c5d3bea9050cc96":[3,0,0,27,14],
"classllfio__v2__xxx_1_1mapped__file__handle.html#a695ce0ed1606d540cfa452790ea71632":[3,0,0,27,48],
"classllfio__v2__xxx_1_1mapped__file__handle.html#a6ce10c43cc6fd9fc8e1af6501b265ee9":[3,0,0,27,21],
+"classllfio__v2__xxx_1_1mapped__file__handle.html#a6e46c6ea379152eb559ab15990f7c467":[3,0,0,27,65],
"classllfio__v2__xxx_1_1mapped__file__handle.html#a7126a726b2a06e4c1eca1a94c41163ff":[3,0,0,27,26],
"classllfio__v2__xxx_1_1mapped__file__handle.html#a751e912d8dab755ea969a418c1d544eb":[3,0,0,27,70],
"classllfio__v2__xxx_1_1mapped__file__handle.html#a771cdde4a208afcd8940c56f6c8c4b07":[3,0,0,27,33],
@@ -171,7 +170,6 @@ var NAVTREEINDEX3 =
"classllfio__v2__xxx_1_1mapped__file__handle.html#aa4776885b13cc548a9a7ceb926dadc4c":[3,0,0,27,13],
"classllfio__v2__xxx_1_1mapped__file__handle.html#aa6d1d50b5ed33be80469110dca13e1fb":[3,0,0,27,5],
"classllfio__v2__xxx_1_1mapped__file__handle.html#aa7d0b35d39cdb39053da2816d42117bf":[3,0,0,27,56],
-"classllfio__v2__xxx_1_1mapped__file__handle.html#aac0369e8025ae1320e7d607922f61b48":[3,0,0,27,66],
"classllfio__v2__xxx_1_1mapped__file__handle.html#aad6465d30ee438b860ccc59c0e0fc4dc":[3,0,0,27,77],
"classllfio__v2__xxx_1_1mapped__file__handle.html#ab3901a37406c7e6701c6ca8af09dbcce":[3,0,0,27,2],
"classllfio__v2__xxx_1_1mapped__file__handle.html#ab500784aa806dc7c2d90028d2f72de57":[3,0,0,27,89],
@@ -249,5 +247,7 @@ var NAVTREEINDEX3 =
"classllfio__v2__xxx_1_1path__handle.html#aa02b3f0672f6cbfbafcd01fc2c3b639e":[3,0,0,29,11],
"classllfio__v2__xxx_1_1path__handle.html#ab98213f3667f45cc5429e9d6ed6073fb":[3,0,0,29,43],
"classllfio__v2__xxx_1_1path__handle.html#ac3aa3dc009822c0e437f317864534feb":[3,0,0,29,22],
-"classllfio__v2__xxx_1_1path__handle.html#acab4abf41e3a54d6f55ca28da526fc8a":[3,0,0,29,3]
+"classllfio__v2__xxx_1_1path__handle.html#acab4abf41e3a54d6f55ca28da526fc8a":[3,0,0,29,3],
+"classllfio__v2__xxx_1_1path__handle.html#ad011e3d216b5194b92f90502d9bb6b99":[3,0,0,29,2],
+"classllfio__v2__xxx_1_1path__handle.html#ad1e2cc6153a5d55ebaf6f3283f56c6f0":[3,0,0,29,14]
};
diff --git a/navtreeindex4.js b/navtreeindex4.js
index 849a4eb3..91569f83 100644
--- a/navtreeindex4.js
+++ b/navtreeindex4.js
@@ -1,7 +1,5 @@
var NAVTREEINDEX4 =
{
-"classllfio__v2__xxx_1_1path__handle.html#ad011e3d216b5194b92f90502d9bb6b99":[3,0,0,29,2],
-"classllfio__v2__xxx_1_1path__handle.html#ad1e2cc6153a5d55ebaf6f3283f56c6f0":[3,0,0,29,14],
"classllfio__v2__xxx_1_1path__handle.html#ad397dbfc5cd5eb53f203a2c1c9540a2e":[3,0,0,29,19],
"classllfio__v2__xxx_1_1path__handle.html#ad60627e0cdb8fa6093efc3133021d2df":[3,0,0,29,12],
"classllfio__v2__xxx_1_1path__handle.html#ad758cf1eb2e0b4c63583eab05e7f6820":[3,0,0,29,45],
@@ -249,5 +247,7 @@ var NAVTREEINDEX4 =
"classllfio__v2__xxx_1_1utils_1_1page__allocator_3_01void_01_4.html#a8275cd0213285ed2b1a7dc571c07adaf":[3,0,0,3,1,2],
"classllfio__v2__xxx_1_1utils_1_1page__allocator_3_01void_01_4.html#a96b40be459cb832df002d8033d858a46":[3,0,0,3,1,4],
"classllfio__v2__xxx_1_1utils_1_1page__allocator_3_01void_01_4.html#aee4a3d1c9ea248acfa3b8b0935e55a6b":[3,0,0,3,1,3],
-"config_8hpp.html":[4,0,0,0,0,2]
+"config_8hpp.html":[4,0,0,0,0,2],
+"config_8hpp.html#a02c02d05e24d34c25324c192df11c0b4":[4,0,0,0,0,2,30],
+"config_8hpp.html#a153d3be235debcda8578952291884b74":[4,0,0,0,0,2,18]
};
diff --git a/navtreeindex5.js b/navtreeindex5.js
index 2cf251b6..b82aef7d 100644
--- a/navtreeindex5.js
+++ b/navtreeindex5.js
@@ -1,7 +1,5 @@
var NAVTREEINDEX5 =
{
-"config_8hpp.html#a02c02d05e24d34c25324c192df11c0b4":[4,0,0,0,0,2,30],
-"config_8hpp.html#a153d3be235debcda8578952291884b74":[4,0,0,0,0,2,18],
"config_8hpp.html#a163aaaaa4d238aebd5fb9acec82006dd":[4,0,0,0,0,2,1],
"config_8hpp.html#a1e5f2d817ba0955e319af287e5dd924b":[4,0,0,0,0,2,17],
"config_8hpp.html#a4369189d04a952a93cf182f2c7390412":[4,0,0,0,0,2,32],
@@ -36,15 +34,16 @@ var NAVTREEINDEX5 =
"directory__handle_8hpp.html#addbdc12d4993a8ee40c105a02a105a61":[4,0,0,0,0,4,10],
"directory__handle_8hpp.html#ae5dd820167e77b7caf7ec921f0c6e8c9":[4,0,0,0,0,4,7],
"file__handle_8hpp.html":[4,0,0,0,0,5],
-"file__handle_8hpp.html#a16ee1bea5a5791ecde266420e00fba81":[4,0,0,0,0,5,9],
+"file__handle_8hpp.html#a16ee1bea5a5791ecde266420e00fba81":[4,0,0,0,0,5,10],
"file__handle_8hpp.html#a1759f4cee184d433f4446a39ff8bfa02":[4,0,0,0,0,5,4],
-"file__handle_8hpp.html#a2542466a055a0c024dee2704e9e32519":[4,0,0,0,0,5,6],
+"file__handle_8hpp.html#a2542466a055a0c024dee2704e9e32519":[4,0,0,0,0,5,7],
"file__handle_8hpp.html#a5bc9df0fdb554e757d14cf40af0bbb4e":[4,0,0,0,0,5,5],
"file__handle_8hpp.html#a6f9a72b547dc542401a2d17b1c1e2e15":[4,0,0,0,0,5,2],
-"file__handle_8hpp.html#a70d9ef3b988a880d171015b754bb7b27":[4,0,0,0,0,5,7],
-"file__handle_8hpp.html#ac8d9dc908fe39f9c896e99f6b7a39d81":[4,0,0,0,0,5,8],
-"file__handle_8hpp.html#ad0fb15649a46da0d75b5797bfda8dc2e":[4,0,0,0,0,5,10],
+"file__handle_8hpp.html#a70d9ef3b988a880d171015b754bb7b27":[4,0,0,0,0,5,8],
+"file__handle_8hpp.html#ac8d9dc908fe39f9c896e99f6b7a39d81":[4,0,0,0,0,5,9],
+"file__handle_8hpp.html#ad0fb15649a46da0d75b5797bfda8dc2e":[4,0,0,0,0,5,11],
"file__handle_8hpp.html#af31a062639499a79ef5cc8aed16ba65d":[4,0,0,0,0,5,3],
+"file__handle_8hpp.html#af678f58d20e1f0962ff0744150342683":[4,0,0,0,0,5,6],
"files.html":[4,0],
"fs__handle_8hpp.html":[4,0,0,0,0,6],
"fs__handle_8hpp.html#a1f5764bb77ec58ac60c6b92958a16043":[4,0,0,0,0,6,1],
@@ -104,40 +103,40 @@ var NAVTREEINDEX5 =
"globals_defs.html":[4,1,2],
"globals_func.html":[4,1,1],
"group__config.html":[1,0],
-"group__config.html#ga090b0d323b6d7d2496dba7aa42068013":[1,0,15],
"group__config.html#ga090b0d323b6d7d2496dba7aa42068013":[4,0,0,0,2,8],
-"group__config.html#ga18295c2601f9e6cb9e759d57fa0d8ab4":[1,0,16],
+"group__config.html#ga090b0d323b6d7d2496dba7aa42068013":[1,0,15],
"group__config.html#ga18295c2601f9e6cb9e759d57fa0d8ab4":[4,0,0,0,2,9],
+"group__config.html#ga18295c2601f9e6cb9e759d57fa0d8ab4":[1,0,16],
"group__config.html#ga2e45ede29ed7b2aa06eb19aff2485541":[4,0,0,0,0,2,13],
"group__config.html#ga2e45ede29ed7b2aa06eb19aff2485541":[1,0,6],
"group__config.html#ga40c15a3fc44361077b478acbfaca18ee":[1,0,3],
"group__config.html#ga40c15a3fc44361077b478acbfaca18ee":[4,0,0,0,0,2,9],
-"group__config.html#ga48fcb899a9d482d406f8fdbebc791ba0":[4,0,0,0,0,2,7],
"group__config.html#ga48fcb899a9d482d406f8fdbebc791ba0":[1,0,1],
+"group__config.html#ga48fcb899a9d482d406f8fdbebc791ba0":[4,0,0,0,0,2,7],
"group__config.html#ga5365e6c96107a8e7edf6030462562cae":[1,0,0],
"group__config.html#ga5365e6c96107a8e7edf6030462562cae":[4,0,0,0,0,2,6],
-"group__config.html#ga799d6ef19b741b67d019652e4acc271f":[1,0,4],
"group__config.html#ga799d6ef19b741b67d019652e4acc271f":[4,0,0,0,0,2,10],
-"group__config.html#ga84df5d479525cd6b58f873c2f9869b22":[1,0,11],
+"group__config.html#ga799d6ef19b741b67d019652e4acc271f":[1,0,4],
"group__config.html#ga84df5d479525cd6b58f873c2f9869b22":[4,0,0,0,0,2,25],
-"group__config.html#gaadd4f1f9d1a5c77c3b40d9e1b759b706":[4,0,0,0,2,3],
+"group__config.html#ga84df5d479525cd6b58f873c2f9869b22":[1,0,11],
"group__config.html#gaadd4f1f9d1a5c77c3b40d9e1b759b706":[1,0,7],
-"group__config.html#gab03294596f77a7717954929a887ca425":[4,0,0,0,2,7],
+"group__config.html#gaadd4f1f9d1a5c77c3b40d9e1b759b706":[4,0,0,0,2,3],
"group__config.html#gab03294596f77a7717954929a887ca425":[1,0,14],
+"group__config.html#gab03294596f77a7717954929a887ca425":[4,0,0,0,2,7],
"group__config.html#gab2f82803f0ce479a2993d3b7696db8d3":[4,0,0,0,0,2,26],
"group__config.html#gab2f82803f0ce479a2993d3b7696db8d3":[1,0,12],
"group__config.html#gabb964a24682a722a7eaad891ee497a61":[4,0,0,0,0,2,22],
"group__config.html#gabb964a24682a722a7eaad891ee497a61":[1,0,8],
"group__config.html#gac9f7f0153adb9034d26c4554728f817a":[1,0,9],
"group__config.html#gac9f7f0153adb9034d26c4554728f817a":[4,0,0,0,0,2,23],
-"group__config.html#gacac3045524a50876c1bc6068bd6237f0":[4,0,0,0,2,6],
"group__config.html#gacac3045524a50876c1bc6068bd6237f0":[1,0,13],
+"group__config.html#gacac3045524a50876c1bc6068bd6237f0":[4,0,0,0,2,6],
"group__config.html#gad270840dbd547a75ad62d48e93412ca7":[1,0,2],
"group__config.html#gad270840dbd547a75ad62d48e93412ca7":[4,0,0,0,0,2,8],
"group__config.html#gae1eb04a1ef4089291c04f60a66b9849e":[4,0,0,0,0,2,24],
"group__config.html#gae1eb04a1ef4089291c04f60a66b9849e":[1,0,10],
-"group__config.html#gaf958c6b17b345d3b84043bf7352451f2":[1,0,5],
"group__config.html#gaf958c6b17b345d3b84043bf7352451f2":[4,0,0,0,0,2,12],
+"group__config.html#gaf958c6b17b345d3b84043bf7352451f2":[1,0,5],
"handle_8hpp.html":[4,0,0,0,0,7],
"handle_8hpp.html#a4888fb3be6e332367f3ee046f869a8f8":[4,0,0,0,0,7,7],
"handle_8hpp.html#a56405b7c7f5ca46e6564ce295a87fc87":[4,0,0,0,0,7,8],
@@ -152,9 +151,8 @@ var NAVTREEINDEX5 =
"io__handle_8hpp.html":[4,0,0,0,0,8],
"io__handle_8hpp.html#a225e15680392dfa9e1dda42afcc09672":[4,0,0,0,0,8,7],
"io__handle_8hpp.html#a4fad22759dab40321cabd37c755880fe":[4,0,0,0,0,8,6],
-"io__handle_8hpp.html#a5a8908704c9988bbecc69c2359e6fd4a":[4,0,0,0,0,8,9],
-"io__handle_8hpp.html#a5ea3d93e8b2c7f6e3fca7a9cde734312":[4,0,0,0,0,8,10],
-"io__handle_8hpp.html#a7c4b2c6794e73f6bd11c5d14fd16cea9":[4,0,0,0,0,8,8],
+"io__handle_8hpp.html#a5a8908704c9988bbecc69c2359e6fd4a":[4,0,0,0,0,8,8],
+"io__handle_8hpp.html#a5ea3d93e8b2c7f6e3fca7a9cde734312":[4,0,0,0,0,8,9],
"io__service_8hpp.html":[4,0,0,0,0,9],
"io__service_8hpp.html#a194acf5c39b199b59acafded3b2015b8":[4,0,0,0,0,9,2],
"io__service_8hpp.html#a2195d9a60e427e96cb90a7bb95f1b773":[4,0,0,0,0,9,3],
@@ -204,8 +202,8 @@ var NAVTREEINDEX5 =
"namespacellfio__v2__xxx_1_1algorithm_1_1impl.html":[2,0,0,0,0],
"namespacellfio__v2__xxx_1_1algorithm_1_1shared__fs__mutex.html":[3,0,0,0,1],
"namespacellfio__v2__xxx_1_1algorithm_1_1shared__fs__mutex.html":[2,0,0,0,1],
-"namespacellfio__v2__xxx_1_1path__discovery.html":[3,0,0,1],
"namespacellfio__v2__xxx_1_1path__discovery.html":[2,0,0,1],
+"namespacellfio__v2__xxx_1_1path__discovery.html":[3,0,0,1],
"namespacellfio__v2__xxx_1_1storage__profile.html":[3,0,0,2],
"namespacellfio__v2__xxx_1_1storage__profile.html":[2,0,0,2],
"namespacellfio__v2__xxx_1_1utils.html":[3,0,0,3],
@@ -249,5 +247,7 @@ var NAVTREEINDEX5 =
"storage__profile_8hpp.html#a42ddc873c6d7178340a72417d1cc42b3":[4,0,0,0,0,21,22],
"storage__profile_8hpp.html#a51c017aed8f7fe2568fa29506ac03e43":[4,0,0,0,0,21,44],
"storage__profile_8hpp.html#a5a4d0eb211dde145cc65f78c4105644b":[4,0,0,0,0,21,42],
-"storage__profile_8hpp.html#a600823f44a0965dd6b0b82866e888f1e":[4,0,0,0,0,21,28]
+"storage__profile_8hpp.html#a600823f44a0965dd6b0b82866e888f1e":[4,0,0,0,0,21,28],
+"storage__profile_8hpp.html#a62ea39b41b0ae8ffd6e78db0ff9a819e":[4,0,0,0,0,21,38],
+"storage__profile_8hpp.html#a72a7277d9ca13177b87462f57f4f8b6b":[4,0,0,0,0,21,32]
};
diff --git a/navtreeindex6.js b/navtreeindex6.js
index d342ca92..554dbd61 100644
--- a/navtreeindex6.js
+++ b/navtreeindex6.js
@@ -1,7 +1,5 @@
var NAVTREEINDEX6 =
{
-"storage__profile_8hpp.html#a62ea39b41b0ae8ffd6e78db0ff9a819e":[4,0,0,0,0,21,38],
-"storage__profile_8hpp.html#a72a7277d9ca13177b87462f57f4f8b6b":[4,0,0,0,0,21,32],
"storage__profile_8hpp.html#a789770254f4c4170e6bbb8dea9f7eec6":[4,0,0,0,0,21,8],
"storage__profile_8hpp.html#a79927d0371baaf191dac6acb2fb58dbb":[4,0,0,0,0,21,21],
"storage__profile_8hpp.html#a7a10e1dc2748e68d0bcdf322e57ee3e4":[4,0,0,0,0,21,37],
@@ -249,5 +247,7 @@ var NAVTREEINDEX6 =
"structllfio__v2__xxx_1_1construct_3_01mapped__file__handle_01_4.html#a82fc63013eb5368fc3a0efe17440f7e9":[3,0,0,9,2],
"structllfio__v2__xxx_1_1construct_3_01mapped__file__handle_01_4.html#a8ea52aad6ecbb298c34f1c0ee25421d9":[3,0,0,9,3],
"structllfio__v2__xxx_1_1construct_3_01mapped__file__handle_01_4.html#ab6f55865b3a96c0c1433430ad19913d7":[3,0,0,9,4],
-"structllfio__v2__xxx_1_1construct_3_01mapped__file__handle_01_4.html#ac754d8cc2a5eb03041e1cd4f6c34917e":[3,0,0,9,1]
+"structllfio__v2__xxx_1_1construct_3_01mapped__file__handle_01_4.html#ac754d8cc2a5eb03041e1cd4f6c34917e":[3,0,0,9,1],
+"structllfio__v2__xxx_1_1construct_3_01path__handle_01_4.html":[3,0,0,10],
+"structllfio__v2__xxx_1_1construct_3_01path__handle_01_4.html#a227669313e9340c70703b5d27e0cc0d4":[3,0,0,10,1]
};
diff --git a/navtreeindex7.js b/navtreeindex7.js
index 3ac8f6d1..bf92a70a 100644
--- a/navtreeindex7.js
+++ b/navtreeindex7.js
@@ -1,7 +1,5 @@
var NAVTREEINDEX7 =
{
-"structllfio__v2__xxx_1_1construct_3_01path__handle_01_4.html":[3,0,0,10],
-"structllfio__v2__xxx_1_1construct_3_01path__handle_01_4.html#a227669313e9340c70703b5d27e0cc0d4":[3,0,0,10,1],
"structllfio__v2__xxx_1_1construct_3_01path__handle_01_4.html#adb05fe97d8584c32fd91f6c7ae2b1f82":[3,0,0,10,0],
"structllfio__v2__xxx_1_1construct_3_01path__handle_01_4.html#ae75e42410f6a5a6f8a83c57c9a9208f3":[3,0,0,10,2],
"structllfio__v2__xxx_1_1construct_3_01section__handle_01_4.html":[3,0,0,11],
@@ -249,5 +247,7 @@ var NAVTREEINDEX7 =
"structllfio__v2__xxx_1_1statfs__t.html#a7b8ea29dcda069ef2af42a25eb283786":[3,0,0,34,14],
"structllfio__v2__xxx_1_1statfs__t.html#a9684fea78f72efeafdbaa4a11f402060":[3,0,0,34,10],
"structllfio__v2__xxx_1_1statfs__t.html#aa24a1f36d9addae9d0d6ab13eeb43e5d":[3,0,0,34,7],
-"structllfio__v2__xxx_1_1statfs__t.html#aa4a4f434ba56992244ac59c8f825a962":[3,0,0,34,4]
+"structllfio__v2__xxx_1_1statfs__t.html#aa4a4f434ba56992244ac59c8f825a962":[3,0,0,34,4],
+"structllfio__v2__xxx_1_1statfs__t.html#aa8b39815508e9252da673c7e18666cd7":[3,0,0,34,17],
+"structllfio__v2__xxx_1_1statfs__t.html#abe7361e7f354e4de36b64f80b4c6c72e":[3,0,0,34,12]
};
diff --git a/navtreeindex8.js b/navtreeindex8.js
index 0c673cc3..1b8f500c 100644
--- a/navtreeindex8.js
+++ b/navtreeindex8.js
@@ -1,7 +1,5 @@
var NAVTREEINDEX8 =
{
-"structllfio__v2__xxx_1_1statfs__t.html#aa8b39815508e9252da673c7e18666cd7":[3,0,0,34,17],
-"structllfio__v2__xxx_1_1statfs__t.html#abe7361e7f354e4de36b64f80b4c6c72e":[3,0,0,34,12],
"structllfio__v2__xxx_1_1statfs__t.html#ac5414fc2f10e4d6f78617666a0353072":[3,0,0,34,2],
"structllfio__v2__xxx_1_1statfs__t.html#ac7bedb646a6855541633e7bb7232b5e0":[3,0,0,34,15],
"structllfio__v2__xxx_1_1statfs__t.html#aee7f0b961f34b79e95189e6cf8677cbf":[3,0,0,34,6],
diff --git a/search/all_10.js b/search/all_10.js
index 707f35e4..401e8d6a 100644
--- a/search/all_10.js
+++ b/search/all_10.js
@@ -8,7 +8,7 @@ var searchData=
['random_5fsymlink',['random_symlink',['../classllfio__v2__xxx_1_1symlink__handle.html#aa519e98396a1596c880267dcc92643f1',1,'llfio_v2_xxx::symlink_handle']]],
['rbegin',['rbegin',['../structllfio__v2__xxx_1_1algorithm_1_1impl_1_1trivial__vector__impl.html#ae79263dcf9faf5d3f2973ba688201f7e',1,'llfio_v2_xxx::algorithm::impl::trivial_vector_impl::rbegin() noexcept'],['../structllfio__v2__xxx_1_1algorithm_1_1impl_1_1trivial__vector__impl.html#afff8e1a93ad371a5844543a3e782f471',1,'llfio_v2_xxx::algorithm::impl::trivial_vector_impl::rbegin() const noexcept']]],
['rdonly',['rdonly',['../structllfio__v2__xxx_1_1statfs__t_1_1f__flags__t.html#ab81fc2389da706385f01c68e45aa4d44',1,'llfio_v2_xxx::statfs_t::f_flags_t']]],
- ['read',['read',['../classllfio__v2__xxx_1_1section__handle.html#a5a4e0afe59d0eeb5683fb50d3d3ad549a63bd03aae67c348121ac0bf88161d90f',1,'llfio_v2_xxx::section_handle::read()'],['../classllfio__v2__xxx_1_1directory__handle.html#a45c13e16ecc131cbe5107e6affe94f33',1,'llfio_v2_xxx::directory_handle::read()'],['../classllfio__v2__xxx_1_1io__handle.html#a5f7485307a0704aa1680e5785be2035d',1,'llfio_v2_xxx::io_handle::read(io_request&lt; buffers_type &gt; reqs, deadline d=deadline()) noexcept'],['../classllfio__v2__xxx_1_1io__handle.html#aac0369e8025ae1320e7d607922f61b48',1,'llfio_v2_xxx::io_handle::read(extent_type offset, std::initializer_list&lt; buffer_type &gt; lst, deadline d=deadline()) noexcept'],['../classllfio__v2__xxx_1_1map__handle.html#a073cdca57e3e3718d2eb285be51d5c92',1,'llfio_v2_xxx::map_handle::read()'],['../classllfio__v2__xxx_1_1mapped__file__handle.html#ae4ca3f09ab781322c22f903d31ec7aa9',1,'llfio_v2_xxx::mapped_file_handle::read()'],['../structllfio__v2__xxx_1_1storage__profile_1_1storage__profile.html#a4d7d2e7ae94312b9757d8a5c12724c0f',1,'llfio_v2_xxx::storage_profile::storage_profile::read()'],['../classllfio__v2__xxx_1_1symlink__handle.html#aa8f2a6e0f971b7b88a88562f8744f4da',1,'llfio_v2_xxx::symlink_handle::read()'],['../classllfio__v2__xxx_1_1handle.html#aa3930273a2d4cabbac309e0b75701dcaaecae13117d6f0584c25a9da6c8f8415e',1,'llfio_v2_xxx::handle::read()'],['../namespacellfio__v2__xxx.html#a225e15680392dfa9e1dda42afcc09672',1,'llfio_v2_xxx::read(io_handle &amp;self, io_handle::io_request&lt; io_handle::buffers_type &gt; reqs, deadline d=deadline()) noexcept'],['../namespacellfio__v2__xxx.html#a7c4b2c6794e73f6bd11c5d14fd16cea9',1,'llfio_v2_xxx::read(io_handle &amp;self, io_handle::extent_type offset, std::initializer_list&lt; io_handle::buffer_type &gt; lst, deadline d=deadline()) noexcept'],['../namespacellfio__v2__xxx.html#ab993693c98cdb52e2d611f8f9e24e4e2',1,'llfio_v2_xxx::read(map_handle &amp;self, map_handle::io_request&lt; map_handle::buffers_type &gt; reqs, deadline d=deadline()) noexcept']]],
+ ['read',['read',['../classllfio__v2__xxx_1_1section__handle.html#a5a4e0afe59d0eeb5683fb50d3d3ad549a63bd03aae67c348121ac0bf88161d90f',1,'llfio_v2_xxx::section_handle::read()'],['../classllfio__v2__xxx_1_1directory__handle.html#a45c13e16ecc131cbe5107e6affe94f33',1,'llfio_v2_xxx::directory_handle::read()'],['../classllfio__v2__xxx_1_1file__handle.html#a6e46c6ea379152eb559ab15990f7c467',1,'llfio_v2_xxx::file_handle::read()'],['../classllfio__v2__xxx_1_1io__handle.html#a5f7485307a0704aa1680e5785be2035d',1,'llfio_v2_xxx::io_handle::read()'],['../classllfio__v2__xxx_1_1map__handle.html#a073cdca57e3e3718d2eb285be51d5c92',1,'llfio_v2_xxx::map_handle::read()'],['../classllfio__v2__xxx_1_1mapped__file__handle.html#ae4ca3f09ab781322c22f903d31ec7aa9',1,'llfio_v2_xxx::mapped_file_handle::read()'],['../structllfio__v2__xxx_1_1storage__profile_1_1storage__profile.html#a4d7d2e7ae94312b9757d8a5c12724c0f',1,'llfio_v2_xxx::storage_profile::storage_profile::read()'],['../classllfio__v2__xxx_1_1symlink__handle.html#aa8f2a6e0f971b7b88a88562f8744f4da',1,'llfio_v2_xxx::symlink_handle::read()'],['../classllfio__v2__xxx_1_1handle.html#aa3930273a2d4cabbac309e0b75701dcaaecae13117d6f0584c25a9da6c8f8415e',1,'llfio_v2_xxx::handle::read()'],['../namespacellfio__v2__xxx.html#af678f58d20e1f0962ff0744150342683',1,'llfio_v2_xxx::read(file_handle &amp;self, file_handle::extent_type offset, std::initializer_list&lt; file_handle::buffer_type &gt; lst, deadline d=deadline()) noexcept'],['../namespacellfio__v2__xxx.html#a225e15680392dfa9e1dda42afcc09672',1,'llfio_v2_xxx::read(io_handle &amp;self, io_handle::io_request&lt; io_handle::buffers_type &gt; reqs, deadline d=deadline()) noexcept'],['../namespacellfio__v2__xxx.html#ab993693c98cdb52e2d611f8f9e24e4e2',1,'llfio_v2_xxx::read(map_handle &amp;self, map_handle::io_request&lt; map_handle::buffers_type &gt; reqs, deadline d=deadline()) noexcept']]],
['readable',['readable',['../structllfio__v2__xxx_1_1native__handle__type.html#af9532a4123ade5a0c4ff8df3de2170f7a2bf351d9ef739909485db2d6e0d55a00',1,'llfio_v2_xxx::native_handle_type']]],
['reads',['reads',['../classllfio__v2__xxx_1_1handle.html#aecd3a7db6cee3aec07d32fe6f99e6852a0fb9cf5f04f61bb6f1151da57ceb1ca1',1,'llfio_v2_xxx::handle']]],
['reads_5fand_5fmetadata',['reads_and_metadata',['../classllfio__v2__xxx_1_1handle.html#aecd3a7db6cee3aec07d32fe6f99e6852adec4ecca8ae1593f84eea4656599a693',1,'llfio_v2_xxx::handle']]],
diff --git a/search/functions_10.js b/search/functions_10.js
index 832143ee..10f19850 100644
--- a/search/functions_10.js
+++ b/search/functions_10.js
@@ -7,7 +7,7 @@ var searchData=
['random_5fstring',['random_string',['../namespacellfio__v2__xxx_1_1utils.html#a6a29cf29a4b097411f6c1e5274bfb417',1,'llfio_v2_xxx::utils']]],
['random_5fsymlink',['random_symlink',['../classllfio__v2__xxx_1_1symlink__handle.html#aa519e98396a1596c880267dcc92643f1',1,'llfio_v2_xxx::symlink_handle']]],
['rbegin',['rbegin',['../structllfio__v2__xxx_1_1algorithm_1_1impl_1_1trivial__vector__impl.html#ae79263dcf9faf5d3f2973ba688201f7e',1,'llfio_v2_xxx::algorithm::impl::trivial_vector_impl::rbegin() noexcept'],['../structllfio__v2__xxx_1_1algorithm_1_1impl_1_1trivial__vector__impl.html#afff8e1a93ad371a5844543a3e782f471',1,'llfio_v2_xxx::algorithm::impl::trivial_vector_impl::rbegin() const noexcept']]],
- ['read',['read',['../classllfio__v2__xxx_1_1directory__handle.html#a45c13e16ecc131cbe5107e6affe94f33',1,'llfio_v2_xxx::directory_handle::read()'],['../classllfio__v2__xxx_1_1io__handle.html#a5f7485307a0704aa1680e5785be2035d',1,'llfio_v2_xxx::io_handle::read(io_request&lt; buffers_type &gt; reqs, deadline d=deadline()) noexcept'],['../classllfio__v2__xxx_1_1io__handle.html#aac0369e8025ae1320e7d607922f61b48',1,'llfio_v2_xxx::io_handle::read(extent_type offset, std::initializer_list&lt; buffer_type &gt; lst, deadline d=deadline()) noexcept'],['../classllfio__v2__xxx_1_1map__handle.html#a073cdca57e3e3718d2eb285be51d5c92',1,'llfio_v2_xxx::map_handle::read()'],['../classllfio__v2__xxx_1_1mapped__file__handle.html#ae4ca3f09ab781322c22f903d31ec7aa9',1,'llfio_v2_xxx::mapped_file_handle::read()'],['../structllfio__v2__xxx_1_1storage__profile_1_1storage__profile.html#a4d7d2e7ae94312b9757d8a5c12724c0f',1,'llfio_v2_xxx::storage_profile::storage_profile::read()'],['../classllfio__v2__xxx_1_1symlink__handle.html#aa8f2a6e0f971b7b88a88562f8744f4da',1,'llfio_v2_xxx::symlink_handle::read()'],['../namespacellfio__v2__xxx.html#a225e15680392dfa9e1dda42afcc09672',1,'llfio_v2_xxx::read(io_handle &amp;self, io_handle::io_request&lt; io_handle::buffers_type &gt; reqs, deadline d=deadline()) noexcept'],['../namespacellfio__v2__xxx.html#a7c4b2c6794e73f6bd11c5d14fd16cea9',1,'llfio_v2_xxx::read(io_handle &amp;self, io_handle::extent_type offset, std::initializer_list&lt; io_handle::buffer_type &gt; lst, deadline d=deadline()) noexcept'],['../namespacellfio__v2__xxx.html#ab993693c98cdb52e2d611f8f9e24e4e2',1,'llfio_v2_xxx::read(map_handle &amp;self, map_handle::io_request&lt; map_handle::buffers_type &gt; reqs, deadline d=deadline()) noexcept']]],
+ ['read',['read',['../classllfio__v2__xxx_1_1directory__handle.html#a45c13e16ecc131cbe5107e6affe94f33',1,'llfio_v2_xxx::directory_handle::read()'],['../classllfio__v2__xxx_1_1file__handle.html#a6e46c6ea379152eb559ab15990f7c467',1,'llfio_v2_xxx::file_handle::read()'],['../classllfio__v2__xxx_1_1io__handle.html#a5f7485307a0704aa1680e5785be2035d',1,'llfio_v2_xxx::io_handle::read()'],['../classllfio__v2__xxx_1_1map__handle.html#a073cdca57e3e3718d2eb285be51d5c92',1,'llfio_v2_xxx::map_handle::read()'],['../classllfio__v2__xxx_1_1mapped__file__handle.html#ae4ca3f09ab781322c22f903d31ec7aa9',1,'llfio_v2_xxx::mapped_file_handle::read()'],['../structllfio__v2__xxx_1_1storage__profile_1_1storage__profile.html#a4d7d2e7ae94312b9757d8a5c12724c0f',1,'llfio_v2_xxx::storage_profile::storage_profile::read()'],['../classllfio__v2__xxx_1_1symlink__handle.html#aa8f2a6e0f971b7b88a88562f8744f4da',1,'llfio_v2_xxx::symlink_handle::read()'],['../namespacellfio__v2__xxx.html#af678f58d20e1f0962ff0744150342683',1,'llfio_v2_xxx::read(file_handle &amp;self, file_handle::extent_type offset, std::initializer_list&lt; file_handle::buffer_type &gt; lst, deadline d=deadline()) noexcept'],['../namespacellfio__v2__xxx.html#a225e15680392dfa9e1dda42afcc09672',1,'llfio_v2_xxx::read(io_handle &amp;self, io_handle::io_request&lt; io_handle::buffers_type &gt; reqs, deadline d=deadline()) noexcept'],['../namespacellfio__v2__xxx.html#ab993693c98cdb52e2d611f8f9e24e4e2',1,'llfio_v2_xxx::read(map_handle &amp;self, map_handle::io_request&lt; map_handle::buffers_type &gt; reqs, deadline d=deadline()) noexcept']]],
['relative_5fpath',['relative_path',['../classllfio__v2__xxx_1_1path__view.html#a2660a043095f236e04c64518befe3811',1,'llfio_v2_xxx::path_view']]],
['release',['release',['../classllfio__v2__xxx_1_1handle.html#a1d273e38c061eb11f5012f624e9a202e',1,'llfio_v2_xxx::handle::release()'],['../classllfio__v2__xxx_1_1io__handle_1_1extent__guard.html#a7994a1c984e75c7757395d70d78ed35d',1,'llfio_v2_xxx::io_handle::extent_guard::release()'],['../classllfio__v2__xxx_1_1map__handle.html#a06cfd3521ff08782a848821951510f11',1,'llfio_v2_xxx::map_handle::release()'],['../classllfio__v2__xxx_1_1mapped__file__handle.html#a4072a4f2448ef3b8c7075fa8734acf71',1,'llfio_v2_xxx::mapped_file_handle::release()'],['../classllfio__v2__xxx_1_1algorithm_1_1shared__fs__mutex_1_1shared__fs__mutex_1_1entities__guard.html#ae0e9fd495a54debec2087dda64d4ce08',1,'llfio_v2_xxx::algorithm::shared_fs_mutex::shared_fs_mutex::entities_guard::release()']]],
['relink',['relink',['../classllfio__v2__xxx_1_1fs__handle.html#a8700edc9ecd4dd35d5aad7c65dd0eca2',1,'llfio_v2_xxx::fs_handle::relink()'],['../classllfio__v2__xxx_1_1symlink__handle.html#afea9ef2b36cac3f6dfcae7555ca3303c',1,'llfio_v2_xxx::symlink_handle::relink()'],['../namespacellfio__v2__xxx.html#a60fa5c64c83ce05c8287c5379d082e49',1,'llfio_v2_xxx::relink()']]],