mirror of
https://github.com/amadvance/snapraid.git
synced 2026-10-26 19:01:57 -04:00
Auto update
This commit is contained in:
parent
90bf302bb1
commit
493a91f0c6
207 changed files with 16507 additions and 15922 deletions
|
|
@ -31,13 +31,13 @@
|
|||
<td class="headerValue">lcov.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntry">713</td>
|
||||
<td class="headerCovTableEntry">712</td>
|
||||
<td class="headerCovTableEntry">781</td>
|
||||
<td class="headerCovTableEntryHi">91.3 %</td>
|
||||
<td class="headerCovTableEntryHi">91.2 %</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Date:</td>
|
||||
<td class="headerValue">2015-11-20</td>
|
||||
<td class="headerValue">2016-01-09</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntry">9</td>
|
||||
|
|
@ -61,31 +61,27 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="check.c.gcov.html#796">block_is_enabled</a></td>
|
||||
<td class="coverFnHi">1866664</td>
|
||||
<td class="coverFnHi">1869102</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="check.c.gcov.html#594">file_post</a></td>
|
||||
<td class="coverFnHi">933332</td>
|
||||
<td class="coverFnHi">934551</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="check.c.gcov.html#285">repair</a></td>
|
||||
<td class="coverFnHi">869089</td>
|
||||
<td class="coverFnHi">870166</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="check.c.gcov.html#68">blockcmp</a></td>
|
||||
<td class="coverFnHi">468172</td>
|
||||
<td class="coverFnHi">469276</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="check.c.gcov.html#160">repair_step</a></td>
|
||||
<td class="coverFnHi">260805</td>
|
||||
<td class="coverFnHi">254143</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="check.c.gcov.html#97">is_hash_matching</a></td>
|
||||
<td class="coverFnHi">209449</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="check.c.gcov.html#140">is_parity_matching</a></td>
|
||||
<td class="coverFnHi">8386</td>
|
||||
<td class="coverFnHi">211335</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="check.c.gcov.html#1904">state_check</a></td>
|
||||
|
|
@ -95,6 +91,10 @@
|
|||
<td class="coverFn"><a href="check.c.gcov.html#842">state_check_process</a></td>
|
||||
<td class="coverFnHi">118</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="check.c.gcov.html#140">is_parity_matching</a></td>
|
||||
<td class="coverFnHi">8</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
</center>
|
||||
|
|
|
|||
|
|
@ -31,13 +31,13 @@
|
|||
<td class="headerValue">lcov.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntry">713</td>
|
||||
<td class="headerCovTableEntry">712</td>
|
||||
<td class="headerCovTableEntry">781</td>
|
||||
<td class="headerCovTableEntryHi">91.3 %</td>
|
||||
<td class="headerCovTableEntryHi">91.2 %</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Date:</td>
|
||||
<td class="headerValue">2015-11-20</td>
|
||||
<td class="headerValue">2016-01-09</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntry">9</td>
|
||||
|
|
@ -61,31 +61,31 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="check.c.gcov.html#796">block_is_enabled</a></td>
|
||||
<td class="coverFnHi">1866664</td>
|
||||
<td class="coverFnHi">1869102</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="check.c.gcov.html#68">blockcmp</a></td>
|
||||
<td class="coverFnHi">468172</td>
|
||||
<td class="coverFnHi">469276</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="check.c.gcov.html#594">file_post</a></td>
|
||||
<td class="coverFnHi">933332</td>
|
||||
<td class="coverFnHi">934551</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="check.c.gcov.html#97">is_hash_matching</a></td>
|
||||
<td class="coverFnHi">209449</td>
|
||||
<td class="coverFnHi">211335</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="check.c.gcov.html#140">is_parity_matching</a></td>
|
||||
<td class="coverFnHi">8386</td>
|
||||
<td class="coverFnHi">8</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="check.c.gcov.html#285">repair</a></td>
|
||||
<td class="coverFnHi">869089</td>
|
||||
<td class="coverFnHi">870166</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="check.c.gcov.html#160">repair_step</a></td>
|
||||
<td class="coverFnHi">260805</td>
|
||||
<td class="coverFnHi">254143</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="check.c.gcov.html#1904">state_check</a></td>
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
|
|
@ -31,13 +31,13 @@
|
|||
<td class="headerValue">lcov.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntry">300</td>
|
||||
<td class="headerCovTableEntry">318</td>
|
||||
<td class="headerCovTableEntryHi">94.3 %</td>
|
||||
<td class="headerCovTableEntry">301</td>
|
||||
<td class="headerCovTableEntry">320</td>
|
||||
<td class="headerCovTableEntryHi">94.1 %</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Date:</td>
|
||||
<td class="headerValue">2015-11-20</td>
|
||||
<td class="headerValue">2016-01-09</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntry">11</td>
|
||||
|
|
@ -64,7 +64,7 @@
|
|||
<td class="coverFnHi">72</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="device.c.gcov.html#596">printl</a></td>
|
||||
<td class="coverFn"><a href="device.c.gcov.html#600">printl</a></td>
|
||||
<td class="coverFnHi">52</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
|
@ -84,7 +84,7 @@
|
|||
<td class="coverFnHi">18</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="device.c.gcov.html#613">printp</a></td>
|
||||
<td class="coverFn"><a href="device.c.gcov.html#617">printp</a></td>
|
||||
<td class="coverFnHi">18</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
|
@ -92,15 +92,15 @@
|
|||
<td class="coverFnHi">13</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="device.c.gcov.html#935">state_device</a></td>
|
||||
<td class="coverFn"><a href="device.c.gcov.html#939">state_device</a></td>
|
||||
<td class="coverFnHi">5</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="device.c.gcov.html#647">state_smart</a></td>
|
||||
<td class="coverFn"><a href="device.c.gcov.html#651">state_smart</a></td>
|
||||
<td class="coverFnHi">1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="device.c.gcov.html#871">devtest</a></td>
|
||||
<td class="coverFn"><a href="device.c.gcov.html#875">devtest</a></td>
|
||||
<td class="coverFnHi">1</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
|
|||
|
|
@ -31,13 +31,13 @@
|
|||
<td class="headerValue">lcov.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntry">300</td>
|
||||
<td class="headerCovTableEntry">318</td>
|
||||
<td class="headerCovTableEntryHi">94.3 %</td>
|
||||
<td class="headerCovTableEntry">301</td>
|
||||
<td class="headerCovTableEntry">320</td>
|
||||
<td class="headerCovTableEntryHi">94.1 %</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Date:</td>
|
||||
<td class="headerValue">2015-11-20</td>
|
||||
<td class="headerValue">2016-01-09</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntry">11</td>
|
||||
|
|
@ -60,7 +60,7 @@
|
|||
<td width="20%" class="tableHead">Hit count <span class="tableHeadSort"><a href="device.c.func-sort-c.html"><img src="../updown.png" width=10 height=14 alt="Sort by hit count" title="Sort by hit count" border=0></a></span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="device.c.gcov.html#871">devtest</a></td>
|
||||
<td class="coverFn"><a href="device.c.gcov.html#875">devtest</a></td>
|
||||
<td class="coverFnHi">1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
|
@ -76,11 +76,11 @@
|
|||
<td class="coverFnHi">31</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="device.c.gcov.html#596">printl</a></td>
|
||||
<td class="coverFn"><a href="device.c.gcov.html#600">printl</a></td>
|
||||
<td class="coverFnHi">52</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="device.c.gcov.html#613">printp</a></td>
|
||||
<td class="coverFn"><a href="device.c.gcov.html#617">printp</a></td>
|
||||
<td class="coverFnHi">18</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
|
@ -96,11 +96,11 @@
|
|||
<td class="coverFnHi">72</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="device.c.gcov.html#935">state_device</a></td>
|
||||
<td class="coverFn"><a href="device.c.gcov.html#939">state_device</a></td>
|
||||
<td class="coverFnHi">5</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="device.c.gcov.html#647">state_smart</a></td>
|
||||
<td class="coverFn"><a href="device.c.gcov.html#651">state_smart</a></td>
|
||||
<td class="coverFnHi">1</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
|
|||
|
|
@ -31,13 +31,13 @@
|
|||
<td class="headerValue">lcov.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntry">300</td>
|
||||
<td class="headerCovTableEntry">318</td>
|
||||
<td class="headerCovTableEntryHi">94.3 %</td>
|
||||
<td class="headerCovTableEntry">301</td>
|
||||
<td class="headerCovTableEntry">320</td>
|
||||
<td class="headerCovTableEntryHi">94.1 %</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Date:</td>
|
||||
<td class="headerValue">2015-11-20</td>
|
||||
<td class="headerValue">2016-01-09</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntry">11</td>
|
||||
|
|
@ -100,7 +100,7 @@
|
|||
<span class="lineNum"> 38 </span> : * they really fail, not counting as a failure.
|
||||
<span class="lineNum"> 39 </span> : *
|
||||
<span class="lineNum"> 40 </span> : * The following tables are computed using the data from 2014-02-14 to 2014-12-31
|
||||
<span class="lineNum"> 41 </span> : * becasue it's the period when more SMART attributes were gathered.
|
||||
<span class="lineNum"> 41 </span> : * because it's the period when more SMART attributes were gathered.
|
||||
<span class="lineNum"> 42 </span> : *
|
||||
<span class="lineNum"> 43 </span> : * In this period there are 47322 disk seen, with 1988 removed because failed,
|
||||
<span class="lineNum"> 44 </span> : * and with 4121 removed because predicted to fail.
|
||||
|
|
@ -632,451 +632,455 @@
|
|||
<span class="lineNum"> 570 </span> : * Garth Alan Gibson, "Redundant Disk Arrays: Reliable, Parallel Secondary Storage", 1990
|
||||
<span class="lineNum"> 571 </span> : */
|
||||
<span class="lineNum"> 572 </span> :
|
||||
<span class="lineNum"> 573 </span> : /* get the Mean Time Between Failure of a single disk */
|
||||
<span class="lineNum"> 574 </span> : /* from the array failure rate */
|
||||
<span class="lineNum"> 575 </span><span class="lineCov"> 18 : MTBF = n / array_failure_rate;</span>
|
||||
<span class="lineNum"> 573 </span> : /* avoid division by zero */
|
||||
<span class="lineNum"> 574 </span><span class="lineCov"> 18 : if (array_failure_rate == 0)</span>
|
||||
<span class="lineNum"> 575 </span><span class="lineNoCov"> 0 : return 0;</span>
|
||||
<span class="lineNum"> 576 </span> :
|
||||
<span class="lineNum"> 577 </span> : /* get the Mean Time Between Repair (the time that a failed disk is replaced) */
|
||||
<span class="lineNum"> 578 </span> : /* from the repair rate */
|
||||
<span class="lineNum"> 579 </span><span class="lineCov"> 18 : MTTR = 1.0 / replace_rate;</span>
|
||||
<span class="lineNum"> 577 </span> : /* get the Mean Time Between Failure of a single disk */
|
||||
<span class="lineNum"> 578 </span> : /* from the array failure rate */
|
||||
<span class="lineNum"> 579 </span><span class="lineCov"> 18 : MTBF = n / array_failure_rate;</span>
|
||||
<span class="lineNum"> 580 </span> :
|
||||
<span class="lineNum"> 581 </span> : /* use the approximated MTTDL equation */
|
||||
<span class="lineNum"> 582 </span><span class="lineCov"> 18 : MTTDL = pow(MTBF, redundancy + 1) / pow(MTTR, redundancy);</span>
|
||||
<span class="lineNum"> 583 </span><span class="lineCov"> 99 : for (i = 0; i < redundancy + 1; ++i)</span>
|
||||
<span class="lineNum"> 584 </span><span class="lineCov"> 81 : MTTDL /= n - i;</span>
|
||||
<span class="lineNum"> 585 </span> :
|
||||
<span class="lineNum"> 586 </span> : /* the raid failure rate is just the inverse of the MTTDL */
|
||||
<span class="lineNum"> 587 </span><span class="lineCov"> 18 : raid_failure_rate = 1.0 / MTTDL;</span>
|
||||
<span class="lineNum"> 588 </span> :
|
||||
<span class="lineNum"> 589 </span> : /* probability of at least one RAID failure */
|
||||
<span class="lineNum"> 590 </span> : /* note that is almost equal at the probabilty of */
|
||||
<span class="lineNum"> 591 </span> : /* the first failure. */
|
||||
<span class="lineNum"> 592 </span><span class="lineCov"> 18 : return poisson_prob_n_or_more_failures(raid_failure_rate, 1);</span>
|
||||
<span class="lineNum"> 593 </span> : }
|
||||
<span class="lineNum"> 594 </span> :
|
||||
<span class="lineNum"> 595 </span> : /**
|
||||
<a name="596"><span class="lineNum"> 596 </span> : * Print a string with space padding.</a>
|
||||
<span class="lineNum"> 597 </span> : */
|
||||
<span class="lineNum"> 598 </span><span class="lineCov"> 52 : static void printl(const char* str, size_t pad)</span>
|
||||
<span class="lineNum"> 599 </span> : {
|
||||
<span class="lineNum"> 600 </span> : size_t len;
|
||||
<span class="lineNum"> 601 </span> :
|
||||
<span class="lineNum"> 602 </span><span class="lineCov"> 52 : printf("%s", str);</span>
|
||||
<span class="lineNum"> 603 </span> :
|
||||
<span class="lineNum"> 604 </span><span class="lineCov"> 52 : len = strlen(str);</span>
|
||||
<span class="lineNum"> 581 </span> : /* get the Mean Time Between Repair (the time that a failed disk is replaced) */
|
||||
<span class="lineNum"> 582 </span> : /* from the repair rate */
|
||||
<span class="lineNum"> 583 </span><span class="lineCov"> 18 : MTTR = 1.0 / replace_rate;</span>
|
||||
<span class="lineNum"> 584 </span> :
|
||||
<span class="lineNum"> 585 </span> : /* use the approximated MTTDL equation */
|
||||
<span class="lineNum"> 586 </span><span class="lineCov"> 18 : MTTDL = pow(MTBF, redundancy + 1) / pow(MTTR, redundancy);</span>
|
||||
<span class="lineNum"> 587 </span><span class="lineCov"> 99 : for (i = 0; i < redundancy + 1; ++i)</span>
|
||||
<span class="lineNum"> 588 </span><span class="lineCov"> 81 : MTTDL /= n - i;</span>
|
||||
<span class="lineNum"> 589 </span> :
|
||||
<span class="lineNum"> 590 </span> : /* the raid failure rate is just the inverse of the MTTDL */
|
||||
<span class="lineNum"> 591 </span><span class="lineCov"> 18 : raid_failure_rate = 1.0 / MTTDL;</span>
|
||||
<span class="lineNum"> 592 </span> :
|
||||
<span class="lineNum"> 593 </span> : /* probability of at least one RAID failure */
|
||||
<span class="lineNum"> 594 </span> : /* note that is almost equal at the probability of */
|
||||
<span class="lineNum"> 595 </span> : /* the first failure. */
|
||||
<span class="lineNum"> 596 </span><span class="lineCov"> 18 : return poisson_prob_n_or_more_failures(raid_failure_rate, 1);</span>
|
||||
<span class="lineNum"> 597 </span> : }
|
||||
<span class="lineNum"> 598 </span> :
|
||||
<span class="lineNum"> 599 </span> : /**
|
||||
<a name="600"><span class="lineNum"> 600 </span> : * Print a string with space padding.</a>
|
||||
<span class="lineNum"> 601 </span> : */
|
||||
<span class="lineNum"> 602 </span><span class="lineCov"> 52 : static void printl(const char* str, size_t pad)</span>
|
||||
<span class="lineNum"> 603 </span> : {
|
||||
<span class="lineNum"> 604 </span> : size_t len;
|
||||
<span class="lineNum"> 605 </span> :
|
||||
<span class="lineNum"> 606 </span><span class="lineCov"> 245 : while (len < pad) {</span>
|
||||
<span class="lineNum"> 607 </span><span class="lineCov"> 141 : printf(" ");</span>
|
||||
<span class="lineNum"> 608 </span><span class="lineCov"> 141 : ++len;</span>
|
||||
<span class="lineNum"> 609 </span> : }
|
||||
<span class="lineNum"> 610 </span><span class="lineCov"> 52 : }</span>
|
||||
<span class="lineNum"> 611 </span> :
|
||||
<span class="lineNum"> 612 </span> : /**
|
||||
<a name="613"><span class="lineNum"> 613 </span> : * Print a probability with space padding.</a>
|
||||
<span class="lineNum"> 614 </span> : */
|
||||
<span class="lineNum"> 615 </span><span class="lineCov"> 18 : static void printp(double v, size_t pad)</span>
|
||||
<span class="lineNum"> 616 </span> : {
|
||||
<span class="lineNum"> 617 </span> : char buf[64];
|
||||
<span class="lineNum"> 618 </span><span class="lineCov"> 18 : const char* s = "%";</span>
|
||||
<span class="lineNum"> 619 </span> :
|
||||
<span class="lineNum"> 620 </span><span class="lineCov"> 18 : if (v > 0.1)</span>
|
||||
<span class="lineNum"> 621 </span><span class="lineCov"> 4 : snprintf(buf, sizeof(buf), "%5.2f%s", v, s);</span>
|
||||
<span class="lineNum"> 622 </span><span class="lineCov"> 14 : else if (v > 0.01)</span>
|
||||
<span class="lineNum"> 623 </span><span class="lineCov"> 2 : snprintf(buf, sizeof(buf), "%6.3f%s", v, s);</span>
|
||||
<span class="lineNum"> 624 </span><span class="lineCov"> 12 : else if (v > 0.001)</span>
|
||||
<span class="lineNum"> 625 </span><span class="lineCov"> 3 : snprintf(buf, sizeof(buf), "%7.4f%s", v, s);</span>
|
||||
<span class="lineNum"> 626 </span><span class="lineCov"> 9 : else if (v > 0.0001)</span>
|
||||
<span class="lineNum"> 627 </span><span class="lineCov"> 2 : snprintf(buf, sizeof(buf), "%8.5f%s", v, s);</span>
|
||||
<span class="lineNum"> 628 </span><span class="lineCov"> 7 : else if (v > 0.00001)</span>
|
||||
<span class="lineNum"> 629 </span><span class="lineCov"> 2 : snprintf(buf, sizeof(buf), "%9.6f%s", v, s);</span>
|
||||
<span class="lineNum"> 630 </span><span class="lineCov"> 5 : else if (v > 0.000001)</span>
|
||||
<span class="lineNum"> 631 </span><span class="lineCov"> 1 : snprintf(buf, sizeof(buf), "%10.7f%s", v, s);</span>
|
||||
<span class="lineNum"> 632 </span><span class="lineCov"> 4 : else if (v > 0.0000001)</span>
|
||||
<span class="lineNum"> 633 </span><span class="lineCov"> 1 : snprintf(buf, sizeof(buf), "%11.8f%s", v, s);</span>
|
||||
<span class="lineNum"> 634 </span><span class="lineCov"> 3 : else if (v > 0.00000001)</span>
|
||||
<span class="lineNum"> 635 </span><span class="lineCov"> 1 : snprintf(buf, sizeof(buf), "%12.9f%s", v, s);</span>
|
||||
<span class="lineNum"> 636 </span><span class="lineCov"> 2 : else if (v > 0.000000001)</span>
|
||||
<span class="lineNum"> 637 </span><span class="lineCov"> 1 : snprintf(buf, sizeof(buf), "%13.10f%s", v, s);</span>
|
||||
<span class="lineNum"> 638 </span><span class="lineCov"> 1 : else if (v > 0.0000000001)</span>
|
||||
<span class="lineNum"> 639 </span><span class="lineNoCov"> 0 : snprintf(buf, sizeof(buf), "%14.11f%s", v, s);</span>
|
||||
<span class="lineNum"> 640 </span><span class="lineCov"> 1 : else if (v > 0.00000000001)</span>
|
||||
<span class="lineNum"> 641 </span><span class="lineCov"> 1 : snprintf(buf, sizeof(buf), "%15.12f%s", v, s);</span>
|
||||
<span class="lineNum"> 642 </span><span class="lineNoCov"> 0 : else if (v > 0.000000000001)</span>
|
||||
<span class="lineNum"> 643 </span><span class="lineNoCov"> 0 : snprintf(buf, sizeof(buf), "%16.13f%s", v, s);</span>
|
||||
<span class="lineNum"> 644 </span> : else
|
||||
<span class="lineNum"> 645 </span><span class="lineNoCov"> 0 : snprintf(buf, sizeof(buf), "%17.14f%s", v, s);</span>
|
||||
<span class="lineNum"> 646 </span><span class="lineCov"> 18 : printl(buf, pad);</span>
|
||||
<a name="647"><span class="lineNum"> 647 </span><span class="lineCov"> 18 : }</span></a>
|
||||
<span class="lineNum"> 648 </span> :
|
||||
<span class="lineNum"> 649 </span><span class="lineCov"> 1 : static void state_smart(unsigned n, tommy_list* low)</span>
|
||||
<span class="lineNum"> 650 </span> : {
|
||||
<span class="lineNum"> 651 </span> : tommy_node* i;
|
||||
<span class="lineNum"> 652 </span> : unsigned j;
|
||||
<span class="lineNum"> 653 </span> : size_t device_pad;
|
||||
<span class="lineNum"> 654 </span> : size_t serial_pad;
|
||||
<span class="lineNum"> 655 </span> : int have_parent;
|
||||
<span class="lineNum"> 656 </span> : double array_failure_rate;
|
||||
<span class="lineNum"> 657 </span> : double p_at_least_one_failure;
|
||||
<span class="lineNum"> 658 </span><span class="lineCov"> 1 : int make_it_fail = 0;</span>
|
||||
<span class="lineNum"> 659 </span><span class="lineCov"> 1 : uint64_t mask32 = 0xffffffffU;</span>
|
||||
<span class="lineNum"> 660 </span><span class="lineCov"> 1 : uint64_t mask16 = 0xffffU;</span>
|
||||
<span class="lineNum"> 661 </span> :
|
||||
<span class="lineNum"> 662 </span> : /* compute lengths for padding */
|
||||
<span class="lineNum"> 663 </span><span class="lineCov"> 1 : device_pad = 0;</span>
|
||||
<span class="lineNum"> 664 </span><span class="lineCov"> 1 : serial_pad = 0;</span>
|
||||
<span class="lineNum"> 665 </span><span class="lineCov"> 1 : have_parent = 0;</span>
|
||||
<span class="lineNum"> 666 </span><span class="lineCov"> 17 : for (i = tommy_list_head(low); i != 0; i = i->next) {</span>
|
||||
<span class="lineNum"> 667 </span> : size_t len;
|
||||
<span class="lineNum"> 668 </span><span class="lineCov"> 16 : devinfo_t* devinfo = i->data;</span>
|
||||
<span class="lineNum"> 669 </span> :
|
||||
<span class="lineNum"> 670 </span><span class="lineCov"> 16 : len = strlen(devinfo->file);</span>
|
||||
<span class="lineNum"> 671 </span><span class="lineCov"> 16 : if (len > device_pad)</span>
|
||||
<span class="lineNum"> 672 </span><span class="lineCov"> 1 : device_pad = len;</span>
|
||||
<span class="lineNum"> 606 </span><span class="lineCov"> 52 : printf("%s", str);</span>
|
||||
<span class="lineNum"> 607 </span> :
|
||||
<span class="lineNum"> 608 </span><span class="lineCov"> 52 : len = strlen(str);</span>
|
||||
<span class="lineNum"> 609 </span> :
|
||||
<span class="lineNum"> 610 </span><span class="lineCov"> 245 : while (len < pad) {</span>
|
||||
<span class="lineNum"> 611 </span><span class="lineCov"> 141 : printf(" ");</span>
|
||||
<span class="lineNum"> 612 </span><span class="lineCov"> 141 : ++len;</span>
|
||||
<span class="lineNum"> 613 </span> : }
|
||||
<span class="lineNum"> 614 </span><span class="lineCov"> 52 : }</span>
|
||||
<span class="lineNum"> 615 </span> :
|
||||
<span class="lineNum"> 616 </span> : /**
|
||||
<a name="617"><span class="lineNum"> 617 </span> : * Print a probability with space padding.</a>
|
||||
<span class="lineNum"> 618 </span> : */
|
||||
<span class="lineNum"> 619 </span><span class="lineCov"> 18 : static void printp(double v, size_t pad)</span>
|
||||
<span class="lineNum"> 620 </span> : {
|
||||
<span class="lineNum"> 621 </span> : char buf[64];
|
||||
<span class="lineNum"> 622 </span><span class="lineCov"> 18 : const char* s = "%";</span>
|
||||
<span class="lineNum"> 623 </span> :
|
||||
<span class="lineNum"> 624 </span><span class="lineCov"> 18 : if (v > 0.1)</span>
|
||||
<span class="lineNum"> 625 </span><span class="lineCov"> 4 : snprintf(buf, sizeof(buf), "%5.2f%s", v, s);</span>
|
||||
<span class="lineNum"> 626 </span><span class="lineCov"> 14 : else if (v > 0.01)</span>
|
||||
<span class="lineNum"> 627 </span><span class="lineCov"> 2 : snprintf(buf, sizeof(buf), "%6.3f%s", v, s);</span>
|
||||
<span class="lineNum"> 628 </span><span class="lineCov"> 12 : else if (v > 0.001)</span>
|
||||
<span class="lineNum"> 629 </span><span class="lineCov"> 3 : snprintf(buf, sizeof(buf), "%7.4f%s", v, s);</span>
|
||||
<span class="lineNum"> 630 </span><span class="lineCov"> 9 : else if (v > 0.0001)</span>
|
||||
<span class="lineNum"> 631 </span><span class="lineCov"> 2 : snprintf(buf, sizeof(buf), "%8.5f%s", v, s);</span>
|
||||
<span class="lineNum"> 632 </span><span class="lineCov"> 7 : else if (v > 0.00001)</span>
|
||||
<span class="lineNum"> 633 </span><span class="lineCov"> 2 : snprintf(buf, sizeof(buf), "%9.6f%s", v, s);</span>
|
||||
<span class="lineNum"> 634 </span><span class="lineCov"> 5 : else if (v > 0.000001)</span>
|
||||
<span class="lineNum"> 635 </span><span class="lineCov"> 1 : snprintf(buf, sizeof(buf), "%10.7f%s", v, s);</span>
|
||||
<span class="lineNum"> 636 </span><span class="lineCov"> 4 : else if (v > 0.0000001)</span>
|
||||
<span class="lineNum"> 637 </span><span class="lineCov"> 1 : snprintf(buf, sizeof(buf), "%11.8f%s", v, s);</span>
|
||||
<span class="lineNum"> 638 </span><span class="lineCov"> 3 : else if (v > 0.00000001)</span>
|
||||
<span class="lineNum"> 639 </span><span class="lineCov"> 1 : snprintf(buf, sizeof(buf), "%12.9f%s", v, s);</span>
|
||||
<span class="lineNum"> 640 </span><span class="lineCov"> 2 : else if (v > 0.000000001)</span>
|
||||
<span class="lineNum"> 641 </span><span class="lineCov"> 1 : snprintf(buf, sizeof(buf), "%13.10f%s", v, s);</span>
|
||||
<span class="lineNum"> 642 </span><span class="lineCov"> 1 : else if (v > 0.0000000001)</span>
|
||||
<span class="lineNum"> 643 </span><span class="lineNoCov"> 0 : snprintf(buf, sizeof(buf), "%14.11f%s", v, s);</span>
|
||||
<span class="lineNum"> 644 </span><span class="lineCov"> 1 : else if (v > 0.00000000001)</span>
|
||||
<span class="lineNum"> 645 </span><span class="lineCov"> 1 : snprintf(buf, sizeof(buf), "%15.12f%s", v, s);</span>
|
||||
<span class="lineNum"> 646 </span><span class="lineNoCov"> 0 : else if (v > 0.000000000001)</span>
|
||||
<span class="lineNum"> 647 </span><span class="lineNoCov"> 0 : snprintf(buf, sizeof(buf), "%16.13f%s", v, s);</span>
|
||||
<span class="lineNum"> 648 </span> : else
|
||||
<span class="lineNum"> 649 </span><span class="lineNoCov"> 0 : snprintf(buf, sizeof(buf), "%17.14f%s", v, s);</span>
|
||||
<span class="lineNum"> 650 </span><span class="lineCov"> 18 : printl(buf, pad);</span>
|
||||
<a name="651"><span class="lineNum"> 651 </span><span class="lineCov"> 18 : }</span></a>
|
||||
<span class="lineNum"> 652 </span> :
|
||||
<span class="lineNum"> 653 </span><span class="lineCov"> 1 : static void state_smart(unsigned n, tommy_list* low)</span>
|
||||
<span class="lineNum"> 654 </span> : {
|
||||
<span class="lineNum"> 655 </span> : tommy_node* i;
|
||||
<span class="lineNum"> 656 </span> : unsigned j;
|
||||
<span class="lineNum"> 657 </span> : size_t device_pad;
|
||||
<span class="lineNum"> 658 </span> : size_t serial_pad;
|
||||
<span class="lineNum"> 659 </span> : int have_parent;
|
||||
<span class="lineNum"> 660 </span> : double array_failure_rate;
|
||||
<span class="lineNum"> 661 </span> : double p_at_least_one_failure;
|
||||
<span class="lineNum"> 662 </span><span class="lineCov"> 1 : int make_it_fail = 0;</span>
|
||||
<span class="lineNum"> 663 </span><span class="lineCov"> 1 : uint64_t mask32 = 0xffffffffU;</span>
|
||||
<span class="lineNum"> 664 </span><span class="lineCov"> 1 : uint64_t mask16 = 0xffffU;</span>
|
||||
<span class="lineNum"> 665 </span> :
|
||||
<span class="lineNum"> 666 </span> : /* compute lengths for padding */
|
||||
<span class="lineNum"> 667 </span><span class="lineCov"> 1 : device_pad = 0;</span>
|
||||
<span class="lineNum"> 668 </span><span class="lineCov"> 1 : serial_pad = 0;</span>
|
||||
<span class="lineNum"> 669 </span><span class="lineCov"> 1 : have_parent = 0;</span>
|
||||
<span class="lineNum"> 670 </span><span class="lineCov"> 17 : for (i = tommy_list_head(low); i != 0; i = i->next) {</span>
|
||||
<span class="lineNum"> 671 </span> : size_t len;
|
||||
<span class="lineNum"> 672 </span><span class="lineCov"> 16 : devinfo_t* devinfo = i->data;</span>
|
||||
<span class="lineNum"> 673 </span> :
|
||||
<span class="lineNum"> 674 </span><span class="lineCov"> 16 : len = strlen(devinfo->smart_serial);</span>
|
||||
<span class="lineNum"> 675 </span><span class="lineCov"> 16 : if (len > serial_pad)</span>
|
||||
<span class="lineNum"> 676 </span><span class="lineCov"> 2 : serial_pad = len;</span>
|
||||
<span class="lineNum"> 674 </span><span class="lineCov"> 16 : len = strlen(devinfo->file);</span>
|
||||
<span class="lineNum"> 675 </span><span class="lineCov"> 16 : if (len > device_pad)</span>
|
||||
<span class="lineNum"> 676 </span><span class="lineCov"> 1 : device_pad = len;</span>
|
||||
<span class="lineNum"> 677 </span> :
|
||||
<span class="lineNum"> 678 </span><span class="lineCov"> 16 : if (devinfo->parent != 0)</span>
|
||||
<span class="lineNum"> 679 </span><span class="lineNoCov"> 0 : have_parent = 1;</span>
|
||||
<span class="lineNum"> 680 </span> : }
|
||||
<span class="lineNum"> 678 </span><span class="lineCov"> 16 : len = strlen(devinfo->smart_serial);</span>
|
||||
<span class="lineNum"> 679 </span><span class="lineCov"> 16 : if (len > serial_pad)</span>
|
||||
<span class="lineNum"> 680 </span><span class="lineCov"> 2 : serial_pad = len;</span>
|
||||
<span class="lineNum"> 681 </span> :
|
||||
<span class="lineNum"> 682 </span><span class="lineCov"> 1 : printf("SnapRAID SMART report:\n");</span>
|
||||
<span class="lineNum"> 683 </span><span class="lineCov"> 1 : printf("\n");</span>
|
||||
<span class="lineNum"> 684 </span><span class="lineCov"> 1 : printf(" Temp");</span>
|
||||
<span class="lineNum"> 685 </span><span class="lineCov"> 1 : printf(" Power");</span>
|
||||
<span class="lineNum"> 686 </span><span class="lineCov"> 1 : printf(" Error");</span>
|
||||
<span class="lineNum"> 687 </span><span class="lineCov"> 1 : printf(" FP");</span>
|
||||
<span class="lineNum"> 688 </span><span class="lineCov"> 1 : printf(" Size");</span>
|
||||
<span class="lineNum"> 689 </span><span class="lineCov"> 1 : printf("\n");</span>
|
||||
<span class="lineNum"> 690 </span><span class="lineCov"> 1 : printf(" C");</span>
|
||||
<span class="lineNum"> 691 </span><span class="lineCov"> 1 : printf(" OnDays");</span>
|
||||
<span class="lineNum"> 692 </span><span class="lineCov"> 1 : printf(" Count");</span>
|
||||
<span class="lineNum"> 693 </span><span class="lineCov"> 1 : printf(" ");</span>
|
||||
<span class="lineNum"> 694 </span><span class="lineCov"> 1 : printf(" TB");</span>
|
||||
<span class="lineNum"> 695 </span><span class="lineCov"> 1 : printf(" "); printl("Serial", serial_pad);</span>
|
||||
<span class="lineNum"> 696 </span><span class="lineCov"> 1 : printf(" "); printl("Device", device_pad);</span>
|
||||
<span class="lineNum"> 697 </span><span class="lineCov"> 1 : printf(" Disk");</span>
|
||||
<span class="lineNum"> 698 </span><span class="lineCov"> 1 : printf("\n");</span>
|
||||
<span class="lineNum"> 699 </span> : /* |<##################################################################72>|####80>| */
|
||||
<span class="lineNum"> 700 </span><span class="lineCov"> 1 : printf(" -----------------------------------------------------------------------\n");</span>
|
||||
<span class="lineNum"> 701 </span> :
|
||||
<span class="lineNum"> 702 </span><span class="lineCov"> 1 : array_failure_rate = 0;</span>
|
||||
<span class="lineNum"> 703 </span><span class="lineCov"> 17 : for (i = tommy_list_head(low); i != 0; i = i->next) {</span>
|
||||
<span class="lineNum"> 704 </span><span class="lineCov"> 16 : devinfo_t* devinfo = i->data;</span>
|
||||
<span class="lineNum"> 705 </span> : double afr;
|
||||
<span class="lineNum"> 706 </span> : uint64_t flag;
|
||||
<span class="lineNum"> 707 </span> :
|
||||
<span class="lineNum"> 708 </span><span class="lineCov"> 16 : if (devinfo->smart[194] != SMART_UNASSIGNED)</span>
|
||||
<span class="lineNum"> 709 </span><span class="lineCov"> 15 : printf("%7" PRIu64, devinfo->smart[194] & mask16);</span>
|
||||
<span class="lineNum"> 710 </span><span class="lineCov"> 1 : else if (devinfo->smart[190] != SMART_UNASSIGNED)</span>
|
||||
<span class="lineNum"> 711 </span><span class="lineNoCov"> 0 : printf("%7" PRIu64, devinfo->smart[190] & mask16);</span>
|
||||
<span class="lineNum"> 712 </span> : else
|
||||
<span class="lineNum"> 713 </span><span class="lineCov"> 1 : printf(" -");</span>
|
||||
<span class="lineNum"> 714 </span> :
|
||||
<span class="lineNum"> 715 </span><span class="lineCov"> 16 : if (devinfo->smart[9] != SMART_UNASSIGNED)</span>
|
||||
<span class="lineNum"> 716 </span><span class="lineCov"> 15 : printf("%7" PRIu64, (devinfo->smart[9] & mask32) / 24);</span>
|
||||
<span class="lineNum"> 717 </span> : else
|
||||
<span class="lineNum"> 718 </span><span class="lineCov"> 1 : printf(" -");</span>
|
||||
<span class="lineNum"> 719 </span> :
|
||||
<span class="lineNum"> 720 </span><span class="lineCov"> 16 : if (devinfo->smart[SMART_FLAGS] != SMART_UNASSIGNED)</span>
|
||||
<span class="lineNum"> 721 </span><span class="lineCov"> 8 : flag = devinfo->smart[SMART_FLAGS];</span>
|
||||
<span class="lineNum"> 722 </span> : else
|
||||
<span class="lineNum"> 723 </span><span class="lineCov"> 8 : flag = 0;</span>
|
||||
<span class="lineNum"> 724 </span><span class="lineCov"> 16 : if (flag & SMARTCTL_FLAG_FAIL)</span>
|
||||
<span class="lineNum"> 725 </span><span class="lineCov"> 1 : printf(" FAIL");</span>
|
||||
<span class="lineNum"> 726 </span><span class="lineCov"> 15 : else if (flag & SMARTCTL_FLAG_PREFAIL)</span>
|
||||
<span class="lineNum"> 727 </span><span class="lineCov"> 1 : printf(" PREFAIL");</span>
|
||||
<span class="lineNum"> 728 </span><span class="lineCov"> 14 : else if (flag & SMARTCTL_FLAG_PREFAIL_LOGGED)</span>
|
||||
<span class="lineNum"> 729 </span><span class="lineCov"> 1 : printf(" logfail");</span>
|
||||
<span class="lineNum"> 730 </span><span class="lineCov"> 13 : else if (devinfo->smart[SMART_ERROR] != SMART_UNASSIGNED</span>
|
||||
<span class="lineNum"> 731 </span><span class="lineCov"> 13 : && devinfo->smart[SMART_ERROR] != 0)</span>
|
||||
<span class="lineNum"> 732 </span><span class="lineCov"> 1 : printf("%8" PRIu64, devinfo->smart[SMART_ERROR]);</span>
|
||||
<span class="lineNum"> 733 </span><span class="lineCov"> 12 : else if (flag & SMARTCTL_FLAG_ERROR)</span>
|
||||
<span class="lineNum"> 734 </span><span class="lineCov"> 1 : printf(" logerr");</span>
|
||||
<span class="lineNum"> 735 </span><span class="lineCov"> 11 : else if (flag & SMARTCTL_FLAG_ERROR_LOGGED)</span>
|
||||
<span class="lineNum"> 736 </span><span class="lineCov"> 1 : printf(" selferr");</span>
|
||||
<span class="lineNum"> 737 </span><span class="lineCov"> 10 : else if (devinfo->smart[SMART_ERROR] == 0)</span>
|
||||
<span class="lineNum"> 738 </span><span class="lineCov"> 10 : printf(" 0");</span>
|
||||
<span class="lineNum"> 739 </span> : else
|
||||
<span class="lineNum"> 740 </span><span class="lineNoCov"> 0 : printf(" -");</span>
|
||||
<span class="lineNum"> 741 </span> :
|
||||
<span class="lineNum"> 742 </span> : /* if some fail/prefail attribute, make the command to fail */
|
||||
<span class="lineNum"> 743 </span><span class="lineCov"> 16 : if (flag & (SMARTCTL_FLAG_FAIL | SMARTCTL_FLAG_PREFAIL))</span>
|
||||
<span class="lineNum"> 744 </span><span class="lineCov"> 2 : make_it_fail = 1;</span>
|
||||
<span class="lineNum"> 682 </span><span class="lineCov"> 16 : if (devinfo->parent != 0)</span>
|
||||
<span class="lineNum"> 683 </span><span class="lineNoCov"> 0 : have_parent = 1;</span>
|
||||
<span class="lineNum"> 684 </span> : }
|
||||
<span class="lineNum"> 685 </span> :
|
||||
<span class="lineNum"> 686 </span><span class="lineCov"> 1 : printf("SnapRAID SMART report:\n");</span>
|
||||
<span class="lineNum"> 687 </span><span class="lineCov"> 1 : printf("\n");</span>
|
||||
<span class="lineNum"> 688 </span><span class="lineCov"> 1 : printf(" Temp");</span>
|
||||
<span class="lineNum"> 689 </span><span class="lineCov"> 1 : printf(" Power");</span>
|
||||
<span class="lineNum"> 690 </span><span class="lineCov"> 1 : printf(" Error");</span>
|
||||
<span class="lineNum"> 691 </span><span class="lineCov"> 1 : printf(" FP");</span>
|
||||
<span class="lineNum"> 692 </span><span class="lineCov"> 1 : printf(" Size");</span>
|
||||
<span class="lineNum"> 693 </span><span class="lineCov"> 1 : printf("\n");</span>
|
||||
<span class="lineNum"> 694 </span><span class="lineCov"> 1 : printf(" C");</span>
|
||||
<span class="lineNum"> 695 </span><span class="lineCov"> 1 : printf(" OnDays");</span>
|
||||
<span class="lineNum"> 696 </span><span class="lineCov"> 1 : printf(" Count");</span>
|
||||
<span class="lineNum"> 697 </span><span class="lineCov"> 1 : printf(" ");</span>
|
||||
<span class="lineNum"> 698 </span><span class="lineCov"> 1 : printf(" TB");</span>
|
||||
<span class="lineNum"> 699 </span><span class="lineCov"> 1 : printf(" "); printl("Serial", serial_pad);</span>
|
||||
<span class="lineNum"> 700 </span><span class="lineCov"> 1 : printf(" "); printl("Device", device_pad);</span>
|
||||
<span class="lineNum"> 701 </span><span class="lineCov"> 1 : printf(" Disk");</span>
|
||||
<span class="lineNum"> 702 </span><span class="lineCov"> 1 : printf("\n");</span>
|
||||
<span class="lineNum"> 703 </span> : /* |<##################################################################72>|####80>| */
|
||||
<span class="lineNum"> 704 </span><span class="lineCov"> 1 : printf(" -----------------------------------------------------------------------\n");</span>
|
||||
<span class="lineNum"> 705 </span> :
|
||||
<span class="lineNum"> 706 </span><span class="lineCov"> 1 : array_failure_rate = 0;</span>
|
||||
<span class="lineNum"> 707 </span><span class="lineCov"> 17 : for (i = tommy_list_head(low); i != 0; i = i->next) {</span>
|
||||
<span class="lineNum"> 708 </span><span class="lineCov"> 16 : devinfo_t* devinfo = i->data;</span>
|
||||
<span class="lineNum"> 709 </span> : double afr;
|
||||
<span class="lineNum"> 710 </span> : uint64_t flag;
|
||||
<span class="lineNum"> 711 </span> :
|
||||
<span class="lineNum"> 712 </span><span class="lineCov"> 16 : if (devinfo->smart[194] != SMART_UNASSIGNED)</span>
|
||||
<span class="lineNum"> 713 </span><span class="lineCov"> 15 : printf("%7" PRIu64, devinfo->smart[194] & mask16);</span>
|
||||
<span class="lineNum"> 714 </span><span class="lineCov"> 1 : else if (devinfo->smart[190] != SMART_UNASSIGNED)</span>
|
||||
<span class="lineNum"> 715 </span><span class="lineNoCov"> 0 : printf("%7" PRIu64, devinfo->smart[190] & mask16);</span>
|
||||
<span class="lineNum"> 716 </span> : else
|
||||
<span class="lineNum"> 717 </span><span class="lineCov"> 1 : printf(" -");</span>
|
||||
<span class="lineNum"> 718 </span> :
|
||||
<span class="lineNum"> 719 </span><span class="lineCov"> 16 : if (devinfo->smart[9] != SMART_UNASSIGNED)</span>
|
||||
<span class="lineNum"> 720 </span><span class="lineCov"> 15 : printf("%7" PRIu64, (devinfo->smart[9] & mask32) / 24);</span>
|
||||
<span class="lineNum"> 721 </span> : else
|
||||
<span class="lineNum"> 722 </span><span class="lineCov"> 1 : printf(" -");</span>
|
||||
<span class="lineNum"> 723 </span> :
|
||||
<span class="lineNum"> 724 </span><span class="lineCov"> 16 : if (devinfo->smart[SMART_FLAGS] != SMART_UNASSIGNED)</span>
|
||||
<span class="lineNum"> 725 </span><span class="lineCov"> 8 : flag = devinfo->smart[SMART_FLAGS];</span>
|
||||
<span class="lineNum"> 726 </span> : else
|
||||
<span class="lineNum"> 727 </span><span class="lineCov"> 8 : flag = 0;</span>
|
||||
<span class="lineNum"> 728 </span><span class="lineCov"> 16 : if (flag & SMARTCTL_FLAG_FAIL)</span>
|
||||
<span class="lineNum"> 729 </span><span class="lineCov"> 1 : printf(" FAIL");</span>
|
||||
<span class="lineNum"> 730 </span><span class="lineCov"> 15 : else if (flag & SMARTCTL_FLAG_PREFAIL)</span>
|
||||
<span class="lineNum"> 731 </span><span class="lineCov"> 1 : printf(" PREFAIL");</span>
|
||||
<span class="lineNum"> 732 </span><span class="lineCov"> 14 : else if (flag & SMARTCTL_FLAG_PREFAIL_LOGGED)</span>
|
||||
<span class="lineNum"> 733 </span><span class="lineCov"> 1 : printf(" logfail");</span>
|
||||
<span class="lineNum"> 734 </span><span class="lineCov"> 13 : else if (devinfo->smart[SMART_ERROR] != SMART_UNASSIGNED</span>
|
||||
<span class="lineNum"> 735 </span><span class="lineCov"> 13 : && devinfo->smart[SMART_ERROR] != 0)</span>
|
||||
<span class="lineNum"> 736 </span><span class="lineCov"> 1 : printf("%8" PRIu64, devinfo->smart[SMART_ERROR]);</span>
|
||||
<span class="lineNum"> 737 </span><span class="lineCov"> 12 : else if (flag & SMARTCTL_FLAG_ERROR)</span>
|
||||
<span class="lineNum"> 738 </span><span class="lineCov"> 1 : printf(" logerr");</span>
|
||||
<span class="lineNum"> 739 </span><span class="lineCov"> 11 : else if (flag & SMARTCTL_FLAG_ERROR_LOGGED)</span>
|
||||
<span class="lineNum"> 740 </span><span class="lineCov"> 1 : printf(" selferr");</span>
|
||||
<span class="lineNum"> 741 </span><span class="lineCov"> 10 : else if (devinfo->smart[SMART_ERROR] == 0)</span>
|
||||
<span class="lineNum"> 742 </span><span class="lineCov"> 10 : printf(" 0");</span>
|
||||
<span class="lineNum"> 743 </span> : else
|
||||
<span class="lineNum"> 744 </span><span class="lineNoCov"> 0 : printf(" -");</span>
|
||||
<span class="lineNum"> 745 </span> :
|
||||
<span class="lineNum"> 746 </span> : /* note that in older smartmontools, like 5.x, rotation rate is not present */
|
||||
<span class="lineNum"> 747 </span> : /* and then it could remain unassigned */
|
||||
<span class="lineNum"> 748 </span> :
|
||||
<span class="lineNum"> 749 </span><span class="lineCov"> 16 : if (flag & (SMARTCTL_FLAG_UNSUPPORTED | SMARTCTL_FLAG_OPEN)) {</span>
|
||||
<span class="lineNum"> 750 </span> : /* if error running smartctl, skip AFR estimation */
|
||||
<span class="lineNum"> 751 </span><span class="lineCov"> 2 : afr = 0;</span>
|
||||
<span class="lineNum"> 752 </span><span class="lineCov"> 2 : printf(" n/a");</span>
|
||||
<span class="lineNum"> 753 </span><span class="lineCov"> 14 : } else if (devinfo->smart[SMART_ROTATION_RATE] == 0) {</span>
|
||||
<span class="lineNum"> 754 </span> : /* if SSD, skip AFR estimation as data is from not SSD disks */
|
||||
<span class="lineNum"> 755 </span><span class="lineCov"> 1 : afr = 0;</span>
|
||||
<span class="lineNum"> 756 </span><span class="lineCov"> 1 : printf(" SSD");</span>
|
||||
<span class="lineNum"> 757 </span> : } else {
|
||||
<span class="lineNum"> 758 </span><span class="lineCov"> 13 : afr = smart_afr(devinfo->smart);</span>
|
||||
<span class="lineNum"> 759 </span> :
|
||||
<span class="lineNum"> 760 </span><span class="lineCov"> 13 : if (afr == 0) {</span>
|
||||
<span class="lineNum"> 761 </span> : /* this happens only if no data */
|
||||
<span class="lineNum"> 762 </span><span class="lineCov"> 1 : printf(" -");</span>
|
||||
<span class="lineNum"> 763 </span> : } else {
|
||||
<span class="lineNum"> 764 </span> : /* use only the disks in the array */
|
||||
<span class="lineNum"> 765 </span><span class="lineCov"> 12 : if (devinfo->parent != 0 || !have_parent)</span>
|
||||
<span class="lineNum"> 766 </span><span class="lineCov"> 12 : array_failure_rate += afr;</span>
|
||||
<span class="lineNum"> 767 </span> :
|
||||
<span class="lineNum"> 768 </span><span class="lineCov"> 12 : printf("%4.0f%%", poisson_prob_n_or_more_failures(afr, 1) * 100);</span>
|
||||
<span class="lineNum"> 769 </span> : }
|
||||
<span class="lineNum"> 770 </span> : }
|
||||
<span class="lineNum"> 746 </span> : /* if some fail/prefail attribute, make the command to fail */
|
||||
<span class="lineNum"> 747 </span><span class="lineCov"> 16 : if (flag & (SMARTCTL_FLAG_FAIL | SMARTCTL_FLAG_PREFAIL))</span>
|
||||
<span class="lineNum"> 748 </span><span class="lineCov"> 2 : make_it_fail = 1;</span>
|
||||
<span class="lineNum"> 749 </span> :
|
||||
<span class="lineNum"> 750 </span> : /* note that in older smartmontools, like 5.x, rotation rate is not present */
|
||||
<span class="lineNum"> 751 </span> : /* and then it could remain unassigned */
|
||||
<span class="lineNum"> 752 </span> :
|
||||
<span class="lineNum"> 753 </span><span class="lineCov"> 16 : if (flag & (SMARTCTL_FLAG_UNSUPPORTED | SMARTCTL_FLAG_OPEN)) {</span>
|
||||
<span class="lineNum"> 754 </span> : /* if error running smartctl, skip AFR estimation */
|
||||
<span class="lineNum"> 755 </span><span class="lineCov"> 2 : afr = 0;</span>
|
||||
<span class="lineNum"> 756 </span><span class="lineCov"> 2 : printf(" n/a");</span>
|
||||
<span class="lineNum"> 757 </span><span class="lineCov"> 14 : } else if (devinfo->smart[SMART_ROTATION_RATE] == 0) {</span>
|
||||
<span class="lineNum"> 758 </span> : /* if SSD, skip AFR estimation as data is from not SSD disks */
|
||||
<span class="lineNum"> 759 </span><span class="lineCov"> 1 : afr = 0;</span>
|
||||
<span class="lineNum"> 760 </span><span class="lineCov"> 1 : printf(" SSD");</span>
|
||||
<span class="lineNum"> 761 </span> : } else {
|
||||
<span class="lineNum"> 762 </span><span class="lineCov"> 13 : afr = smart_afr(devinfo->smart);</span>
|
||||
<span class="lineNum"> 763 </span> :
|
||||
<span class="lineNum"> 764 </span><span class="lineCov"> 13 : if (afr == 0) {</span>
|
||||
<span class="lineNum"> 765 </span> : /* this happens only if no data */
|
||||
<span class="lineNum"> 766 </span><span class="lineCov"> 1 : printf(" -");</span>
|
||||
<span class="lineNum"> 767 </span> : } else {
|
||||
<span class="lineNum"> 768 </span> : /* use only the disks in the array */
|
||||
<span class="lineNum"> 769 </span><span class="lineCov"> 12 : if (devinfo->parent != 0 || !have_parent)</span>
|
||||
<span class="lineNum"> 770 </span><span class="lineCov"> 12 : array_failure_rate += afr;</span>
|
||||
<span class="lineNum"> 771 </span> :
|
||||
<span class="lineNum"> 772 </span><span class="lineCov"> 16 : if (devinfo->smart[SMART_SIZE] != SMART_UNASSIGNED)</span>
|
||||
<span class="lineNum"> 773 </span><span class="lineCov"> 15 : printf(" %4.1f", devinfo->smart[SMART_SIZE] / 1E12);</span>
|
||||
<span class="lineNum"> 774 </span> : else
|
||||
<span class="lineNum"> 775 </span><span class="lineCov"> 1 : printf(" -");</span>
|
||||
<span class="lineNum"> 776 </span> :
|
||||
<span class="lineNum"> 777 </span><span class="lineCov"> 16 : printf(" ");</span>
|
||||
<span class="lineNum"> 778 </span><span class="lineCov"> 16 : if (*devinfo->smart_serial)</span>
|
||||
<span class="lineNum"> 779 </span><span class="lineCov"> 15 : printl(devinfo->smart_serial, serial_pad);</span>
|
||||
<span class="lineNum"> 780 </span> : else
|
||||
<span class="lineNum"> 781 </span><span class="lineCov"> 1 : printl("-", serial_pad);</span>
|
||||
<span class="lineNum"> 782 </span> :
|
||||
<span class="lineNum"> 783 </span><span class="lineCov"> 16 : printf(" ");</span>
|
||||
<span class="lineNum"> 784 </span><span class="lineCov"> 16 : if (*devinfo->file)</span>
|
||||
<span class="lineNum"> 785 </span><span class="lineCov"> 15 : printl(devinfo->file, device_pad);</span>
|
||||
<span class="lineNum"> 786 </span> : else
|
||||
<span class="lineNum"> 787 </span><span class="lineCov"> 1 : printl("-", device_pad);</span>
|
||||
<span class="lineNum"> 788 </span> :
|
||||
<span class="lineNum"> 789 </span><span class="lineCov"> 16 : printf(" ");</span>
|
||||
<span class="lineNum"> 790 </span><span class="lineCov"> 16 : if (*devinfo->name)</span>
|
||||
<span class="lineNum"> 791 </span><span class="lineCov"> 15 : printf("%s", devinfo->name);</span>
|
||||
<span class="lineNum"> 792 </span> : else
|
||||
<span class="lineNum"> 793 </span><span class="lineCov"> 1 : printf("-");</span>
|
||||
<span class="lineNum"> 794 </span> :
|
||||
<span class="lineNum"> 795 </span><span class="lineCov"> 16 : printf("\n");</span>
|
||||
<span class="lineNum"> 796 </span> :
|
||||
<span class="lineNum"> 797 </span><span class="lineCov"> 16 : log_tag("smart:%s:%s\n", devinfo->file, devinfo->name);</span>
|
||||
<span class="lineNum"> 798 </span><span class="lineCov"> 16 : if (devinfo->smart_serial[0])</span>
|
||||
<span class="lineNum"> 799 </span><span class="lineCov"> 15 : log_tag("attr:%s:%s:serial:%s\n", devinfo->file, devinfo->name, esc(devinfo->smart_serial));</span>
|
||||
<span class="lineNum"> 800 </span><span class="lineCov"> 16 : if (afr != 0)</span>
|
||||
<span class="lineNum"> 801 </span><span class="lineCov"> 12 : log_tag("attr:%s:%s:afr:%g\n", devinfo->file, devinfo->name, afr);</span>
|
||||
<span class="lineNum"> 802 </span><span class="lineCov"> 16 : if (devinfo->smart[SMART_SIZE] != SMART_UNASSIGNED)</span>
|
||||
<span class="lineNum"> 803 </span><span class="lineCov"> 15 : log_tag("attr:%s:%s:size:%" PRIu64 "\n", devinfo->file, devinfo->name, devinfo->smart[SMART_SIZE]);</span>
|
||||
<span class="lineNum"> 804 </span><span class="lineCov"> 16 : if (devinfo->smart[SMART_ERROR] != SMART_UNASSIGNED)</span>
|
||||
<span class="lineNum"> 805 </span><span class="lineCov"> 16 : log_tag("attr:%s:%s:error:%" PRIu64 "\n", devinfo->file, devinfo->name, devinfo->smart[SMART_ERROR]);</span>
|
||||
<span class="lineNum"> 806 </span><span class="lineCov"> 16 : if (devinfo->smart[SMART_ROTATION_RATE] != SMART_UNASSIGNED)</span>
|
||||
<span class="lineNum"> 807 </span><span class="lineCov"> 16 : log_tag("attr:%s:%s:rotationrate:%" PRIu64 "\n", devinfo->file, devinfo->name, devinfo->smart[SMART_ROTATION_RATE]);</span>
|
||||
<span class="lineNum"> 808 </span><span class="lineCov"> 16 : if (devinfo->smart[SMART_FLAGS] != SMART_UNASSIGNED)</span>
|
||||
<span class="lineNum"> 809 </span><span class="lineCov"> 8 : log_tag("attr:%s:%s:flags:%" PRIu64 ":%" PRIx64 "\n", devinfo->file, devinfo->name, devinfo->smart[SMART_FLAGS], devinfo->smart[SMART_FLAGS]);</span>
|
||||
<span class="lineNum"> 810 </span><span class="lineCov"> 4112 : for (j = 0; j < 256; ++j)</span>
|
||||
<span class="lineNum"> 811 </span><span class="lineCov"> 4096 : if (devinfo->smart[j] != SMART_UNASSIGNED)</span>
|
||||
<span class="lineNum"> 812 </span><span class="lineCov"> 3840 : log_tag("attr:%s:%s:%u:%" PRIu64 ":%" PRIx64 "\n", devinfo->file, devinfo->name, j, devinfo->smart[j], devinfo->smart[j]);</span>
|
||||
<span class="lineNum"> 813 </span> : }
|
||||
<span class="lineNum"> 814 </span> :
|
||||
<span class="lineNum"> 815 </span><span class="lineCov"> 1 : printf("\n");</span>
|
||||
<span class="lineNum"> 816 </span> :
|
||||
<span class="lineNum"> 817 </span> : /* |<##################################################################72>|####80>| */
|
||||
<span class="lineNum"> 818 </span><span class="lineCov"> 1 : printf("The FP column is the estimated probability (in percentage) that the disk\n");</span>
|
||||
<span class="lineNum"> 819 </span><span class="lineCov"> 1 : printf("is going to fail in the next year.\n");</span>
|
||||
<span class="lineNum"> 820 </span><span class="lineCov"> 1 : printf("\n");</span>
|
||||
<span class="lineNum"> 821 </span> :
|
||||
<span class="lineNum"> 822 </span> : /*
|
||||
<span class="lineNum"> 823 </span> : * The probability of one and of at least one failure is computed assuming
|
||||
<span class="lineNum"> 824 </span> : * a Poisson distribution with the estimated array failure rate.
|
||||
<span class="lineNum"> 825 </span> : */
|
||||
<span class="lineNum"> 826 </span><span class="lineCov"> 1 : p_at_least_one_failure = poisson_prob_n_or_more_failures(array_failure_rate, 1);</span>
|
||||
<span class="lineNum"> 827 </span> :
|
||||
<span class="lineNum"> 828 </span><span class="lineCov"> 1 : printf("Probability that at least one disk is going to fail in the next year is %.0f%%.\n", p_at_least_one_failure * 100);</span>
|
||||
<span class="lineNum"> 829 </span><span class="lineCov"> 1 : log_tag("summary:array_failure:%g:%g\n", array_failure_rate, p_at_least_one_failure);</span>
|
||||
<span class="lineNum"> 830 </span> :
|
||||
<span class="lineNum"> 831 </span> : /* print extra stats only in verbose mode */
|
||||
<span class="lineNum"> 832 </span><span class="lineCov"> 1 : if (msg_level < MSG_VERBOSE)</span>
|
||||
<span class="lineNum"> 833 </span><span class="lineNoCov"> 0 : goto bail;</span>
|
||||
<span class="lineNum"> 772 </span><span class="lineCov"> 12 : printf("%4.0f%%", poisson_prob_n_or_more_failures(afr, 1) * 100);</span>
|
||||
<span class="lineNum"> 773 </span> : }
|
||||
<span class="lineNum"> 774 </span> : }
|
||||
<span class="lineNum"> 775 </span> :
|
||||
<span class="lineNum"> 776 </span><span class="lineCov"> 16 : if (devinfo->smart[SMART_SIZE] != SMART_UNASSIGNED)</span>
|
||||
<span class="lineNum"> 777 </span><span class="lineCov"> 15 : printf(" %4.1f", devinfo->smart[SMART_SIZE] / 1E12);</span>
|
||||
<span class="lineNum"> 778 </span> : else
|
||||
<span class="lineNum"> 779 </span><span class="lineCov"> 1 : printf(" -");</span>
|
||||
<span class="lineNum"> 780 </span> :
|
||||
<span class="lineNum"> 781 </span><span class="lineCov"> 16 : printf(" ");</span>
|
||||
<span class="lineNum"> 782 </span><span class="lineCov"> 16 : if (*devinfo->smart_serial)</span>
|
||||
<span class="lineNum"> 783 </span><span class="lineCov"> 15 : printl(devinfo->smart_serial, serial_pad);</span>
|
||||
<span class="lineNum"> 784 </span> : else
|
||||
<span class="lineNum"> 785 </span><span class="lineCov"> 1 : printl("-", serial_pad);</span>
|
||||
<span class="lineNum"> 786 </span> :
|
||||
<span class="lineNum"> 787 </span><span class="lineCov"> 16 : printf(" ");</span>
|
||||
<span class="lineNum"> 788 </span><span class="lineCov"> 16 : if (*devinfo->file)</span>
|
||||
<span class="lineNum"> 789 </span><span class="lineCov"> 15 : printl(devinfo->file, device_pad);</span>
|
||||
<span class="lineNum"> 790 </span> : else
|
||||
<span class="lineNum"> 791 </span><span class="lineCov"> 1 : printl("-", device_pad);</span>
|
||||
<span class="lineNum"> 792 </span> :
|
||||
<span class="lineNum"> 793 </span><span class="lineCov"> 16 : printf(" ");</span>
|
||||
<span class="lineNum"> 794 </span><span class="lineCov"> 16 : if (*devinfo->name)</span>
|
||||
<span class="lineNum"> 795 </span><span class="lineCov"> 15 : printf("%s", devinfo->name);</span>
|
||||
<span class="lineNum"> 796 </span> : else
|
||||
<span class="lineNum"> 797 </span><span class="lineCov"> 1 : printf("-");</span>
|
||||
<span class="lineNum"> 798 </span> :
|
||||
<span class="lineNum"> 799 </span><span class="lineCov"> 16 : printf("\n");</span>
|
||||
<span class="lineNum"> 800 </span> :
|
||||
<span class="lineNum"> 801 </span><span class="lineCov"> 16 : log_tag("smart:%s:%s\n", devinfo->file, devinfo->name);</span>
|
||||
<span class="lineNum"> 802 </span><span class="lineCov"> 16 : if (devinfo->smart_serial[0])</span>
|
||||
<span class="lineNum"> 803 </span><span class="lineCov"> 15 : log_tag("attr:%s:%s:serial:%s\n", devinfo->file, devinfo->name, esc(devinfo->smart_serial));</span>
|
||||
<span class="lineNum"> 804 </span><span class="lineCov"> 16 : if (afr != 0)</span>
|
||||
<span class="lineNum"> 805 </span><span class="lineCov"> 12 : log_tag("attr:%s:%s:afr:%g\n", devinfo->file, devinfo->name, afr);</span>
|
||||
<span class="lineNum"> 806 </span><span class="lineCov"> 16 : if (devinfo->smart[SMART_SIZE] != SMART_UNASSIGNED)</span>
|
||||
<span class="lineNum"> 807 </span><span class="lineCov"> 15 : log_tag("attr:%s:%s:size:%" PRIu64 "\n", devinfo->file, devinfo->name, devinfo->smart[SMART_SIZE]);</span>
|
||||
<span class="lineNum"> 808 </span><span class="lineCov"> 16 : if (devinfo->smart[SMART_ERROR] != SMART_UNASSIGNED)</span>
|
||||
<span class="lineNum"> 809 </span><span class="lineCov"> 16 : log_tag("attr:%s:%s:error:%" PRIu64 "\n", devinfo->file, devinfo->name, devinfo->smart[SMART_ERROR]);</span>
|
||||
<span class="lineNum"> 810 </span><span class="lineCov"> 16 : if (devinfo->smart[SMART_ROTATION_RATE] != SMART_UNASSIGNED)</span>
|
||||
<span class="lineNum"> 811 </span><span class="lineCov"> 16 : log_tag("attr:%s:%s:rotationrate:%" PRIu64 "\n", devinfo->file, devinfo->name, devinfo->smart[SMART_ROTATION_RATE]);</span>
|
||||
<span class="lineNum"> 812 </span><span class="lineCov"> 16 : if (devinfo->smart[SMART_FLAGS] != SMART_UNASSIGNED)</span>
|
||||
<span class="lineNum"> 813 </span><span class="lineCov"> 8 : log_tag("attr:%s:%s:flags:%" PRIu64 ":%" PRIx64 "\n", devinfo->file, devinfo->name, devinfo->smart[SMART_FLAGS], devinfo->smart[SMART_FLAGS]);</span>
|
||||
<span class="lineNum"> 814 </span><span class="lineCov"> 4112 : for (j = 0; j < 256; ++j)</span>
|
||||
<span class="lineNum"> 815 </span><span class="lineCov"> 4096 : if (devinfo->smart[j] != SMART_UNASSIGNED)</span>
|
||||
<span class="lineNum"> 816 </span><span class="lineCov"> 3840 : log_tag("attr:%s:%s:%u:%" PRIu64 ":%" PRIx64 "\n", devinfo->file, devinfo->name, j, devinfo->smart[j], devinfo->smart[j]);</span>
|
||||
<span class="lineNum"> 817 </span> : }
|
||||
<span class="lineNum"> 818 </span> :
|
||||
<span class="lineNum"> 819 </span><span class="lineCov"> 1 : printf("\n");</span>
|
||||
<span class="lineNum"> 820 </span> :
|
||||
<span class="lineNum"> 821 </span> : /* |<##################################################################72>|####80>| */
|
||||
<span class="lineNum"> 822 </span><span class="lineCov"> 1 : printf("The FP column is the estimated probability (in percentage) that the disk\n");</span>
|
||||
<span class="lineNum"> 823 </span><span class="lineCov"> 1 : printf("is going to fail in the next year.\n");</span>
|
||||
<span class="lineNum"> 824 </span><span class="lineCov"> 1 : printf("\n");</span>
|
||||
<span class="lineNum"> 825 </span> :
|
||||
<span class="lineNum"> 826 </span> : /*
|
||||
<span class="lineNum"> 827 </span> : * The probability of one and of at least one failure is computed assuming
|
||||
<span class="lineNum"> 828 </span> : * a Poisson distribution with the estimated array failure rate.
|
||||
<span class="lineNum"> 829 </span> : */
|
||||
<span class="lineNum"> 830 </span><span class="lineCov"> 1 : p_at_least_one_failure = poisson_prob_n_or_more_failures(array_failure_rate, 1);</span>
|
||||
<span class="lineNum"> 831 </span> :
|
||||
<span class="lineNum"> 832 </span><span class="lineCov"> 1 : printf("Probability that at least one disk is going to fail in the next year is %.0f%%.\n", p_at_least_one_failure * 100);</span>
|
||||
<span class="lineNum"> 833 </span><span class="lineCov"> 1 : log_tag("summary:array_failure:%g:%g\n", array_failure_rate, p_at_least_one_failure);</span>
|
||||
<span class="lineNum"> 834 </span> :
|
||||
<span class="lineNum"> 835 </span> : /* |<##################################################################72>|####80>| */
|
||||
<span class="lineNum"> 836 </span><span class="lineCov"> 1 : printf("\n");</span>
|
||||
<span class="lineNum"> 837 </span><span class="lineCov"> 1 : printf("Probability of data loss in the next year for different parity and\n");</span>
|
||||
<span class="lineNum"> 838 </span><span class="lineCov"> 1 : printf("combined scrub and repair time:\n");</span>
|
||||
<span class="lineNum"> 839 </span><span class="lineCov"> 1 : printf("\n");</span>
|
||||
<span class="lineNum"> 840 </span><span class="lineCov"> 1 : printf(" Parity 1 Week 1 Month 3 Months\n");</span>
|
||||
<span class="lineNum"> 841 </span><span class="lineCov"> 1 : printf(" -----------------------------------------------------------------------\n");</span>
|
||||
<span class="lineNum"> 842 </span><span class="lineCov"> 7 : for (j = 0; j < RAID_PARITY_MAX; ++j) {</span>
|
||||
<span class="lineNum"> 843 </span><span class="lineCov"> 6 : printf("%6u", j + 1);</span>
|
||||
<span class="lineNum"> 844 </span><span class="lineCov"> 6 : printf(" ");</span>
|
||||
<span class="lineNum"> 845 </span><span class="lineCov"> 6 : printp(raid_prob_of_one_or_more_failures(array_failure_rate, 365.0 / 7, n, j + 1) * 100, 19);</span>
|
||||
<span class="lineNum"> 846 </span><span class="lineCov"> 6 : printf(" ");</span>
|
||||
<span class="lineNum"> 847 </span><span class="lineCov"> 6 : printp(raid_prob_of_one_or_more_failures(array_failure_rate, 365.0 / 30, n, j + 1) * 100, 17);</span>
|
||||
<span class="lineNum"> 835 </span> : /* print extra stats only in verbose mode */
|
||||
<span class="lineNum"> 836 </span><span class="lineCov"> 1 : if (msg_level < MSG_VERBOSE)</span>
|
||||
<span class="lineNum"> 837 </span><span class="lineNoCov"> 0 : goto bail;</span>
|
||||
<span class="lineNum"> 838 </span> :
|
||||
<span class="lineNum"> 839 </span> : /* |<##################################################################72>|####80>| */
|
||||
<span class="lineNum"> 840 </span><span class="lineCov"> 1 : printf("\n");</span>
|
||||
<span class="lineNum"> 841 </span><span class="lineCov"> 1 : printf("Probability of data loss in the next year for different parity and\n");</span>
|
||||
<span class="lineNum"> 842 </span><span class="lineCov"> 1 : printf("combined scrub and repair time:\n");</span>
|
||||
<span class="lineNum"> 843 </span><span class="lineCov"> 1 : printf("\n");</span>
|
||||
<span class="lineNum"> 844 </span><span class="lineCov"> 1 : printf(" Parity 1 Week 1 Month 3 Months\n");</span>
|
||||
<span class="lineNum"> 845 </span><span class="lineCov"> 1 : printf(" -----------------------------------------------------------------------\n");</span>
|
||||
<span class="lineNum"> 846 </span><span class="lineCov"> 7 : for (j = 0; j < RAID_PARITY_MAX; ++j) {</span>
|
||||
<span class="lineNum"> 847 </span><span class="lineCov"> 6 : printf("%6u", j + 1);</span>
|
||||
<span class="lineNum"> 848 </span><span class="lineCov"> 6 : printf(" ");</span>
|
||||
<span class="lineNum"> 849 </span><span class="lineCov"> 6 : printp(raid_prob_of_one_or_more_failures(array_failure_rate, 365.0 / 90, n, j + 1) * 100, 13);</span>
|
||||
<span class="lineNum"> 850 </span><span class="lineCov"> 6 : printf("\n");</span>
|
||||
<span class="lineNum"> 851 </span> : }
|
||||
<span class="lineNum"> 852 </span> :
|
||||
<span class="lineNum"> 853 </span><span class="lineCov"> 1 : printf("\n");</span>
|
||||
<span class="lineNum"> 854 </span> :
|
||||
<span class="lineNum"> 855 </span> : /* |<##################################################################72>|####80>| */
|
||||
<span class="lineNum"> 856 </span><span class="lineCov"> 1 : printf("These values are the probabilities that in the next year you'll have a\n");</span>
|
||||
<span class="lineNum"> 857 </span><span class="lineCov"> 1 : printf("sequence of failures that the parity WONT be able to recover, assuming\n");</span>
|
||||
<span class="lineNum"> 858 </span><span class="lineCov"> 1 : printf("that you regularly scrub, and in case repair, the array in the specified\n");</span>
|
||||
<span class="lineNum"> 859 </span><span class="lineCov"> 1 : printf("time.\n");</span>
|
||||
<span class="lineNum"> 860 </span> :
|
||||
<span class="lineNum"> 861 </span> : bail:
|
||||
<span class="lineNum"> 862 </span><span class="lineCov"> 1 : if (make_it_fail) {</span>
|
||||
<span class="lineNum"> 863 </span><span class="lineCov"> 1 : printf("\n");</span>
|
||||
<span class="lineNum"> 864 </span><span class="lineCov"> 1 : printf("DANGER! SMART is reporting that one or more disks are FAILING!\n");</span>
|
||||
<span class="lineNum"> 865 </span><span class="lineCov"> 1 : printf("Please take immediate action!\n");</span>
|
||||
<span class="lineNum"> 866 </span><span class="lineCov"> 1 : exit(EXIT_FAILURE);</span>
|
||||
<span class="lineNum"> 867 </span> : }
|
||||
<span class="lineNum"> 868 </span><span class="lineNoCov"> 0 : }</span>
|
||||
<span class="lineNum"> 869 </span> :
|
||||
<span class="lineNum"> 870 </span> : /**
|
||||
<a name="871"><span class="lineNum"> 871 </span> : * Fill with fake data the device list.</a>
|
||||
<span class="lineNum"> 872 </span> : */
|
||||
<span class="lineNum"> 873 </span><span class="lineCov"> 1 : static int devtest(tommy_list* low, int operation)</span>
|
||||
<span class="lineNum"> 874 </span> : {
|
||||
<span class="lineNum"> 875 </span> : unsigned c;
|
||||
<span class="lineNum"> 876 </span> :
|
||||
<span class="lineNum"> 877 </span><span class="lineCov"> 1 : if (operation != DEVICE_SMART)</span>
|
||||
<span class="lineNum"> 878 </span><span class="lineNoCov"> 0 : return -1;</span>
|
||||
<span class="lineNum"> 879 </span> :
|
||||
<span class="lineNum"> 880 </span> : /* add some fake data */
|
||||
<span class="lineNum"> 881 </span><span class="lineCov"> 17 : for (c = 0; c < 16; ++c) {</span>
|
||||
<span class="lineNum"> 882 </span> : devinfo_t* entry;
|
||||
<span class="lineNum"> 883 </span> : int j;
|
||||
<span class="lineNum"> 884 </span> :
|
||||
<span class="lineNum"> 885 </span><span class="lineCov"> 16 : entry = calloc_nofail(1, sizeof(devinfo_t));</span>
|
||||
<span class="lineNum"> 886 </span> :
|
||||
<span class="lineNum"> 887 </span><span class="lineCov"> 16 : entry->device = c;</span>
|
||||
<span class="lineNum"> 849 </span><span class="lineCov"> 6 : printp(raid_prob_of_one_or_more_failures(array_failure_rate, 365.0 / 7, n, j + 1) * 100, 19);</span>
|
||||
<span class="lineNum"> 850 </span><span class="lineCov"> 6 : printf(" ");</span>
|
||||
<span class="lineNum"> 851 </span><span class="lineCov"> 6 : printp(raid_prob_of_one_or_more_failures(array_failure_rate, 365.0 / 30, n, j + 1) * 100, 17);</span>
|
||||
<span class="lineNum"> 852 </span><span class="lineCov"> 6 : printf(" ");</span>
|
||||
<span class="lineNum"> 853 </span><span class="lineCov"> 6 : printp(raid_prob_of_one_or_more_failures(array_failure_rate, 365.0 / 90, n, j + 1) * 100, 13);</span>
|
||||
<span class="lineNum"> 854 </span><span class="lineCov"> 6 : printf("\n");</span>
|
||||
<span class="lineNum"> 855 </span> : }
|
||||
<span class="lineNum"> 856 </span> :
|
||||
<span class="lineNum"> 857 </span><span class="lineCov"> 1 : printf("\n");</span>
|
||||
<span class="lineNum"> 858 </span> :
|
||||
<span class="lineNum"> 859 </span> : /* |<##################################################################72>|####80>| */
|
||||
<span class="lineNum"> 860 </span><span class="lineCov"> 1 : printf("These values are the probabilities that in the next year you'll have a\n");</span>
|
||||
<span class="lineNum"> 861 </span><span class="lineCov"> 1 : printf("sequence of failures that the parity WONT be able to recover, assuming\n");</span>
|
||||
<span class="lineNum"> 862 </span><span class="lineCov"> 1 : printf("that you regularly scrub, and in case repair, the array in the specified\n");</span>
|
||||
<span class="lineNum"> 863 </span><span class="lineCov"> 1 : printf("time.\n");</span>
|
||||
<span class="lineNum"> 864 </span> :
|
||||
<span class="lineNum"> 865 </span> : bail:
|
||||
<span class="lineNum"> 866 </span><span class="lineCov"> 1 : if (make_it_fail) {</span>
|
||||
<span class="lineNum"> 867 </span><span class="lineCov"> 1 : printf("\n");</span>
|
||||
<span class="lineNum"> 868 </span><span class="lineCov"> 1 : printf("DANGER! SMART is reporting that one or more disks are FAILING!\n");</span>
|
||||
<span class="lineNum"> 869 </span><span class="lineCov"> 1 : printf("Please take immediate action!\n");</span>
|
||||
<span class="lineNum"> 870 </span><span class="lineCov"> 1 : exit(EXIT_FAILURE);</span>
|
||||
<span class="lineNum"> 871 </span> : }
|
||||
<span class="lineNum"> 872 </span><span class="lineNoCov"> 0 : }</span>
|
||||
<span class="lineNum"> 873 </span> :
|
||||
<span class="lineNum"> 874 </span> : /**
|
||||
<a name="875"><span class="lineNum"> 875 </span> : * Fill with fake data the device list.</a>
|
||||
<span class="lineNum"> 876 </span> : */
|
||||
<span class="lineNum"> 877 </span><span class="lineCov"> 1 : static int devtest(tommy_list* low, int operation)</span>
|
||||
<span class="lineNum"> 878 </span> : {
|
||||
<span class="lineNum"> 879 </span> : unsigned c;
|
||||
<span class="lineNum"> 880 </span> :
|
||||
<span class="lineNum"> 881 </span><span class="lineCov"> 1 : if (operation != DEVICE_SMART)</span>
|
||||
<span class="lineNum"> 882 </span><span class="lineNoCov"> 0 : return -1;</span>
|
||||
<span class="lineNum"> 883 </span> :
|
||||
<span class="lineNum"> 884 </span> : /* add some fake data */
|
||||
<span class="lineNum"> 885 </span><span class="lineCov"> 17 : for (c = 0; c < 16; ++c) {</span>
|
||||
<span class="lineNum"> 886 </span> : devinfo_t* entry;
|
||||
<span class="lineNum"> 887 </span> : int j;
|
||||
<span class="lineNum"> 888 </span> :
|
||||
<span class="lineNum"> 889 </span><span class="lineCov"> 16 : tommy_list_insert_tail(low, &entry->node, entry);</span>
|
||||
<span class="lineNum"> 889 </span><span class="lineCov"> 16 : entry = calloc_nofail(1, sizeof(devinfo_t));</span>
|
||||
<span class="lineNum"> 890 </span> :
|
||||
<span class="lineNum"> 891 </span><span class="lineCov"> 4112 : for (j = 0; j < 256; ++j) {</span>
|
||||
<span class="lineNum"> 892 </span><span class="lineCov"> 4096 : switch (c) {</span>
|
||||
<span class="lineNum"> 893 </span><span class="lineCov"> 256 : case 0 : entry->smart[j] = 0; break;</span>
|
||||
<span class="lineNum"> 894 </span><span class="lineCov"> 256 : case 1 : entry->smart[j] = SMART_UNASSIGNED; break;</span>
|
||||
<span class="lineNum"> 895 </span> : default:
|
||||
<span class="lineNum"> 896 </span><span class="lineCov"> 3584 : if (j == 193)</span>
|
||||
<span class="lineNum"> 897 </span><span class="lineCov"> 14 : entry->smart[j] = c - 2;</span>
|
||||
<span class="lineNum"> 898 </span> : else
|
||||
<span class="lineNum"> 899 </span><span class="lineCov"> 3570 : entry->smart[j] = 0;</span>
|
||||
<span class="lineNum"> 900 </span><span class="lineCov"> 3584 : break;</span>
|
||||
<span class="lineNum"> 901 </span> : }
|
||||
<span class="lineNum"> 902 </span> : }
|
||||
<span class="lineNum"> 903 </span> :
|
||||
<span class="lineNum"> 904 </span><span class="lineCov"> 16 : if (c == 0) {</span>
|
||||
<span class="lineNum"> 905 </span><span class="lineCov"> 1 : entry->smart_serial[0] = 0;</span>
|
||||
<span class="lineNum"> 906 </span><span class="lineCov"> 1 : entry->file[0] = 0;</span>
|
||||
<span class="lineNum"> 907 </span><span class="lineCov"> 1 : entry->name[0] = 0;</span>
|
||||
<span class="lineNum"> 908 </span><span class="lineCov"> 1 : entry->smart[SMART_SIZE] = SMART_UNASSIGNED;</span>
|
||||
<span class="lineNum"> 909 </span><span class="lineCov"> 1 : entry->smart[SMART_ROTATION_RATE] = 0;</span>
|
||||
<span class="lineNum"> 910 </span> : } else {
|
||||
<span class="lineNum"> 911 </span><span class="lineCov"> 15 : snprintf(entry->smart_serial, sizeof(entry->smart_serial), "%u", c);</span>
|
||||
<span class="lineNum"> 912 </span><span class="lineCov"> 15 : pathcpy(entry->file, sizeof(entry->name), "file");</span>
|
||||
<span class="lineNum"> 913 </span><span class="lineCov"> 15 : pathcpy(entry->name, sizeof(entry->name), "name");</span>
|
||||
<span class="lineNum"> 914 </span><span class="lineCov"> 15 : entry->smart[SMART_SIZE] = c * TERA;</span>
|
||||
<span class="lineNum"> 915 </span><span class="lineCov"> 15 : entry->smart[SMART_ROTATION_RATE] = 7200;</span>
|
||||
<span class="lineNum"> 916 </span> : }
|
||||
<span class="lineNum"> 917 </span> :
|
||||
<span class="lineNum"> 918 </span><span class="lineCov"> 16 : entry->smart[SMART_ERROR] = 0;</span>
|
||||
<span class="lineNum"> 919 </span><span class="lineCov"> 16 : entry->smart[SMART_FLAGS] = SMART_UNASSIGNED;</span>
|
||||
<span class="lineNum"> 920 </span> :
|
||||
<span class="lineNum"> 921 </span><span class="lineCov"> 16 : switch (c) {</span>
|
||||
<span class="lineNum"> 922 </span><span class="lineCov"> 1 : case 3 : entry->smart[SMART_ERROR] = 1; break;</span>
|
||||
<span class="lineNum"> 923 </span><span class="lineCov"> 1 : case 4 : entry->smart[SMART_FLAGS] = SMARTCTL_FLAG_UNSUPPORTED; break;</span>
|
||||
<span class="lineNum"> 924 </span><span class="lineCov"> 1 : case 5 : entry->smart[SMART_FLAGS] = SMARTCTL_FLAG_COMMAND; break;</span>
|
||||
<span class="lineNum"> 925 </span><span class="lineCov"> 1 : case 6 : entry->smart[SMART_FLAGS] = SMARTCTL_FLAG_OPEN; break;</span>
|
||||
<span class="lineNum"> 926 </span><span class="lineCov"> 1 : case 7 : entry->smart[SMART_FLAGS] = SMARTCTL_FLAG_FAIL; break;</span>
|
||||
<span class="lineNum"> 927 </span><span class="lineCov"> 1 : case 8 : entry->smart[SMART_FLAGS] = SMARTCTL_FLAG_PREFAIL; break;</span>
|
||||
<span class="lineNum"> 928 </span><span class="lineCov"> 1 : case 9 : entry->smart[SMART_FLAGS] = SMARTCTL_FLAG_PREFAIL_LOGGED; break;</span>
|
||||
<span class="lineNum"> 929 </span><span class="lineCov"> 1 : case 10 : entry->smart[SMART_FLAGS] = SMARTCTL_FLAG_ERROR; break;</span>
|
||||
<span class="lineNum"> 930 </span><span class="lineCov"> 1 : case 11 : entry->smart[SMART_FLAGS] = SMARTCTL_FLAG_ERROR_LOGGED; break;</span>
|
||||
<span class="lineNum"> 931 </span> : }
|
||||
<span class="lineNum"> 932 </span> : }
|
||||
<span class="lineNum"> 933 </span> :
|
||||
<span class="lineNum"> 934 </span><span class="lineCov"> 1 : return 0;</span>
|
||||
<a name="935"><span class="lineNum"> 935 </span> : }</a>
|
||||
<span class="lineNum"> 936 </span> :
|
||||
<span class="lineNum"> 937 </span><span class="lineCov"> 5 : void state_device(struct snapraid_state* state, int operation)</span>
|
||||
<span class="lineNum"> 938 </span> : {
|
||||
<span class="lineNum"> 939 </span> : tommy_node* i;
|
||||
<span class="lineNum"> 940 </span> : unsigned j;
|
||||
<span class="lineNum"> 941 </span> : tommy_list high;
|
||||
<span class="lineNum"> 942 </span> : tommy_list low;
|
||||
<span class="lineNum"> 943 </span> : int ret;
|
||||
<span class="lineNum"> 944 </span> :
|
||||
<span class="lineNum"> 945 </span><span class="lineCov"> 5 : switch (operation) {</span>
|
||||
<span class="lineNum"> 946 </span><span class="lineCov"> 1 : case DEVICE_UP : msg_progress("Spinup...\n"); break;</span>
|
||||
<span class="lineNum"> 947 </span><span class="lineCov"> 1 : case DEVICE_DOWN : msg_progress("Spindown...\n"); break;</span>
|
||||
<span class="lineNum"> 948 </span> : }
|
||||
<span class="lineNum"> 949 </span> :
|
||||
<span class="lineNum"> 950 </span><span class="lineCov"> 5 : tommy_list_init(&high);</span>
|
||||
<span class="lineNum"> 951 </span><span class="lineCov"> 5 : tommy_list_init(&low);</span>
|
||||
<span class="lineNum"> 952 </span> :
|
||||
<span class="lineNum"> 953 </span> : /* for all disks */
|
||||
<span class="lineNum"> 954 </span><span class="lineCov"> 35 : for (i = state->disklist; i != 0; i = i->next) {</span>
|
||||
<span class="lineNum"> 955 </span><span class="lineCov"> 30 : struct snapraid_disk* disk = i->data;</span>
|
||||
<span class="lineNum"> 956 </span> : devinfo_t* entry;
|
||||
<span class="lineNum"> 957 </span> :
|
||||
<span class="lineNum"> 958 </span><span class="lineCov"> 30 : entry = calloc_nofail(1, sizeof(devinfo_t));</span>
|
||||
<span class="lineNum"> 959 </span> :
|
||||
<span class="lineNum"> 960 </span><span class="lineCov"> 30 : entry->device = disk->device;</span>
|
||||
<span class="lineNum"> 961 </span><span class="lineCov"> 30 : pathcpy(entry->name, sizeof(entry->name), disk->name);</span>
|
||||
<span class="lineNum"> 962 </span><span class="lineCov"> 30 : pathcpy(entry->mount, sizeof(entry->mount), disk->dir);</span>
|
||||
<span class="lineNum"> 963 </span><span class="lineCov"> 30 : pathcpy(entry->smartctl, sizeof(entry->smartctl), disk->smartctl);</span>
|
||||
<span class="lineNum"> 964 </span> :
|
||||
<span class="lineNum"> 965 </span><span class="lineCov"> 30 : tommy_list_insert_tail(&high, &entry->node, entry);</span>
|
||||
<span class="lineNum"> 966 </span> : }
|
||||
<span class="lineNum"> 967 </span> :
|
||||
<span class="lineNum"> 968 </span> : /* for all parities */
|
||||
<span class="lineNum"> 969 </span><span class="lineCov"> 35 : for (j = 0; j < state->level; ++j) {</span>
|
||||
<span class="lineNum"> 970 </span> : devinfo_t* entry;
|
||||
<span class="lineNum"> 891 </span><span class="lineCov"> 16 : entry->device = c;</span>
|
||||
<span class="lineNum"> 892 </span> :
|
||||
<span class="lineNum"> 893 </span><span class="lineCov"> 16 : tommy_list_insert_tail(low, &entry->node, entry);</span>
|
||||
<span class="lineNum"> 894 </span> :
|
||||
<span class="lineNum"> 895 </span><span class="lineCov"> 4112 : for (j = 0; j < 256; ++j) {</span>
|
||||
<span class="lineNum"> 896 </span><span class="lineCov"> 4096 : switch (c) {</span>
|
||||
<span class="lineNum"> 897 </span><span class="lineCov"> 256 : case 0 : entry->smart[j] = 0; break;</span>
|
||||
<span class="lineNum"> 898 </span><span class="lineCov"> 256 : case 1 : entry->smart[j] = SMART_UNASSIGNED; break;</span>
|
||||
<span class="lineNum"> 899 </span> : default:
|
||||
<span class="lineNum"> 900 </span><span class="lineCov"> 3584 : if (j == 193)</span>
|
||||
<span class="lineNum"> 901 </span><span class="lineCov"> 14 : entry->smart[j] = c - 2;</span>
|
||||
<span class="lineNum"> 902 </span> : else
|
||||
<span class="lineNum"> 903 </span><span class="lineCov"> 3570 : entry->smart[j] = 0;</span>
|
||||
<span class="lineNum"> 904 </span><span class="lineCov"> 3584 : break;</span>
|
||||
<span class="lineNum"> 905 </span> : }
|
||||
<span class="lineNum"> 906 </span> : }
|
||||
<span class="lineNum"> 907 </span> :
|
||||
<span class="lineNum"> 908 </span><span class="lineCov"> 16 : if (c == 0) {</span>
|
||||
<span class="lineNum"> 909 </span><span class="lineCov"> 1 : entry->smart_serial[0] = 0;</span>
|
||||
<span class="lineNum"> 910 </span><span class="lineCov"> 1 : entry->file[0] = 0;</span>
|
||||
<span class="lineNum"> 911 </span><span class="lineCov"> 1 : entry->name[0] = 0;</span>
|
||||
<span class="lineNum"> 912 </span><span class="lineCov"> 1 : entry->smart[SMART_SIZE] = SMART_UNASSIGNED;</span>
|
||||
<span class="lineNum"> 913 </span><span class="lineCov"> 1 : entry->smart[SMART_ROTATION_RATE] = 0;</span>
|
||||
<span class="lineNum"> 914 </span> : } else {
|
||||
<span class="lineNum"> 915 </span><span class="lineCov"> 15 : snprintf(entry->smart_serial, sizeof(entry->smart_serial), "%u", c);</span>
|
||||
<span class="lineNum"> 916 </span><span class="lineCov"> 15 : pathcpy(entry->file, sizeof(entry->name), "file");</span>
|
||||
<span class="lineNum"> 917 </span><span class="lineCov"> 15 : pathcpy(entry->name, sizeof(entry->name), "name");</span>
|
||||
<span class="lineNum"> 918 </span><span class="lineCov"> 15 : entry->smart[SMART_SIZE] = c * TERA;</span>
|
||||
<span class="lineNum"> 919 </span><span class="lineCov"> 15 : entry->smart[SMART_ROTATION_RATE] = 7200;</span>
|
||||
<span class="lineNum"> 920 </span> : }
|
||||
<span class="lineNum"> 921 </span> :
|
||||
<span class="lineNum"> 922 </span><span class="lineCov"> 16 : entry->smart[SMART_ERROR] = 0;</span>
|
||||
<span class="lineNum"> 923 </span><span class="lineCov"> 16 : entry->smart[SMART_FLAGS] = SMART_UNASSIGNED;</span>
|
||||
<span class="lineNum"> 924 </span> :
|
||||
<span class="lineNum"> 925 </span><span class="lineCov"> 16 : switch (c) {</span>
|
||||
<span class="lineNum"> 926 </span><span class="lineCov"> 1 : case 3 : entry->smart[SMART_ERROR] = 1; break;</span>
|
||||
<span class="lineNum"> 927 </span><span class="lineCov"> 1 : case 4 : entry->smart[SMART_FLAGS] = SMARTCTL_FLAG_UNSUPPORTED; break;</span>
|
||||
<span class="lineNum"> 928 </span><span class="lineCov"> 1 : case 5 : entry->smart[SMART_FLAGS] = SMARTCTL_FLAG_COMMAND; break;</span>
|
||||
<span class="lineNum"> 929 </span><span class="lineCov"> 1 : case 6 : entry->smart[SMART_FLAGS] = SMARTCTL_FLAG_OPEN; break;</span>
|
||||
<span class="lineNum"> 930 </span><span class="lineCov"> 1 : case 7 : entry->smart[SMART_FLAGS] = SMARTCTL_FLAG_FAIL; break;</span>
|
||||
<span class="lineNum"> 931 </span><span class="lineCov"> 1 : case 8 : entry->smart[SMART_FLAGS] = SMARTCTL_FLAG_PREFAIL; break;</span>
|
||||
<span class="lineNum"> 932 </span><span class="lineCov"> 1 : case 9 : entry->smart[SMART_FLAGS] = SMARTCTL_FLAG_PREFAIL_LOGGED; break;</span>
|
||||
<span class="lineNum"> 933 </span><span class="lineCov"> 1 : case 10 : entry->smart[SMART_FLAGS] = SMARTCTL_FLAG_ERROR; break;</span>
|
||||
<span class="lineNum"> 934 </span><span class="lineCov"> 1 : case 11 : entry->smart[SMART_FLAGS] = SMARTCTL_FLAG_ERROR_LOGGED; break;</span>
|
||||
<span class="lineNum"> 935 </span> : }
|
||||
<span class="lineNum"> 936 </span> : }
|
||||
<span class="lineNum"> 937 </span> :
|
||||
<span class="lineNum"> 938 </span><span class="lineCov"> 1 : return 0;</span>
|
||||
<a name="939"><span class="lineNum"> 939 </span> : }</a>
|
||||
<span class="lineNum"> 940 </span> :
|
||||
<span class="lineNum"> 941 </span><span class="lineCov"> 5 : void state_device(struct snapraid_state* state, int operation)</span>
|
||||
<span class="lineNum"> 942 </span> : {
|
||||
<span class="lineNum"> 943 </span> : tommy_node* i;
|
||||
<span class="lineNum"> 944 </span> : unsigned j;
|
||||
<span class="lineNum"> 945 </span> : tommy_list high;
|
||||
<span class="lineNum"> 946 </span> : tommy_list low;
|
||||
<span class="lineNum"> 947 </span> : int ret;
|
||||
<span class="lineNum"> 948 </span> :
|
||||
<span class="lineNum"> 949 </span><span class="lineCov"> 5 : switch (operation) {</span>
|
||||
<span class="lineNum"> 950 </span><span class="lineCov"> 1 : case DEVICE_UP : msg_progress("Spinup...\n"); break;</span>
|
||||
<span class="lineNum"> 951 </span><span class="lineCov"> 1 : case DEVICE_DOWN : msg_progress("Spindown...\n"); break;</span>
|
||||
<span class="lineNum"> 952 </span> : }
|
||||
<span class="lineNum"> 953 </span> :
|
||||
<span class="lineNum"> 954 </span><span class="lineCov"> 5 : tommy_list_init(&high);</span>
|
||||
<span class="lineNum"> 955 </span><span class="lineCov"> 5 : tommy_list_init(&low);</span>
|
||||
<span class="lineNum"> 956 </span> :
|
||||
<span class="lineNum"> 957 </span> : /* for all disks */
|
||||
<span class="lineNum"> 958 </span><span class="lineCov"> 35 : for (i = state->disklist; i != 0; i = i->next) {</span>
|
||||
<span class="lineNum"> 959 </span><span class="lineCov"> 30 : struct snapraid_disk* disk = i->data;</span>
|
||||
<span class="lineNum"> 960 </span> : devinfo_t* entry;
|
||||
<span class="lineNum"> 961 </span> :
|
||||
<span class="lineNum"> 962 </span><span class="lineCov"> 30 : entry = calloc_nofail(1, sizeof(devinfo_t));</span>
|
||||
<span class="lineNum"> 963 </span> :
|
||||
<span class="lineNum"> 964 </span><span class="lineCov"> 30 : entry->device = disk->device;</span>
|
||||
<span class="lineNum"> 965 </span><span class="lineCov"> 30 : pathcpy(entry->name, sizeof(entry->name), disk->name);</span>
|
||||
<span class="lineNum"> 966 </span><span class="lineCov"> 30 : pathcpy(entry->mount, sizeof(entry->mount), disk->dir);</span>
|
||||
<span class="lineNum"> 967 </span><span class="lineCov"> 30 : pathcpy(entry->smartctl, sizeof(entry->smartctl), disk->smartctl);</span>
|
||||
<span class="lineNum"> 968 </span> :
|
||||
<span class="lineNum"> 969 </span><span class="lineCov"> 30 : tommy_list_insert_tail(&high, &entry->node, entry);</span>
|
||||
<span class="lineNum"> 970 </span> : }
|
||||
<span class="lineNum"> 971 </span> :
|
||||
<span class="lineNum"> 972 </span><span class="lineCov"> 30 : entry = calloc_nofail(1, sizeof(devinfo_t));</span>
|
||||
<span class="lineNum"> 973 </span> :
|
||||
<span class="lineNum"> 974 </span><span class="lineCov"> 30 : entry->device = state->parity[j].device;</span>
|
||||
<span class="lineNum"> 975 </span><span class="lineCov"> 30 : pathcpy(entry->name, sizeof(entry->name), lev_config_name(j));</span>
|
||||
<span class="lineNum"> 976 </span><span class="lineCov"> 30 : pathcpy(entry->mount, sizeof(entry->mount), state->parity[j].path);</span>
|
||||
<span class="lineNum"> 977 </span><span class="lineCov"> 30 : pathcpy(entry->smartctl, sizeof(entry->smartctl), state->parity[j].smartctl);</span>
|
||||
<span class="lineNum"> 978 </span><span class="lineCov"> 30 : pathcut(entry->mount); /* remove the parity file */</span>
|
||||
<span class="lineNum"> 979 </span> :
|
||||
<span class="lineNum"> 980 </span><span class="lineCov"> 30 : tommy_list_insert_tail(&high, &entry->node, entry);</span>
|
||||
<span class="lineNum"> 981 </span> : }
|
||||
<span class="lineNum"> 982 </span> :
|
||||
<span class="lineNum"> 983 </span><span class="lineCov"> 5 : if (state->opt.fake_device)</span>
|
||||
<span class="lineNum"> 984 </span><span class="lineCov"> 1 : ret = devtest(&low, operation);</span>
|
||||
<span class="lineNum"> 985 </span> : else
|
||||
<span class="lineNum"> 986 </span><span class="lineCov"> 4 : ret = devquery(&high, &low, operation);</span>
|
||||
<span class="lineNum"> 987 </span> :
|
||||
<span class="lineNum"> 988 </span><span class="lineCov"> 5 : if (ret != 0) {</span>
|
||||
<span class="lineNum"> 989 </span><span class="lineCov"> 2 : const char* ope = 0;</span>
|
||||
<span class="lineNum"> 990 </span><span class="lineCov"> 2 : switch (operation) {</span>
|
||||
<span class="lineNum"> 991 </span><span class="lineNoCov"> 0 : case DEVICE_UP : ope = "Spinup"; break;</span>
|
||||
<span class="lineNum"> 992 </span><span class="lineCov"> 1 : case DEVICE_DOWN : ope = "Spindown"; break;</span>
|
||||
<span class="lineNum"> 993 </span><span class="lineNoCov"> 0 : case DEVICE_LIST : ope = "List"; break;</span>
|
||||
<span class="lineNum"> 994 </span><span class="lineCov"> 1 : case DEVICE_SMART : ope = "SMART"; break;</span>
|
||||
<span class="lineNum"> 995 </span> : }
|
||||
<span class="lineNum"> 996 </span><span class="lineCov"> 2 : log_fatal("%s unsupported in this platform.\n", ope);</span>
|
||||
<span class="lineNum"> 997 </span> : } else {
|
||||
<span class="lineNum"> 998 </span><span class="lineCov"> 3 : if (operation == DEVICE_LIST) {</span>
|
||||
<span class="lineNum"> 999 </span><span class="lineCov"> 13 : for (i = tommy_list_head(&low); i != 0; i = i->next) {</span>
|
||||
<span class="lineNum"> 1000 </span><span class="lineCov"> 12 : devinfo_t* devinfo = i->data;</span>
|
||||
<span class="lineNum"> 1001 </span><span class="lineCov"> 12 : devinfo_t* parent = devinfo->parent;</span>
|
||||
<span class="lineNum"> 1002 </span> : #ifdef _WIN32
|
||||
<span class="lineNum"> 1003 </span> : printf("%" PRIu64 "\t%s\t%08" PRIx64 "\t%s\t%s\n", devinfo->device, devinfo->wfile, parent->device, parent->wfile, parent->name);
|
||||
<span class="lineNum"> 1004 </span> : #else
|
||||
<span class="lineNum"> 1005 </span><span class="lineCov"> 12 : printf("%u:%u\t%s\t%u:%u\t%s\t%s\n", major(devinfo->device), minor(devinfo->device), devinfo->file, major(parent->device), minor(parent->device), parent->file, parent->name);</span>
|
||||
<span class="lineNum"> 1006 </span> : #endif
|
||||
<span class="lineNum"> 1007 </span> : }
|
||||
<span class="lineNum"> 1008 </span> : }
|
||||
<span class="lineNum"> 1009 </span> :
|
||||
<span class="lineNum"> 1010 </span><span class="lineCov"> 3 : if (operation == DEVICE_SMART)</span>
|
||||
<span class="lineNum"> 1011 </span><span class="lineCov"> 1 : state_smart(state->level + tommy_list_count(&state->disklist), &low);</span>
|
||||
<span class="lineNum"> 1012 </span> : }
|
||||
<span class="lineNum"> 972 </span> : /* for all parities */
|
||||
<span class="lineNum"> 973 </span><span class="lineCov"> 35 : for (j = 0; j < state->level; ++j) {</span>
|
||||
<span class="lineNum"> 974 </span> : devinfo_t* entry;
|
||||
<span class="lineNum"> 975 </span> :
|
||||
<span class="lineNum"> 976 </span><span class="lineCov"> 30 : entry = calloc_nofail(1, sizeof(devinfo_t));</span>
|
||||
<span class="lineNum"> 977 </span> :
|
||||
<span class="lineNum"> 978 </span><span class="lineCov"> 30 : entry->device = state->parity[j].device;</span>
|
||||
<span class="lineNum"> 979 </span><span class="lineCov"> 30 : pathcpy(entry->name, sizeof(entry->name), lev_config_name(j));</span>
|
||||
<span class="lineNum"> 980 </span><span class="lineCov"> 30 : pathcpy(entry->mount, sizeof(entry->mount), state->parity[j].path);</span>
|
||||
<span class="lineNum"> 981 </span><span class="lineCov"> 30 : pathcpy(entry->smartctl, sizeof(entry->smartctl), state->parity[j].smartctl);</span>
|
||||
<span class="lineNum"> 982 </span><span class="lineCov"> 30 : pathcut(entry->mount); /* remove the parity file */</span>
|
||||
<span class="lineNum"> 983 </span> :
|
||||
<span class="lineNum"> 984 </span><span class="lineCov"> 30 : tommy_list_insert_tail(&high, &entry->node, entry);</span>
|
||||
<span class="lineNum"> 985 </span> : }
|
||||
<span class="lineNum"> 986 </span> :
|
||||
<span class="lineNum"> 987 </span><span class="lineCov"> 5 : if (state->opt.fake_device)</span>
|
||||
<span class="lineNum"> 988 </span><span class="lineCov"> 1 : ret = devtest(&low, operation);</span>
|
||||
<span class="lineNum"> 989 </span> : else
|
||||
<span class="lineNum"> 990 </span><span class="lineCov"> 4 : ret = devquery(&high, &low, operation);</span>
|
||||
<span class="lineNum"> 991 </span> :
|
||||
<span class="lineNum"> 992 </span><span class="lineCov"> 5 : if (ret != 0) {</span>
|
||||
<span class="lineNum"> 993 </span><span class="lineCov"> 2 : const char* ope = 0;</span>
|
||||
<span class="lineNum"> 994 </span><span class="lineCov"> 2 : switch (operation) {</span>
|
||||
<span class="lineNum"> 995 </span><span class="lineNoCov"> 0 : case DEVICE_UP : ope = "Spinup"; break;</span>
|
||||
<span class="lineNum"> 996 </span><span class="lineCov"> 1 : case DEVICE_DOWN : ope = "Spindown"; break;</span>
|
||||
<span class="lineNum"> 997 </span><span class="lineNoCov"> 0 : case DEVICE_LIST : ope = "List"; break;</span>
|
||||
<span class="lineNum"> 998 </span><span class="lineCov"> 1 : case DEVICE_SMART : ope = "SMART"; break;</span>
|
||||
<span class="lineNum"> 999 </span> : }
|
||||
<span class="lineNum"> 1000 </span><span class="lineCov"> 2 : log_fatal("%s unsupported in this platform.\n", ope);</span>
|
||||
<span class="lineNum"> 1001 </span> : } else {
|
||||
<span class="lineNum"> 1002 </span><span class="lineCov"> 3 : if (operation == DEVICE_LIST) {</span>
|
||||
<span class="lineNum"> 1003 </span><span class="lineCov"> 13 : for (i = tommy_list_head(&low); i != 0; i = i->next) {</span>
|
||||
<span class="lineNum"> 1004 </span><span class="lineCov"> 12 : devinfo_t* devinfo = i->data;</span>
|
||||
<span class="lineNum"> 1005 </span><span class="lineCov"> 12 : devinfo_t* parent = devinfo->parent;</span>
|
||||
<span class="lineNum"> 1006 </span> : #ifdef _WIN32
|
||||
<span class="lineNum"> 1007 </span> : printf("%" PRIu64 "\t%s\t%08" PRIx64 "\t%s\t%s\n", devinfo->device, devinfo->wfile, parent->device, parent->wfile, parent->name);
|
||||
<span class="lineNum"> 1008 </span> : #else
|
||||
<span class="lineNum"> 1009 </span><span class="lineCov"> 12 : printf("%u:%u\t%s\t%u:%u\t%s\t%s\n", major(devinfo->device), minor(devinfo->device), devinfo->file, major(parent->device), minor(parent->device), parent->file, parent->name);</span>
|
||||
<span class="lineNum"> 1010 </span> : #endif
|
||||
<span class="lineNum"> 1011 </span> : }
|
||||
<span class="lineNum"> 1012 </span> : }
|
||||
<span class="lineNum"> 1013 </span> :
|
||||
<span class="lineNum"> 1014 </span><span class="lineCov"> 4 : tommy_list_foreach(&high, free);</span>
|
||||
<span class="lineNum"> 1015 </span><span class="lineCov"> 4 : tommy_list_foreach(&low, free);</span>
|
||||
<span class="lineNum"> 1016 </span><span class="lineCov"> 4 : }</span>
|
||||
<span class="lineNum"> 1014 </span><span class="lineCov"> 3 : if (operation == DEVICE_SMART)</span>
|
||||
<span class="lineNum"> 1015 </span><span class="lineCov"> 1 : state_smart(state->level + tommy_list_count(&state->disklist), &low);</span>
|
||||
<span class="lineNum"> 1016 </span> : }
|
||||
<span class="lineNum"> 1017 </span> :
|
||||
<span class="lineNum"> 1018 </span><span class="lineCov"> 4 : tommy_list_foreach(&high, free);</span>
|
||||
<span class="lineNum"> 1019 </span><span class="lineCov"> 4 : tommy_list_foreach(&low, free);</span>
|
||||
<span class="lineNum"> 1020 </span><span class="lineCov"> 4 : }</span>
|
||||
<span class="lineNum"> 1021 </span> :
|
||||
</pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Date:</td>
|
||||
<td class="headerValue">2015-11-20</td>
|
||||
<td class="headerValue">2016-01-09</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntry">2</td>
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Date:</td>
|
||||
<td class="headerValue">2015-11-20</td>
|
||||
<td class="headerValue">2016-01-09</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntry">2</td>
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Date:</td>
|
||||
<td class="headerValue">2015-11-20</td>
|
||||
<td class="headerValue">2016-01-09</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntry">2</td>
|
||||
|
|
@ -116,38 +116,38 @@
|
|||
<span class="lineNum"> 54 </span><span class="lineCov"> 2 : countsize = 0;</span>
|
||||
<span class="lineNum"> 55 </span><span class="lineCov"> 2 : countpos = 0;</span>
|
||||
<span class="lineNum"> 56 </span><span class="lineCov"> 2 : state_progress_begin(state, blockstart, blockmax, countmax);</span>
|
||||
<span class="lineNum"> 57 </span><span class="lineCov"> 7054 : for (i = blockstart; i < blockmax; ++i) {</span>
|
||||
<span class="lineNum"> 57 </span><span class="lineCov"> 7088 : for (i = blockstart; i < blockmax; ++i) {</span>
|
||||
<span class="lineNum"> 58 </span> : /* for each disk, process the block */
|
||||
<span class="lineNum"> 59 </span><span class="lineCov"> 49364 : for (j = 0; j < diskmax; ++j) {</span>
|
||||
<span class="lineNum"> 59 </span><span class="lineCov"> 49602 : for (j = 0; j < diskmax; ++j) {</span>
|
||||
<span class="lineNum"> 60 </span> : int read_size;
|
||||
<span class="lineNum"> 61 </span> : struct snapraid_block* block;
|
||||
<span class="lineNum"> 62 </span><span class="lineCov"> 42312 : struct snapraid_disk* disk = handle[j].disk;</span>
|
||||
<span class="lineNum"> 62 </span><span class="lineCov"> 42516 : struct snapraid_disk* disk = handle[j].disk;</span>
|
||||
<span class="lineNum"> 63 </span> : struct snapraid_file* file;
|
||||
<span class="lineNum"> 64 </span> : block_off_t file_pos;
|
||||
<span class="lineNum"> 65 </span> :
|
||||
<span class="lineNum"> 66 </span><span class="lineCov"> 42312 : if (!disk) {</span>
|
||||
<span class="lineNum"> 66 </span><span class="lineCov"> 42516 : if (!disk) {</span>
|
||||
<span class="lineNum"> 67 </span> : /* if no disk, nothing to do */
|
||||
<span class="lineNum"> 68 </span><span class="lineCov"> 9755 : continue;</span>
|
||||
<span class="lineNum"> 68 </span><span class="lineCov"> 9855 : continue;</span>
|
||||
<span class="lineNum"> 69 </span> : }
|
||||
<span class="lineNum"> 70 </span> :
|
||||
<span class="lineNum"> 71 </span><span class="lineCov"> 37641 : block = fs_par2block_get(disk, i);</span>
|
||||
<span class="lineNum"> 71 </span><span class="lineCov"> 37837 : block = fs_par2block_get(disk, i);</span>
|
||||
<span class="lineNum"> 72 </span> :
|
||||
<span class="lineNum"> 73 </span><span class="lineCov"> 37641 : if (!block_has_file(block)) {</span>
|
||||
<span class="lineNum"> 73 </span><span class="lineCov"> 37837 : if (!block_has_file(block)) {</span>
|
||||
<span class="lineNum"> 74 </span> : /* if no file, nothing to do */
|
||||
<span class="lineNum"> 75 </span><span class="lineCov"> 413 : continue;</span>
|
||||
<span class="lineNum"> 75 </span><span class="lineCov"> 497 : continue;</span>
|
||||
<span class="lineNum"> 76 </span> : }
|
||||
<span class="lineNum"> 77 </span> :
|
||||
<span class="lineNum"> 78 </span> : /* get the file of this block */
|
||||
<span class="lineNum"> 79 </span><span class="lineCov"> 37228 : file = fs_par2file_get(disk, i, &file_pos);</span>
|
||||
<span class="lineNum"> 79 </span><span class="lineCov"> 37340 : file = fs_par2file_get(disk, i, &file_pos);</span>
|
||||
<span class="lineNum"> 80 </span> :
|
||||
<span class="lineNum"> 81 </span> : /* until now is CPU */
|
||||
<span class="lineNum"> 82 </span><span class="lineCov"> 37228 : state_usage_cpu(state);</span>
|
||||
<span class="lineNum"> 82 </span><span class="lineCov"> 37340 : state_usage_cpu(state);</span>
|
||||
<span class="lineNum"> 83 </span> :
|
||||
<span class="lineNum"> 84 </span> : /* if the file is closed or different than the current one */
|
||||
<span class="lineNum"> 85 </span><span class="lineCov"> 37228 : if (handle[j].file == 0 || handle[j].file != file) {</span>
|
||||
<span class="lineNum"> 85 </span><span class="lineCov"> 37340 : if (handle[j].file == 0 || handle[j].file != file) {</span>
|
||||
<span class="lineNum"> 86 </span> : /* close the old one, if any */
|
||||
<span class="lineNum"> 87 </span><span class="lineCov"> 15082 : ret = handle_close(&handle[j]);</span>
|
||||
<span class="lineNum"> 88 </span><span class="lineCov"> 15082 : if (ret == -1) {</span>
|
||||
<span class="lineNum"> 87 </span><span class="lineCov"> 15096 : ret = handle_close(&handle[j]);</span>
|
||||
<span class="lineNum"> 88 </span><span class="lineCov"> 15096 : if (ret == -1) {</span>
|
||||
<span class="lineNum"> 89 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 90 </span> : log_tag("error:%u:%s:%s: Close error. %s\n", i, disk->name, esc(handle[j].file->sub), strerror(errno));
|
||||
<span class="lineNum"> 91 </span> : log_fatal("DANGER! Unexpected close error in a data disk, it isn't possible to dry.\n");
|
||||
|
|
@ -158,8 +158,8 @@
|
|||
<span class="lineNum"> 96 </span> : }
|
||||
<span class="lineNum"> 97 </span> :
|
||||
<span class="lineNum"> 98 </span> : /* open the file only for reading */
|
||||
<span class="lineNum"> 99 </span><span class="lineCov"> 15082 : ret = handle_open(&handle[j], file, state->file_mode, log_fatal, 0);</span>
|
||||
<span class="lineNum"> 100 </span><span class="lineCov"> 15082 : if (ret == -1) {</span>
|
||||
<span class="lineNum"> 99 </span><span class="lineCov"> 15096 : ret = handle_open(&handle[j], file, state->file_mode, log_fatal, 0);</span>
|
||||
<span class="lineNum"> 100 </span><span class="lineCov"> 15096 : if (ret == -1) {</span>
|
||||
<span class="lineNum"> 101 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 102 </span> : log_tag("error:%u:%s:%s: Open error. %s\n", i, disk->name, esc(file->sub), strerror(errno));
|
||||
<span class="lineNum"> 103 </span> : log_fatal("DANGER! Unexpected open error in a data disk, it isn't possible to dry.\n");
|
||||
|
|
@ -171,41 +171,41 @@
|
|||
<span class="lineNum"> 109 </span> : }
|
||||
<span class="lineNum"> 110 </span> :
|
||||
<span class="lineNum"> 111 </span> : /* read from the file */
|
||||
<span class="lineNum"> 112 </span><span class="lineCov"> 37228 : read_size = handle_read(&handle[j], file_pos, buffer_aligned, state->block_size, log_error, 0);</span>
|
||||
<span class="lineNum"> 113 </span><span class="lineCov"> 37228 : if (read_size == -1) {</span>
|
||||
<span class="lineNum"> 112 </span><span class="lineCov"> 37340 : read_size = handle_read(&handle[j], file_pos, buffer_aligned, state->block_size, log_error, 0);</span>
|
||||
<span class="lineNum"> 113 </span><span class="lineCov"> 37340 : if (read_size == -1) {</span>
|
||||
<span class="lineNum"> 114 </span><span class="lineNoCov"> 0 : log_tag("error:%u:%s:%s: Read error at position %u\n", i, disk->name, esc(file->sub), file_pos);</span>
|
||||
<span class="lineNum"> 115 </span><span class="lineNoCov"> 0 : ++error;</span>
|
||||
<span class="lineNum"> 116 </span><span class="lineNoCov"> 0 : continue;</span>
|
||||
<span class="lineNum"> 117 </span> : }
|
||||
<span class="lineNum"> 118 </span> :
|
||||
<span class="lineNum"> 119 </span> : /* until now is disk */
|
||||
<span class="lineNum"> 120 </span><span class="lineCov"> 37228 : state_usage_disk(state, disk);</span>
|
||||
<span class="lineNum"> 120 </span><span class="lineCov"> 37340 : state_usage_disk(state, disk);</span>
|
||||
<span class="lineNum"> 121 </span> :
|
||||
<span class="lineNum"> 122 </span><span class="lineCov"> 37228 : countsize += read_size;</span>
|
||||
<span class="lineNum"> 122 </span><span class="lineCov"> 37340 : countsize += read_size;</span>
|
||||
<span class="lineNum"> 123 </span> : }
|
||||
<span class="lineNum"> 124 </span> :
|
||||
<span class="lineNum"> 125 </span> : /* read the parity */
|
||||
<span class="lineNum"> 126 </span><span class="lineCov"> 49364 : for (l = 0; l < state->level; ++l) {</span>
|
||||
<span class="lineNum"> 127 </span><span class="lineCov"> 42312 : if (parity[l]) {</span>
|
||||
<span class="lineNum"> 126 </span><span class="lineCov"> 49602 : for (l = 0; l < state->level; ++l) {</span>
|
||||
<span class="lineNum"> 127 </span><span class="lineCov"> 42516 : if (parity[l]) {</span>
|
||||
<span class="lineNum"> 128 </span> : /* until now is CPU */
|
||||
<span class="lineNum"> 129 </span><span class="lineCov"> 42312 : state_usage_cpu(state);</span>
|
||||
<span class="lineNum"> 129 </span><span class="lineCov"> 42516 : state_usage_cpu(state);</span>
|
||||
<span class="lineNum"> 130 </span> :
|
||||
<span class="lineNum"> 131 </span><span class="lineCov"> 42312 : ret = parity_read(parity[l], i, buffer_aligned, state->block_size, log_error);</span>
|
||||
<span class="lineNum"> 132 </span><span class="lineCov"> 42312 : if (ret == -1) {</span>
|
||||
<span class="lineNum"> 131 </span><span class="lineCov"> 42516 : ret = parity_read(parity[l], i, buffer_aligned, state->block_size, log_error);</span>
|
||||
<span class="lineNum"> 132 </span><span class="lineCov"> 42516 : if (ret == -1) {</span>
|
||||
<span class="lineNum"> 133 </span><span class="lineNoCov"> 0 : log_tag("parity_error:%u:%s: Read error\n", i, lev_config_name(l));</span>
|
||||
<span class="lineNum"> 134 </span><span class="lineNoCov"> 0 : ++error;</span>
|
||||
<span class="lineNum"> 135 </span> : }
|
||||
<span class="lineNum"> 136 </span> :
|
||||
<span class="lineNum"> 137 </span> : /* until now is parity */
|
||||
<span class="lineNum"> 138 </span><span class="lineCov"> 42312 : state_usage_parity(state, l);</span>
|
||||
<span class="lineNum"> 138 </span><span class="lineCov"> 42516 : state_usage_parity(state, l);</span>
|
||||
<span class="lineNum"> 139 </span> : }
|
||||
<span class="lineNum"> 140 </span> : }
|
||||
<span class="lineNum"> 141 </span> :
|
||||
<span class="lineNum"> 142 </span> : /* count the number of processed block */
|
||||
<span class="lineNum"> 143 </span><span class="lineCov"> 7052 : ++countpos;</span>
|
||||
<span class="lineNum"> 143 </span><span class="lineCov"> 7086 : ++countpos;</span>
|
||||
<span class="lineNum"> 144 </span> :
|
||||
<span class="lineNum"> 145 </span> : /* progress */
|
||||
<span class="lineNum"> 146 </span><span class="lineCov"> 7052 : if (state_progress(state, i, countpos, countmax, countsize)) {</span>
|
||||
<span class="lineNum"> 146 </span><span class="lineCov"> 7086 : if (state_progress(state, i, countpos, countmax, countsize)) {</span>
|
||||
<span class="lineNum"> 147 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 148 </span> : break;
|
||||
<span class="lineNum"> 149 </span> : /* LCOV_EXCL_STOP */
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Date:</td>
|
||||
<td class="headerValue">2015-11-20</td>
|
||||
<td class="headerValue">2016-01-09</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntry">5</td>
|
||||
|
|
@ -61,24 +61,24 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dup.c.gcov.html#37">hash_alloc</a></td>
|
||||
<td class="coverFnHi">16956</td>
|
||||
<td class="coverFnHi">16970</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dup.c.gcov.html#74">hash_free</a></td>
|
||||
<td class="coverFnHi">16956</td>
|
||||
<td class="coverFnHi">16970</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dup.c.gcov.html#69">hash_hash</a></td>
|
||||
<td class="coverFnHi">16956</td>
|
||||
<td class="coverFnHi">16970</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dup.c.gcov.html#79">hash_compare</a></td>
|
||||
<td class="coverFnHi">14</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dup.c.gcov.html#87">state_dup</a></td>
|
||||
<td class="coverFnHi">3</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dup.c.gcov.html#79">hash_compare</a></td>
|
||||
<td class="coverFnHi">2</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
</center>
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Date:</td>
|
||||
<td class="headerValue">2015-11-20</td>
|
||||
<td class="headerValue">2016-01-09</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntry">5</td>
|
||||
|
|
@ -61,19 +61,19 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dup.c.gcov.html#37">hash_alloc</a></td>
|
||||
<td class="coverFnHi">16956</td>
|
||||
<td class="coverFnHi">16970</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dup.c.gcov.html#79">hash_compare</a></td>
|
||||
<td class="coverFnHi">2</td>
|
||||
<td class="coverFnHi">14</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dup.c.gcov.html#74">hash_free</a></td>
|
||||
<td class="coverFnHi">16956</td>
|
||||
<td class="coverFnHi">16970</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dup.c.gcov.html#69">hash_hash</a></td>
|
||||
<td class="coverFnHi">16956</td>
|
||||
<td class="coverFnHi">16970</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dup.c.gcov.html#87">state_dup</a></td>
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Date:</td>
|
||||
<td class="headerValue">2015-11-20</td>
|
||||
<td class="headerValue">2016-01-09</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntry">5</td>
|
||||
|
|
@ -98,54 +98,54 @@
|
|||
<span class="lineNum"> 36 </span> : tommy_hashdyn_node node;
|
||||
<a name="37"><span class="lineNum"> 37 </span> : };</a>
|
||||
<span class="lineNum"> 38 </span> :
|
||||
<span class="lineNum"> 39 </span><span class="lineCov"> 16956 : struct snapraid_hash* hash_alloc(struct snapraid_state* state, struct snapraid_disk* disk, struct snapraid_file* file)</span>
|
||||
<span class="lineNum"> 39 </span><span class="lineCov"> 16970 : struct snapraid_hash* hash_alloc(struct snapraid_state* state, struct snapraid_disk* disk, struct snapraid_file* file)</span>
|
||||
<span class="lineNum"> 40 </span> : {
|
||||
<span class="lineNum"> 41 </span> : struct snapraid_hash* hash;
|
||||
<span class="lineNum"> 42 </span> : block_off_t i;
|
||||
<span class="lineNum"> 43 </span> : unsigned char* buf;
|
||||
<span class="lineNum"> 44 </span> :
|
||||
<span class="lineNum"> 45 </span><span class="lineCov"> 16956 : hash = malloc_nofail(sizeof(struct snapraid_hash));</span>
|
||||
<span class="lineNum"> 46 </span><span class="lineCov"> 16956 : hash->disk = disk;</span>
|
||||
<span class="lineNum"> 47 </span><span class="lineCov"> 16956 : hash->file = file;</span>
|
||||
<span class="lineNum"> 45 </span><span class="lineCov"> 16970 : hash = malloc_nofail(sizeof(struct snapraid_hash));</span>
|
||||
<span class="lineNum"> 46 </span><span class="lineCov"> 16970 : hash->disk = disk;</span>
|
||||
<span class="lineNum"> 47 </span><span class="lineCov"> 16970 : hash->file = file;</span>
|
||||
<span class="lineNum"> 48 </span> :
|
||||
<span class="lineNum"> 49 </span><span class="lineCov"> 16956 : buf = malloc_nofail(file->blockmax * HASH_SIZE);</span>
|
||||
<span class="lineNum"> 49 </span><span class="lineCov"> 16970 : buf = malloc_nofail(file->blockmax * HASH_SIZE);</span>
|
||||
<span class="lineNum"> 50 </span> :
|
||||
<span class="lineNum"> 51 </span> : /* set the back pointer */
|
||||
<span class="lineNum"> 52 </span><span class="lineCov"> 58816 : for (i = 0; i < file->blockmax; ++i) {</span>
|
||||
<span class="lineNum"> 53 </span><span class="lineCov"> 41860 : struct snapraid_block* block = fs_file2block_get(file, i);</span>
|
||||
<span class="lineNum"> 52 </span><span class="lineCov"> 58942 : for (i = 0; i < file->blockmax; ++i) {</span>
|
||||
<span class="lineNum"> 53 </span><span class="lineCov"> 41972 : struct snapraid_block* block = fs_file2block_get(file, i);</span>
|
||||
<span class="lineNum"> 54 </span> :
|
||||
<span class="lineNum"> 55 </span><span class="lineCov"> 41860 : memcpy(buf + i * HASH_SIZE, block->hash, HASH_SIZE);</span>
|
||||
<span class="lineNum"> 55 </span><span class="lineCov"> 41972 : memcpy(buf + i * HASH_SIZE, block->hash, HASH_SIZE);</span>
|
||||
<span class="lineNum"> 56 </span> :
|
||||
<span class="lineNum"> 57 </span><span class="lineCov"> 41860 : if (!block_has_updated_hash(block)) {</span>
|
||||
<span class="lineNum"> 57 </span><span class="lineCov"> 41972 : if (!block_has_updated_hash(block)) {</span>
|
||||
<span class="lineNum"> 58 </span><span class="lineNoCov"> 0 : free(buf);</span>
|
||||
<span class="lineNum"> 59 </span><span class="lineNoCov"> 0 : free(hash);</span>
|
||||
<span class="lineNum"> 60 </span><span class="lineNoCov"> 0 : return 0;</span>
|
||||
<span class="lineNum"> 61 </span> : }
|
||||
<span class="lineNum"> 62 </span> : }
|
||||
<span class="lineNum"> 63 </span> :
|
||||
<span class="lineNum"> 64 </span><span class="lineCov"> 16956 : memhash(state->besthash, state->hashseed, hash->hash, buf, file->blockmax * HASH_SIZE);</span>
|
||||
<span class="lineNum"> 64 </span><span class="lineCov"> 16970 : memhash(state->besthash, state->hashseed, hash->hash, buf, file->blockmax * HASH_SIZE);</span>
|
||||
<span class="lineNum"> 65 </span> :
|
||||
<span class="lineNum"> 66 </span><span class="lineCov"> 16956 : free(buf);</span>
|
||||
<span class="lineNum"> 66 </span><span class="lineCov"> 16970 : free(buf);</span>
|
||||
<span class="lineNum"> 67 </span> :
|
||||
<span class="lineNum"> 68 </span><span class="lineCov"> 16956 : return hash;</span>
|
||||
<span class="lineNum"> 68 </span><span class="lineCov"> 16970 : return hash;</span>
|
||||
<a name="69"><span class="lineNum"> 69 </span> : }</a>
|
||||
<span class="lineNum"> 70 </span> :
|
||||
<span class="lineNum"> 71 </span><span class="lineCov"> 16956 : static inline tommy_uint32_t hash_hash(struct snapraid_hash* hash)</span>
|
||||
<span class="lineNum"> 71 </span><span class="lineCov"> 16970 : static inline tommy_uint32_t hash_hash(struct snapraid_hash* hash)</span>
|
||||
<span class="lineNum"> 72 </span> : {
|
||||
<span class="lineNum"> 73 </span><span class="lineCov"> 16956 : return tommy_hash_u32(0, hash->hash, HASH_SIZE);</span>
|
||||
<span class="lineNum"> 73 </span><span class="lineCov"> 16970 : return tommy_hash_u32(0, hash->hash, HASH_SIZE);</span>
|
||||
<a name="74"><span class="lineNum"> 74 </span> : }</a>
|
||||
<span class="lineNum"> 75 </span> :
|
||||
<span class="lineNum"> 76 </span><span class="lineCov"> 16956 : void hash_free(struct snapraid_hash* hash)</span>
|
||||
<span class="lineNum"> 76 </span><span class="lineCov"> 16970 : void hash_free(struct snapraid_hash* hash)</span>
|
||||
<span class="lineNum"> 77 </span> : {
|
||||
<span class="lineNum"> 78 </span><span class="lineCov"> 16956 : free(hash);</span>
|
||||
<a name="79"><span class="lineNum"> 79 </span><span class="lineCov"> 16956 : }</span></a>
|
||||
<span class="lineNum"> 78 </span><span class="lineCov"> 16970 : free(hash);</span>
|
||||
<a name="79"><span class="lineNum"> 79 </span><span class="lineCov"> 16970 : }</span></a>
|
||||
<span class="lineNum"> 80 </span> :
|
||||
<span class="lineNum"> 81 </span><span class="lineCov"> 2 : int hash_compare(const void* void_arg, const void* void_data)</span>
|
||||
<span class="lineNum"> 81 </span><span class="lineCov"> 14 : int hash_compare(const void* void_arg, const void* void_data)</span>
|
||||
<span class="lineNum"> 82 </span> : {
|
||||
<span class="lineNum"> 83 </span><span class="lineCov"> 2 : const char* arg = void_arg;</span>
|
||||
<span class="lineNum"> 84 </span><span class="lineCov"> 2 : const struct snapraid_hash* hash = void_data;</span>
|
||||
<span class="lineNum"> 83 </span><span class="lineCov"> 14 : const char* arg = void_arg;</span>
|
||||
<span class="lineNum"> 84 </span><span class="lineCov"> 14 : const struct snapraid_hash* hash = void_data;</span>
|
||||
<span class="lineNum"> 85 </span> :
|
||||
<span class="lineNum"> 86 </span><span class="lineCov"> 2 : return memcmp(arg, hash->hash, HASH_SIZE);</span>
|
||||
<span class="lineNum"> 86 </span><span class="lineCov"> 14 : return memcmp(arg, hash->hash, HASH_SIZE);</span>
|
||||
<a name="87"><span class="lineNum"> 87 </span> : }</a>
|
||||
<span class="lineNum"> 88 </span> :
|
||||
<span class="lineNum"> 89 </span><span class="lineCov"> 3 : void state_dup(struct snapraid_state* state)</span>
|
||||
|
|
@ -168,32 +168,32 @@
|
|||
<span class="lineNum"> 106 </span><span class="lineCov"> 18 : struct snapraid_disk* disk = i->data;</span>
|
||||
<span class="lineNum"> 107 </span> :
|
||||
<span class="lineNum"> 108 </span> : /* for each file */
|
||||
<span class="lineNum"> 109 </span><span class="lineCov"> 16998 : for (j = disk->filelist; j != 0; j = j->next) {</span>
|
||||
<span class="lineNum"> 110 </span><span class="lineCov"> 16980 : struct snapraid_file* file = j->data;</span>
|
||||
<span class="lineNum"> 109 </span><span class="lineCov"> 17012 : for (j = disk->filelist; j != 0; j = j->next) {</span>
|
||||
<span class="lineNum"> 110 </span><span class="lineCov"> 16994 : struct snapraid_file* file = j->data;</span>
|
||||
<span class="lineNum"> 111 </span> : struct snapraid_hash* hash;
|
||||
<span class="lineNum"> 112 </span> : tommy_hash_t hash32;
|
||||
<span class="lineNum"> 113 </span> :
|
||||
<span class="lineNum"> 114 </span> : /* if empty, skip it */
|
||||
<span class="lineNum"> 115 </span><span class="lineCov"> 16980 : if (file->size == 0)</span>
|
||||
<span class="lineNum"> 115 </span><span class="lineCov"> 16994 : if (file->size == 0)</span>
|
||||
<span class="lineNum"> 116 </span><span class="lineCov"> 24 : continue;</span>
|
||||
<span class="lineNum"> 117 </span> :
|
||||
<span class="lineNum"> 118 </span><span class="lineCov"> 16956 : hash = hash_alloc(state, disk, file);</span>
|
||||
<span class="lineNum"> 118 </span><span class="lineCov"> 16970 : hash = hash_alloc(state, disk, file);</span>
|
||||
<span class="lineNum"> 119 </span> :
|
||||
<span class="lineNum"> 120 </span> : /* if no hash, skip it */
|
||||
<span class="lineNum"> 121 </span><span class="lineCov"> 16956 : if (!hash)</span>
|
||||
<span class="lineNum"> 121 </span><span class="lineCov"> 16970 : if (!hash)</span>
|
||||
<span class="lineNum"> 122 </span><span class="lineNoCov"> 0 : continue;</span>
|
||||
<span class="lineNum"> 123 </span> :
|
||||
<span class="lineNum"> 124 </span><span class="lineCov"> 16956 : hash32 = hash_hash(hash);</span>
|
||||
<span class="lineNum"> 124 </span><span class="lineCov"> 16970 : hash32 = hash_hash(hash);</span>
|
||||
<span class="lineNum"> 125 </span> :
|
||||
<span class="lineNum"> 126 </span><span class="lineCov"> 16956 : struct snapraid_hash* found = tommy_hashdyn_search(&hashset, hash_compare, hash->hash, hash32);</span>
|
||||
<span class="lineNum"> 127 </span><span class="lineCov"> 16956 : if (found) {</span>
|
||||
<span class="lineNum"> 128 </span><span class="lineCov"> 2 : ++count;</span>
|
||||
<span class="lineNum"> 129 </span><span class="lineCov"> 2 : size += found->file->size;</span>
|
||||
<span class="lineNum"> 130 </span><span class="lineCov"> 2 : log_tag("dup:%s:%s:%s:%s:%" PRIu64 ": dup\n", disk->name, esc(file->sub), found->disk->name, esc(found->file->sub), found->file->size);</span>
|
||||
<span class="lineNum"> 131 </span><span class="lineCov"> 2 : printf("%12" PRIu64 " %s%s = %s%s\n", file->size, disk->dir, file->sub, found->disk->dir, found->file->sub);</span>
|
||||
<span class="lineNum"> 132 </span><span class="lineCov"> 2 : hash_free(hash);</span>
|
||||
<span class="lineNum"> 126 </span><span class="lineCov"> 16970 : struct snapraid_hash* found = tommy_hashdyn_search(&hashset, hash_compare, hash->hash, hash32);</span>
|
||||
<span class="lineNum"> 127 </span><span class="lineCov"> 16970 : if (found) {</span>
|
||||
<span class="lineNum"> 128 </span><span class="lineCov"> 14 : ++count;</span>
|
||||
<span class="lineNum"> 129 </span><span class="lineCov"> 14 : size += found->file->size;</span>
|
||||
<span class="lineNum"> 130 </span><span class="lineCov"> 14 : log_tag("dup:%s:%s:%s:%s:%" PRIu64 ": dup\n", disk->name, esc(file->sub), found->disk->name, esc(found->file->sub), found->file->size);</span>
|
||||
<span class="lineNum"> 131 </span><span class="lineCov"> 14 : printf("%12" PRIu64 " %s%s = %s%s\n", file->size, disk->dir, file->sub, found->disk->dir, found->file->sub);</span>
|
||||
<span class="lineNum"> 132 </span><span class="lineCov"> 14 : hash_free(hash);</span>
|
||||
<span class="lineNum"> 133 </span> : } else {
|
||||
<span class="lineNum"> 134 </span><span class="lineCov"> 16954 : tommy_hashdyn_insert(&hashset, &hash->node, hash, hash32);</span>
|
||||
<span class="lineNum"> 134 </span><span class="lineCov"> 16956 : tommy_hashdyn_insert(&hashset, &hash->node, hash, hash32);</span>
|
||||
<span class="lineNum"> 135 </span> : }
|
||||
<span class="lineNum"> 136 </span> : }
|
||||
<span class="lineNum"> 137 </span> : }
|
||||
|
|
|
|||
|
|
@ -31,13 +31,13 @@
|
|||
<td class="headerValue">lcov.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntry">545</td>
|
||||
<td class="headerCovTableEntry">581</td>
|
||||
<td class="headerCovTableEntry">546</td>
|
||||
<td class="headerCovTableEntry">582</td>
|
||||
<td class="headerCovTableEntryHi">93.8 %</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Date:</td>
|
||||
<td class="headerValue">2015-11-20</td>
|
||||
<td class="headerValue">2016-01-09</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntry">62</td>
|
||||
|
|
@ -60,248 +60,248 @@
|
|||
<td width="20%" class="tableHead">Hit count <span class="tableHeadSort"><img src="../glass.png" width=10 height=14 alt="Sort by hit count" title="Sort by hit count" border=0></span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#1043">chunk_parity_inside_compare</a></td>
|
||||
<td class="coverFnHi">211700412</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#1093">chunk_file_inside_compare</a></td>
|
||||
<td class="coverFnHi">123424429</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#1283">fs_file2block_get</a></td>
|
||||
<td class="coverFnHi">112904165</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#1141">fs_par2file_get_ts</a></td>
|
||||
<td class="coverFnHi">62671366</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#1061">fs_par2chunk_get_ts</a></td>
|
||||
<td class="coverFnHi">62562730</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#1295">fs_par2block_get_ts</a></td>
|
||||
<td class="coverFnHi">51148943</td>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#1044">chunk_parity_inside_compare</a></td>
|
||||
<td class="coverFnHi">102351431</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#648">chunk_file_compare</a></td>
|
||||
<td class="coverFnHi">43527418</td>
|
||||
<td class="coverFnHi">44153325</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#1284">fs_file2block_get</a></td>
|
||||
<td class="coverFnHi">44106216</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#635">chunk_parity_compare</a></td>
|
||||
<td class="coverFnHi">43029600</td>
|
||||
<td class="coverFnHi">43351652</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#1116">fs_file2chunk_get_ts</a></td>
|
||||
<td class="coverFnHi">34157182</td>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#1062">fs_par2chunk_get_ts</a></td>
|
||||
<td class="coverFnHi">38418652</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#1155">fs_file2par_get_ts</a></td>
|
||||
<td class="coverFnHi">28740730</td>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#1142">fs_par2file_get_ts</a></td>
|
||||
<td class="coverFnHi">38311850</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#1296">fs_par2block_get_ts</a></td>
|
||||
<td class="coverFnHi">26733115</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#1094">chunk_file_inside_compare</a></td>
|
||||
<td class="coverFnHi">21495373</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#167">filter_apply</a></td>
|
||||
<td class="coverFnHi">12035450</td>
|
||||
<td class="coverFnHi">12222233</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#1170">fs_allocate</a></td>
|
||||
<td class="coverFnHi">8849850</td>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#1117">fs_file2chunk_get_ts</a></td>
|
||||
<td class="coverFnHi">10223247</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#1171">fs_allocate</a></td>
|
||||
<td class="coverFnHi">8975787</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#466">file_block_size</a></td>
|
||||
<td class="coverFnHi">6610122</td>
|
||||
<td class="coverFnHi">6677441</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#906">chunk_file_check_foreach</a></td>
|
||||
<td class="coverFnHi">6291380</td>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#907">chunk_file_check_foreach</a></td>
|
||||
<td class="coverFnHi">6441048</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#856">chunk_parity_check_foreach</a></td>
|
||||
<td class="coverFnHi">6291380</td>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#857">chunk_parity_check_foreach</a></td>
|
||||
<td class="coverFnHi">6441048</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#192">filter_recurse</a></td>
|
||||
<td class="coverFnHi">6023667</td>
|
||||
<td class="coverFnHi">6118464</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#482">file_block_is_last</a></td>
|
||||
<td class="coverFnHi">5319910</td>
|
||||
<td class="coverFnHi">5326414</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#1156">fs_file2par_get_ts</a></td>
|
||||
<td class="coverFnHi">4878725</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#604">chunk_alloc</a></td>
|
||||
<td class="coverFnHi">3607761</td>
|
||||
<td class="coverFnHi">3657427</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#356">file_alloc</a></td>
|
||||
<td class="coverFnHi">3565141</td>
|
||||
<td class="coverFnHi">3611495</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#630">chunk_free</a></td>
|
||||
<td class="coverFnHi">3437520</td>
|
||||
<td class="coverFnHi">3486903</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#404">file_free</a></td>
|
||||
<td class="coverFnHi">3417248</td>
|
||||
<td class="coverFnHi">3466242</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#226">filter_element</a></td>
|
||||
<td class="coverFnHi">3226232</td>
|
||||
<td class="coverFnHi">3273724</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#275">filter_path</a></td>
|
||||
<td class="coverFnHi">3223260</td>
|
||||
<td class="coverFnHi">3270701</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#331">filter_content</a></td>
|
||||
<td class="coverFnHi">3066852</td>
|
||||
<td class="coverFnHi">3114300</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#497">file_inode_compare_to_arg</a></td>
|
||||
<td class="coverFnHi">866983</td>
|
||||
<td class="coverFnHi">927047</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#1327">time_compare</a></td>
|
||||
<td class="coverFnHi">743492</td>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#1328">time_compare</a></td>
|
||||
<td class="coverFnHi">707506</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#521">file_path_compare</a></td>
|
||||
<td class="coverFnHi">126356</td>
|
||||
<td class="coverFnHi">129121</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#149">filter_type</a></td>
|
||||
<td class="coverFnHi">125437</td>
|
||||
<td class="coverFnHi">125387</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#666">link_alloc</a></td>
|
||||
<td class="coverFnHi">115419</td>
|
||||
<td class="coverFnHi">116876</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#678">link_free</a></td>
|
||||
<td class="coverFnHi">109621</td>
|
||||
<td class="coverFnHi">111078</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#1215">fs_deallocate</a></td>
|
||||
<td class="coverFnHi">106802</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#541">file_path_compare_to_arg</a></td>
|
||||
<td class="coverFnHi">105104</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#1214">fs_deallocate</a></td>
|
||||
<td class="coverFnHi">104155</td>
|
||||
<td class="coverFnHi">104908</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#285">filter_existence</a></td>
|
||||
<td class="coverFnHi">80654</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#455">file_name</a></td>
|
||||
<td class="coverFnHi">47908</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#831">chunk_disk_size_compare</a></td>
|
||||
<td class="coverFnHi">47779</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#310">filter_correctness</a></td>
|
||||
<td class="coverFnHi">38806</td>
|
||||
<td class="coverFnHi">80688</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#529">file_physical_compare</a></td>
|
||||
<td class="coverFnHi">34618</td>
|
||||
<td class="coverFnHi">49676</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#832">chunk_disk_size_compare</a></td>
|
||||
<td class="coverFnHi">48702</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#455">file_name</a></td>
|
||||
<td class="coverFnHi">47994</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#310">filter_correctness</a></td>
|
||||
<td class="coverFnHi">38732</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#685">link_name_compare_to_arg</a></td>
|
||||
<td class="coverFnHi">30380</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#582">file_namestamp_compare</a></td>
|
||||
<td class="coverFnHi">23954</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#549">file_name_compare</a></td>
|
||||
<td class="coverFnHi">23954</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#559">file_stamp_compare</a></td>
|
||||
<td class="coverFnHi">23659</td>
|
||||
<td class="coverFnHi">31837</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#380">file_dup</a></td>
|
||||
<td class="coverFnHi">21785</td>
|
||||
<td class="coverFnHi">24707</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#582">file_namestamp_compare</a></td>
|
||||
<td class="coverFnHi">23997</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#549">file_name_compare</a></td>
|
||||
<td class="coverFnHi">23997</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#559">file_stamp_compare</a></td>
|
||||
<td class="coverFnHi">23661</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#419">file_copy</a></td>
|
||||
<td class="coverFnHi">6209</td>
|
||||
<td class="coverFnHi">23633</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#844">disk_size</a></td>
|
||||
<td class="coverFnHi">3955</td>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#845">disk_size</a></td>
|
||||
<td class="coverFnHi">4165</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#280">filter_dir</a></td>
|
||||
<td class="coverFnHi">2972</td>
|
||||
<td class="coverFnHi">3023</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#1015">fs_check</a></td>
|
||||
<td class="coverFnHi">2676</td>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#1016">fs_check</a></td>
|
||||
<td class="coverFnHi">2838</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#726">disk_alloc</a></td>
|
||||
<td class="coverFnHi">1477</td>
|
||||
<td class="coverFnHi">1525</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#1308">map_alloc</a></td>
|
||||
<td class="coverFnHi">1447</td>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#1309">map_alloc</a></td>
|
||||
<td class="coverFnHi">1495</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#25">content_alloc</a></td>
|
||||
<td class="coverFnHi">1434</td>
|
||||
<td class="coverFnHi">1490</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#766">disk_free</a></td>
|
||||
<td class="coverFnHi">1351</td>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#767">disk_free</a></td>
|
||||
<td class="coverFnHi">1399</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#1322">map_free</a></td>
|
||||
<td class="coverFnHi">1327</td>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#1323">map_free</a></td>
|
||||
<td class="coverFnHi">1375</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#36">content_free</a></td>
|
||||
<td class="coverFnHi">1297</td>
|
||||
<td class="coverFnHi">1353</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#693">link_alpha_compare</a></td>
|
||||
<td class="coverFnHi">1249</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#801">disk_is_empty</a></td>
|
||||
<td class="coverFnHi">804</td>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#802">disk_is_empty</a></td>
|
||||
<td class="coverFnHi">870</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#701">dir_alloc</a></td>
|
||||
<td class="coverFnHi">760</td>
|
||||
<td class="coverFnHi">772</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#712">dir_free</a></td>
|
||||
<td class="coverFnHi">712</td>
|
||||
<td class="coverFnHi">724</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#41">filter_alloc_file</a></td>
|
||||
<td class="coverFnHi">498</td>
|
||||
<td class="coverFnHi">514</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#144">filter_free</a></td>
|
||||
<td class="coverFnHi">461</td>
|
||||
<td class="coverFnHi">477</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#718">dir_name_compare</a></td>
|
||||
<td class="coverFnHi">217</td>
|
||||
<td class="coverFnHi">229</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#413">file_rename</a></td>
|
||||
<td class="coverFnHi">155</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#788">chunk_disk_empty_compare</a></td>
|
||||
<td class="coverFnHi">10</td>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#789">chunk_disk_empty_compare</a></td>
|
||||
<td class="coverFnHi">13</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#120">filter_alloc_disk</a></td>
|
||||
|
|
|
|||
|
|
@ -31,13 +31,13 @@
|
|||
<td class="headerValue">lcov.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntry">545</td>
|
||||
<td class="headerCovTableEntry">581</td>
|
||||
<td class="headerCovTableEntry">546</td>
|
||||
<td class="headerCovTableEntry">582</td>
|
||||
<td class="headerCovTableEntryHi">93.8 %</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Date:</td>
|
||||
<td class="headerValue">2015-11-20</td>
|
||||
<td class="headerValue">2016-01-09</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntry">62</td>
|
||||
|
|
@ -61,103 +61,103 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#604">chunk_alloc</a></td>
|
||||
<td class="coverFnHi">3607761</td>
|
||||
<td class="coverFnHi">3657427</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#788">chunk_disk_empty_compare</a></td>
|
||||
<td class="coverFnHi">10</td>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#789">chunk_disk_empty_compare</a></td>
|
||||
<td class="coverFnHi">13</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#831">chunk_disk_size_compare</a></td>
|
||||
<td class="coverFnHi">47779</td>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#832">chunk_disk_size_compare</a></td>
|
||||
<td class="coverFnHi">48702</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#906">chunk_file_check_foreach</a></td>
|
||||
<td class="coverFnHi">6291380</td>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#907">chunk_file_check_foreach</a></td>
|
||||
<td class="coverFnHi">6441048</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#648">chunk_file_compare</a></td>
|
||||
<td class="coverFnHi">43527418</td>
|
||||
<td class="coverFnHi">44153325</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#1093">chunk_file_inside_compare</a></td>
|
||||
<td class="coverFnHi">123424429</td>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#1094">chunk_file_inside_compare</a></td>
|
||||
<td class="coverFnHi">21495373</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#630">chunk_free</a></td>
|
||||
<td class="coverFnHi">3437520</td>
|
||||
<td class="coverFnHi">3486903</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#856">chunk_parity_check_foreach</a></td>
|
||||
<td class="coverFnHi">6291380</td>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#857">chunk_parity_check_foreach</a></td>
|
||||
<td class="coverFnHi">6441048</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#635">chunk_parity_compare</a></td>
|
||||
<td class="coverFnHi">43029600</td>
|
||||
<td class="coverFnHi">43351652</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#1043">chunk_parity_inside_compare</a></td>
|
||||
<td class="coverFnHi">211700412</td>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#1044">chunk_parity_inside_compare</a></td>
|
||||
<td class="coverFnHi">102351431</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#25">content_alloc</a></td>
|
||||
<td class="coverFnHi">1434</td>
|
||||
<td class="coverFnHi">1490</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#36">content_free</a></td>
|
||||
<td class="coverFnHi">1297</td>
|
||||
<td class="coverFnHi">1353</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#701">dir_alloc</a></td>
|
||||
<td class="coverFnHi">760</td>
|
||||
<td class="coverFnHi">772</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#712">dir_free</a></td>
|
||||
<td class="coverFnHi">712</td>
|
||||
<td class="coverFnHi">724</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#718">dir_name_compare</a></td>
|
||||
<td class="coverFnHi">217</td>
|
||||
<td class="coverFnHi">229</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#726">disk_alloc</a></td>
|
||||
<td class="coverFnHi">1477</td>
|
||||
<td class="coverFnHi">1525</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#766">disk_free</a></td>
|
||||
<td class="coverFnHi">1351</td>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#767">disk_free</a></td>
|
||||
<td class="coverFnHi">1399</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#801">disk_is_empty</a></td>
|
||||
<td class="coverFnHi">804</td>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#802">disk_is_empty</a></td>
|
||||
<td class="coverFnHi">870</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#844">disk_size</a></td>
|
||||
<td class="coverFnHi">3955</td>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#845">disk_size</a></td>
|
||||
<td class="coverFnHi">4165</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#356">file_alloc</a></td>
|
||||
<td class="coverFnHi">3565141</td>
|
||||
<td class="coverFnHi">3611495</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#482">file_block_is_last</a></td>
|
||||
<td class="coverFnHi">5319910</td>
|
||||
<td class="coverFnHi">5326414</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#466">file_block_size</a></td>
|
||||
<td class="coverFnHi">6610122</td>
|
||||
<td class="coverFnHi">6677441</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#419">file_copy</a></td>
|
||||
<td class="coverFnHi">6209</td>
|
||||
<td class="coverFnHi">23633</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#380">file_dup</a></td>
|
||||
<td class="coverFnHi">21785</td>
|
||||
<td class="coverFnHi">24707</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#404">file_free</a></td>
|
||||
<td class="coverFnHi">3417248</td>
|
||||
<td class="coverFnHi">3466242</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#509">file_inode_compare</a></td>
|
||||
|
|
@ -165,27 +165,27 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#497">file_inode_compare_to_arg</a></td>
|
||||
<td class="coverFnHi">866983</td>
|
||||
<td class="coverFnHi">927047</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#455">file_name</a></td>
|
||||
<td class="coverFnHi">47908</td>
|
||||
<td class="coverFnHi">47994</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#549">file_name_compare</a></td>
|
||||
<td class="coverFnHi">23954</td>
|
||||
<td class="coverFnHi">23997</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#582">file_namestamp_compare</a></td>
|
||||
<td class="coverFnHi">23954</td>
|
||||
<td class="coverFnHi">23997</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#521">file_path_compare</a></td>
|
||||
<td class="coverFnHi">126356</td>
|
||||
<td class="coverFnHi">129121</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#541">file_path_compare_to_arg</a></td>
|
||||
<td class="coverFnHi">105104</td>
|
||||
<td class="coverFnHi">104908</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#593">file_pathstamp_compare</a></td>
|
||||
|
|
@ -193,7 +193,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#529">file_physical_compare</a></td>
|
||||
<td class="coverFnHi">34618</td>
|
||||
<td class="coverFnHi">49676</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#413">file_rename</a></td>
|
||||
|
|
@ -201,7 +201,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#559">file_stamp_compare</a></td>
|
||||
<td class="coverFnHi">23659</td>
|
||||
<td class="coverFnHi">23661</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#120">filter_alloc_disk</a></td>
|
||||
|
|
@ -209,87 +209,87 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#41">filter_alloc_file</a></td>
|
||||
<td class="coverFnHi">498</td>
|
||||
<td class="coverFnHi">514</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#167">filter_apply</a></td>
|
||||
<td class="coverFnHi">12035450</td>
|
||||
<td class="coverFnHi">12222233</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#331">filter_content</a></td>
|
||||
<td class="coverFnHi">3066852</td>
|
||||
<td class="coverFnHi">3114300</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#310">filter_correctness</a></td>
|
||||
<td class="coverFnHi">38806</td>
|
||||
<td class="coverFnHi">38732</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#280">filter_dir</a></td>
|
||||
<td class="coverFnHi">2972</td>
|
||||
<td class="coverFnHi">3023</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#226">filter_element</a></td>
|
||||
<td class="coverFnHi">3226232</td>
|
||||
<td class="coverFnHi">3273724</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#285">filter_existence</a></td>
|
||||
<td class="coverFnHi">80654</td>
|
||||
<td class="coverFnHi">80688</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#144">filter_free</a></td>
|
||||
<td class="coverFnHi">461</td>
|
||||
<td class="coverFnHi">477</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#275">filter_path</a></td>
|
||||
<td class="coverFnHi">3223260</td>
|
||||
<td class="coverFnHi">3270701</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#192">filter_recurse</a></td>
|
||||
<td class="coverFnHi">6023667</td>
|
||||
<td class="coverFnHi">6118464</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#149">filter_type</a></td>
|
||||
<td class="coverFnHi">125437</td>
|
||||
<td class="coverFnHi">125387</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#1170">fs_allocate</a></td>
|
||||
<td class="coverFnHi">8849850</td>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#1171">fs_allocate</a></td>
|
||||
<td class="coverFnHi">8975787</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#1015">fs_check</a></td>
|
||||
<td class="coverFnHi">2676</td>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#1016">fs_check</a></td>
|
||||
<td class="coverFnHi">2838</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#1214">fs_deallocate</a></td>
|
||||
<td class="coverFnHi">104155</td>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#1215">fs_deallocate</a></td>
|
||||
<td class="coverFnHi">106802</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#1283">fs_file2block_get</a></td>
|
||||
<td class="coverFnHi">112904165</td>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#1284">fs_file2block_get</a></td>
|
||||
<td class="coverFnHi">44106216</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#1116">fs_file2chunk_get_ts</a></td>
|
||||
<td class="coverFnHi">34157182</td>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#1117">fs_file2chunk_get_ts</a></td>
|
||||
<td class="coverFnHi">10223247</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#1155">fs_file2par_get_ts</a></td>
|
||||
<td class="coverFnHi">28740730</td>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#1156">fs_file2par_get_ts</a></td>
|
||||
<td class="coverFnHi">4878725</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#1295">fs_par2block_get_ts</a></td>
|
||||
<td class="coverFnHi">51148943</td>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#1296">fs_par2block_get_ts</a></td>
|
||||
<td class="coverFnHi">26733115</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#1061">fs_par2chunk_get_ts</a></td>
|
||||
<td class="coverFnHi">62562730</td>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#1062">fs_par2chunk_get_ts</a></td>
|
||||
<td class="coverFnHi">38418652</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#1141">fs_par2file_get_ts</a></td>
|
||||
<td class="coverFnHi">62671366</td>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#1142">fs_par2file_get_ts</a></td>
|
||||
<td class="coverFnHi">38311850</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#666">link_alloc</a></td>
|
||||
<td class="coverFnHi">115419</td>
|
||||
<td class="coverFnHi">116876</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#693">link_alpha_compare</a></td>
|
||||
|
|
@ -297,23 +297,23 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#678">link_free</a></td>
|
||||
<td class="coverFnHi">109621</td>
|
||||
<td class="coverFnHi">111078</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#685">link_name_compare_to_arg</a></td>
|
||||
<td class="coverFnHi">30380</td>
|
||||
<td class="coverFnHi">31837</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#1308">map_alloc</a></td>
|
||||
<td class="coverFnHi">1447</td>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#1309">map_alloc</a></td>
|
||||
<td class="coverFnHi">1495</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#1322">map_free</a></td>
|
||||
<td class="coverFnHi">1327</td>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#1323">map_free</a></td>
|
||||
<td class="coverFnHi">1375</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#1327">time_compare</a></td>
|
||||
<td class="coverFnHi">743492</td>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#1328">time_compare</a></td>
|
||||
<td class="coverFnHi">707506</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
|
|
@ -37,7 +37,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Date:</td>
|
||||
<td class="headerValue">2015-11-20</td>
|
||||
<td class="headerValue">2016-01-09</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntry">39</td>
|
||||
|
|
@ -60,159 +60,159 @@
|
|||
<td width="20%" class="tableHead">Hit count <span class="tableHeadSort"><img src="../glass.png" width=10 height=14 alt="Sort by hit count" title="Sort by hit count" border=0></span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#560">block_state_get</a></td>
|
||||
<td class="coverFnHi">96735410</td>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#562">block_state_get</a></td>
|
||||
<td class="coverFnHi">49967196</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#639">file_flag_has</a></td>
|
||||
<td class="coverFnHi">33299459</td>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#641">file_flag_has</a></td>
|
||||
<td class="coverFnHi">33706389</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#957">fs_par2block_get</a></td>
|
||||
<td class="coverFnHi">21727310</td>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#959">fs_par2block_get</a></td>
|
||||
<td class="coverFnHi">22209416</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#571">block_state_set</a></td>
|
||||
<td class="coverFnHi">18242161</td>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#573">block_state_set</a></td>
|
||||
<td class="coverFnHi">18633161</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#606">block_has_file</a></td>
|
||||
<td class="coverFnHi">12929086</td>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#608">block_has_file</a></td>
|
||||
<td class="coverFnHi">13243669</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#928">fs_par2file_get</a></td>
|
||||
<td class="coverFnHi">11514087</td>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#621">block_has_invalid_parity</a></td>
|
||||
<td class="coverFnHi">11837218</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#619">block_has_invalid_parity</a></td>
|
||||
<td class="coverFnHi">11489174</td>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#930">fs_par2file_get</a></td>
|
||||
<td class="coverFnHi">11578735</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#1065">info_get</a></td>
|
||||
<td class="coverFnHi">10573034</td>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#543">hash_invalid_set</a></td>
|
||||
<td class="coverFnHi">9036734</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#541">hash_invalid_set</a></td>
|
||||
<td class="coverFnHi">8910831</td>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#749">file_stamp_hash</a></td>
|
||||
<td class="coverFnHi">6198269</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#747">file_stamp_hash</a></td>
|
||||
<td class="coverFnHi">6139138</td>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#646">file_flag_set</a></td>
|
||||
<td class="coverFnHi">5250833</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#644">file_flag_set</a></td>
|
||||
<td class="coverFnHi">5176917</td>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#1067">info_get</a></td>
|
||||
<td class="coverFnHi">5104110</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#718">file_inode_hash</a></td>
|
||||
<td class="coverFnHi">4822298</td>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#720">file_inode_hash</a></td>
|
||||
<td class="coverFnHi">4924816</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#739">file_path_hash</a></td>
|
||||
<td class="coverFnHi">3766623</td>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#741">file_path_hash</a></td>
|
||||
<td class="coverFnHi">3815727</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#1020">info_get_rehash</a></td>
|
||||
<td class="coverFnHi">3312725</td>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#458">filter_hidden</a></td>
|
||||
<td class="coverFnHi">3114300</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#456">filter_hidden</a></td>
|
||||
<td class="coverFnHi">3066852</td>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#596">block_has_past_hash</a></td>
|
||||
<td class="coverFnHi">2401624</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#594">block_has_past_hash</a></td>
|
||||
<td class="coverFnHi">2287366</td>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#583">block_has_updated_hash</a></td>
|
||||
<td class="coverFnHi">2075259</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#1002">info_get_time</a></td>
|
||||
<td class="coverFnHi">2258078</td>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#1022">info_get_rehash</a></td>
|
||||
<td class="coverFnHi">2058338</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#581">block_has_updated_hash</a></td>
|
||||
<td class="coverFnHi">2005171</td>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#1056">info_set</a></td>
|
||||
<td class="coverFnHi">1639782</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#1011">info_get_bad</a></td>
|
||||
<td class="coverFnHi">1725704</td>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#1004">info_get_time</a></td>
|
||||
<td class="coverFnHi">890086</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#1054">info_set</a></td>
|
||||
<td class="coverFnHi">1609485</td>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#521">hash_is_zero</a></td>
|
||||
<td class="coverFnHi">761026</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#1029">info_get_justsynced</a></td>
|
||||
<td class="coverFnHi">1474627</td>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#505">hash_is_invalid</a></td>
|
||||
<td class="coverFnHi">759605</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#519">hash_is_zero</a></td>
|
||||
<td class="coverFnHi">790275</td>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#944">fs_file2par_get</a></td>
|
||||
<td class="coverFnHi">519510</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#503">hash_is_invalid</a></td>
|
||||
<td class="coverFnHi">776042</td>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#1013">info_get_bad</a></td>
|
||||
<td class="coverFnHi">338860</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#942">fs_file2par_get</a></td>
|
||||
<td class="coverFnHi">464306</td>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#634">block_has_file_and_valid_parity</a></td>
|
||||
<td class="coverFnHi">257893</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#793">link_flag_get</a></td>
|
||||
<td class="coverFnHi">410820</td>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#774">link_flag_has</a></td>
|
||||
<td class="coverFnHi">205548</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#983">info_make</a></td>
|
||||
<td class="coverFnHi">394996</td>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#985">info_make</a></td>
|
||||
<td class="coverFnHi">174394</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#632">block_has_file_and_valid_parity</a></td>
|
||||
<td class="coverFnHi">221100</td>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#823">link_name_hash</a></td>
|
||||
<td class="coverFnHi">151170</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#772">link_flag_has</a></td>
|
||||
<td class="coverFnHi">202633</td>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#551">hash_zero_set</a></td>
|
||||
<td class="coverFnHi">115487</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#549">hash_zero_set</a></td>
|
||||
<td class="coverFnHi">153288</td>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#795">link_flag_get</a></td>
|
||||
<td class="coverFnHi">89637</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#821">link_name_hash</a></td>
|
||||
<td class="coverFnHi">148256</td>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#1031">info_get_justsynced</a></td>
|
||||
<td class="coverFnHi">79285</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#533">hash_is_real</a></td>
|
||||
<td class="coverFnHi">65785</td>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#535">hash_is_real</a></td>
|
||||
<td class="coverFnHi">44133</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#777">link_flag_set</a></td>
|
||||
<td class="coverFnHi">36114</td>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#779">link_flag_set</a></td>
|
||||
<td class="coverFnHi">37571</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#649">file_flag_clear</a></td>
|
||||
<td class="coverFnHi">14174</td>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#651">file_flag_clear</a></td>
|
||||
<td class="coverFnHi">20621</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#1045">info_set_rehash</a></td>
|
||||
<td class="coverFnHi">9199</td>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#1047">info_set_rehash</a></td>
|
||||
<td class="coverFnHi">9207</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#1037">info_set_bad</a></td>
|
||||
<td class="coverFnHi">1802</td>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#1039">info_set_bad</a></td>
|
||||
<td class="coverFnHi">1771</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#859">dir_name_hash</a></td>
|
||||
<td class="coverFnHi">987</td>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#861">dir_name_hash</a></td>
|
||||
<td class="coverFnHi">1011</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#826">dir_flag_has</a></td>
|
||||
<td class="coverFnHi">876</td>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#828">dir_flag_has</a></td>
|
||||
<td class="coverFnHi">900</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#831">dir_flag_set</a></td>
|
||||
<td class="coverFnHi">235</td>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#833">dir_flag_set</a></td>
|
||||
<td class="coverFnHi">247</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#787">link_flag_let</a></td>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#789">link_flag_let</a></td>
|
||||
<td class="coverFnHi">6</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Date:</td>
|
||||
<td class="headerValue">2015-11-20</td>
|
||||
<td class="headerValue">2016-01-09</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntry">39</td>
|
||||
|
|
@ -60,160 +60,160 @@
|
|||
<td width="20%" class="tableHead">Hit count <span class="tableHeadSort"><a href="elem.h.func-sort-c.html"><img src="../updown.png" width=10 height=14 alt="Sort by hit count" title="Sort by hit count" border=0></a></span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#606">block_has_file</a></td>
|
||||
<td class="coverFnHi">12929086</td>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#608">block_has_file</a></td>
|
||||
<td class="coverFnHi">13243669</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#632">block_has_file_and_valid_parity</a></td>
|
||||
<td class="coverFnHi">221100</td>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#634">block_has_file_and_valid_parity</a></td>
|
||||
<td class="coverFnHi">257893</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#619">block_has_invalid_parity</a></td>
|
||||
<td class="coverFnHi">11489174</td>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#621">block_has_invalid_parity</a></td>
|
||||
<td class="coverFnHi">11837218</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#594">block_has_past_hash</a></td>
|
||||
<td class="coverFnHi">2287366</td>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#596">block_has_past_hash</a></td>
|
||||
<td class="coverFnHi">2401624</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#581">block_has_updated_hash</a></td>
|
||||
<td class="coverFnHi">2005171</td>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#583">block_has_updated_hash</a></td>
|
||||
<td class="coverFnHi">2075259</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#560">block_state_get</a></td>
|
||||
<td class="coverFnHi">96735410</td>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#562">block_state_get</a></td>
|
||||
<td class="coverFnHi">49967196</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#571">block_state_set</a></td>
|
||||
<td class="coverFnHi">18242161</td>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#573">block_state_set</a></td>
|
||||
<td class="coverFnHi">18633161</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#826">dir_flag_has</a></td>
|
||||
<td class="coverFnHi">876</td>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#828">dir_flag_has</a></td>
|
||||
<td class="coverFnHi">900</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#831">dir_flag_set</a></td>
|
||||
<td class="coverFnHi">235</td>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#833">dir_flag_set</a></td>
|
||||
<td class="coverFnHi">247</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#859">dir_name_hash</a></td>
|
||||
<td class="coverFnHi">987</td>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#861">dir_name_hash</a></td>
|
||||
<td class="coverFnHi">1011</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#649">file_flag_clear</a></td>
|
||||
<td class="coverFnHi">14174</td>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#651">file_flag_clear</a></td>
|
||||
<td class="coverFnHi">20621</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#639">file_flag_has</a></td>
|
||||
<td class="coverFnHi">33299459</td>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#641">file_flag_has</a></td>
|
||||
<td class="coverFnHi">33706389</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#644">file_flag_set</a></td>
|
||||
<td class="coverFnHi">5176917</td>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#646">file_flag_set</a></td>
|
||||
<td class="coverFnHi">5250833</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#718">file_inode_hash</a></td>
|
||||
<td class="coverFnHi">4822298</td>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#720">file_inode_hash</a></td>
|
||||
<td class="coverFnHi">4924816</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#739">file_path_hash</a></td>
|
||||
<td class="coverFnHi">3766623</td>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#741">file_path_hash</a></td>
|
||||
<td class="coverFnHi">3815727</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#747">file_stamp_hash</a></td>
|
||||
<td class="coverFnHi">6139138</td>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#749">file_stamp_hash</a></td>
|
||||
<td class="coverFnHi">6198269</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#456">filter_hidden</a></td>
|
||||
<td class="coverFnHi">3066852</td>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#458">filter_hidden</a></td>
|
||||
<td class="coverFnHi">3114300</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#942">fs_file2par_get</a></td>
|
||||
<td class="coverFnHi">464306</td>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#944">fs_file2par_get</a></td>
|
||||
<td class="coverFnHi">519510</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#957">fs_par2block_get</a></td>
|
||||
<td class="coverFnHi">21727310</td>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#959">fs_par2block_get</a></td>
|
||||
<td class="coverFnHi">22209416</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#928">fs_par2file_get</a></td>
|
||||
<td class="coverFnHi">11514087</td>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#930">fs_par2file_get</a></td>
|
||||
<td class="coverFnHi">11578735</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#541">hash_invalid_set</a></td>
|
||||
<td class="coverFnHi">8910831</td>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#543">hash_invalid_set</a></td>
|
||||
<td class="coverFnHi">9036734</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#503">hash_is_invalid</a></td>
|
||||
<td class="coverFnHi">776042</td>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#505">hash_is_invalid</a></td>
|
||||
<td class="coverFnHi">759605</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#533">hash_is_real</a></td>
|
||||
<td class="coverFnHi">65785</td>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#535">hash_is_real</a></td>
|
||||
<td class="coverFnHi">44133</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#519">hash_is_zero</a></td>
|
||||
<td class="coverFnHi">790275</td>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#521">hash_is_zero</a></td>
|
||||
<td class="coverFnHi">761026</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#549">hash_zero_set</a></td>
|
||||
<td class="coverFnHi">153288</td>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#551">hash_zero_set</a></td>
|
||||
<td class="coverFnHi">115487</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#1065">info_get</a></td>
|
||||
<td class="coverFnHi">10573034</td>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#1067">info_get</a></td>
|
||||
<td class="coverFnHi">5104110</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#1011">info_get_bad</a></td>
|
||||
<td class="coverFnHi">1725704</td>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#1013">info_get_bad</a></td>
|
||||
<td class="coverFnHi">338860</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#1029">info_get_justsynced</a></td>
|
||||
<td class="coverFnHi">1474627</td>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#1031">info_get_justsynced</a></td>
|
||||
<td class="coverFnHi">79285</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#1020">info_get_rehash</a></td>
|
||||
<td class="coverFnHi">3312725</td>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#1022">info_get_rehash</a></td>
|
||||
<td class="coverFnHi">2058338</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#1002">info_get_time</a></td>
|
||||
<td class="coverFnHi">2258078</td>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#1004">info_get_time</a></td>
|
||||
<td class="coverFnHi">890086</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#983">info_make</a></td>
|
||||
<td class="coverFnHi">394996</td>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#985">info_make</a></td>
|
||||
<td class="coverFnHi">174394</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#1054">info_set</a></td>
|
||||
<td class="coverFnHi">1609485</td>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#1056">info_set</a></td>
|
||||
<td class="coverFnHi">1639782</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#1037">info_set_bad</a></td>
|
||||
<td class="coverFnHi">1802</td>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#1039">info_set_bad</a></td>
|
||||
<td class="coverFnHi">1771</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#1045">info_set_rehash</a></td>
|
||||
<td class="coverFnHi">9199</td>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#1047">info_set_rehash</a></td>
|
||||
<td class="coverFnHi">9207</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#793">link_flag_get</a></td>
|
||||
<td class="coverFnHi">410820</td>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#795">link_flag_get</a></td>
|
||||
<td class="coverFnHi">89637</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#772">link_flag_has</a></td>
|
||||
<td class="coverFnHi">202633</td>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#774">link_flag_has</a></td>
|
||||
<td class="coverFnHi">205548</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#787">link_flag_let</a></td>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#789">link_flag_let</a></td>
|
||||
<td class="coverFnHi">6</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#777">link_flag_set</a></td>
|
||||
<td class="coverFnHi">36114</td>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#779">link_flag_set</a></td>
|
||||
<td class="coverFnHi">37571</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#821">link_name_hash</a></td>
|
||||
<td class="coverFnHi">148256</td>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#823">link_name_hash</a></td>
|
||||
<td class="coverFnHi">151170</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
|
|
@ -31,13 +31,13 @@
|
|||
<td class="headerValue">lcov.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntry">125</td>
|
||||
<td class="headerCovTableEntry">128</td>
|
||||
<td class="headerCovTableEntry">126</td>
|
||||
<td class="headerCovTableEntry">129</td>
|
||||
<td class="headerCovTableEntryHi">97.7 %</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Date:</td>
|
||||
<td class="headerValue">2015-11-20</td>
|
||||
<td class="headerValue">2016-01-09</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntry">8</td>
|
||||
|
|
@ -61,35 +61,35 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="handle.c.gcov.html#249">handle_read</a></td>
|
||||
<td class="coverFnHi">5656394</td>
|
||||
<td class="coverFnHi">5713632</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="handle.c.gcov.html#221">handle_close</a></td>
|
||||
<td class="coverFnHi">4568631</td>
|
||||
<td class="coverFnHi">4590919</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="handle.c.gcov.html#149">handle_open</a></td>
|
||||
<td class="coverFnHi">1972488</td>
|
||||
<td class="coverFnHi">2024387</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="handle.c.gcov.html#25">handle_create</a></td>
|
||||
<td class="coverFnHi">771210</td>
|
||||
<td class="coverFnHi">771290</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="handle.c.gcov.html#324">handle_write</a></td>
|
||||
<td class="coverFnHi">288205</td>
|
||||
<td class="coverFnHi">288532</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="handle.c.gcov.html#364">handle_utime</a></td>
|
||||
<td class="coverFnHi">117763</td>
|
||||
<td class="coverFnHi">119455</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="handle.c.gcov.html#127">handle_truncate</a></td>
|
||||
<td class="coverFnHi">3249</td>
|
||||
<td class="coverFnHi">3187</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="handle.c.gcov.html#384">handle_map</a></td>
|
||||
<td class="coverFnHi">206</td>
|
||||
<td class="coverFnHi">214</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
|
|
|
|||
|
|
@ -31,13 +31,13 @@
|
|||
<td class="headerValue">lcov.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntry">125</td>
|
||||
<td class="headerCovTableEntry">128</td>
|
||||
<td class="headerCovTableEntry">126</td>
|
||||
<td class="headerCovTableEntry">129</td>
|
||||
<td class="headerCovTableEntryHi">97.7 %</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Date:</td>
|
||||
<td class="headerValue">2015-11-20</td>
|
||||
<td class="headerValue">2016-01-09</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntry">8</td>
|
||||
|
|
@ -61,35 +61,35 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="handle.c.gcov.html#221">handle_close</a></td>
|
||||
<td class="coverFnHi">4568631</td>
|
||||
<td class="coverFnHi">4590919</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="handle.c.gcov.html#25">handle_create</a></td>
|
||||
<td class="coverFnHi">771210</td>
|
||||
<td class="coverFnHi">771290</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="handle.c.gcov.html#384">handle_map</a></td>
|
||||
<td class="coverFnHi">206</td>
|
||||
<td class="coverFnHi">214</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="handle.c.gcov.html#149">handle_open</a></td>
|
||||
<td class="coverFnHi">1972488</td>
|
||||
<td class="coverFnHi">2024387</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="handle.c.gcov.html#249">handle_read</a></td>
|
||||
<td class="coverFnHi">5656394</td>
|
||||
<td class="coverFnHi">5713632</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="handle.c.gcov.html#127">handle_truncate</a></td>
|
||||
<td class="coverFnHi">3249</td>
|
||||
<td class="coverFnHi">3187</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="handle.c.gcov.html#364">handle_utime</a></td>
|
||||
<td class="coverFnHi">117763</td>
|
||||
<td class="coverFnHi">119455</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="handle.c.gcov.html#324">handle_write</a></td>
|
||||
<td class="coverFnHi">288205</td>
|
||||
<td class="coverFnHi">288532</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
|
|
|
|||
|
|
@ -31,13 +31,13 @@
|
|||
<td class="headerValue">lcov.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntry">125</td>
|
||||
<td class="headerCovTableEntry">128</td>
|
||||
<td class="headerCovTableEntry">126</td>
|
||||
<td class="headerCovTableEntry">129</td>
|
||||
<td class="headerCovTableEntryHi">97.7 %</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Date:</td>
|
||||
<td class="headerValue">2015-11-20</td>
|
||||
<td class="headerValue">2016-01-09</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntry">8</td>
|
||||
|
|
@ -86,66 +86,66 @@
|
|||
<span class="lineNum"> 24 </span> : /****************************************************************************/
|
||||
<a name="25"><span class="lineNum"> 25 </span> : /* handle */</a>
|
||||
<span class="lineNum"> 26 </span> :
|
||||
<span class="lineNum"> 27 </span><span class="lineCov"> 771210 : int handle_create(struct snapraid_handle* handle, struct snapraid_file* file, int mode)</span>
|
||||
<span class="lineNum"> 27 </span><span class="lineCov"> 771290 : int handle_create(struct snapraid_handle* handle, struct snapraid_file* file, int mode)</span>
|
||||
<span class="lineNum"> 28 </span> : {
|
||||
<span class="lineNum"> 29 </span> : int ret;
|
||||
<span class="lineNum"> 30 </span> : int flags;
|
||||
<span class="lineNum"> 31 </span> :
|
||||
<span class="lineNum"> 32 </span> : /* if it's the same file, and already opened, nothing to do */
|
||||
<span class="lineNum"> 33 </span><span class="lineCov"> 771210 : if (handle->file == file && handle->f != -1) {</span>
|
||||
<span class="lineNum"> 33 </span><span class="lineCov"> 771290 : if (handle->file == file && handle->f != -1) {</span>
|
||||
<span class="lineNum"> 34 </span><span class="lineNoCov"> 0 : return 0;</span>
|
||||
<span class="lineNum"> 35 </span> : }
|
||||
<span class="lineNum"> 36 </span> :
|
||||
<span class="lineNum"> 37 </span><span class="lineCov"> 771210 : pathprint(handle->path, sizeof(handle->path), "%s%s", handle->disk->dir, file->sub);</span>
|
||||
<span class="lineNum"> 37 </span><span class="lineCov"> 771290 : pathprint(handle->path, sizeof(handle->path), "%s%s", handle->disk->dir, file->sub);</span>
|
||||
<span class="lineNum"> 38 </span> :
|
||||
<span class="lineNum"> 39 </span><span class="lineCov"> 771210 : ret = mkancestor(handle->path);</span>
|
||||
<span class="lineNum"> 40 </span><span class="lineCov"> 771210 : if (ret != 0) {</span>
|
||||
<span class="lineNum"> 39 </span><span class="lineCov"> 771290 : ret = mkancestor(handle->path);</span>
|
||||
<span class="lineNum"> 40 </span><span class="lineCov"> 771290 : if (ret != 0) {</span>
|
||||
<span class="lineNum"> 41 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 42 </span> : return -1;
|
||||
<span class="lineNum"> 43 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 44 </span> : }
|
||||
<span class="lineNum"> 45 </span> :
|
||||
<span class="lineNum"> 46 </span> : /* initial values, changed later if required */
|
||||
<span class="lineNum"> 47 </span><span class="lineCov"> 771210 : handle->created = 0;</span>
|
||||
<span class="lineNum"> 47 </span><span class="lineCov"> 771290 : handle->created = 0;</span>
|
||||
<span class="lineNum"> 48 </span> :
|
||||
<span class="lineNum"> 49 </span> : /* flags for opening */
|
||||
<span class="lineNum"> 50 </span> : /* O_BINARY: open as binary file (Windows only) */
|
||||
<span class="lineNum"> 51 </span> : /* O_NOFOLLOW: do not follow links to ensure to open the real file */
|
||||
<span class="lineNum"> 52 </span> : /* O_SEQUENTIAL: improve performance for sequential access (Windows only) */
|
||||
<span class="lineNum"> 53 </span><span class="lineCov"> 771210 : flags = O_BINARY | O_NOFOLLOW;</span>
|
||||
<span class="lineNum"> 54 </span><span class="lineCov"> 771210 : if ((mode & MODE_SEQUENTIAL) != 0)</span>
|
||||
<span class="lineNum"> 55 </span><span class="lineCov"> 771210 : flags |= O_SEQUENTIAL;</span>
|
||||
<span class="lineNum"> 53 </span><span class="lineCov"> 771290 : flags = O_BINARY | O_NOFOLLOW;</span>
|
||||
<span class="lineNum"> 54 </span><span class="lineCov"> 771290 : if ((mode & MODE_SEQUENTIAL) != 0)</span>
|
||||
<span class="lineNum"> 55 </span><span class="lineCov"> 771290 : flags |= O_SEQUENTIAL;</span>
|
||||
<span class="lineNum"> 56 </span> :
|
||||
<span class="lineNum"> 57 </span> : /* open for read write */
|
||||
<span class="lineNum"> 58 </span><span class="lineCov"> 771210 : handle->f = open(handle->path, flags | O_RDWR);</span>
|
||||
<span class="lineNum"> 58 </span><span class="lineCov"> 771290 : handle->f = open(handle->path, flags | O_RDWR);</span>
|
||||
<span class="lineNum"> 59 </span> :
|
||||
<span class="lineNum"> 60 </span> : /* if failed for missing write permission */
|
||||
<span class="lineNum"> 61 </span><span class="lineCov"> 771210 : if (handle->f == -1 && (errno == EACCES || errno == EROFS)) {</span>
|
||||
<span class="lineNum"> 61 </span><span class="lineCov"> 771290 : if (handle->f == -1 && (errno == EACCES || errno == EROFS)) {</span>
|
||||
<span class="lineNum"> 62 </span> : /* open for real-only */
|
||||
<span class="lineNum"> 63 </span><span class="lineNoCov"> 0 : handle->f = open(handle->path, flags | O_RDONLY);</span>
|
||||
<span class="lineNum"> 64 </span> : }
|
||||
<span class="lineNum"> 65 </span> :
|
||||
<span class="lineNum"> 66 </span> : /* if failed for missing file */
|
||||
<span class="lineNum"> 67 </span><span class="lineCov"> 771210 : if (handle->f == -1 && errno == ENOENT) {</span>
|
||||
<span class="lineNum"> 67 </span><span class="lineCov"> 771290 : if (handle->f == -1 && errno == ENOENT) {</span>
|
||||
<span class="lineNum"> 68 </span> : char path_from[PATH_MAX];
|
||||
<span class="lineNum"> 69 </span> :
|
||||
<span class="lineNum"> 70 </span> : /* check if exists a .unrecoverable copy, and rename to the real one */
|
||||
<span class="lineNum"> 71 </span><span class="lineCov"> 176420 : pathprint(path_from, sizeof(path_from), "%s.unrecoverable", handle->path);</span>
|
||||
<span class="lineNum"> 71 </span><span class="lineCov"> 176470 : pathprint(path_from, sizeof(path_from), "%s.unrecoverable", handle->path);</span>
|
||||
<span class="lineNum"> 72 </span> :
|
||||
<span class="lineNum"> 73 </span><span class="lineCov"> 176420 : if (rename(path_from, handle->path) == 0) {</span>
|
||||
<span class="lineNum"> 73 </span><span class="lineCov"> 176470 : if (rename(path_from, handle->path) == 0) {</span>
|
||||
<span class="lineNum"> 74 </span> : /* open for read write */
|
||||
<span class="lineNum"> 75 </span><span class="lineCov"> 63396 : handle->f = open(handle->path, flags | O_RDWR);</span>
|
||||
<span class="lineNum"> 75 </span><span class="lineCov"> 63363 : handle->f = open(handle->path, flags | O_RDWR);</span>
|
||||
<span class="lineNum"> 76 </span> : } else {
|
||||
<span class="lineNum"> 77 </span> : /* create it */
|
||||
<span class="lineNum"> 78 </span><span class="lineCov"> 113024 : handle->f = open(handle->path, flags | O_RDWR | O_CREAT, 0600);</span>
|
||||
<span class="lineNum"> 79 </span><span class="lineCov"> 113024 : if (handle->f != -1) {</span>
|
||||
<span class="lineNum"> 78 </span><span class="lineCov"> 113107 : handle->f = open(handle->path, flags | O_RDWR | O_CREAT, 0600);</span>
|
||||
<span class="lineNum"> 79 </span><span class="lineCov"> 113107 : if (handle->f != -1) {</span>
|
||||
<span class="lineNum"> 80 </span> : /* mark it as created if really done */
|
||||
<span class="lineNum"> 81 </span><span class="lineCov"> 113024 : handle->created = 1;</span>
|
||||
<span class="lineNum"> 81 </span><span class="lineCov"> 113107 : handle->created = 1;</span>
|
||||
<span class="lineNum"> 82 </span> : }
|
||||
<span class="lineNum"> 83 </span> : }
|
||||
<span class="lineNum"> 84 </span> : }
|
||||
<span class="lineNum"> 85 </span> :
|
||||
<span class="lineNum"> 86 </span><span class="lineCov"> 771210 : if (handle->f == -1) {</span>
|
||||
<span class="lineNum"> 86 </span><span class="lineCov"> 771290 : if (handle->f == -1) {</span>
|
||||
<span class="lineNum"> 87 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 88 </span> : /* invalidate for error */
|
||||
<span class="lineNum"> 89 </span> : handle->file = 0;
|
||||
|
|
@ -158,11 +158,11 @@
|
|||
<span class="lineNum"> 96 </span> : }
|
||||
<span class="lineNum"> 97 </span> :
|
||||
<span class="lineNum"> 98 </span> : /* just opened */
|
||||
<span class="lineNum"> 99 </span><span class="lineCov"> 771210 : handle->file = file;</span>
|
||||
<span class="lineNum"> 99 </span><span class="lineCov"> 771290 : handle->file = file;</span>
|
||||
<span class="lineNum"> 100 </span> :
|
||||
<span class="lineNum"> 101 </span> : /* get the stat info */
|
||||
<span class="lineNum"> 102 </span><span class="lineCov"> 771210 : ret = fstat(handle->f, &handle->st);</span>
|
||||
<span class="lineNum"> 103 </span><span class="lineCov"> 771210 : if (ret != 0) {</span>
|
||||
<span class="lineNum"> 102 </span><span class="lineCov"> 771290 : ret = fstat(handle->f, &handle->st);</span>
|
||||
<span class="lineNum"> 103 </span><span class="lineCov"> 771290 : if (ret != 0) {</span>
|
||||
<span class="lineNum"> 104 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 105 </span> : log_fatal("Error accessing file '%s'. %s.\n", handle->path, strerror(errno));
|
||||
<span class="lineNum"> 106 </span> : return -1;
|
||||
|
|
@ -170,13 +170,13 @@
|
|||
<span class="lineNum"> 108 </span> : }
|
||||
<span class="lineNum"> 109 </span> :
|
||||
<span class="lineNum"> 110 </span> : /* get the size of the existing data */
|
||||
<span class="lineNum"> 111 </span><span class="lineCov"> 771210 : handle->valid_size = handle->st.st_size;</span>
|
||||
<span class="lineNum"> 111 </span><span class="lineCov"> 771290 : handle->valid_size = handle->st.st_size;</span>
|
||||
<span class="lineNum"> 112 </span> :
|
||||
<span class="lineNum"> 113 </span> : #if HAVE_POSIX_FADVISE
|
||||
<span class="lineNum"> 114 </span><span class="lineCov"> 771210 : if ((mode & MODE_SEQUENTIAL) != 0) {</span>
|
||||
<span class="lineNum"> 114 </span><span class="lineCov"> 771290 : if ((mode & MODE_SEQUENTIAL) != 0) {</span>
|
||||
<span class="lineNum"> 115 </span> : /* advise sequential access */
|
||||
<span class="lineNum"> 116 </span><span class="lineCov"> 771210 : ret = posix_fadvise(handle->f, 0, 0, POSIX_FADV_SEQUENTIAL);</span>
|
||||
<span class="lineNum"> 117 </span><span class="lineCov"> 771210 : if (ret != 0) {</span>
|
||||
<span class="lineNum"> 116 </span><span class="lineCov"> 771290 : ret = posix_fadvise(handle->f, 0, 0, POSIX_FADV_SEQUENTIAL);</span>
|
||||
<span class="lineNum"> 117 </span><span class="lineCov"> 771290 : if (ret != 0) {</span>
|
||||
<span class="lineNum"> 118 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 119 </span> : log_fatal("Error advising file '%s'. %s.\n", handle->path, strerror(ret));
|
||||
<span class="lineNum"> 120 </span> : return -1;
|
||||
|
|
@ -185,15 +185,15 @@
|
|||
<span class="lineNum"> 123 </span> : }
|
||||
<span class="lineNum"> 124 </span> : #endif
|
||||
<span class="lineNum"> 125 </span> :
|
||||
<span class="lineNum"> 126 </span><span class="lineCov"> 771210 : return 0;</span>
|
||||
<span class="lineNum"> 126 </span><span class="lineCov"> 771290 : return 0;</span>
|
||||
<a name="127"><span class="lineNum"> 127 </span> : }</a>
|
||||
<span class="lineNum"> 128 </span> :
|
||||
<span class="lineNum"> 129 </span><span class="lineCov"> 3249 : int handle_truncate(struct snapraid_handle* handle, struct snapraid_file* file)</span>
|
||||
<span class="lineNum"> 129 </span><span class="lineCov"> 3187 : int handle_truncate(struct snapraid_handle* handle, struct snapraid_file* file)</span>
|
||||
<span class="lineNum"> 130 </span> : {
|
||||
<span class="lineNum"> 131 </span> : int ret;
|
||||
<span class="lineNum"> 132 </span> :
|
||||
<span class="lineNum"> 133 </span><span class="lineCov"> 3249 : ret = ftruncate(handle->f, file->size);</span>
|
||||
<span class="lineNum"> 134 </span><span class="lineCov"> 3249 : if (ret != 0) {</span>
|
||||
<span class="lineNum"> 133 </span><span class="lineCov"> 3187 : ret = ftruncate(handle->f, file->size);</span>
|
||||
<span class="lineNum"> 134 </span><span class="lineCov"> 3187 : if (ret != 0) {</span>
|
||||
<span class="lineNum"> 135 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 136 </span> : if (errno == EACCES) {
|
||||
<span class="lineNum"> 137 </span> : log_fatal("Failed to truncate file '%s' for missing write permission.\n", handle->path);
|
||||
|
|
@ -205,58 +205,58 @@
|
|||
<span class="lineNum"> 143 </span> : }
|
||||
<span class="lineNum"> 144 </span> :
|
||||
<span class="lineNum"> 145 </span> : /* adjust the size to the truncated size */
|
||||
<span class="lineNum"> 146 </span><span class="lineCov"> 3249 : handle->valid_size = file->size;</span>
|
||||
<span class="lineNum"> 146 </span><span class="lineCov"> 3187 : handle->valid_size = file->size;</span>
|
||||
<span class="lineNum"> 147 </span> :
|
||||
<span class="lineNum"> 148 </span><span class="lineCov"> 3249 : return 0;</span>
|
||||
<span class="lineNum"> 148 </span><span class="lineCov"> 3187 : return 0;</span>
|
||||
<a name="149"><span class="lineNum"> 149 </span> : }</a>
|
||||
<span class="lineNum"> 150 </span> :
|
||||
<span class="lineNum"> 151 </span><span class="lineCov"> 1972488 : int handle_open(struct snapraid_handle* handle, struct snapraid_file* file, int mode, fptr* out, fptr* out_missing)</span>
|
||||
<span class="lineNum"> 151 </span><span class="lineCov"> 2024387 : int handle_open(struct snapraid_handle* handle, struct snapraid_file* file, int mode, fptr* out, fptr* out_missing)</span>
|
||||
<span class="lineNum"> 152 </span> : {
|
||||
<span class="lineNum"> 153 </span> : int ret;
|
||||
<span class="lineNum"> 154 </span> : int flags;
|
||||
<span class="lineNum"> 155 </span> :
|
||||
<span class="lineNum"> 156 </span><span class="lineCov"> 1972488 : if (!out_missing)</span>
|
||||
<span class="lineNum"> 157 </span><span class="lineCov"> 1971972 : out_missing = out;</span>
|
||||
<span class="lineNum"> 156 </span><span class="lineCov"> 2024387 : if (!out_missing)</span>
|
||||
<span class="lineNum"> 157 </span><span class="lineCov"> 2023815 : out_missing = out;</span>
|
||||
<span class="lineNum"> 158 </span> :
|
||||
<span class="lineNum"> 159 </span> : /* if already opened, nothing to do */
|
||||
<span class="lineNum"> 160 </span><span class="lineCov"> 1972488 : if (handle->file == file && handle->f != -1) {</span>
|
||||
<span class="lineNum"> 161 </span><span class="lineCov"> 332290 : return 0;</span>
|
||||
<span class="lineNum"> 160 </span><span class="lineCov"> 2024387 : if (handle->file == file && handle->f != -1) {</span>
|
||||
<span class="lineNum"> 161 </span><span class="lineCov"> 363056 : return 0;</span>
|
||||
<span class="lineNum"> 162 </span> : }
|
||||
<span class="lineNum"> 163 </span> :
|
||||
<span class="lineNum"> 164 </span><span class="lineCov"> 1640198 : pathprint(handle->path, sizeof(handle->path), "%s%s", handle->disk->dir, file->sub);</span>
|
||||
<span class="lineNum"> 164 </span><span class="lineCov"> 1661331 : pathprint(handle->path, sizeof(handle->path), "%s%s", handle->disk->dir, file->sub);</span>
|
||||
<span class="lineNum"> 165 </span> :
|
||||
<span class="lineNum"> 166 </span> : /* for sure not created */
|
||||
<span class="lineNum"> 167 </span><span class="lineCov"> 1640198 : handle->created = 0;</span>
|
||||
<span class="lineNum"> 167 </span><span class="lineCov"> 1661331 : handle->created = 0;</span>
|
||||
<span class="lineNum"> 168 </span> :
|
||||
<span class="lineNum"> 169 </span> : /* flags for opening */
|
||||
<span class="lineNum"> 170 </span> : /* O_BINARY: open as binary file (Windows only) */
|
||||
<span class="lineNum"> 171 </span> : /* O_NOFOLLOW: do not follow links to ensure to open the real file */
|
||||
<span class="lineNum"> 172 </span> : /* O_SEQUENTIAL: improve performance for sequential access (Windows only) */
|
||||
<span class="lineNum"> 173 </span><span class="lineCov"> 1640198 : flags = O_BINARY | O_NOFOLLOW;</span>
|
||||
<span class="lineNum"> 174 </span><span class="lineCov"> 1640198 : if ((mode & MODE_SEQUENTIAL) != 0)</span>
|
||||
<span class="lineNum"> 175 </span><span class="lineCov"> 1628870 : flags |= O_SEQUENTIAL;</span>
|
||||
<span class="lineNum"> 173 </span><span class="lineCov"> 1661331 : flags = O_BINARY | O_NOFOLLOW;</span>
|
||||
<span class="lineNum"> 174 </span><span class="lineCov"> 1661331 : if ((mode & MODE_SEQUENTIAL) != 0)</span>
|
||||
<span class="lineNum"> 175 </span><span class="lineCov"> 1649996 : flags |= O_SEQUENTIAL;</span>
|
||||
<span class="lineNum"> 176 </span> :
|
||||
<span class="lineNum"> 177 </span> : /* open for read */
|
||||
<span class="lineNum"> 178 </span><span class="lineCov"> 1640198 : handle->f = open_noatime(handle->path, flags | O_RDONLY);</span>
|
||||
<span class="lineNum"> 179 </span><span class="lineCov"> 1640198 : if (handle->f == -1) {</span>
|
||||
<span class="lineNum"> 178 </span><span class="lineCov"> 1661331 : handle->f = open_noatime(handle->path, flags | O_RDONLY);</span>
|
||||
<span class="lineNum"> 179 </span><span class="lineCov"> 1661331 : if (handle->f == -1) {</span>
|
||||
<span class="lineNum"> 180 </span> : /* invalidate for error */
|
||||
<span class="lineNum"> 181 </span><span class="lineCov"> 78777 : handle->file = 0;</span>
|
||||
<span class="lineNum"> 182 </span><span class="lineCov"> 78777 : handle->f = -1;</span>
|
||||
<span class="lineNum"> 183 </span><span class="lineCov"> 78777 : handle->valid_size = 0;</span>
|
||||
<span class="lineNum"> 181 </span><span class="lineCov"> 78781 : handle->file = 0;</span>
|
||||
<span class="lineNum"> 182 </span><span class="lineCov"> 78781 : handle->f = -1;</span>
|
||||
<span class="lineNum"> 183 </span><span class="lineCov"> 78781 : handle->valid_size = 0;</span>
|
||||
<span class="lineNum"> 184 </span> :
|
||||
<span class="lineNum"> 185 </span><span class="lineCov"> 78777 : if (errno == ENOENT)</span>
|
||||
<span class="lineNum"> 186 </span><span class="lineCov"> 78765 : out_missing("Missing file '%s'.\n", handle->path);</span>
|
||||
<span class="lineNum"> 185 </span><span class="lineCov"> 78781 : if (errno == ENOENT)</span>
|
||||
<span class="lineNum"> 186 </span><span class="lineCov"> 78769 : out_missing("Missing file '%s'.\n", handle->path);</span>
|
||||
<span class="lineNum"> 187 </span> : else
|
||||
<span class="lineNum"> 188 </span><span class="lineCov"> 12 : out("Error opening file '%s'. %s.\n", handle->path, strerror(errno));</span>
|
||||
<span class="lineNum"> 189 </span><span class="lineCov"> 78777 : return -1;</span>
|
||||
<span class="lineNum"> 189 </span><span class="lineCov"> 78781 : return -1;</span>
|
||||
<span class="lineNum"> 190 </span> : }
|
||||
<span class="lineNum"> 191 </span> :
|
||||
<span class="lineNum"> 192 </span> : /* just opened */
|
||||
<span class="lineNum"> 193 </span><span class="lineCov"> 1561421 : handle->file = file;</span>
|
||||
<span class="lineNum"> 193 </span><span class="lineCov"> 1582550 : handle->file = file;</span>
|
||||
<span class="lineNum"> 194 </span> :
|
||||
<span class="lineNum"> 195 </span> : /* get the stat info */
|
||||
<span class="lineNum"> 196 </span><span class="lineCov"> 1561421 : ret = fstat(handle->f, &handle->st);</span>
|
||||
<span class="lineNum"> 197 </span><span class="lineCov"> 1561421 : if (ret != 0) {</span>
|
||||
<span class="lineNum"> 196 </span><span class="lineCov"> 1582550 : ret = fstat(handle->f, &handle->st);</span>
|
||||
<span class="lineNum"> 197 </span><span class="lineCov"> 1582550 : if (ret != 0) {</span>
|
||||
<span class="lineNum"> 198 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 199 </span> : out("Error accessing file '%s'. %s.\n", handle->path, strerror(errno));
|
||||
<span class="lineNum"> 200 </span> : return -1;
|
||||
|
|
@ -264,13 +264,13 @@
|
|||
<span class="lineNum"> 202 </span> : }
|
||||
<span class="lineNum"> 203 </span> :
|
||||
<span class="lineNum"> 204 </span> : /* get the size of the existing data */
|
||||
<span class="lineNum"> 205 </span><span class="lineCov"> 1561421 : handle->valid_size = handle->st.st_size;</span>
|
||||
<span class="lineNum"> 205 </span><span class="lineCov"> 1582550 : handle->valid_size = handle->st.st_size;</span>
|
||||
<span class="lineNum"> 206 </span> :
|
||||
<span class="lineNum"> 207 </span> : #if HAVE_POSIX_FADVISE
|
||||
<span class="lineNum"> 208 </span><span class="lineCov"> 1561421 : if ((mode & MODE_SEQUENTIAL) != 0) {</span>
|
||||
<span class="lineNum"> 208 </span><span class="lineCov"> 1582550 : if ((mode & MODE_SEQUENTIAL) != 0) {</span>
|
||||
<span class="lineNum"> 209 </span> : /* advise sequential access */
|
||||
<span class="lineNum"> 210 </span><span class="lineCov"> 1550093 : ret = posix_fadvise(handle->f, 0, 0, POSIX_FADV_SEQUENTIAL);</span>
|
||||
<span class="lineNum"> 211 </span><span class="lineCov"> 1550093 : if (ret != 0) {</span>
|
||||
<span class="lineNum"> 210 </span><span class="lineCov"> 1571215 : ret = posix_fadvise(handle->f, 0, 0, POSIX_FADV_SEQUENTIAL);</span>
|
||||
<span class="lineNum"> 211 </span><span class="lineCov"> 1571215 : if (ret != 0) {</span>
|
||||
<span class="lineNum"> 212 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 213 </span> : out("Error advising file '%s'. %s.\n", handle->path, strerror(ret));
|
||||
<span class="lineNum"> 214 </span> : return -1;
|
||||
|
|
@ -279,17 +279,17 @@
|
|||
<span class="lineNum"> 217 </span> : }
|
||||
<span class="lineNum"> 218 </span> : #endif
|
||||
<span class="lineNum"> 219 </span> :
|
||||
<span class="lineNum"> 220 </span><span class="lineCov"> 1561421 : return 0;</span>
|
||||
<span class="lineNum"> 220 </span><span class="lineCov"> 1582550 : return 0;</span>
|
||||
<a name="221"><span class="lineNum"> 221 </span> : }</a>
|
||||
<span class="lineNum"> 222 </span> :
|
||||
<span class="lineNum"> 223 </span><span class="lineCov"> 4568631 : int handle_close(struct snapraid_handle* handle)</span>
|
||||
<span class="lineNum"> 223 </span><span class="lineCov"> 4590919 : int handle_close(struct snapraid_handle* handle)</span>
|
||||
<span class="lineNum"> 224 </span> : {
|
||||
<span class="lineNum"> 225 </span> : int ret;
|
||||
<span class="lineNum"> 226 </span> :
|
||||
<span class="lineNum"> 227 </span> : /* close if open */
|
||||
<span class="lineNum"> 228 </span><span class="lineCov"> 4568631 : if (handle->f != -1) {</span>
|
||||
<span class="lineNum"> 229 </span><span class="lineCov"> 2332631 : ret = close(handle->f);</span>
|
||||
<span class="lineNum"> 230 </span><span class="lineCov"> 2332631 : if (ret != 0) {</span>
|
||||
<span class="lineNum"> 228 </span><span class="lineCov"> 4590919 : if (handle->f != -1) {</span>
|
||||
<span class="lineNum"> 229 </span><span class="lineCov"> 2353840 : ret = close(handle->f);</span>
|
||||
<span class="lineNum"> 230 </span><span class="lineCov"> 2353840 : if (ret != 0) {</span>
|
||||
<span class="lineNum"> 231 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 232 </span> : log_fatal("Error closing file '%s'. %s.\n", handle->file->sub, strerror(errno));
|
||||
<span class="lineNum"> 233 </span> :
|
||||
|
|
@ -303,36 +303,36 @@
|
|||
<span class="lineNum"> 241 </span> : }
|
||||
<span class="lineNum"> 242 </span> :
|
||||
<span class="lineNum"> 243 </span> : /* reset the descriptor */
|
||||
<span class="lineNum"> 244 </span><span class="lineCov"> 4568631 : handle->file = 0;</span>
|
||||
<span class="lineNum"> 245 </span><span class="lineCov"> 4568631 : handle->f = -1;</span>
|
||||
<span class="lineNum"> 246 </span><span class="lineCov"> 4568631 : handle->valid_size = 0;</span>
|
||||
<span class="lineNum"> 244 </span><span class="lineCov"> 4590919 : handle->file = 0;</span>
|
||||
<span class="lineNum"> 245 </span><span class="lineCov"> 4590919 : handle->f = -1;</span>
|
||||
<span class="lineNum"> 246 </span><span class="lineCov"> 4590919 : handle->valid_size = 0;</span>
|
||||
<span class="lineNum"> 247 </span> :
|
||||
<span class="lineNum"> 248 </span><span class="lineCov"> 4568631 : return 0;</span>
|
||||
<span class="lineNum"> 248 </span><span class="lineCov"> 4590919 : return 0;</span>
|
||||
<a name="249"><span class="lineNum"> 249 </span> : }</a>
|
||||
<span class="lineNum"> 250 </span> :
|
||||
<span class="lineNum"> 251 </span><span class="lineCov"> 5656394 : int handle_read(struct snapraid_handle* handle, block_off_t file_pos, unsigned char* block_buffer, unsigned block_size, fptr* out, fptr* out_missing)</span>
|
||||
<span class="lineNum"> 251 </span><span class="lineCov"> 5713632 : int handle_read(struct snapraid_handle* handle, block_off_t file_pos, unsigned char* block_buffer, unsigned block_size, fptr* out, fptr* out_missing)</span>
|
||||
<span class="lineNum"> 252 </span> : {
|
||||
<span class="lineNum"> 253 </span> : ssize_t read_ret;
|
||||
<span class="lineNum"> 254 </span> : data_off_t offset;
|
||||
<span class="lineNum"> 255 </span> : unsigned read_size;
|
||||
<span class="lineNum"> 256 </span> : unsigned count;
|
||||
<span class="lineNum"> 257 </span> :
|
||||
<span class="lineNum"> 258 </span><span class="lineCov"> 5656394 : offset = file_pos * (data_off_t)block_size;</span>
|
||||
<span class="lineNum"> 258 </span><span class="lineCov"> 5713632 : offset = file_pos * (data_off_t)block_size;</span>
|
||||
<span class="lineNum"> 259 </span> :
|
||||
<span class="lineNum"> 260 </span><span class="lineCov"> 5656394 : if (!out_missing)</span>
|
||||
<span class="lineNum"> 261 </span><span class="lineCov"> 5642993 : out_missing = out;</span>
|
||||
<span class="lineNum"> 260 </span><span class="lineCov"> 5713632 : if (!out_missing)</span>
|
||||
<span class="lineNum"> 261 </span><span class="lineCov"> 5700398 : out_missing = out;</span>
|
||||
<span class="lineNum"> 262 </span> :
|
||||
<span class="lineNum"> 263 </span> : /* check if we are going to read only not initialized data */
|
||||
<span class="lineNum"> 264 </span><span class="lineCov"> 5656394 : if (offset >= handle->valid_size) {</span>
|
||||
<span class="lineNum"> 264 </span><span class="lineCov"> 5713632 : if (offset >= handle->valid_size) {</span>
|
||||
<span class="lineNum"> 265 </span> : /* if the file is missing, it's at 0 size, or it's rebuilt while reading */
|
||||
<span class="lineNum"> 266 </span><span class="lineCov"> 433131 : if (offset == handle->valid_size || handle->valid_size == 0)</span>
|
||||
<span class="lineNum"> 267 </span><span class="lineCov"> 431906 : out_missing("Reading data from missing file '%s' at offset %" PRIu64 ".\n", handle->path, offset);</span>
|
||||
<span class="lineNum"> 266 </span><span class="lineCov"> 433671 : if (offset == handle->valid_size || handle->valid_size == 0)</span>
|
||||
<span class="lineNum"> 267 </span><span class="lineCov"> 432378 : out_missing("Reading data from missing file '%s' at offset %" PRIu64 ".\n", handle->path, offset);</span>
|
||||
<span class="lineNum"> 268 </span> : else
|
||||
<span class="lineNum"> 269 </span><span class="lineCov"> 1225 : out("Reading missing data from file '%s' at offset %" PRIu64 ".\n", handle->path, offset);</span>
|
||||
<span class="lineNum"> 270 </span><span class="lineCov"> 433131 : return -1;</span>
|
||||
<span class="lineNum"> 269 </span><span class="lineCov"> 1293 : out("Reading missing data from file '%s' at offset %" PRIu64 ".\n", handle->path, offset);</span>
|
||||
<span class="lineNum"> 270 </span><span class="lineCov"> 433671 : return -1;</span>
|
||||
<span class="lineNum"> 271 </span> : }
|
||||
<span class="lineNum"> 272 </span> :
|
||||
<span class="lineNum"> 273 </span><span class="lineCov"> 5223263 : read_size = file_block_size(handle->file, file_pos, block_size);</span>
|
||||
<span class="lineNum"> 273 </span><span class="lineCov"> 5279961 : read_size = file_block_size(handle->file, file_pos, block_size);</span>
|
||||
<span class="lineNum"> 274 </span> :
|
||||
<span class="lineNum"> 275 </span> : #if !HAVE_PREAD
|
||||
<span class="lineNum"> 276 </span> : if (lseek(handle->f, offset, SEEK_SET) != offset) {
|
||||
|
|
@ -343,32 +343,32 @@
|
|||
<span class="lineNum"> 281 </span> : }
|
||||
<span class="lineNum"> 282 </span> : #endif
|
||||
<span class="lineNum"> 283 </span> :
|
||||
<span class="lineNum"> 284 </span><span class="lineCov"> 5223263 : count = 0;</span>
|
||||
<span class="lineNum"> 284 </span><span class="lineCov"> 5279961 : count = 0;</span>
|
||||
<span class="lineNum"> 285 </span> : do {
|
||||
<span class="lineNum"> 286 </span> :
|
||||
<span class="lineNum"> 287 </span> : #if HAVE_PREAD
|
||||
<span class="lineNum"> 288 </span><span class="lineCov"> 5232157 : read_ret = pread(handle->f, block_buffer + count, read_size - count, offset + count);</span>
|
||||
<span class="lineNum"> 288 </span><span class="lineCov"> 5288816 : read_ret = pread(handle->f, block_buffer + count, read_size - count, offset + count);</span>
|
||||
<span class="lineNum"> 289 </span> : #else
|
||||
<span class="lineNum"> 290 </span> : read_ret = read(handle->f, block_buffer + count, read_size - count);
|
||||
<span class="lineNum"> 291 </span> : #endif
|
||||
<span class="lineNum"> 292 </span> :
|
||||
<span class="lineNum"> 293 </span><span class="lineCov"> 5232157 : if (read_ret < 0) {</span>
|
||||
<span class="lineNum"> 293 </span><span class="lineCov"> 5288816 : if (read_ret < 0) {</span>
|
||||
<span class="lineNum"> 294 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 295 </span> : out("Error reading file '%s' at offset %" PRIu64 " for size %u. %s.\n", handle->path, offset + count, read_size - count, strerror(errno));
|
||||
<span class="lineNum"> 296 </span> : return -1;
|
||||
<span class="lineNum"> 297 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 298 </span> : }
|
||||
<span class="lineNum"> 299 </span><span class="lineCov"> 5232157 : if (read_ret == 0) {</span>
|
||||
<span class="lineNum"> 300 </span><span class="lineCov"> 8894 : out("Unexpected end of file '%s' at offset %" PRIu64 ". %s.\n", handle->path, offset, strerror(errno));</span>
|
||||
<span class="lineNum"> 301 </span><span class="lineCov"> 8894 : return -1;</span>
|
||||
<span class="lineNum"> 299 </span><span class="lineCov"> 5288816 : if (read_ret == 0) {</span>
|
||||
<span class="lineNum"> 300 </span><span class="lineCov"> 8855 : out("Unexpected end of file '%s' at offset %" PRIu64 ". %s.\n", handle->path, offset, strerror(errno));</span>
|
||||
<span class="lineNum"> 301 </span><span class="lineCov"> 8855 : return -1;</span>
|
||||
<span class="lineNum"> 302 </span> : }
|
||||
<span class="lineNum"> 303 </span> :
|
||||
<span class="lineNum"> 304 </span><span class="lineCov"> 5223263 : count += read_ret;</span>
|
||||
<span class="lineNum"> 305 </span><span class="lineCov"> 5223263 : } while (count < read_size);</span>
|
||||
<span class="lineNum"> 304 </span><span class="lineCov"> 5279961 : count += read_ret;</span>
|
||||
<span class="lineNum"> 305 </span><span class="lineCov"> 5279961 : } while (count < read_size);</span>
|
||||
<span class="lineNum"> 306 </span> :
|
||||
<span class="lineNum"> 307 </span> : /* pad with 0 */
|
||||
<span class="lineNum"> 308 </span><span class="lineCov"> 5214369 : if (read_size < block_size) {</span>
|
||||
<span class="lineNum"> 309 </span><span class="lineCov"> 2112031 : memset(block_buffer + read_size, 0, block_size - read_size);</span>
|
||||
<span class="lineNum"> 308 </span><span class="lineCov"> 5271106 : if (read_size < block_size) {</span>
|
||||
<span class="lineNum"> 309 </span><span class="lineCov"> 2132322 : memset(block_buffer + read_size, 0, block_size - read_size);</span>
|
||||
<span class="lineNum"> 310 </span> : }
|
||||
<span class="lineNum"> 311 </span> :
|
||||
<span class="lineNum"> 312 </span> : /* Here isn't needed to call posix_fadvise(..., POSIX_FADV_DONTNEED) */
|
||||
|
|
@ -382,21 +382,21 @@
|
|||
<span class="lineNum"> 320 </span> : /* at: https://lkml.org/lkml/2010/12/6/122 */
|
||||
<span class="lineNum"> 321 </span> : /* We relay only on the automatic readahead triggered by POSIX_FADV_SEQUENTIAL. */
|
||||
<span class="lineNum"> 322 </span> :
|
||||
<span class="lineNum"> 323 </span><span class="lineCov"> 5214369 : return read_size;</span>
|
||||
<span class="lineNum"> 323 </span><span class="lineCov"> 5271106 : return read_size;</span>
|
||||
<a name="324"><span class="lineNum"> 324 </span> : }</a>
|
||||
<span class="lineNum"> 325 </span> :
|
||||
<span class="lineNum"> 326 </span><span class="lineCov"> 288205 : int handle_write(struct snapraid_handle* handle, block_off_t file_pos, unsigned char* block_buffer, unsigned block_size)</span>
|
||||
<span class="lineNum"> 326 </span><span class="lineCov"> 288532 : int handle_write(struct snapraid_handle* handle, block_off_t file_pos, unsigned char* block_buffer, unsigned block_size)</span>
|
||||
<span class="lineNum"> 327 </span> : {
|
||||
<span class="lineNum"> 328 </span> : ssize_t write_ret;
|
||||
<span class="lineNum"> 329 </span> : data_off_t offset;
|
||||
<span class="lineNum"> 330 </span> : unsigned write_size;
|
||||
<span class="lineNum"> 331 </span> :
|
||||
<span class="lineNum"> 332 </span><span class="lineCov"> 288205 : offset = file_pos * (data_off_t)block_size;</span>
|
||||
<span class="lineNum"> 332 </span><span class="lineCov"> 288532 : offset = file_pos * (data_off_t)block_size;</span>
|
||||
<span class="lineNum"> 333 </span> :
|
||||
<span class="lineNum"> 334 </span><span class="lineCov"> 288205 : write_size = file_block_size(handle->file, file_pos, block_size);</span>
|
||||
<span class="lineNum"> 334 </span><span class="lineCov"> 288532 : write_size = file_block_size(handle->file, file_pos, block_size);</span>
|
||||
<span class="lineNum"> 335 </span> :
|
||||
<span class="lineNum"> 336 </span> : #if HAVE_PWRITE
|
||||
<span class="lineNum"> 337 </span><span class="lineCov"> 288205 : write_ret = pwrite(handle->f, block_buffer, write_size, offset);</span>
|
||||
<span class="lineNum"> 337 </span><span class="lineCov"> 288532 : write_ret = pwrite(handle->f, block_buffer, write_size, offset);</span>
|
||||
<span class="lineNum"> 338 </span> : #else
|
||||
<span class="lineNum"> 339 </span> : if (lseek(handle->f, offset, SEEK_SET) != offset) {
|
||||
<span class="lineNum"> 340 </span> : /* LCOV_EXCL_START */
|
||||
|
|
@ -407,7 +407,7 @@
|
|||
<span class="lineNum"> 345 </span> :
|
||||
<span class="lineNum"> 346 </span> : write_ret = write(handle->f, block_buffer, write_size);
|
||||
<span class="lineNum"> 347 </span> : #endif
|
||||
<span class="lineNum"> 348 </span><span class="lineCov"> 288205 : if (write_ret != (ssize_t)write_size) { /* conversion is safe because block_size is always small */</span>
|
||||
<span class="lineNum"> 348 </span><span class="lineCov"> 288532 : if (write_ret != (ssize_t)write_size) { /* conversion is safe because block_size is always small */</span>
|
||||
<span class="lineNum"> 349 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 350 </span> : log_fatal("Error writing file '%s'. %s.\n", handle->path, strerror(errno));
|
||||
<span class="lineNum"> 351 </span> : return -1;
|
||||
|
|
@ -415,88 +415,89 @@
|
|||
<span class="lineNum"> 353 </span> : }
|
||||
<span class="lineNum"> 354 </span> :
|
||||
<span class="lineNum"> 355 </span> : /* adjust the size of the valid data */
|
||||
<span class="lineNum"> 356 </span><span class="lineCov"> 288205 : if (handle->valid_size < offset + write_size) {</span>
|
||||
<span class="lineNum"> 357 </span><span class="lineCov"> 282174 : handle->valid_size = offset + write_size;</span>
|
||||
<span class="lineNum"> 356 </span><span class="lineCov"> 288532 : if (handle->valid_size < offset + write_size) {</span>
|
||||
<span class="lineNum"> 357 </span><span class="lineCov"> 282422 : handle->valid_size = offset + write_size;</span>
|
||||
<span class="lineNum"> 358 </span> : }
|
||||
<span class="lineNum"> 359 </span> :
|
||||
<span class="lineNum"> 360 </span> : /* Here doesn't make sense to call posix_fadvise(..., POSIX_FADV_DONTNEED) because */
|
||||
<span class="lineNum"> 361 </span> : /* at this time the data is still not yet written and it cannot be discharged. */
|
||||
<span class="lineNum"> 362 </span> :
|
||||
<span class="lineNum"> 363 </span><span class="lineCov"> 288205 : return 0;</span>
|
||||
<span class="lineNum"> 363 </span><span class="lineCov"> 288532 : return 0;</span>
|
||||
<a name="364"><span class="lineNum"> 364 </span> : }</a>
|
||||
<span class="lineNum"> 365 </span> :
|
||||
<span class="lineNum"> 366 </span><span class="lineCov"> 117763 : int handle_utime(struct snapraid_handle* handle)</span>
|
||||
<span class="lineNum"> 366 </span><span class="lineCov"> 119455 : int handle_utime(struct snapraid_handle* handle)</span>
|
||||
<span class="lineNum"> 367 </span> : {
|
||||
<span class="lineNum"> 368 </span> : int ret;
|
||||
<span class="lineNum"> 369 </span> :
|
||||
<span class="lineNum"> 370 </span> : /* do nothing if not opened */
|
||||
<span class="lineNum"> 371 </span><span class="lineCov"> 117763 : if (handle->f == -1)</span>
|
||||
<span class="lineNum"> 371 </span><span class="lineCov"> 119455 : if (handle->f == -1)</span>
|
||||
<span class="lineNum"> 372 </span><span class="lineNoCov"> 0 : return 0;</span>
|
||||
<span class="lineNum"> 373 </span> :
|
||||
<span class="lineNum"> 374 </span><span class="lineCov"> 117763 : ret = fmtime(handle->f, handle->file->mtime_sec, handle->file->mtime_nsec);</span>
|
||||
<span class="lineNum"> 374 </span><span class="lineCov"> 119455 : ret = fmtime(handle->f, handle->file->mtime_sec, handle->file->mtime_nsec);</span>
|
||||
<span class="lineNum"> 375 </span> :
|
||||
<span class="lineNum"> 376 </span><span class="lineCov"> 117763 : if (ret != 0) {</span>
|
||||
<span class="lineNum"> 376 </span><span class="lineCov"> 119455 : if (ret != 0) {</span>
|
||||
<span class="lineNum"> 377 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 378 </span> : log_fatal("Error timing file '%s'. %s.\n", handle->file->sub, strerror(errno));
|
||||
<span class="lineNum"> 379 </span> : return -1;
|
||||
<span class="lineNum"> 380 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 381 </span> : }
|
||||
<span class="lineNum"> 382 </span> :
|
||||
<span class="lineNum"> 383 </span><span class="lineCov"> 117763 : return 0;</span>
|
||||
<span class="lineNum"> 383 </span><span class="lineCov"> 119455 : return 0;</span>
|
||||
<a name="384"><span class="lineNum"> 384 </span> : }</a>
|
||||
<span class="lineNum"> 385 </span> :
|
||||
<span class="lineNum"> 386 </span><span class="lineCov"> 206 : struct snapraid_handle* handle_map(struct snapraid_state* state, unsigned* handlemax)</span>
|
||||
<span class="lineNum"> 386 </span><span class="lineCov"> 214 : struct snapraid_handle* handle_map(struct snapraid_state* state, unsigned* handlemax)</span>
|
||||
<span class="lineNum"> 387 </span> : {
|
||||
<span class="lineNum"> 388 </span> : tommy_node* i;
|
||||
<span class="lineNum"> 389 </span> : unsigned j;
|
||||
<span class="lineNum"> 390 </span><span class="lineCov"> 206 : unsigned size = 0;</span>
|
||||
<span class="lineNum"> 390 </span><span class="lineCov"> 214 : unsigned size = 0;</span>
|
||||
<span class="lineNum"> 391 </span> : struct snapraid_handle* handle;
|
||||
<span class="lineNum"> 392 </span> :
|
||||
<span class="lineNum"> 393 </span> : /* get the size of the mapping */
|
||||
<span class="lineNum"> 394 </span><span class="lineCov"> 206 : size = 0;</span>
|
||||
<span class="lineNum"> 395 </span><span class="lineCov"> 1437 : for (i = state->maplist; i != 0; i = i->next) {</span>
|
||||
<span class="lineNum"> 396 </span><span class="lineCov"> 1231 : struct snapraid_map* map = i->data;</span>
|
||||
<span class="lineNum"> 397 </span><span class="lineCov"> 1231 : if (map->position > size)</span>
|
||||
<span class="lineNum"> 398 </span><span class="lineCov"> 895 : size = map->position;</span>
|
||||
<span class="lineNum"> 394 </span><span class="lineCov"> 214 : size = 0;</span>
|
||||
<span class="lineNum"> 395 </span><span class="lineCov"> 1493 : for (i = state->maplist; i != 0; i = i->next) {</span>
|
||||
<span class="lineNum"> 396 </span><span class="lineCov"> 1279 : struct snapraid_map* map = i->data;</span>
|
||||
<span class="lineNum"> 397 </span><span class="lineCov"> 1279 : if (map->position > size)</span>
|
||||
<span class="lineNum"> 398 </span><span class="lineCov"> 925 : size = map->position;</span>
|
||||
<span class="lineNum"> 399 </span> : }
|
||||
<span class="lineNum"> 400 </span><span class="lineCov"> 206 : ++size; /* size is one more than the max */</span>
|
||||
<span class="lineNum"> 400 </span><span class="lineCov"> 214 : ++size; /* size is one more than the max */</span>
|
||||
<span class="lineNum"> 401 </span> :
|
||||
<span class="lineNum"> 402 </span><span class="lineCov"> 206 : handle = malloc_nofail(size * sizeof(struct snapraid_handle));</span>
|
||||
<span class="lineNum"> 402 </span><span class="lineCov"> 214 : handle = malloc_nofail(size * sizeof(struct snapraid_handle));</span>
|
||||
<span class="lineNum"> 403 </span> :
|
||||
<span class="lineNum"> 404 </span><span class="lineCov"> 1442 : for (j = 0; j < size; ++j) {</span>
|
||||
<span class="lineNum"> 404 </span><span class="lineCov"> 1498 : for (j = 0; j < size; ++j) {</span>
|
||||
<span class="lineNum"> 405 </span> : /* default for empty position */
|
||||
<span class="lineNum"> 406 </span><span class="lineCov"> 1236 : handle[j].disk = 0;</span>
|
||||
<span class="lineNum"> 407 </span><span class="lineCov"> 1236 : handle[j].file = 0;</span>
|
||||
<span class="lineNum"> 408 </span><span class="lineCov"> 1236 : handle[j].f = -1;</span>
|
||||
<span class="lineNum"> 409 </span><span class="lineCov"> 1236 : handle[j].valid_size = 0;</span>
|
||||
<span class="lineNum"> 406 </span><span class="lineCov"> 1284 : handle[j].disk = 0;</span>
|
||||
<span class="lineNum"> 407 </span><span class="lineCov"> 1284 : handle[j].file = 0;</span>
|
||||
<span class="lineNum"> 408 </span><span class="lineCov"> 1284 : handle[j].f = -1;</span>
|
||||
<span class="lineNum"> 409 </span><span class="lineCov"> 1284 : handle[j].valid_size = 0;</span>
|
||||
<span class="lineNum"> 410 </span> : }
|
||||
<span class="lineNum"> 411 </span> :
|
||||
<span class="lineNum"> 412 </span> : /* set the vector */
|
||||
<span class="lineNum"> 413 </span><span class="lineCov"> 1437 : for (i = state->disklist; i != 0; i = i->next) {</span>
|
||||
<span class="lineNum"> 413 </span><span class="lineCov"> 1493 : for (i = state->disklist; i != 0; i = i->next) {</span>
|
||||
<span class="lineNum"> 414 </span> : struct snapraid_map* map;
|
||||
<span class="lineNum"> 415 </span><span class="lineCov"> 1231 : struct snapraid_disk* disk = i->data;</span>
|
||||
<span class="lineNum"> 415 </span><span class="lineCov"> 1279 : struct snapraid_disk* disk = i->data;</span>
|
||||
<span class="lineNum"> 416 </span> : tommy_node* k;
|
||||
<span class="lineNum"> 417 </span> :
|
||||
<span class="lineNum"> 418 </span> : /* search the mapping for this disk */
|
||||
<span class="lineNum"> 419 </span><span class="lineCov"> 4296 : for (k = state->maplist; k != 0; k = k->next) {</span>
|
||||
<span class="lineNum"> 420 </span><span class="lineCov"> 4296 : map = k->data;</span>
|
||||
<span class="lineNum"> 421 </span><span class="lineCov"> 4296 : if (strcmp(disk->name, map->name) == 0)</span>
|
||||
<span class="lineNum"> 422 </span><span class="lineCov"> 1231 : break;</span>
|
||||
<span class="lineNum"> 423 </span> : }
|
||||
<span class="lineNum"> 424 </span><span class="lineCov"> 1231 : if (k == 0) {</span>
|
||||
<span class="lineNum"> 425 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 426 </span> : log_fatal("Internal error for inconsistent disk mapping.\n");
|
||||
<span class="lineNum"> 427 </span> : exit(EXIT_FAILURE);
|
||||
<span class="lineNum"> 428 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 429 </span> : }
|
||||
<span class="lineNum"> 430 </span> :
|
||||
<span class="lineNum"> 431 </span><span class="lineCov"> 1231 : handle[map->position].disk = disk;</span>
|
||||
<span class="lineNum"> 432 </span> : }
|
||||
<span class="lineNum"> 433 </span> :
|
||||
<span class="lineNum"> 434 </span><span class="lineCov"> 206 : *handlemax = size;</span>
|
||||
<span class="lineNum"> 435 </span><span class="lineCov"> 206 : return handle;</span>
|
||||
<span class="lineNum"> 436 </span> : }
|
||||
<span class="lineNum"> 437 </span> :
|
||||
<span class="lineNum"> 419 </span><span class="lineCov"> 1279 : map = 0;</span>
|
||||
<span class="lineNum"> 420 </span><span class="lineCov"> 4464 : for (k = state->maplist; k != 0; k = k->next) {</span>
|
||||
<span class="lineNum"> 421 </span><span class="lineCov"> 4464 : map = k->data;</span>
|
||||
<span class="lineNum"> 422 </span><span class="lineCov"> 4464 : if (strcmp(disk->name, map->name) == 0)</span>
|
||||
<span class="lineNum"> 423 </span><span class="lineCov"> 1279 : break;</span>
|
||||
<span class="lineNum"> 424 </span> : }
|
||||
<span class="lineNum"> 425 </span><span class="lineCov"> 1279 : if (!map) {</span>
|
||||
<span class="lineNum"> 426 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 427 </span> : log_fatal("Internal error for inconsistent disk mapping.\n");
|
||||
<span class="lineNum"> 428 </span> : os_abort();
|
||||
<span class="lineNum"> 429 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 430 </span> : }
|
||||
<span class="lineNum"> 431 </span> :
|
||||
<span class="lineNum"> 432 </span><span class="lineCov"> 1279 : handle[map->position].disk = disk;</span>
|
||||
<span class="lineNum"> 433 </span> : }
|
||||
<span class="lineNum"> 434 </span> :
|
||||
<span class="lineNum"> 435 </span><span class="lineCov"> 214 : *handlemax = size;</span>
|
||||
<span class="lineNum"> 436 </span><span class="lineCov"> 214 : return handle;</span>
|
||||
<span class="lineNum"> 437 </span> : }
|
||||
<span class="lineNum"> 438 </span> :
|
||||
</pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
|
|
|||
|
|
@ -31,18 +31,18 @@
|
|||
<td class="headerValue">lcov.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntry">103</td>
|
||||
<td class="headerCovTableEntry">95</td>
|
||||
<td class="headerCovTableEntry">105</td>
|
||||
<td class="headerCovTableEntryHi">98.1 %</td>
|
||||
<td class="headerCovTableEntryHi">90.5 %</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Date:</td>
|
||||
<td class="headerValue">2015-11-20</td>
|
||||
<td class="headerValue">2016-01-09</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntry">7</td>
|
||||
<td class="headerCovTableEntry">8</td>
|
||||
<td class="headerCovTableEntry">8</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntryMed">87.5 %</td>
|
||||
</tr>
|
||||
<tr><td><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
|
|
@ -61,36 +61,36 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="import.c.gcov.html#47">import_block_hash</a></td>
|
||||
<td class="coverFnHi">652942</td>
|
||||
<td class="coverFnHi">657660</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="import.c.gcov.html#150">state_import_fetch</a></td>
|
||||
<td class="coverFnHi">643998</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="import.c.gcov.html#35">import_block_prevhash_compare</a></td>
|
||||
<td class="coverFnHi">2238</td>
|
||||
<td class="coverFn"><a href="import.c.gcov.html#151">state_import_fetch</a></td>
|
||||
<td class="coverFnHi">653188</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="import.c.gcov.html#27">import_block_hash_compare</a></td>
|
||||
<td class="coverFnHi">2234</td>
|
||||
<td class="coverFnHi">4472</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="import.c.gcov.html#52">import_file</a></td>
|
||||
<td class="coverFn"><a href="import.c.gcov.html#53">import_file</a></td>
|
||||
<td class="coverFnHi">1750</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="import.c.gcov.html#143">import_file_free</a></td>
|
||||
<td class="coverFn"><a href="import.c.gcov.html#144">import_file_free</a></td>
|
||||
<td class="coverFnHi">1750</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="import.c.gcov.html#311">state_import</a></td>
|
||||
<td class="coverFn"><a href="import.c.gcov.html#312">state_import</a></td>
|
||||
<td class="coverFnHi">1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="import.c.gcov.html#230">import_dir</a></td>
|
||||
<td class="coverFn"><a href="import.c.gcov.html#231">import_dir</a></td>
|
||||
<td class="coverFnHi">1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="import.c.gcov.html#35">import_block_prevhash_compare</a></td>
|
||||
<td class="coverFnLo">0</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
</center>
|
||||
|
|
|
|||
|
|
@ -31,18 +31,18 @@
|
|||
<td class="headerValue">lcov.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntry">103</td>
|
||||
<td class="headerCovTableEntry">95</td>
|
||||
<td class="headerCovTableEntry">105</td>
|
||||
<td class="headerCovTableEntryHi">98.1 %</td>
|
||||
<td class="headerCovTableEntryHi">90.5 %</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Date:</td>
|
||||
<td class="headerValue">2015-11-20</td>
|
||||
<td class="headerValue">2016-01-09</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntry">7</td>
|
||||
<td class="headerCovTableEntry">8</td>
|
||||
<td class="headerCovTableEntry">8</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntryMed">87.5 %</td>
|
||||
</tr>
|
||||
<tr><td><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
|
|
@ -61,35 +61,35 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="import.c.gcov.html#47">import_block_hash</a></td>
|
||||
<td class="coverFnHi">652942</td>
|
||||
<td class="coverFnHi">657660</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="import.c.gcov.html#27">import_block_hash_compare</a></td>
|
||||
<td class="coverFnHi">2234</td>
|
||||
<td class="coverFnHi">4472</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="import.c.gcov.html#35">import_block_prevhash_compare</a></td>
|
||||
<td class="coverFnHi">2238</td>
|
||||
<td class="coverFnLo">0</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="import.c.gcov.html#230">import_dir</a></td>
|
||||
<td class="coverFn"><a href="import.c.gcov.html#231">import_dir</a></td>
|
||||
<td class="coverFnHi">1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="import.c.gcov.html#52">import_file</a></td>
|
||||
<td class="coverFn"><a href="import.c.gcov.html#53">import_file</a></td>
|
||||
<td class="coverFnHi">1750</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="import.c.gcov.html#143">import_file_free</a></td>
|
||||
<td class="coverFn"><a href="import.c.gcov.html#144">import_file_free</a></td>
|
||||
<td class="coverFnHi">1750</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="import.c.gcov.html#311">state_import</a></td>
|
||||
<td class="coverFn"><a href="import.c.gcov.html#312">state_import</a></td>
|
||||
<td class="coverFnHi">1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="import.c.gcov.html#150">state_import_fetch</a></td>
|
||||
<td class="coverFnHi">643998</td>
|
||||
<td class="coverFn"><a href="import.c.gcov.html#151">state_import_fetch</a></td>
|
||||
<td class="coverFnHi">653188</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
|
|
|
|||
|
|
@ -31,18 +31,18 @@
|
|||
<td class="headerValue">lcov.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntry">103</td>
|
||||
<td class="headerCovTableEntry">95</td>
|
||||
<td class="headerCovTableEntry">105</td>
|
||||
<td class="headerCovTableEntryHi">98.1 %</td>
|
||||
<td class="headerCovTableEntryHi">90.5 %</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Date:</td>
|
||||
<td class="headerValue">2015-11-20</td>
|
||||
<td class="headerValue">2016-01-09</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntry">7</td>
|
||||
<td class="headerCovTableEntry">8</td>
|
||||
<td class="headerCovTableEntry">8</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntryMed">87.5 %</td>
|
||||
</tr>
|
||||
<tr><td><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
|
|
@ -88,303 +88,304 @@
|
|||
<span class="lineNum"> 26 </span> : /**
|
||||
<a name="27"><span class="lineNum"> 27 </span> : * Compare the hash of two import blocks.</a>
|
||||
<span class="lineNum"> 28 </span> : */
|
||||
<span class="lineNum"> 29 </span><span class="lineCov"> 2234 : int import_block_hash_compare(const void* void_arg, const void* void_data)</span>
|
||||
<span class="lineNum"> 29 </span><span class="lineCov"> 4472 : int import_block_hash_compare(const void* void_arg, const void* void_data)</span>
|
||||
<span class="lineNum"> 30 </span> : {
|
||||
<span class="lineNum"> 31 </span><span class="lineCov"> 2234 : const unsigned char* arg = void_arg;</span>
|
||||
<span class="lineNum"> 32 </span><span class="lineCov"> 2234 : const struct snapraid_import_block* block = void_data;</span>
|
||||
<span class="lineNum"> 31 </span><span class="lineCov"> 4472 : const unsigned char* arg = void_arg;</span>
|
||||
<span class="lineNum"> 32 </span><span class="lineCov"> 4472 : const struct snapraid_import_block* block = void_data;</span>
|
||||
<span class="lineNum"> 33 </span> :
|
||||
<span class="lineNum"> 34 </span><span class="lineCov"> 2234 : return memcmp(arg, block->hash, HASH_SIZE);</span>
|
||||
<span class="lineNum"> 34 </span><span class="lineCov"> 4472 : return memcmp(arg, block->hash, HASH_SIZE);</span>
|
||||
<a name="35"><span class="lineNum"> 35 </span> : }</a>
|
||||
<span class="lineNum"> 36 </span> :
|
||||
<span class="lineNum"> 37 </span><span class="lineCov"> 2238 : int import_block_prevhash_compare(const void* void_arg, const void* void_data)</span>
|
||||
<span class="lineNum"> 37 </span><span class="lineNoCov"> 0 : int import_block_prevhash_compare(const void* void_arg, const void* void_data)</span>
|
||||
<span class="lineNum"> 38 </span> : {
|
||||
<span class="lineNum"> 39 </span><span class="lineCov"> 2238 : const unsigned char* arg = void_arg;</span>
|
||||
<span class="lineNum"> 40 </span><span class="lineCov"> 2238 : const struct snapraid_import_block* block = void_data;</span>
|
||||
<span class="lineNum"> 39 </span><span class="lineNoCov"> 0 : const unsigned char* arg = void_arg;</span>
|
||||
<span class="lineNum"> 40 </span><span class="lineNoCov"> 0 : const struct snapraid_import_block* block = void_data;</span>
|
||||
<span class="lineNum"> 41 </span> :
|
||||
<span class="lineNum"> 42 </span><span class="lineCov"> 2238 : return memcmp(arg, block->prevhash, HASH_SIZE);</span>
|
||||
<span class="lineNum"> 42 </span><span class="lineNoCov"> 0 : return memcmp(arg, block->prevhash, HASH_SIZE);</span>
|
||||
<span class="lineNum"> 43 </span> : }
|
||||
<span class="lineNum"> 44 </span> :
|
||||
<span class="lineNum"> 45 </span> : /**
|
||||
<span class="lineNum"> 46 </span> : * Compute the hash of the hash for an import block.
|
||||
<a name="47"><span class="lineNum"> 47 </span> : * We just use the first 32 bit of the hash itself.</a>
|
||||
<span class="lineNum"> 48 </span> : */
|
||||
<span class="lineNum"> 49 </span><span class="lineCov"> 652942 : static inline tommy_uint32_t import_block_hash(const unsigned char* hash)</span>
|
||||
<span class="lineNum"> 49 </span><span class="lineCov"> 657660 : static inline tommy_uint32_t import_block_hash(const unsigned char* hash)</span>
|
||||
<span class="lineNum"> 50 </span> : {
|
||||
<span class="lineNum"> 51 </span><span class="lineCov"> 652942 : return *(const tommy_uint32_t*)hash;</span>
|
||||
<a name="52"><span class="lineNum"> 52 </span> : }</a>
|
||||
<span class="lineNum"> 53 </span> :
|
||||
<span class="lineNum"> 54 </span><span class="lineCov"> 1750 : static void import_file(struct snapraid_state* state, const char* path, uint64_t size)</span>
|
||||
<span class="lineNum"> 55 </span> : {
|
||||
<span class="lineNum"> 56 </span> : struct snapraid_import_file* file;
|
||||
<span class="lineNum"> 57 </span> : block_off_t i;
|
||||
<span class="lineNum"> 58 </span> : data_off_t offset;
|
||||
<span class="lineNum"> 59 </span> : void* buffer;
|
||||
<span class="lineNum"> 60 </span> : int ret;
|
||||
<span class="lineNum"> 61 </span> : int f;
|
||||
<span class="lineNum"> 62 </span> : int flags;
|
||||
<span class="lineNum"> 63 </span><span class="lineCov"> 1750 : unsigned block_size = state->block_size;</span>
|
||||
<span class="lineNum"> 64 </span> :
|
||||
<span class="lineNum"> 65 </span><span class="lineCov"> 1750 : file = malloc_nofail(sizeof(struct snapraid_import_file));</span>
|
||||
<span class="lineNum"> 66 </span><span class="lineCov"> 1750 : file->path = strdup_nofail(path);</span>
|
||||
<span class="lineNum"> 67 </span><span class="lineCov"> 1750 : file->size = size;</span>
|
||||
<span class="lineNum"> 68 </span><span class="lineCov"> 1750 : file->blockmax = (size + block_size - 1) / block_size;</span>
|
||||
<span class="lineNum"> 69 </span><span class="lineCov"> 1750 : file->blockimp = malloc_nofail(file->blockmax * sizeof(struct snapraid_import_block));</span>
|
||||
<span class="lineNum"> 70 </span> :
|
||||
<span class="lineNum"> 71 </span><span class="lineCov"> 1750 : buffer = malloc_nofail(block_size);</span>
|
||||
<span class="lineNum"> 72 </span> :
|
||||
<span class="lineNum"> 73 </span> : /* open for read */
|
||||
<span class="lineNum"> 74 </span> : /* O_SEQUENTIAL: opening in sequential mode in Windows */
|
||||
<span class="lineNum"> 75 </span><span class="lineCov"> 1750 : flags = O_RDONLY | O_BINARY;</span>
|
||||
<span class="lineNum"> 76 </span><span class="lineCov"> 1750 : if ((state->file_mode & MODE_SEQUENTIAL) != 0)</span>
|
||||
<span class="lineNum"> 77 </span><span class="lineCov"> 1750 : flags |= O_SEQUENTIAL;</span>
|
||||
<span class="lineNum"> 78 </span><span class="lineCov"> 1750 : f = open(path, flags);</span>
|
||||
<span class="lineNum"> 79 </span><span class="lineCov"> 1750 : if (f == -1) {</span>
|
||||
<span class="lineNum"> 80 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 81 </span> : log_fatal("Error opening file '%s'. %s.\n", path, strerror(errno));
|
||||
<span class="lineNum"> 82 </span> : exit(EXIT_FAILURE);
|
||||
<span class="lineNum"> 83 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 84 </span> : }
|
||||
<span class="lineNum"> 85 </span> :
|
||||
<span class="lineNum"> 86 </span> : #if HAVE_POSIX_FADVISE
|
||||
<span class="lineNum"> 87 </span><span class="lineCov"> 1750 : if ((state->file_mode & MODE_SEQUENTIAL) != 0) {</span>
|
||||
<span class="lineNum"> 88 </span> : /* advise sequential access */
|
||||
<span class="lineNum"> 89 </span><span class="lineCov"> 1750 : ret = posix_fadvise(f, 0, 0, POSIX_FADV_SEQUENTIAL);</span>
|
||||
<span class="lineNum"> 90 </span><span class="lineCov"> 1750 : if (ret != 0) {</span>
|
||||
<span class="lineNum"> 91 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 92 </span> : log_fatal("Error advising file '%s'. %s.\n", path, strerror(ret));
|
||||
<span class="lineNum"> 93 </span> : exit(EXIT_FAILURE);
|
||||
<span class="lineNum"> 94 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 95 </span> : }
|
||||
<span class="lineNum"> 96 </span> : }
|
||||
<span class="lineNum"> 97 </span> : #endif
|
||||
<span class="lineNum"> 98 </span> :
|
||||
<span class="lineNum"> 99 </span><span class="lineCov"> 1750 : offset = 0;</span>
|
||||
<span class="lineNum"> 100 </span><span class="lineCov"> 6222 : for (i = 0; i < file->blockmax; ++i) {</span>
|
||||
<span class="lineNum"> 101 </span><span class="lineCov"> 4472 : struct snapraid_import_block* block = &file->blockimp[i];</span>
|
||||
<span class="lineNum"> 102 </span><span class="lineCov"> 4472 : unsigned read_size = block_size;</span>
|
||||
<span class="lineNum"> 103 </span><span class="lineCov"> 4472 : if (read_size > size)</span>
|
||||
<span class="lineNum"> 104 </span><span class="lineCov"> 1745 : read_size = size;</span>
|
||||
<span class="lineNum"> 105 </span> :
|
||||
<span class="lineNum"> 106 </span><span class="lineCov"> 4472 : ret = read(f, buffer, read_size);</span>
|
||||
<span class="lineNum"> 107 </span><span class="lineCov"> 4472 : if (ret < 0 || (unsigned)ret != read_size) {</span>
|
||||
<span class="lineNum"> 108 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 109 </span> : log_fatal("Error reading file '%s'. %s.\n", path, strerror(errno));
|
||||
<span class="lineNum"> 110 </span> : exit(EXIT_FAILURE);
|
||||
<span class="lineNum"> 111 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 112 </span> : }
|
||||
<span class="lineNum"> 113 </span> :
|
||||
<span class="lineNum"> 114 </span><span class="lineCov"> 4472 : block->file = file;</span>
|
||||
<span class="lineNum"> 115 </span><span class="lineCov"> 4472 : block->offset = offset;</span>
|
||||
<span class="lineNum"> 116 </span><span class="lineCov"> 4472 : block->size = read_size;</span>
|
||||
<span class="lineNum"> 117 </span> :
|
||||
<span class="lineNum"> 118 </span><span class="lineCov"> 4472 : memhash(state->hash, state->hashseed, block->hash, buffer, read_size);</span>
|
||||
<span class="lineNum"> 119 </span><span class="lineCov"> 4472 : tommy_hashdyn_insert(&state->importset, &block->nodeset, block, import_block_hash(block->hash));</span>
|
||||
<span class="lineNum"> 120 </span> :
|
||||
<span class="lineNum"> 121 </span> : /* if we are in a rehash state */
|
||||
<span class="lineNum"> 122 </span><span class="lineCov"> 4472 : if (state->prevhash != HASH_UNDEFINED) {</span>
|
||||
<span class="lineNum"> 123 </span> : /* compute also the previous hash */
|
||||
<span class="lineNum"> 124 </span><span class="lineCov"> 4472 : memhash(state->prevhash, state->prevhashseed, block->prevhash, buffer, read_size);</span>
|
||||
<span class="lineNum"> 125 </span><span class="lineCov"> 4472 : tommy_hashdyn_insert(&state->previmportset, &block->prevnodeset, block, import_block_hash(block->prevhash));</span>
|
||||
<span class="lineNum"> 126 </span> : }
|
||||
<span class="lineNum"> 127 </span> :
|
||||
<span class="lineNum"> 128 </span><span class="lineCov"> 4472 : offset += read_size;</span>
|
||||
<span class="lineNum"> 129 </span><span class="lineCov"> 4472 : size -= read_size;</span>
|
||||
<span class="lineNum"> 130 </span> : }
|
||||
<span class="lineNum"> 131 </span> :
|
||||
<span class="lineNum"> 132 </span><span class="lineCov"> 1750 : ret = close(f);</span>
|
||||
<span class="lineNum"> 133 </span><span class="lineCov"> 1750 : if (ret != 0) {</span>
|
||||
<span class="lineNum"> 134 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 135 </span> : log_fatal("Error closing file '%s'. %s.\n", path, strerror(errno));
|
||||
<span class="lineNum"> 136 </span> : exit(EXIT_FAILURE);
|
||||
<span class="lineNum"> 137 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 138 </span> : }
|
||||
<span class="lineNum"> 139 </span> :
|
||||
<span class="lineNum"> 140 </span><span class="lineCov"> 1750 : tommy_list_insert_tail(&state->importlist, &file->nodelist, file);</span>
|
||||
<span class="lineNum"> 141 </span> :
|
||||
<span class="lineNum"> 142 </span><span class="lineCov"> 1750 : free(buffer);</span>
|
||||
<a name="143"><span class="lineNum"> 143 </span><span class="lineCov"> 1750 : }</span></a>
|
||||
<span class="lineNum"> 144 </span> :
|
||||
<span class="lineNum"> 145 </span><span class="lineCov"> 1750 : void import_file_free(struct snapraid_import_file* file)</span>
|
||||
<span class="lineNum"> 146 </span> : {
|
||||
<span class="lineNum"> 147 </span><span class="lineCov"> 1750 : free(file->path);</span>
|
||||
<span class="lineNum"> 148 </span><span class="lineCov"> 1750 : free(file->blockimp);</span>
|
||||
<span class="lineNum"> 149 </span><span class="lineCov"> 1750 : free(file);</span>
|
||||
<a name="150"><span class="lineNum"> 150 </span><span class="lineCov"> 1750 : }</span></a>
|
||||
<span class="lineNum"> 151 </span> :
|
||||
<span class="lineNum"> 152 </span><span class="lineCov"> 643998 : int state_import_fetch(struct snapraid_state* state, int rehash, struct snapraid_block* missing_block, unsigned char* buffer)</span>
|
||||
<span class="lineNum"> 153 </span> : {
|
||||
<span class="lineNum"> 154 </span> : struct snapraid_import_block* block;
|
||||
<span class="lineNum"> 155 </span> : int ret;
|
||||
<span class="lineNum"> 156 </span> : int f;
|
||||
<span class="lineNum"> 157 </span><span class="lineCov"> 643998 : const unsigned char* hash = missing_block->hash;</span>
|
||||
<span class="lineNum"> 158 </span><span class="lineCov"> 643998 : unsigned block_size = state->block_size;</span>
|
||||
<span class="lineNum"> 159 </span> : unsigned read_size;
|
||||
<span class="lineNum"> 160 </span> : unsigned char buffer_hash[HASH_SIZE];
|
||||
<span class="lineNum"> 161 </span> : const char* path;
|
||||
<span class="lineNum"> 162 </span> :
|
||||
<span class="lineNum"> 163 </span><span class="lineCov"> 643998 : if (rehash) {</span>
|
||||
<span class="lineNum"> 164 </span><span class="lineCov"> 28986 : block = tommy_hashdyn_search(&state->previmportset, import_block_prevhash_compare, hash, import_block_hash(hash));</span>
|
||||
<span class="lineNum"> 165 </span> : } else {
|
||||
<span class="lineNum"> 166 </span><span class="lineCov"> 615012 : block = tommy_hashdyn_search(&state->importset, import_block_hash_compare, hash, import_block_hash(hash));</span>
|
||||
<span class="lineNum"> 167 </span> : }
|
||||
<span class="lineNum"> 168 </span><span class="lineCov"> 643998 : if (!block)</span>
|
||||
<span class="lineNum"> 169 </span><span class="lineCov"> 639526 : return -1;</span>
|
||||
<span class="lineNum"> 170 </span> :
|
||||
<span class="lineNum"> 171 </span><span class="lineCov"> 4472 : path = block->file->path;</span>
|
||||
<span class="lineNum"> 172 </span><span class="lineCov"> 4472 : read_size = block->size;</span>
|
||||
<span class="lineNum"> 173 </span> :
|
||||
<span class="lineNum"> 174 </span><span class="lineCov"> 4472 : f = open(path, O_RDONLY | O_BINARY);</span>
|
||||
<span class="lineNum"> 175 </span><span class="lineCov"> 4472 : if (f == -1) {</span>
|
||||
<span class="lineNum"> 176 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 177 </span> : if (errno == ENOENT) {
|
||||
<span class="lineNum"> 178 </span> : log_fatal("DANGER! file '%s' disappeared.\n", path);
|
||||
<span class="lineNum"> 179 </span> : log_fatal("If you moved it, please rerun the same command.\n");
|
||||
<span class="lineNum"> 180 </span> : } else {
|
||||
<span class="lineNum"> 181 </span> : log_fatal("Error opening file '%s'. %s.\n", path, strerror(errno));
|
||||
<span class="lineNum"> 182 </span> : }
|
||||
<span class="lineNum"> 183 </span> : exit(EXIT_FAILURE);
|
||||
<span class="lineNum"> 184 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 185 </span> : }
|
||||
<span class="lineNum"> 186 </span> :
|
||||
<span class="lineNum"> 187 </span><span class="lineCov"> 4472 : if (lseek(f, block->offset, SEEK_SET) != block->offset) {</span>
|
||||
<span class="lineNum"> 188 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 189 </span> : log_fatal("Error seeking file '%s'. %s.\n", path, strerror(errno));
|
||||
<span class="lineNum"> 190 </span> : exit(EXIT_FAILURE);
|
||||
<span class="lineNum"> 191 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 192 </span> : }
|
||||
<span class="lineNum"> 193 </span> :
|
||||
<span class="lineNum"> 194 </span><span class="lineCov"> 4472 : ret = read(f, buffer, read_size);</span>
|
||||
<span class="lineNum"> 195 </span><span class="lineCov"> 4472 : if (ret < 0 || (unsigned)ret != read_size) {</span>
|
||||
<span class="lineNum"> 196 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 197 </span> : log_fatal("Error reading file '%s'. %s.\n", path, strerror(errno));
|
||||
<span class="lineNum"> 198 </span> : exit(EXIT_FAILURE);
|
||||
<span class="lineNum"> 199 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 200 </span> : }
|
||||
<span class="lineNum"> 201 </span> :
|
||||
<span class="lineNum"> 202 </span><span class="lineCov"> 4472 : ret = close(f);</span>
|
||||
<span class="lineNum"> 203 </span><span class="lineCov"> 4472 : if (ret != 0) {</span>
|
||||
<span class="lineNum"> 204 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 205 </span> : log_fatal("Error closing file '%s'. %s.\n", path, strerror(errno));
|
||||
<span class="lineNum"> 206 </span> : exit(EXIT_FAILURE);
|
||||
<span class="lineNum"> 207 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 208 </span> : }
|
||||
<span class="lineNum"> 209 </span> :
|
||||
<span class="lineNum"> 210 </span><span class="lineCov"> 4472 : if (read_size != block_size) {</span>
|
||||
<span class="lineNum"> 211 </span> : /* fill the remaining with 0 */
|
||||
<span class="lineNum"> 212 </span><span class="lineCov"> 1745 : memset(buffer + read_size, 0, block_size - read_size);</span>
|
||||
<span class="lineNum"> 213 </span> : }
|
||||
<span class="lineNum"> 214 </span> :
|
||||
<span class="lineNum"> 215 </span> : /* recheck the hash */
|
||||
<span class="lineNum"> 216 </span><span class="lineCov"> 4472 : if (rehash)</span>
|
||||
<span class="lineNum"> 217 </span><span class="lineCov"> 2238 : memhash(state->prevhash, state->prevhashseed, buffer_hash, buffer, read_size);</span>
|
||||
<span class="lineNum"> 218 </span> : else
|
||||
<span class="lineNum"> 219 </span><span class="lineCov"> 2234 : memhash(state->hash, state->hashseed, buffer_hash, buffer, read_size);</span>
|
||||
<span class="lineNum"> 220 </span> :
|
||||
<span class="lineNum"> 221 </span><span class="lineCov"> 4472 : if (memcmp(buffer_hash, hash, HASH_SIZE) != 0) {</span>
|
||||
<span class="lineNum"> 222 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 223 </span> : log_fatal("Error in data reading file '%s'.\n", path);
|
||||
<span class="lineNum"> 224 </span> : log_fatal("Please don't change imported files while running.\n");
|
||||
<span class="lineNum"> 225 </span> : exit(EXIT_FAILURE);
|
||||
<span class="lineNum"> 226 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 227 </span> : }
|
||||
<span class="lineNum"> 228 </span> :
|
||||
<span class="lineNum"> 229 </span><span class="lineCov"> 4472 : return 0;</span>
|
||||
<a name="230"><span class="lineNum"> 230 </span> : }</a>
|
||||
<span class="lineNum"> 231 </span> :
|
||||
<span class="lineNum"> 232 </span><span class="lineCov"> 1 : static void import_dir(struct snapraid_state* state, const char* dir)</span>
|
||||
<span class="lineNum"> 233 </span> : {
|
||||
<span class="lineNum"> 234 </span> : DIR* d;
|
||||
<span class="lineNum"> 235 </span> :
|
||||
<span class="lineNum"> 236 </span><span class="lineCov"> 1 : d = opendir(dir);</span>
|
||||
<span class="lineNum"> 237 </span><span class="lineCov"> 1 : if (!d) {</span>
|
||||
<span class="lineNum"> 238 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 239 </span> : log_fatal("Error opening directory '%s'. %s.\n", dir, strerror(errno));
|
||||
<span class="lineNum"> 240 </span> : exit(EXIT_FAILURE);
|
||||
<span class="lineNum"> 241 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 242 </span> : }
|
||||
<span class="lineNum"> 243 </span> :
|
||||
<span class="lineNum"> 244 </span> : while (1) {
|
||||
<span class="lineNum"> 245 </span> : char path_next[PATH_MAX];
|
||||
<span class="lineNum"> 246 </span> : struct stat st;
|
||||
<span class="lineNum"> 247 </span> : const char* name;
|
||||
<span class="lineNum"> 248 </span> : struct dirent* dd;
|
||||
<span class="lineNum"> 249 </span> :
|
||||
<span class="lineNum"> 250 </span> : /* clear errno to detect erroneous conditions */
|
||||
<span class="lineNum"> 251 </span><span class="lineCov"> 1812 : errno = 0;</span>
|
||||
<span class="lineNum"> 252 </span><span class="lineCov"> 1812 : dd = readdir(d);</span>
|
||||
<span class="lineNum"> 253 </span><span class="lineCov"> 1812 : if (dd == 0 && errno != 0) {</span>
|
||||
<span class="lineNum"> 254 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 255 </span> : log_fatal("Error reading directory '%s'. %s.\n", dir, strerror(errno));
|
||||
<span class="lineNum"> 256 </span> : exit(EXIT_FAILURE);
|
||||
<span class="lineNum"> 257 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 258 </span> : }
|
||||
<span class="lineNum"> 259 </span><span class="lineCov"> 1812 : if (dd == 0) {</span>
|
||||
<span class="lineNum"> 260 </span><span class="lineCov"> 1 : break; /* finished */</span>
|
||||
<span class="lineNum"> 261 </span> : }
|
||||
<span class="lineNum"> 262 </span> :
|
||||
<span class="lineNum"> 263 </span> : /* skip "." and ".." files */
|
||||
<span class="lineNum"> 264 </span><span class="lineCov"> 1811 : name = dd->d_name;</span>
|
||||
<span class="lineNum"> 265 </span><span class="lineCov"> 1811 : if (name[0] == '.' && (name[1] == 0 || (name[1] == '.' && name[2] == 0)))</span>
|
||||
<span class="lineNum"> 266 </span><span class="lineCov"> 2 : continue;</span>
|
||||
<span class="lineNum"> 267 </span> :
|
||||
<span class="lineNum"> 268 </span><span class="lineCov"> 1809 : pathprint(path_next, sizeof(path_next), "%s%s", dir, name);</span>
|
||||
<span class="lineNum"> 269 </span> :
|
||||
<span class="lineNum"> 270 </span> : #if HAVE_STRUCT_DIRENT_D_STAT
|
||||
<span class="lineNum"> 271 </span> : /* convert dirent to lstat result */
|
||||
<span class="lineNum"> 272 </span> : dirent_lstat(dd, &st);
|
||||
<span class="lineNum"> 273 </span> :
|
||||
<span class="lineNum"> 274 </span> : /* if the st_mode field is missing, takes care to fill it using normal lstat() */
|
||||
<span class="lineNum"> 275 </span> : /* at now this can happen only in Windows (with HAVE_STRUCT_DIRENT_D_STAT defined), */
|
||||
<span class="lineNum"> 276 </span> : /* because we use a directory reading method that doesn't read info about ReparsePoint. */
|
||||
<span class="lineNum"> 277 </span> : /* Note that here we cannot call here lstat_sync(), because we don't know what kind */
|
||||
<span class="lineNum"> 278 </span> : /* of file is it, and lstat_sync() doesn't always work */
|
||||
<span class="lineNum"> 279 </span> : if (st.st_mode == 0) {
|
||||
<span class="lineNum"> 280 </span> : if (lstat(path_next, &st) != 0) {
|
||||
<span class="lineNum"> 281 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 282 </span> : log_fatal("Error in stat file/directory '%s'. %s.\n", path_next, strerror(errno));
|
||||
<span class="lineNum"> 283 </span> : exit(EXIT_FAILURE);
|
||||
<span class="lineNum"> 284 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 285 </span> : }
|
||||
<span class="lineNum"> 286 </span> : }
|
||||
<span class="lineNum"> 287 </span> : #else
|
||||
<span class="lineNum"> 288 </span> : /* get lstat info about the file */
|
||||
<span class="lineNum"> 289 </span><span class="lineCov"> 1809 : if (lstat(path_next, &st) != 0) {</span>
|
||||
<span class="lineNum"> 290 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 291 </span> : log_fatal("Error in stat file/directory '%s'. %s.\n", path_next, strerror(errno));
|
||||
<span class="lineNum"> 292 </span> : exit(EXIT_FAILURE);
|
||||
<span class="lineNum"> 293 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 294 </span> : }
|
||||
<span class="lineNum"> 295 </span> : #endif
|
||||
<span class="lineNum"> 296 </span> :
|
||||
<span class="lineNum"> 297 </span><span class="lineCov"> 1809 : if (S_ISREG(st.st_mode)) {</span>
|
||||
<span class="lineNum"> 298 </span><span class="lineCov"> 1750 : import_file(state, path_next, st.st_size);</span>
|
||||
<span class="lineNum"> 299 </span><span class="lineCov"> 59 : } else if (S_ISDIR(st.st_mode)) {</span>
|
||||
<span class="lineNum"> 300 </span><span class="lineNoCov"> 0 : pathslash(path_next, sizeof(path_next));</span>
|
||||
<span class="lineNum"> 301 </span><span class="lineNoCov"> 0 : import_dir(state, path_next);</span>
|
||||
<span class="lineNum"> 302 </span> : }
|
||||
<span class="lineNum"> 303 </span><span class="lineCov"> 1811 : }</span>
|
||||
<span class="lineNum"> 304 </span> :
|
||||
<span class="lineNum"> 305 </span><span class="lineCov"> 1 : if (closedir(d) != 0) {</span>
|
||||
<span class="lineNum"> 306 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 307 </span> : log_fatal("Error closing directory '%s'. %s.\n", dir, strerror(errno));
|
||||
<span class="lineNum"> 308 </span> : exit(EXIT_FAILURE);
|
||||
<span class="lineNum"> 309 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 310 </span> : }
|
||||
<a name="311"><span class="lineNum"> 311 </span><span class="lineCov"> 1 : }</span></a>
|
||||
<span class="lineNum"> 312 </span> :
|
||||
<span class="lineNum"> 313 </span><span class="lineCov"> 1 : void state_import(struct snapraid_state* state, const char* dir)</span>
|
||||
<span class="lineNum"> 314 </span> : {
|
||||
<span class="lineNum"> 315 </span> : char path[PATH_MAX];
|
||||
<span class="lineNum"> 316 </span> :
|
||||
<span class="lineNum"> 317 </span><span class="lineCov"> 1 : msg_progress("Importing...\n");</span>
|
||||
<span class="lineNum"> 318 </span> :
|
||||
<span class="lineNum"> 319 </span> : /* add the final slash */
|
||||
<span class="lineNum"> 320 </span><span class="lineCov"> 1 : pathimport(path, sizeof(path), dir);</span>
|
||||
<span class="lineNum"> 321 </span><span class="lineCov"> 1 : pathslash(path, sizeof(path));</span>
|
||||
<span class="lineNum"> 322 </span> :
|
||||
<span class="lineNum"> 323 </span><span class="lineCov"> 1 : import_dir(state, path);</span>
|
||||
<span class="lineNum"> 324 </span><span class="lineCov"> 1 : }</span>
|
||||
<span class="lineNum"> 325 </span> :
|
||||
<span class="lineNum"> 51 </span> : /* the hash data is not aligned, and we cannot access it with a direct cast */
|
||||
<span class="lineNum"> 52 </span><span class="lineCov"> 657660 : return hash[0] | ((uint32_t)hash[1] << 8) | ((uint32_t)hash[2] << 16) | ((uint32_t)hash[3] << 24);</span>
|
||||
<a name="53"><span class="lineNum"> 53 </span> : }</a>
|
||||
<span class="lineNum"> 54 </span> :
|
||||
<span class="lineNum"> 55 </span><span class="lineCov"> 1750 : static void import_file(struct snapraid_state* state, const char* path, uint64_t size)</span>
|
||||
<span class="lineNum"> 56 </span> : {
|
||||
<span class="lineNum"> 57 </span> : struct snapraid_import_file* file;
|
||||
<span class="lineNum"> 58 </span> : block_off_t i;
|
||||
<span class="lineNum"> 59 </span> : data_off_t offset;
|
||||
<span class="lineNum"> 60 </span> : void* buffer;
|
||||
<span class="lineNum"> 61 </span> : int ret;
|
||||
<span class="lineNum"> 62 </span> : int f;
|
||||
<span class="lineNum"> 63 </span> : int flags;
|
||||
<span class="lineNum"> 64 </span><span class="lineCov"> 1750 : unsigned block_size = state->block_size;</span>
|
||||
<span class="lineNum"> 65 </span> :
|
||||
<span class="lineNum"> 66 </span><span class="lineCov"> 1750 : file = malloc_nofail(sizeof(struct snapraid_import_file));</span>
|
||||
<span class="lineNum"> 67 </span><span class="lineCov"> 1750 : file->path = strdup_nofail(path);</span>
|
||||
<span class="lineNum"> 68 </span><span class="lineCov"> 1750 : file->size = size;</span>
|
||||
<span class="lineNum"> 69 </span><span class="lineCov"> 1750 : file->blockmax = (size + block_size - 1) / block_size;</span>
|
||||
<span class="lineNum"> 70 </span><span class="lineCov"> 1750 : file->blockimp = malloc_nofail(file->blockmax * sizeof(struct snapraid_import_block));</span>
|
||||
<span class="lineNum"> 71 </span> :
|
||||
<span class="lineNum"> 72 </span><span class="lineCov"> 1750 : buffer = malloc_nofail(block_size);</span>
|
||||
<span class="lineNum"> 73 </span> :
|
||||
<span class="lineNum"> 74 </span> : /* open for read */
|
||||
<span class="lineNum"> 75 </span> : /* O_SEQUENTIAL: opening in sequential mode in Windows */
|
||||
<span class="lineNum"> 76 </span><span class="lineCov"> 1750 : flags = O_RDONLY | O_BINARY;</span>
|
||||
<span class="lineNum"> 77 </span><span class="lineCov"> 1750 : if ((state->file_mode & MODE_SEQUENTIAL) != 0)</span>
|
||||
<span class="lineNum"> 78 </span><span class="lineCov"> 1750 : flags |= O_SEQUENTIAL;</span>
|
||||
<span class="lineNum"> 79 </span><span class="lineCov"> 1750 : f = open(path, flags);</span>
|
||||
<span class="lineNum"> 80 </span><span class="lineCov"> 1750 : if (f == -1) {</span>
|
||||
<span class="lineNum"> 81 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 82 </span> : log_fatal("Error opening file '%s'. %s.\n", path, strerror(errno));
|
||||
<span class="lineNum"> 83 </span> : exit(EXIT_FAILURE);
|
||||
<span class="lineNum"> 84 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 85 </span> : }
|
||||
<span class="lineNum"> 86 </span> :
|
||||
<span class="lineNum"> 87 </span> : #if HAVE_POSIX_FADVISE
|
||||
<span class="lineNum"> 88 </span><span class="lineCov"> 1750 : if ((state->file_mode & MODE_SEQUENTIAL) != 0) {</span>
|
||||
<span class="lineNum"> 89 </span> : /* advise sequential access */
|
||||
<span class="lineNum"> 90 </span><span class="lineCov"> 1750 : ret = posix_fadvise(f, 0, 0, POSIX_FADV_SEQUENTIAL);</span>
|
||||
<span class="lineNum"> 91 </span><span class="lineCov"> 1750 : if (ret != 0) {</span>
|
||||
<span class="lineNum"> 92 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 93 </span> : log_fatal("Error advising file '%s'. %s.\n", path, strerror(ret));
|
||||
<span class="lineNum"> 94 </span> : exit(EXIT_FAILURE);
|
||||
<span class="lineNum"> 95 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 96 </span> : }
|
||||
<span class="lineNum"> 97 </span> : }
|
||||
<span class="lineNum"> 98 </span> : #endif
|
||||
<span class="lineNum"> 99 </span> :
|
||||
<span class="lineNum"> 100 </span><span class="lineCov"> 1750 : offset = 0;</span>
|
||||
<span class="lineNum"> 101 </span><span class="lineCov"> 6222 : for (i = 0; i < file->blockmax; ++i) {</span>
|
||||
<span class="lineNum"> 102 </span><span class="lineCov"> 4472 : struct snapraid_import_block* block = &file->blockimp[i];</span>
|
||||
<span class="lineNum"> 103 </span><span class="lineCov"> 4472 : unsigned read_size = block_size;</span>
|
||||
<span class="lineNum"> 104 </span><span class="lineCov"> 4472 : if (read_size > size)</span>
|
||||
<span class="lineNum"> 105 </span><span class="lineCov"> 1745 : read_size = size;</span>
|
||||
<span class="lineNum"> 106 </span> :
|
||||
<span class="lineNum"> 107 </span><span class="lineCov"> 4472 : ret = read(f, buffer, read_size);</span>
|
||||
<span class="lineNum"> 108 </span><span class="lineCov"> 4472 : if (ret < 0 || (unsigned)ret != read_size) {</span>
|
||||
<span class="lineNum"> 109 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 110 </span> : log_fatal("Error reading file '%s'. %s.\n", path, strerror(errno));
|
||||
<span class="lineNum"> 111 </span> : exit(EXIT_FAILURE);
|
||||
<span class="lineNum"> 112 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 113 </span> : }
|
||||
<span class="lineNum"> 114 </span> :
|
||||
<span class="lineNum"> 115 </span><span class="lineCov"> 4472 : block->file = file;</span>
|
||||
<span class="lineNum"> 116 </span><span class="lineCov"> 4472 : block->offset = offset;</span>
|
||||
<span class="lineNum"> 117 </span><span class="lineCov"> 4472 : block->size = read_size;</span>
|
||||
<span class="lineNum"> 118 </span> :
|
||||
<span class="lineNum"> 119 </span><span class="lineCov"> 4472 : memhash(state->hash, state->hashseed, block->hash, buffer, read_size);</span>
|
||||
<span class="lineNum"> 120 </span><span class="lineCov"> 4472 : tommy_hashdyn_insert(&state->importset, &block->nodeset, block, import_block_hash(block->hash));</span>
|
||||
<span class="lineNum"> 121 </span> :
|
||||
<span class="lineNum"> 122 </span> : /* if we are in a rehash state */
|
||||
<span class="lineNum"> 123 </span><span class="lineCov"> 4472 : if (state->prevhash != HASH_UNDEFINED) {</span>
|
||||
<span class="lineNum"> 124 </span> : /* compute also the previous hash */
|
||||
<span class="lineNum"> 125 </span><span class="lineNoCov"> 0 : memhash(state->prevhash, state->prevhashseed, block->prevhash, buffer, read_size);</span>
|
||||
<span class="lineNum"> 126 </span><span class="lineNoCov"> 0 : tommy_hashdyn_insert(&state->previmportset, &block->prevnodeset, block, import_block_hash(block->prevhash));</span>
|
||||
<span class="lineNum"> 127 </span> : }
|
||||
<span class="lineNum"> 128 </span> :
|
||||
<span class="lineNum"> 129 </span><span class="lineCov"> 4472 : offset += read_size;</span>
|
||||
<span class="lineNum"> 130 </span><span class="lineCov"> 4472 : size -= read_size;</span>
|
||||
<span class="lineNum"> 131 </span> : }
|
||||
<span class="lineNum"> 132 </span> :
|
||||
<span class="lineNum"> 133 </span><span class="lineCov"> 1750 : ret = close(f);</span>
|
||||
<span class="lineNum"> 134 </span><span class="lineCov"> 1750 : if (ret != 0) {</span>
|
||||
<span class="lineNum"> 135 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 136 </span> : log_fatal("Error closing file '%s'. %s.\n", path, strerror(errno));
|
||||
<span class="lineNum"> 137 </span> : exit(EXIT_FAILURE);
|
||||
<span class="lineNum"> 138 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 139 </span> : }
|
||||
<span class="lineNum"> 140 </span> :
|
||||
<span class="lineNum"> 141 </span><span class="lineCov"> 1750 : tommy_list_insert_tail(&state->importlist, &file->nodelist, file);</span>
|
||||
<span class="lineNum"> 142 </span> :
|
||||
<span class="lineNum"> 143 </span><span class="lineCov"> 1750 : free(buffer);</span>
|
||||
<a name="144"><span class="lineNum"> 144 </span><span class="lineCov"> 1750 : }</span></a>
|
||||
<span class="lineNum"> 145 </span> :
|
||||
<span class="lineNum"> 146 </span><span class="lineCov"> 1750 : void import_file_free(struct snapraid_import_file* file)</span>
|
||||
<span class="lineNum"> 147 </span> : {
|
||||
<span class="lineNum"> 148 </span><span class="lineCov"> 1750 : free(file->path);</span>
|
||||
<span class="lineNum"> 149 </span><span class="lineCov"> 1750 : free(file->blockimp);</span>
|
||||
<span class="lineNum"> 150 </span><span class="lineCov"> 1750 : free(file);</span>
|
||||
<a name="151"><span class="lineNum"> 151 </span><span class="lineCov"> 1750 : }</span></a>
|
||||
<span class="lineNum"> 152 </span> :
|
||||
<span class="lineNum"> 153 </span><span class="lineCov"> 653188 : int state_import_fetch(struct snapraid_state* state, int rehash, struct snapraid_block* missing_block, unsigned char* buffer)</span>
|
||||
<span class="lineNum"> 154 </span> : {
|
||||
<span class="lineNum"> 155 </span> : struct snapraid_import_block* block;
|
||||
<span class="lineNum"> 156 </span> : int ret;
|
||||
<span class="lineNum"> 157 </span> : int f;
|
||||
<span class="lineNum"> 158 </span><span class="lineCov"> 653188 : const unsigned char* hash = missing_block->hash;</span>
|
||||
<span class="lineNum"> 159 </span><span class="lineCov"> 653188 : unsigned block_size = state->block_size;</span>
|
||||
<span class="lineNum"> 160 </span> : unsigned read_size;
|
||||
<span class="lineNum"> 161 </span> : unsigned char buffer_hash[HASH_SIZE];
|
||||
<span class="lineNum"> 162 </span> : const char* path;
|
||||
<span class="lineNum"> 163 </span> :
|
||||
<span class="lineNum"> 164 </span><span class="lineCov"> 653188 : if (rehash) {</span>
|
||||
<span class="lineNum"> 165 </span><span class="lineNoCov"> 0 : block = tommy_hashdyn_search(&state->previmportset, import_block_prevhash_compare, hash, import_block_hash(hash));</span>
|
||||
<span class="lineNum"> 166 </span> : } else {
|
||||
<span class="lineNum"> 167 </span><span class="lineCov"> 653188 : block = tommy_hashdyn_search(&state->importset, import_block_hash_compare, hash, import_block_hash(hash));</span>
|
||||
<span class="lineNum"> 168 </span> : }
|
||||
<span class="lineNum"> 169 </span><span class="lineCov"> 653188 : if (!block)</span>
|
||||
<span class="lineNum"> 170 </span><span class="lineCov"> 648716 : return -1;</span>
|
||||
<span class="lineNum"> 171 </span> :
|
||||
<span class="lineNum"> 172 </span><span class="lineCov"> 4472 : path = block->file->path;</span>
|
||||
<span class="lineNum"> 173 </span><span class="lineCov"> 4472 : read_size = block->size;</span>
|
||||
<span class="lineNum"> 174 </span> :
|
||||
<span class="lineNum"> 175 </span><span class="lineCov"> 4472 : f = open(path, O_RDONLY | O_BINARY);</span>
|
||||
<span class="lineNum"> 176 </span><span class="lineCov"> 4472 : if (f == -1) {</span>
|
||||
<span class="lineNum"> 177 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 178 </span> : if (errno == ENOENT) {
|
||||
<span class="lineNum"> 179 </span> : log_fatal("DANGER! file '%s' disappeared.\n", path);
|
||||
<span class="lineNum"> 180 </span> : log_fatal("If you moved it, please rerun the same command.\n");
|
||||
<span class="lineNum"> 181 </span> : } else {
|
||||
<span class="lineNum"> 182 </span> : log_fatal("Error opening file '%s'. %s.\n", path, strerror(errno));
|
||||
<span class="lineNum"> 183 </span> : }
|
||||
<span class="lineNum"> 184 </span> : exit(EXIT_FAILURE);
|
||||
<span class="lineNum"> 185 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 186 </span> : }
|
||||
<span class="lineNum"> 187 </span> :
|
||||
<span class="lineNum"> 188 </span><span class="lineCov"> 4472 : if (lseek(f, block->offset, SEEK_SET) != block->offset) {</span>
|
||||
<span class="lineNum"> 189 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 190 </span> : log_fatal("Error seeking file '%s'. %s.\n", path, strerror(errno));
|
||||
<span class="lineNum"> 191 </span> : exit(EXIT_FAILURE);
|
||||
<span class="lineNum"> 192 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 193 </span> : }
|
||||
<span class="lineNum"> 194 </span> :
|
||||
<span class="lineNum"> 195 </span><span class="lineCov"> 4472 : ret = read(f, buffer, read_size);</span>
|
||||
<span class="lineNum"> 196 </span><span class="lineCov"> 4472 : if (ret < 0 || (unsigned)ret != read_size) {</span>
|
||||
<span class="lineNum"> 197 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 198 </span> : log_fatal("Error reading file '%s'. %s.\n", path, strerror(errno));
|
||||
<span class="lineNum"> 199 </span> : exit(EXIT_FAILURE);
|
||||
<span class="lineNum"> 200 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 201 </span> : }
|
||||
<span class="lineNum"> 202 </span> :
|
||||
<span class="lineNum"> 203 </span><span class="lineCov"> 4472 : ret = close(f);</span>
|
||||
<span class="lineNum"> 204 </span><span class="lineCov"> 4472 : if (ret != 0) {</span>
|
||||
<span class="lineNum"> 205 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 206 </span> : log_fatal("Error closing file '%s'. %s.\n", path, strerror(errno));
|
||||
<span class="lineNum"> 207 </span> : exit(EXIT_FAILURE);
|
||||
<span class="lineNum"> 208 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 209 </span> : }
|
||||
<span class="lineNum"> 210 </span> :
|
||||
<span class="lineNum"> 211 </span><span class="lineCov"> 4472 : if (read_size != block_size) {</span>
|
||||
<span class="lineNum"> 212 </span> : /* fill the remaining with 0 */
|
||||
<span class="lineNum"> 213 </span><span class="lineCov"> 1745 : memset(buffer + read_size, 0, block_size - read_size);</span>
|
||||
<span class="lineNum"> 214 </span> : }
|
||||
<span class="lineNum"> 215 </span> :
|
||||
<span class="lineNum"> 216 </span> : /* recheck the hash */
|
||||
<span class="lineNum"> 217 </span><span class="lineCov"> 4472 : if (rehash)</span>
|
||||
<span class="lineNum"> 218 </span><span class="lineNoCov"> 0 : memhash(state->prevhash, state->prevhashseed, buffer_hash, buffer, read_size);</span>
|
||||
<span class="lineNum"> 219 </span> : else
|
||||
<span class="lineNum"> 220 </span><span class="lineCov"> 4472 : memhash(state->hash, state->hashseed, buffer_hash, buffer, read_size);</span>
|
||||
<span class="lineNum"> 221 </span> :
|
||||
<span class="lineNum"> 222 </span><span class="lineCov"> 4472 : if (memcmp(buffer_hash, hash, HASH_SIZE) != 0) {</span>
|
||||
<span class="lineNum"> 223 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 224 </span> : log_fatal("Error in data reading file '%s'.\n", path);
|
||||
<span class="lineNum"> 225 </span> : log_fatal("Please don't change imported files while running.\n");
|
||||
<span class="lineNum"> 226 </span> : exit(EXIT_FAILURE);
|
||||
<span class="lineNum"> 227 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 228 </span> : }
|
||||
<span class="lineNum"> 229 </span> :
|
||||
<span class="lineNum"> 230 </span><span class="lineCov"> 4472 : return 0;</span>
|
||||
<a name="231"><span class="lineNum"> 231 </span> : }</a>
|
||||
<span class="lineNum"> 232 </span> :
|
||||
<span class="lineNum"> 233 </span><span class="lineCov"> 1 : static void import_dir(struct snapraid_state* state, const char* dir)</span>
|
||||
<span class="lineNum"> 234 </span> : {
|
||||
<span class="lineNum"> 235 </span> : DIR* d;
|
||||
<span class="lineNum"> 236 </span> :
|
||||
<span class="lineNum"> 237 </span><span class="lineCov"> 1 : d = opendir(dir);</span>
|
||||
<span class="lineNum"> 238 </span><span class="lineCov"> 1 : if (!d) {</span>
|
||||
<span class="lineNum"> 239 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 240 </span> : log_fatal("Error opening directory '%s'. %s.\n", dir, strerror(errno));
|
||||
<span class="lineNum"> 241 </span> : exit(EXIT_FAILURE);
|
||||
<span class="lineNum"> 242 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 243 </span> : }
|
||||
<span class="lineNum"> 244 </span> :
|
||||
<span class="lineNum"> 245 </span> : while (1) {
|
||||
<span class="lineNum"> 246 </span> : char path_next[PATH_MAX];
|
||||
<span class="lineNum"> 247 </span> : struct stat st;
|
||||
<span class="lineNum"> 248 </span> : const char* name;
|
||||
<span class="lineNum"> 249 </span> : struct dirent* dd;
|
||||
<span class="lineNum"> 250 </span> :
|
||||
<span class="lineNum"> 251 </span> : /* clear errno to detect erroneous conditions */
|
||||
<span class="lineNum"> 252 </span><span class="lineCov"> 1812 : errno = 0;</span>
|
||||
<span class="lineNum"> 253 </span><span class="lineCov"> 1812 : dd = readdir(d);</span>
|
||||
<span class="lineNum"> 254 </span><span class="lineCov"> 1812 : if (dd == 0 && errno != 0) {</span>
|
||||
<span class="lineNum"> 255 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 256 </span> : log_fatal("Error reading directory '%s'. %s.\n", dir, strerror(errno));
|
||||
<span class="lineNum"> 257 </span> : exit(EXIT_FAILURE);
|
||||
<span class="lineNum"> 258 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 259 </span> : }
|
||||
<span class="lineNum"> 260 </span><span class="lineCov"> 1812 : if (dd == 0) {</span>
|
||||
<span class="lineNum"> 261 </span><span class="lineCov"> 1 : break; /* finished */</span>
|
||||
<span class="lineNum"> 262 </span> : }
|
||||
<span class="lineNum"> 263 </span> :
|
||||
<span class="lineNum"> 264 </span> : /* skip "." and ".." files */
|
||||
<span class="lineNum"> 265 </span><span class="lineCov"> 1811 : name = dd->d_name;</span>
|
||||
<span class="lineNum"> 266 </span><span class="lineCov"> 1811 : if (name[0] == '.' && (name[1] == 0 || (name[1] == '.' && name[2] == 0)))</span>
|
||||
<span class="lineNum"> 267 </span><span class="lineCov"> 2 : continue;</span>
|
||||
<span class="lineNum"> 268 </span> :
|
||||
<span class="lineNum"> 269 </span><span class="lineCov"> 1809 : pathprint(path_next, sizeof(path_next), "%s%s", dir, name);</span>
|
||||
<span class="lineNum"> 270 </span> :
|
||||
<span class="lineNum"> 271 </span> : #if HAVE_STRUCT_DIRENT_D_STAT
|
||||
<span class="lineNum"> 272 </span> : /* convert dirent to lstat result */
|
||||
<span class="lineNum"> 273 </span> : dirent_lstat(dd, &st);
|
||||
<span class="lineNum"> 274 </span> :
|
||||
<span class="lineNum"> 275 </span> : /* if the st_mode field is missing, takes care to fill it using normal lstat() */
|
||||
<span class="lineNum"> 276 </span> : /* at now this can happen only in Windows (with HAVE_STRUCT_DIRENT_D_STAT defined), */
|
||||
<span class="lineNum"> 277 </span> : /* because we use a directory reading method that doesn't read info about ReparsePoint. */
|
||||
<span class="lineNum"> 278 </span> : /* Note that here we cannot call here lstat_sync(), because we don't know what kind */
|
||||
<span class="lineNum"> 279 </span> : /* of file is it, and lstat_sync() doesn't always work */
|
||||
<span class="lineNum"> 280 </span> : if (st.st_mode == 0) {
|
||||
<span class="lineNum"> 281 </span> : if (lstat(path_next, &st) != 0) {
|
||||
<span class="lineNum"> 282 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 283 </span> : log_fatal("Error in stat file/directory '%s'. %s.\n", path_next, strerror(errno));
|
||||
<span class="lineNum"> 284 </span> : exit(EXIT_FAILURE);
|
||||
<span class="lineNum"> 285 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 286 </span> : }
|
||||
<span class="lineNum"> 287 </span> : }
|
||||
<span class="lineNum"> 288 </span> : #else
|
||||
<span class="lineNum"> 289 </span> : /* get lstat info about the file */
|
||||
<span class="lineNum"> 290 </span><span class="lineCov"> 1809 : if (lstat(path_next, &st) != 0) {</span>
|
||||
<span class="lineNum"> 291 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 292 </span> : log_fatal("Error in stat file/directory '%s'. %s.\n", path_next, strerror(errno));
|
||||
<span class="lineNum"> 293 </span> : exit(EXIT_FAILURE);
|
||||
<span class="lineNum"> 294 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 295 </span> : }
|
||||
<span class="lineNum"> 296 </span> : #endif
|
||||
<span class="lineNum"> 297 </span> :
|
||||
<span class="lineNum"> 298 </span><span class="lineCov"> 1809 : if (S_ISREG(st.st_mode)) {</span>
|
||||
<span class="lineNum"> 299 </span><span class="lineCov"> 1750 : import_file(state, path_next, st.st_size);</span>
|
||||
<span class="lineNum"> 300 </span><span class="lineCov"> 59 : } else if (S_ISDIR(st.st_mode)) {</span>
|
||||
<span class="lineNum"> 301 </span><span class="lineNoCov"> 0 : pathslash(path_next, sizeof(path_next));</span>
|
||||
<span class="lineNum"> 302 </span><span class="lineNoCov"> 0 : import_dir(state, path_next);</span>
|
||||
<span class="lineNum"> 303 </span> : }
|
||||
<span class="lineNum"> 304 </span><span class="lineCov"> 1811 : }</span>
|
||||
<span class="lineNum"> 305 </span> :
|
||||
<span class="lineNum"> 306 </span><span class="lineCov"> 1 : if (closedir(d) != 0) {</span>
|
||||
<span class="lineNum"> 307 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 308 </span> : log_fatal("Error closing directory '%s'. %s.\n", dir, strerror(errno));
|
||||
<span class="lineNum"> 309 </span> : exit(EXIT_FAILURE);
|
||||
<span class="lineNum"> 310 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 311 </span> : }
|
||||
<a name="312"><span class="lineNum"> 312 </span><span class="lineCov"> 1 : }</span></a>
|
||||
<span class="lineNum"> 313 </span> :
|
||||
<span class="lineNum"> 314 </span><span class="lineCov"> 1 : void state_import(struct snapraid_state* state, const char* dir)</span>
|
||||
<span class="lineNum"> 315 </span> : {
|
||||
<span class="lineNum"> 316 </span> : char path[PATH_MAX];
|
||||
<span class="lineNum"> 317 </span> :
|
||||
<span class="lineNum"> 318 </span><span class="lineCov"> 1 : msg_progress("Importing...\n");</span>
|
||||
<span class="lineNum"> 319 </span> :
|
||||
<span class="lineNum"> 320 </span> : /* add the final slash */
|
||||
<span class="lineNum"> 321 </span><span class="lineCov"> 1 : pathimport(path, sizeof(path), dir);</span>
|
||||
<span class="lineNum"> 322 </span><span class="lineCov"> 1 : pathslash(path, sizeof(path));</span>
|
||||
<span class="lineNum"> 323 </span> :
|
||||
<span class="lineNum"> 324 </span><span class="lineCov"> 1 : import_dir(state, path);</span>
|
||||
<span class="lineNum"> 325 </span><span class="lineCov"> 1 : }</span>
|
||||
<span class="lineNum"> 326 </span> :
|
||||
</pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
|
|
|||
|
|
@ -31,18 +31,18 @@
|
|||
<td class="headerValue">lcov.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntry">7344</td>
|
||||
<td class="headerCovTableEntry">8033</td>
|
||||
<td class="headerCovTableEntryHi">91.4 %</td>
|
||||
<td class="headerCovTableEntry">7401</td>
|
||||
<td class="headerCovTableEntry">8084</td>
|
||||
<td class="headerCovTableEntryHi">91.6 %</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Date:</td>
|
||||
<td class="headerValue">2015-11-20</td>
|
||||
<td class="headerValue">2016-01-09</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntry">388</td>
|
||||
<td class="headerCovTableEntry">397</td>
|
||||
<td class="headerCovTableEntryHi">97.7 %</td>
|
||||
<td class="headerCovTableEntry">390</td>
|
||||
<td class="headerCovTableEntry">401</td>
|
||||
<td class="headerCovTableEntryHi">97.3 %</td>
|
||||
</tr>
|
||||
<tr><td><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
|
|
@ -69,6 +69,16 @@
|
|||
<td class="tableHead" colspan=3>Line Coverage <span class="tableHeadSort"><a href="index-sort-l.html"><img src="../updown.png" width=10 height=14 alt="Sort by line coverage" title="Sort by line coverage" border=0></a></span></td>
|
||||
<td class="tableHead" colspan=2>Functions <span class="tableHeadSort"><img src="../glass.png" width=10 height=14 alt="Sort by function coverage" title="Sort by function coverage" border=0></span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="import.c.gcov.html">import.c</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=90 height=10 alt="90.5%"><img src="../snow.png" width=10 height=10 alt="90.5%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">90.5 %</td>
|
||||
<td class="coverNumHi">95 / 105</td>
|
||||
<td class="coverPerMed">87.5 %</td>
|
||||
<td class="coverNumMed">7 / 8</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="parity.c.gcov.html">parity.c</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
|
|
@ -92,22 +102,32 @@
|
|||
<tr>
|
||||
<td class="coverFile"><a href="unix.c.gcov.html">unix.c</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../amber.png" width=79 height=10 alt="79.2%"><img src="../snow.png" width=21 height=10 alt="79.2%"></td></tr></table>
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../amber.png" width=77 height=10 alt="76.8%"><img src="../snow.png" width=23 height=10 alt="76.8%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerMed">79.2 %</td>
|
||||
<td class="coverNumMed">229 / 289</td>
|
||||
<td class="coverPerHi">91.3 %</td>
|
||||
<td class="coverNumHi">21 / 23</td>
|
||||
<td class="coverPerMed">76.8 %</td>
|
||||
<td class="coverNumMed">255 / 332</td>
|
||||
<td class="coverPerHi">92.0 %</td>
|
||||
<td class="coverNumHi">23 / 25</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="support.c.gcov.html">support.c</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../amber.png" width=79 height=10 alt="79.2%"><img src="../snow.png" width=21 height=10 alt="79.2%"></td></tr></table>
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../amber.png" width=80 height=10 alt="79.7%"><img src="../snow.png" width=20 height=10 alt="79.7%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerMed">79.2 %</td>
|
||||
<td class="coverNumMed">232 / 293</td>
|
||||
<td class="coverPerHi">93.5 %</td>
|
||||
<td class="coverNumHi">29 / 31</td>
|
||||
<td class="coverPerMed">79.7 %</td>
|
||||
<td class="coverNumMed">240 / 301</td>
|
||||
<td class="coverPerHi">93.8 %</td>
|
||||
<td class="coverNumHi">30 / 32</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="stream.c.gcov.html">stream.c</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=92 height=10 alt="91.8%"><img src="../snow.png" width=8 height=10 alt="91.8%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">91.8 %</td>
|
||||
<td class="coverNumHi">257 / 280</td>
|
||||
<td class="coverPerHi">96.4 %</td>
|
||||
<td class="coverNumHi">27 / 28</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="elem.c.gcov.html">elem.c</a></td>
|
||||
|
|
@ -115,19 +135,19 @@
|
|||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=94 height=10 alt="93.8%"><img src="../snow.png" width=6 height=10 alt="93.8%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">93.8 %</td>
|
||||
<td class="coverNumHi">545 / 581</td>
|
||||
<td class="coverNumHi">546 / 582</td>
|
||||
<td class="coverPerHi">96.9 %</td>
|
||||
<td class="coverNumHi">62 / 64</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="state.c.gcov.html">state.c</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=92 height=10 alt="92.4%"><img src="../snow.png" width=8 height=10 alt="92.4%"></td></tr></table>
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=93 height=10 alt="92.6%"><img src="../snow.png" width=7 height=10 alt="92.6%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">92.4 %</td>
|
||||
<td class="coverNumHi">1248 / 1351</td>
|
||||
<td class="coverPerHi">97.2 %</td>
|
||||
<td class="coverNumHi">35 / 36</td>
|
||||
<td class="coverPerHi">92.6 %</td>
|
||||
<td class="coverNumHi">1262 / 1363</td>
|
||||
<td class="coverPerHi">97.3 %</td>
|
||||
<td class="coverNumHi">36 / 37</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="nano.c.gcov.html">nano.c</a></td>
|
||||
|
|
@ -292,70 +312,60 @@
|
|||
<tr>
|
||||
<td class="coverFile"><a href="search.c.gcov.html">search.c</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=92 height=10 alt="92.0%"><img src="../snow.png" width=8 height=10 alt="92.0%"></td></tr></table>
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=91 height=10 alt="91.0%"><img src="../snow.png" width=9 height=10 alt="91.0%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">92.0 %</td>
|
||||
<td class="coverNumHi">92 / 100</td>
|
||||
<td class="coverPerHi">91.0 %</td>
|
||||
<td class="coverNumHi">91 / 100</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumHi">7 / 7</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="import.c.gcov.html">import.c</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=98 height=10 alt="98.1%"><img src="../snow.png" width=2 height=10 alt="98.1%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">98.1 %</td>
|
||||
<td class="coverNumHi">103 / 105</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumHi">8 / 8</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="handle.c.gcov.html">handle.c</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=98 height=10 alt="97.7%"><img src="../snow.png" width=2 height=10 alt="97.7%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">97.7 %</td>
|
||||
<td class="coverNumHi">125 / 128</td>
|
||||
<td class="coverNumHi">126 / 129</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumHi">8 / 8</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="selftest.c.gcov.html">selftest.c</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../amber.png" width=84 height=10 alt="83.7%"><img src="../snow.png" width=16 height=10 alt="83.7%"></td></tr></table>
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerMed">83.7 %</td>
|
||||
<td class="coverNumMed">144 / 172</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumHi">144 / 144</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumHi">8 / 8</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="snapraid.c.gcov.html">snapraid.c</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=94 height=10 alt="94.1%"><img src="../snow.png" width=6 height=10 alt="94.1%"></td></tr></table>
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=94 height=10 alt="93.8%"><img src="../snow.png" width=6 height=10 alt="93.8%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">94.1 %</td>
|
||||
<td class="coverNumHi">446 / 474</td>
|
||||
<td class="coverPerHi">93.8 %</td>
|
||||
<td class="coverNumHi">454 / 484</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumHi">8 / 8</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="check.c.gcov.html">check.c</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=91 height=10 alt="91.3%"><img src="../snow.png" width=9 height=10 alt="91.3%"></td></tr></table>
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=91 height=10 alt="91.2%"><img src="../snow.png" width=9 height=10 alt="91.2%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">91.3 %</td>
|
||||
<td class="coverNumHi">713 / 781</td>
|
||||
<td class="coverPerHi">91.2 %</td>
|
||||
<td class="coverNumHi">712 / 781</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumHi">9 / 9</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="device.c.gcov.html">device.c</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=94 height=10 alt="94.3%"><img src="../snow.png" width=6 height=10 alt="94.3%"></td></tr></table>
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=94 height=10 alt="94.1%"><img src="../snow.png" width=6 height=10 alt="94.1%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">94.3 %</td>
|
||||
<td class="coverNumHi">300 / 318</td>
|
||||
<td class="coverPerHi">94.1 %</td>
|
||||
<td class="coverNumHi">301 / 320</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumHi">11 / 11</td>
|
||||
</tr>
|
||||
|
|
@ -382,23 +392,13 @@
|
|||
<tr>
|
||||
<td class="coverFile"><a href="scan.c.gcov.html">scan.c</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../amber.png" width=87 height=10 alt="87.4%"><img src="../snow.png" width=13 height=10 alt="87.4%"></td></tr></table>
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../amber.png" width=89 height=10 alt="89.1%"><img src="../snow.png" width=11 height=10 alt="89.1%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerMed">87.4 %</td>
|
||||
<td class="coverNumMed">542 / 620</td>
|
||||
<td class="coverPerMed">89.1 %</td>
|
||||
<td class="coverNumMed">554 / 622</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumHi">23 / 23</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="stream.c.gcov.html">stream.c</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=93 height=10 alt="93.2%"><img src="../snow.png" width=7 height=10 alt="93.2%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">93.2 %</td>
|
||||
<td class="coverNumHi">261 / 280</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumHi">28 / 28</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="elem.h.gcov.html">elem.h</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
|
|
|
|||
|
|
@ -31,18 +31,18 @@
|
|||
<td class="headerValue">lcov.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntry">7344</td>
|
||||
<td class="headerCovTableEntry">8033</td>
|
||||
<td class="headerCovTableEntryHi">91.4 %</td>
|
||||
<td class="headerCovTableEntry">7401</td>
|
||||
<td class="headerCovTableEntry">8084</td>
|
||||
<td class="headerCovTableEntryHi">91.6 %</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Date:</td>
|
||||
<td class="headerValue">2015-11-20</td>
|
||||
<td class="headerValue">2016-01-09</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntry">388</td>
|
||||
<td class="headerCovTableEntry">397</td>
|
||||
<td class="headerCovTableEntryHi">97.7 %</td>
|
||||
<td class="headerCovTableEntry">390</td>
|
||||
<td class="headerCovTableEntry">401</td>
|
||||
<td class="headerCovTableEntryHi">97.3 %</td>
|
||||
</tr>
|
||||
<tr><td><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
|
|
@ -70,14 +70,14 @@
|
|||
<td class="tableHead" colspan=2>Functions <span class="tableHeadSort"><a href="index-sort-f.html"><img src="../updown.png" width=10 height=14 alt="Sort by function coverage" title="Sort by function coverage" border=0></a></span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="support.c.gcov.html">support.c</a></td>
|
||||
<td class="coverFile"><a href="unix.c.gcov.html">unix.c</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../amber.png" width=79 height=10 alt="79.2%"><img src="../snow.png" width=21 height=10 alt="79.2%"></td></tr></table>
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../amber.png" width=77 height=10 alt="76.8%"><img src="../snow.png" width=23 height=10 alt="76.8%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerMed">79.2 %</td>
|
||||
<td class="coverNumMed">232 / 293</td>
|
||||
<td class="coverPerHi">93.5 %</td>
|
||||
<td class="coverNumHi">29 / 31</td>
|
||||
<td class="coverPerMed">76.8 %</td>
|
||||
<td class="coverNumMed">255 / 332</td>
|
||||
<td class="coverPerHi">92.0 %</td>
|
||||
<td class="coverNumHi">23 / 25</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="parity.c.gcov.html">parity.c</a></td>
|
||||
|
|
@ -89,16 +89,6 @@
|
|||
<td class="coverPerHi">90.9 %</td>
|
||||
<td class="coverNumHi">10 / 11</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="unix.c.gcov.html">unix.c</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../amber.png" width=79 height=10 alt="79.2%"><img src="../snow.png" width=21 height=10 alt="79.2%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerMed">79.2 %</td>
|
||||
<td class="coverNumMed">229 / 289</td>
|
||||
<td class="coverPerHi">91.3 %</td>
|
||||
<td class="coverNumHi">21 / 23</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="scrub.c.gcov.html">scrub.c</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
|
|
@ -110,14 +100,14 @@
|
|||
<td class="coverNumHi">4 / 4</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="selftest.c.gcov.html">selftest.c</a></td>
|
||||
<td class="coverFile"><a href="support.c.gcov.html">support.c</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../amber.png" width=84 height=10 alt="83.7%"><img src="../snow.png" width=16 height=10 alt="83.7%"></td></tr></table>
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../amber.png" width=80 height=10 alt="79.7%"><img src="../snow.png" width=20 height=10 alt="79.7%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerMed">83.7 %</td>
|
||||
<td class="coverNumMed">144 / 172</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumHi">8 / 8</td>
|
||||
<td class="coverPerMed">79.7 %</td>
|
||||
<td class="coverNumMed">240 / 301</td>
|
||||
<td class="coverPerHi">93.8 %</td>
|
||||
<td class="coverNumHi">30 / 32</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="dry.c.gcov.html">dry.c</a></td>
|
||||
|
|
@ -132,10 +122,10 @@
|
|||
<tr>
|
||||
<td class="coverFile"><a href="scan.c.gcov.html">scan.c</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../amber.png" width=87 height=10 alt="87.4%"><img src="../snow.png" width=13 height=10 alt="87.4%"></td></tr></table>
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../amber.png" width=89 height=10 alt="89.1%"><img src="../snow.png" width=11 height=10 alt="89.1%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerMed">87.4 %</td>
|
||||
<td class="coverNumMed">542 / 620</td>
|
||||
<td class="coverPerMed">89.1 %</td>
|
||||
<td class="coverNumMed">554 / 622</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumHi">23 / 23</td>
|
||||
</tr>
|
||||
|
|
@ -150,34 +140,54 @@
|
|||
<td class="coverNumHi">10 / 11</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="check.c.gcov.html">check.c</a></td>
|
||||
<td class="coverFile"><a href="import.c.gcov.html">import.c</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=91 height=10 alt="91.3%"><img src="../snow.png" width=9 height=10 alt="91.3%"></td></tr></table>
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=90 height=10 alt="90.5%"><img src="../snow.png" width=10 height=10 alt="90.5%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">91.3 %</td>
|
||||
<td class="coverNumHi">713 / 781</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumHi">9 / 9</td>
|
||||
<td class="coverPerHi">90.5 %</td>
|
||||
<td class="coverNumHi">95 / 105</td>
|
||||
<td class="coverPerMed">87.5 %</td>
|
||||
<td class="coverNumMed">7 / 8</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="search.c.gcov.html">search.c</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=92 height=10 alt="92.0%"><img src="../snow.png" width=8 height=10 alt="92.0%"></td></tr></table>
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=91 height=10 alt="91.0%"><img src="../snow.png" width=9 height=10 alt="91.0%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">92.0 %</td>
|
||||
<td class="coverNumHi">92 / 100</td>
|
||||
<td class="coverPerHi">91.0 %</td>
|
||||
<td class="coverNumHi">91 / 100</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumHi">7 / 7</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="check.c.gcov.html">check.c</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=91 height=10 alt="91.2%"><img src="../snow.png" width=9 height=10 alt="91.2%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">91.2 %</td>
|
||||
<td class="coverNumHi">712 / 781</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumHi">9 / 9</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="stream.c.gcov.html">stream.c</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=92 height=10 alt="91.8%"><img src="../snow.png" width=8 height=10 alt="91.8%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">91.8 %</td>
|
||||
<td class="coverNumHi">257 / 280</td>
|
||||
<td class="coverPerHi">96.4 %</td>
|
||||
<td class="coverNumHi">27 / 28</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="state.c.gcov.html">state.c</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=92 height=10 alt="92.4%"><img src="../snow.png" width=8 height=10 alt="92.4%"></td></tr></table>
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=93 height=10 alt="92.6%"><img src="../snow.png" width=7 height=10 alt="92.6%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">92.4 %</td>
|
||||
<td class="coverNumHi">1248 / 1351</td>
|
||||
<td class="coverPerHi">97.2 %</td>
|
||||
<td class="coverNumHi">35 / 36</td>
|
||||
<td class="coverPerHi">92.6 %</td>
|
||||
<td class="coverNumHi">1262 / 1363</td>
|
||||
<td class="coverPerHi">97.3 %</td>
|
||||
<td class="coverNumHi">36 / 37</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="sync.c.gcov.html">sync.c</a></td>
|
||||
|
|
@ -199,16 +209,6 @@
|
|||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumHi">18 / 18</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="stream.c.gcov.html">stream.c</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=93 height=10 alt="93.2%"><img src="../snow.png" width=7 height=10 alt="93.2%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">93.2 %</td>
|
||||
<td class="coverNumHi">261 / 280</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumHi">28 / 28</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="util.h.gcov.html">util.h</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
|
|
@ -229,25 +229,35 @@
|
|||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumHi">5 / 5</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="snapraid.c.gcov.html">snapraid.c</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=94 height=10 alt="93.8%"><img src="../snow.png" width=6 height=10 alt="93.8%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">93.8 %</td>
|
||||
<td class="coverNumHi">454 / 484</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumHi">8 / 8</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="elem.c.gcov.html">elem.c</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=94 height=10 alt="93.8%"><img src="../snow.png" width=6 height=10 alt="93.8%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">93.8 %</td>
|
||||
<td class="coverNumHi">545 / 581</td>
|
||||
<td class="coverNumHi">546 / 582</td>
|
||||
<td class="coverPerHi">96.9 %</td>
|
||||
<td class="coverNumHi">62 / 64</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="snapraid.c.gcov.html">snapraid.c</a></td>
|
||||
<td class="coverFile"><a href="device.c.gcov.html">device.c</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=94 height=10 alt="94.1%"><img src="../snow.png" width=6 height=10 alt="94.1%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">94.1 %</td>
|
||||
<td class="coverNumHi">446 / 474</td>
|
||||
<td class="coverNumHi">301 / 320</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumHi">8 / 8</td>
|
||||
<td class="coverNumHi">11 / 11</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="pool.c.gcov.html">pool.c</a></td>
|
||||
|
|
@ -259,16 +269,6 @@
|
|||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumHi">3 / 3</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="device.c.gcov.html">device.c</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=94 height=10 alt="94.3%"><img src="../snow.png" width=6 height=10 alt="94.3%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">94.3 %</td>
|
||||
<td class="coverNumHi">300 / 318</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumHi">11 / 11</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="rehash.c.gcov.html">rehash.c</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
|
|
@ -305,17 +305,7 @@
|
|||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=98 height=10 alt="97.7%"><img src="../snow.png" width=2 height=10 alt="97.7%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">97.7 %</td>
|
||||
<td class="coverNumHi">125 / 128</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumHi">8 / 8</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="import.c.gcov.html">import.c</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=98 height=10 alt="98.1%"><img src="../snow.png" width=2 height=10 alt="98.1%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">98.1 %</td>
|
||||
<td class="coverNumHi">103 / 105</td>
|
||||
<td class="coverNumHi">126 / 129</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumHi">8 / 8</td>
|
||||
</tr>
|
||||
|
|
@ -409,6 +399,16 @@
|
|||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumHi">2 / 2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="selftest.c.gcov.html">selftest.c</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumHi">144 / 144</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumHi">8 / 8</td>
|
||||
</tr>
|
||||
</table>
|
||||
</center>
|
||||
<br>
|
||||
|
|
|
|||
|
|
@ -31,18 +31,18 @@
|
|||
<td class="headerValue">lcov.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntry">7344</td>
|
||||
<td class="headerCovTableEntry">8033</td>
|
||||
<td class="headerCovTableEntryHi">91.4 %</td>
|
||||
<td class="headerCovTableEntry">7401</td>
|
||||
<td class="headerCovTableEntry">8084</td>
|
||||
<td class="headerCovTableEntryHi">91.6 %</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Date:</td>
|
||||
<td class="headerValue">2015-11-20</td>
|
||||
<td class="headerValue">2016-01-09</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntry">388</td>
|
||||
<td class="headerCovTableEntry">397</td>
|
||||
<td class="headerCovTableEntryHi">97.7 %</td>
|
||||
<td class="headerCovTableEntry">390</td>
|
||||
<td class="headerCovTableEntry">401</td>
|
||||
<td class="headerCovTableEntryHi">97.3 %</td>
|
||||
</tr>
|
||||
<tr><td><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
|
|
@ -72,20 +72,20 @@
|
|||
<tr>
|
||||
<td class="coverFile"><a href="check.c.gcov.html">check.c</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=91 height=10 alt="91.3%"><img src="../snow.png" width=9 height=10 alt="91.3%"></td></tr></table>
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=91 height=10 alt="91.2%"><img src="../snow.png" width=9 height=10 alt="91.2%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">91.3 %</td>
|
||||
<td class="coverNumHi">713 / 781</td>
|
||||
<td class="coverPerHi">91.2 %</td>
|
||||
<td class="coverNumHi">712 / 781</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumHi">9 / 9</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="device.c.gcov.html">device.c</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=94 height=10 alt="94.3%"><img src="../snow.png" width=6 height=10 alt="94.3%"></td></tr></table>
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=94 height=10 alt="94.1%"><img src="../snow.png" width=6 height=10 alt="94.1%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">94.3 %</td>
|
||||
<td class="coverNumHi">300 / 318</td>
|
||||
<td class="coverPerHi">94.1 %</td>
|
||||
<td class="coverNumHi">301 / 320</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumHi">11 / 11</td>
|
||||
</tr>
|
||||
|
|
@ -115,7 +115,7 @@
|
|||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=94 height=10 alt="93.8%"><img src="../snow.png" width=6 height=10 alt="93.8%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">93.8 %</td>
|
||||
<td class="coverNumHi">545 / 581</td>
|
||||
<td class="coverNumHi">546 / 582</td>
|
||||
<td class="coverPerHi">96.9 %</td>
|
||||
<td class="coverNumHi">62 / 64</td>
|
||||
</tr>
|
||||
|
|
@ -135,19 +135,19 @@
|
|||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=98 height=10 alt="97.7%"><img src="../snow.png" width=2 height=10 alt="97.7%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">97.7 %</td>
|
||||
<td class="coverNumHi">125 / 128</td>
|
||||
<td class="coverNumHi">126 / 129</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumHi">8 / 8</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="import.c.gcov.html">import.c</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=98 height=10 alt="98.1%"><img src="../snow.png" width=2 height=10 alt="98.1%"></td></tr></table>
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=90 height=10 alt="90.5%"><img src="../snow.png" width=10 height=10 alt="90.5%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">98.1 %</td>
|
||||
<td class="coverNumHi">103 / 105</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumHi">8 / 8</td>
|
||||
<td class="coverPerHi">90.5 %</td>
|
||||
<td class="coverNumHi">95 / 105</td>
|
||||
<td class="coverPerMed">87.5 %</td>
|
||||
<td class="coverNumMed">7 / 8</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="list.c.gcov.html">list.c</a></td>
|
||||
|
|
@ -242,10 +242,10 @@
|
|||
<tr>
|
||||
<td class="coverFile"><a href="scan.c.gcov.html">scan.c</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../amber.png" width=87 height=10 alt="87.4%"><img src="../snow.png" width=13 height=10 alt="87.4%"></td></tr></table>
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../amber.png" width=89 height=10 alt="89.1%"><img src="../snow.png" width=11 height=10 alt="89.1%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerMed">87.4 %</td>
|
||||
<td class="coverNumMed">542 / 620</td>
|
||||
<td class="coverPerMed">89.1 %</td>
|
||||
<td class="coverNumMed">554 / 622</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumHi">23 / 23</td>
|
||||
</tr>
|
||||
|
|
@ -262,30 +262,30 @@
|
|||
<tr>
|
||||
<td class="coverFile"><a href="search.c.gcov.html">search.c</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=92 height=10 alt="92.0%"><img src="../snow.png" width=8 height=10 alt="92.0%"></td></tr></table>
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=91 height=10 alt="91.0%"><img src="../snow.png" width=9 height=10 alt="91.0%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">92.0 %</td>
|
||||
<td class="coverNumHi">92 / 100</td>
|
||||
<td class="coverPerHi">91.0 %</td>
|
||||
<td class="coverNumHi">91 / 100</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumHi">7 / 7</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="selftest.c.gcov.html">selftest.c</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../amber.png" width=84 height=10 alt="83.7%"><img src="../snow.png" width=16 height=10 alt="83.7%"></td></tr></table>
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerMed">83.7 %</td>
|
||||
<td class="coverNumMed">144 / 172</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumHi">144 / 144</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumHi">8 / 8</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="snapraid.c.gcov.html">snapraid.c</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=94 height=10 alt="94.1%"><img src="../snow.png" width=6 height=10 alt="94.1%"></td></tr></table>
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=94 height=10 alt="93.8%"><img src="../snow.png" width=6 height=10 alt="93.8%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">94.1 %</td>
|
||||
<td class="coverNumHi">446 / 474</td>
|
||||
<td class="coverPerHi">93.8 %</td>
|
||||
<td class="coverNumHi">454 / 484</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumHi">8 / 8</td>
|
||||
</tr>
|
||||
|
|
@ -312,12 +312,12 @@
|
|||
<tr>
|
||||
<td class="coverFile"><a href="state.c.gcov.html">state.c</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=92 height=10 alt="92.4%"><img src="../snow.png" width=8 height=10 alt="92.4%"></td></tr></table>
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=93 height=10 alt="92.6%"><img src="../snow.png" width=7 height=10 alt="92.6%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">92.4 %</td>
|
||||
<td class="coverNumHi">1248 / 1351</td>
|
||||
<td class="coverPerHi">97.2 %</td>
|
||||
<td class="coverNumHi">35 / 36</td>
|
||||
<td class="coverPerHi">92.6 %</td>
|
||||
<td class="coverNumHi">1262 / 1363</td>
|
||||
<td class="coverPerHi">97.3 %</td>
|
||||
<td class="coverNumHi">36 / 37</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="state.h.gcov.html">state.h</a></td>
|
||||
|
|
@ -342,12 +342,12 @@
|
|||
<tr>
|
||||
<td class="coverFile"><a href="stream.c.gcov.html">stream.c</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=93 height=10 alt="93.2%"><img src="../snow.png" width=7 height=10 alt="93.2%"></td></tr></table>
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=92 height=10 alt="91.8%"><img src="../snow.png" width=8 height=10 alt="91.8%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">93.2 %</td>
|
||||
<td class="coverNumHi">261 / 280</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumHi">28 / 28</td>
|
||||
<td class="coverPerHi">91.8 %</td>
|
||||
<td class="coverNumHi">257 / 280</td>
|
||||
<td class="coverPerHi">96.4 %</td>
|
||||
<td class="coverNumHi">27 / 28</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="stream.h.gcov.html">stream.h</a></td>
|
||||
|
|
@ -362,12 +362,12 @@
|
|||
<tr>
|
||||
<td class="coverFile"><a href="support.c.gcov.html">support.c</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../amber.png" width=79 height=10 alt="79.2%"><img src="../snow.png" width=21 height=10 alt="79.2%"></td></tr></table>
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../amber.png" width=80 height=10 alt="79.7%"><img src="../snow.png" width=20 height=10 alt="79.7%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerMed">79.2 %</td>
|
||||
<td class="coverNumMed">232 / 293</td>
|
||||
<td class="coverPerHi">93.5 %</td>
|
||||
<td class="coverNumHi">29 / 31</td>
|
||||
<td class="coverPerMed">79.7 %</td>
|
||||
<td class="coverNumMed">240 / 301</td>
|
||||
<td class="coverPerHi">93.8 %</td>
|
||||
<td class="coverNumHi">30 / 32</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="sync.c.gcov.html">sync.c</a></td>
|
||||
|
|
@ -382,12 +382,12 @@
|
|||
<tr>
|
||||
<td class="coverFile"><a href="unix.c.gcov.html">unix.c</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../amber.png" width=79 height=10 alt="79.2%"><img src="../snow.png" width=21 height=10 alt="79.2%"></td></tr></table>
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../amber.png" width=77 height=10 alt="76.8%"><img src="../snow.png" width=23 height=10 alt="76.8%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerMed">79.2 %</td>
|
||||
<td class="coverNumMed">229 / 289</td>
|
||||
<td class="coverPerHi">91.3 %</td>
|
||||
<td class="coverNumHi">21 / 23</td>
|
||||
<td class="coverPerMed">76.8 %</td>
|
||||
<td class="coverNumMed">255 / 332</td>
|
||||
<td class="coverPerHi">92.0 %</td>
|
||||
<td class="coverNumHi">23 / 25</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="util.c.gcov.html">util.c</a></td>
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Date:</td>
|
||||
<td class="headerValue">2015-11-20</td>
|
||||
<td class="headerValue">2016-01-09</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Date:</td>
|
||||
<td class="headerValue">2015-11-20</td>
|
||||
<td class="headerValue">2016-01-09</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Date:</td>
|
||||
<td class="headerValue">2015-11-20</td>
|
||||
<td class="headerValue">2016-01-09</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
|
|
@ -110,34 +110,34 @@
|
|||
<span class="lineNum"> 48 </span><span class="lineCov"> 18 : tommy_list_sort(&disk->filelist, file_path_compare);</span>
|
||||
<span class="lineNum"> 49 </span> :
|
||||
<span class="lineNum"> 50 </span> : /* for each file */
|
||||
<span class="lineNum"> 51 </span><span class="lineCov"> 16998 : for (j = disk->filelist; j != 0; j = j->next) {</span>
|
||||
<span class="lineNum"> 52 </span><span class="lineCov"> 16980 : struct snapraid_file* file = j->data;</span>
|
||||
<span class="lineNum"> 51 </span><span class="lineCov"> 17012 : for (j = disk->filelist; j != 0; j = j->next) {</span>
|
||||
<span class="lineNum"> 52 </span><span class="lineCov"> 16994 : struct snapraid_file* file = j->data;</span>
|
||||
<span class="lineNum"> 53 </span> : #if HAVE_LOCALTIME_R
|
||||
<span class="lineNum"> 54 </span> : struct tm tm_res;
|
||||
<span class="lineNum"> 55 </span> : #endif
|
||||
<span class="lineNum"> 56 </span> : struct tm* tm;
|
||||
<span class="lineNum"> 57 </span> : time_t t;
|
||||
<span class="lineNum"> 58 </span> :
|
||||
<span class="lineNum"> 59 </span><span class="lineCov"> 16980 : ++file_count;</span>
|
||||
<span class="lineNum"> 60 </span><span class="lineCov"> 16980 : file_size += file->size;</span>
|
||||
<span class="lineNum"> 59 </span><span class="lineCov"> 16994 : ++file_count;</span>
|
||||
<span class="lineNum"> 60 </span><span class="lineCov"> 16994 : file_size += file->size;</span>
|
||||
<span class="lineNum"> 61 </span> :
|
||||
<span class="lineNum"> 62 </span><span class="lineCov"> 16980 : log_tag("file:%s:%s:%" PRIu64 ":%" PRIi64 ":%u:%" PRIi64 "\n", disk->name, esc(file->sub), file->size, file->mtime_sec, file->mtime_nsec, file->inode);</span>
|
||||
<span class="lineNum"> 62 </span><span class="lineCov"> 16994 : log_tag("file:%s:%s:%" PRIu64 ":%" PRIi64 ":%u:%" PRIi64 "\n", disk->name, esc(file->sub), file->size, file->mtime_sec, file->mtime_nsec, file->inode);</span>
|
||||
<span class="lineNum"> 63 </span> :
|
||||
<span class="lineNum"> 64 </span><span class="lineCov"> 16980 : t = file->mtime_sec;</span>
|
||||
<span class="lineNum"> 64 </span><span class="lineCov"> 16994 : t = file->mtime_sec;</span>
|
||||
<span class="lineNum"> 65 </span> : #if HAVE_LOCALTIME_R
|
||||
<span class="lineNum"> 66 </span><span class="lineCov"> 16980 : tm = localtime_r(&t, &tm_res);</span>
|
||||
<span class="lineNum"> 66 </span><span class="lineCov"> 16994 : tm = localtime_r(&t, &tm_res);</span>
|
||||
<span class="lineNum"> 67 </span> : #else
|
||||
<span class="lineNum"> 68 </span> : tm = localtime(&t);
|
||||
<span class="lineNum"> 69 </span> : #endif
|
||||
<span class="lineNum"> 70 </span> :
|
||||
<span class="lineNum"> 71 </span><span class="lineCov"> 16980 : printf("%12" PRIu64 " ", file->size);</span>
|
||||
<span class="lineNum"> 72 </span><span class="lineCov"> 16980 : if (tm) {</span>
|
||||
<span class="lineNum"> 73 </span><span class="lineCov"> 16980 : printf("%04u/%02u/%02u %02u:%02u", tm->tm_year + 1900, tm->tm_mon + 1, tm->tm_mday, tm->tm_hour, tm->tm_min);</span>
|
||||
<span class="lineNum"> 74 </span><span class="lineCov"> 16980 : if (msg_level >= MSG_VERBOSE)</span>
|
||||
<span class="lineNum"> 75 </span><span class="lineCov"> 16980 : printf(":%02u.%03u", tm->tm_sec, file->mtime_nsec / 1000000);</span>
|
||||
<span class="lineNum"> 76 </span><span class="lineCov"> 16980 : printf(" ");</span>
|
||||
<span class="lineNum"> 71 </span><span class="lineCov"> 16994 : printf("%12" PRIu64 " ", file->size);</span>
|
||||
<span class="lineNum"> 72 </span><span class="lineCov"> 16994 : if (tm) {</span>
|
||||
<span class="lineNum"> 73 </span><span class="lineCov"> 16994 : printf("%04u/%02u/%02u %02u:%02u", tm->tm_year + 1900, tm->tm_mon + 1, tm->tm_mday, tm->tm_hour, tm->tm_min);</span>
|
||||
<span class="lineNum"> 74 </span><span class="lineCov"> 16994 : if (msg_level >= MSG_VERBOSE)</span>
|
||||
<span class="lineNum"> 75 </span><span class="lineCov"> 16994 : printf(":%02u.%03u", tm->tm_sec, file->mtime_nsec / 1000000);</span>
|
||||
<span class="lineNum"> 76 </span><span class="lineCov"> 16994 : printf(" ");</span>
|
||||
<span class="lineNum"> 77 </span> : }
|
||||
<span class="lineNum"> 78 </span><span class="lineCov"> 16980 : printf("%s%s\n", disk->dir, file->sub);</span>
|
||||
<span class="lineNum"> 78 </span><span class="lineCov"> 16994 : printf("%s%s\n", disk->dir, file->sub);</span>
|
||||
<span class="lineNum"> 79 </span> : }
|
||||
<span class="lineNum"> 80 </span> :
|
||||
<span class="lineNum"> 81 </span> : /* sort by name */
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Date:</td>
|
||||
<td class="headerValue">2015-11-20</td>
|
||||
<td class="headerValue">2016-01-09</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntry">2</td>
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Date:</td>
|
||||
<td class="headerValue">2015-11-20</td>
|
||||
<td class="headerValue">2016-01-09</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntry">2</td>
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Date:</td>
|
||||
<td class="headerValue">2015-11-20</td>
|
||||
<td class="headerValue">2016-01-09</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntry">2</td>
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Date:</td>
|
||||
<td class="headerValue">2015-11-20</td>
|
||||
<td class="headerValue">2016-01-09</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntry">18</td>
|
||||
|
|
@ -61,23 +61,23 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="mktest.c.gcov.html#28">rnd</a></td>
|
||||
<td class="coverFnHi">50988385</td>
|
||||
<td class="coverFnHi">50969532</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="mktest.c.gcov.html#35">rndnz</a></td>
|
||||
<td class="coverFnHi">50578180</td>
|
||||
<td class="coverFnHi">50559223</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="mktest.c.gcov.html#84">file_cmp</a></td>
|
||||
<td class="coverFnHi">146608</td>
|
||||
<td class="coverFnHi">146593</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="mktest.c.gcov.html#43">rndnz_range</a></td>
|
||||
<td class="coverFnHi">31195</td>
|
||||
<td class="coverFnHi">31151</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="mktest.c.gcov.html#70">rnd_name</a></td>
|
||||
<td class="coverFnHi">26824</td>
|
||||
<td class="coverFnHi">26849</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="mktest.c.gcov.html#221">cmd_generate</a></td>
|
||||
|
|
@ -93,19 +93,19 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="mktest.c.gcov.html#289">cmd_write</a></td>
|
||||
<td class="coverFnHi">4703</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="mktest.c.gcov.html#457">cmd_append</a></td>
|
||||
<td class="coverFnHi">3252</td>
|
||||
<td class="coverFnHi">4719</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="mktest.c.gcov.html#562">cmd_delete</a></td>
|
||||
<td class="coverFnHi">3155</td>
|
||||
<td class="coverFnHi">3209</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="mktest.c.gcov.html#457">cmd_append</a></td>
|
||||
<td class="coverFnHi">3192</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="mktest.c.gcov.html#508">cmd_truncate</a></td>
|
||||
<td class="coverFnHi">3151</td>
|
||||
<td class="coverFnHi">3139</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="mktest.c.gcov.html#360">cmd_damage</a></td>
|
||||
|
|
@ -121,7 +121,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="mktest.c.gcov.html#198">cmd_generate_symlink</a></td>
|
||||
<td class="coverFnHi">915</td>
|
||||
<td class="coverFnHi">940</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="mktest.c.gcov.html#644">main</a></td>
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Date:</td>
|
||||
<td class="headerValue">2015-11-20</td>
|
||||
<td class="headerValue">2016-01-09</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntry">18</td>
|
||||
|
|
@ -61,7 +61,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="mktest.c.gcov.html#457">cmd_append</a></td>
|
||||
<td class="coverFnHi">3252</td>
|
||||
<td class="coverFnHi">3192</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="mktest.c.gcov.html#576">cmd_change</a></td>
|
||||
|
|
@ -73,7 +73,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="mktest.c.gcov.html#562">cmd_delete</a></td>
|
||||
<td class="coverFnHi">3155</td>
|
||||
<td class="coverFnHi">3209</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="mktest.c.gcov.html#221">cmd_generate</a></td>
|
||||
|
|
@ -85,15 +85,15 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="mktest.c.gcov.html#198">cmd_generate_symlink</a></td>
|
||||
<td class="coverFnHi">915</td>
|
||||
<td class="coverFnHi">940</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="mktest.c.gcov.html#508">cmd_truncate</a></td>
|
||||
<td class="coverFnHi">3151</td>
|
||||
<td class="coverFnHi">3139</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="mktest.c.gcov.html#289">cmd_write</a></td>
|
||||
<td class="coverFnHi">4703</td>
|
||||
<td class="coverFnHi">4719</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="mktest.c.gcov.html#89">fallback</a></td>
|
||||
|
|
@ -101,7 +101,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="mktest.c.gcov.html#84">file_cmp</a></td>
|
||||
<td class="coverFnHi">146608</td>
|
||||
<td class="coverFnHi">146593</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="mktest.c.gcov.html#632">help</a></td>
|
||||
|
|
@ -113,15 +113,15 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="mktest.c.gcov.html#28">rnd</a></td>
|
||||
<td class="coverFnHi">50988385</td>
|
||||
<td class="coverFnHi">50969532</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="mktest.c.gcov.html#70">rnd_name</a></td>
|
||||
<td class="coverFnHi">26824</td>
|
||||
<td class="coverFnHi">26849</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="mktest.c.gcov.html#35">rndnz</a></td>
|
||||
<td class="coverFnHi">50578180</td>
|
||||
<td class="coverFnHi">50559223</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="mktest.c.gcov.html#51">rndnz_damage</a></td>
|
||||
|
|
@ -129,7 +129,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="mktest.c.gcov.html#43">rndnz_range</a></td>
|
||||
<td class="coverFnHi">31195</td>
|
||||
<td class="coverFnHi">31151</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Date:</td>
|
||||
<td class="headerValue">2015-11-20</td>
|
||||
<td class="headerValue">2016-01-09</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntry">18</td>
|
||||
|
|
@ -89,28 +89,28 @@
|
|||
<span class="lineNum"> 27 </span> : */
|
||||
<a name="28"><span class="lineNum"> 28 </span> : unsigned long long seed = 0;</a>
|
||||
<span class="lineNum"> 29 </span> :
|
||||
<span class="lineNum"> 30 </span><span class="lineCov"> 50988385 : unsigned rnd(unsigned max)</span>
|
||||
<span class="lineNum"> 30 </span><span class="lineCov"> 50969532 : unsigned rnd(unsigned max)</span>
|
||||
<span class="lineNum"> 31 </span> : {
|
||||
<span class="lineNum"> 32 </span><span class="lineCov"> 50988385 : seed = seed * 6364136223846793005LL + 1442695040888963407LL;</span>
|
||||
<span class="lineNum"> 32 </span><span class="lineCov"> 50969532 : seed = seed * 6364136223846793005LL + 1442695040888963407LL;</span>
|
||||
<span class="lineNum"> 33 </span> :
|
||||
<span class="lineNum"> 34 </span><span class="lineCov"> 50988385 : return (seed >> 32) % max;</span>
|
||||
<span class="lineNum"> 34 </span><span class="lineCov"> 50969532 : return (seed >> 32) % max;</span>
|
||||
<a name="35"><span class="lineNum"> 35 </span> : }</a>
|
||||
<span class="lineNum"> 36 </span> :
|
||||
<span class="lineNum"> 37 </span><span class="lineCov"> 50578180 : unsigned rndnz(unsigned max)</span>
|
||||
<span class="lineNum"> 37 </span><span class="lineCov"> 50559223 : unsigned rndnz(unsigned max)</span>
|
||||
<span class="lineNum"> 38 </span> : {
|
||||
<span class="lineNum"> 39 </span><span class="lineCov"> 50578180 : if (max <= 1)</span>
|
||||
<span class="lineNum"> 39 </span><span class="lineCov"> 50559223 : if (max <= 1)</span>
|
||||
<span class="lineNum"> 40 </span><span class="lineCov"> 2831 : return 1;</span>
|
||||
<span class="lineNum"> 41 </span> : else
|
||||
<span class="lineNum"> 42 </span><span class="lineCov"> 50575349 : return rnd(max - 1) + 1;</span>
|
||||
<span class="lineNum"> 42 </span><span class="lineCov"> 50556392 : return rnd(max - 1) + 1;</span>
|
||||
<a name="43"><span class="lineNum"> 43 </span> : }</a>
|
||||
<span class="lineNum"> 44 </span> :
|
||||
<span class="lineNum"> 45 </span><span class="lineCov"> 31195 : void rndnz_range(unsigned char* data, int size)</span>
|
||||
<span class="lineNum"> 45 </span><span class="lineCov"> 31151 : void rndnz_range(unsigned char* data, int size)</span>
|
||||
<span class="lineNum"> 46 </span> : {
|
||||
<span class="lineNum"> 47 </span> : int i;
|
||||
<span class="lineNum"> 48 </span> :
|
||||
<span class="lineNum"> 49 </span><span class="lineCov"> 50604116 : for (i = 0; i < size; ++i)</span>
|
||||
<span class="lineNum"> 50 </span><span class="lineCov"> 50572921 : data[i] = rndnz(256);</span>
|
||||
<a name="51"><span class="lineNum"> 51 </span><span class="lineCov"> 31195 : }</span></a>
|
||||
<span class="lineNum"> 49 </span><span class="lineCov"> 50585115 : for (i = 0; i < size; ++i)</span>
|
||||
<span class="lineNum"> 50 </span><span class="lineCov"> 50553964 : data[i] = rndnz(256);</span>
|
||||
<a name="51"><span class="lineNum"> 51 </span><span class="lineCov"> 31151 : }</span></a>
|
||||
<span class="lineNum"> 52 </span> :
|
||||
<span class="lineNum"> 53 </span><span class="lineCov"> 1821 : void rndnz_damage(unsigned char* data, int size)</span>
|
||||
<span class="lineNum"> 54 </span> : {
|
||||
|
|
@ -131,23 +131,23 @@
|
|||
<span class="lineNum"> 69 </span> : char CHARSET[] = "qwertyuiopasdfghjklzxcvbnm1234567890 .-+";
|
||||
<a name="70"><span class="lineNum"> 70 </span> : #define CHARSET_LEN (sizeof(CHARSET) - 1)</a>
|
||||
<span class="lineNum"> 71 </span> :
|
||||
<span class="lineNum"> 72 </span><span class="lineCov"> 26824 : void rnd_name(char* file)</span>
|
||||
<span class="lineNum"> 72 </span><span class="lineCov"> 26849 : void rnd_name(char* file)</span>
|
||||
<span class="lineNum"> 73 </span> : {
|
||||
<span class="lineNum"> 74 </span><span class="lineCov"> 26824 : int l = 1 + rnd(20);</span>
|
||||
<span class="lineNum"> 74 </span><span class="lineCov"> 26849 : int l = 1 + rnd(20);</span>
|
||||
<span class="lineNum"> 75 </span> :
|
||||
<span class="lineNum"> 76 </span><span class="lineCov"> 335360 : while (l) {</span>
|
||||
<span class="lineNum"> 77 </span><span class="lineCov"> 281712 : *file++ = CHARSET[rnd(CHARSET_LEN)];</span>
|
||||
<span class="lineNum"> 78 </span><span class="lineCov"> 281712 : --l;</span>
|
||||
<span class="lineNum"> 76 </span><span class="lineCov"> 335469 : while (l) {</span>
|
||||
<span class="lineNum"> 77 </span><span class="lineCov"> 281771 : *file++ = CHARSET[rnd(CHARSET_LEN)];</span>
|
||||
<span class="lineNum"> 78 </span><span class="lineCov"> 281771 : --l;</span>
|
||||
<span class="lineNum"> 79 </span> : }
|
||||
<span class="lineNum"> 80 </span><span class="lineCov"> 26824 : *file = 0;</span>
|
||||
<span class="lineNum"> 81 </span><span class="lineCov"> 26824 : }</span>
|
||||
<span class="lineNum"> 80 </span><span class="lineCov"> 26849 : *file = 0;</span>
|
||||
<span class="lineNum"> 81 </span><span class="lineCov"> 26849 : }</span>
|
||||
<span class="lineNum"> 82 </span> :
|
||||
<span class="lineNum"> 83 </span> : /****************************************************************************/
|
||||
<a name="84"><span class="lineNum"> 84 </span> : /* file */</a>
|
||||
<span class="lineNum"> 85 </span> :
|
||||
<span class="lineNum"> 86 </span><span class="lineCov"> 146608 : int file_cmp(const void* a, const void* b)</span>
|
||||
<span class="lineNum"> 86 </span><span class="lineCov"> 146593 : int file_cmp(const void* a, const void* b)</span>
|
||||
<span class="lineNum"> 87 </span> : {
|
||||
<span class="lineNum"> 88 </span><span class="lineCov"> 146608 : return strcmp(a, b);</span>
|
||||
<span class="lineNum"> 88 </span><span class="lineCov"> 146593 : return strcmp(a, b);</span>
|
||||
<a name="89"><span class="lineNum"> 89 </span> : }</a>
|
||||
<span class="lineNum"> 90 </span> :
|
||||
<span class="lineNum"> 91 </span><span class="lineCov"> 1821 : int fallback(int f, struct stat* st)</span>
|
||||
|
|
@ -259,11 +259,11 @@
|
|||
<span class="lineNum"> 197 </span> : * Create a symlink.
|
||||
<a name="198"><span class="lineNum"> 198 </span> : * - If the file already exists, it's removed.</a>
|
||||
<span class="lineNum"> 199 </span> : */
|
||||
<span class="lineNum"> 200 </span><span class="lineCov"> 915 : void cmd_generate_symlink(const char* path, const char* linkto)</span>
|
||||
<span class="lineNum"> 200 </span><span class="lineCov"> 940 : void cmd_generate_symlink(const char* path, const char* linkto)</span>
|
||||
<span class="lineNum"> 201 </span> : {
|
||||
<span class="lineNum"> 202 </span> : /* remove the existing file/symlink if any */
|
||||
<span class="lineNum"> 203 </span><span class="lineCov"> 915 : if (remove(path) != 0) {</span>
|
||||
<span class="lineNum"> 204 </span><span class="lineCov"> 894 : if (errno != ENOENT) {</span>
|
||||
<span class="lineNum"> 203 </span><span class="lineCov"> 940 : if (remove(path) != 0) {</span>
|
||||
<span class="lineNum"> 204 </span><span class="lineCov"> 919 : if (errno != ENOENT) {</span>
|
||||
<span class="lineNum"> 205 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 206 </span> : log_fatal("Error removing file %s\n", path);
|
||||
<span class="lineNum"> 207 </span> : exit(EXIT_FAILURE);
|
||||
|
|
@ -271,13 +271,13 @@
|
|||
<span class="lineNum"> 209 </span> : }
|
||||
<span class="lineNum"> 210 </span> : }
|
||||
<span class="lineNum"> 211 </span> :
|
||||
<span class="lineNum"> 212 </span><span class="lineCov"> 915 : if (symlink(linkto, path) != 0) {</span>
|
||||
<span class="lineNum"> 212 </span><span class="lineCov"> 940 : if (symlink(linkto, path) != 0) {</span>
|
||||
<span class="lineNum"> 213 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 214 </span> : log_fatal("Error writing symlink %s\n", path);
|
||||
<span class="lineNum"> 215 </span> : exit(EXIT_FAILURE);
|
||||
<span class="lineNum"> 216 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 217 </span> : }
|
||||
<span class="lineNum"> 218 </span><span class="lineCov"> 915 : }</span>
|
||||
<span class="lineNum"> 218 </span><span class="lineCov"> 940 : }</span>
|
||||
<span class="lineNum"> 219 </span> :
|
||||
<span class="lineNum"> 220 </span> : /**
|
||||
<a name="221"><span class="lineNum"> 221 </span> : * Create a file or a symlink with a random name.</a>
|
||||
|
|
@ -350,68 +350,68 @@
|
|||
<span class="lineNum"> 288 </span> : * - The written data may be equal or not at the already existing one.
|
||||
<a name="289"><span class="lineNum"> 289 </span> : * - If it's a symlink nothing is done.</a>
|
||||
<span class="lineNum"> 290 </span> : */
|
||||
<span class="lineNum"> 291 </span><span class="lineCov"> 4703 : void cmd_write(const char* path, int size)</span>
|
||||
<span class="lineNum"> 291 </span><span class="lineCov"> 4719 : void cmd_write(const char* path, int size)</span>
|
||||
<span class="lineNum"> 292 </span> : {
|
||||
<span class="lineNum"> 293 </span> : struct stat st;
|
||||
<span class="lineNum"> 294 </span> :
|
||||
<span class="lineNum"> 295 </span><span class="lineCov"> 4703 : if (lstat(path, &st) != 0) {</span>
|
||||
<span class="lineNum"> 295 </span><span class="lineCov"> 4719 : if (lstat(path, &st) != 0) {</span>
|
||||
<span class="lineNum"> 296 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 297 </span> : log_fatal("Error accessing %s\n", path);
|
||||
<span class="lineNum"> 298 </span> : exit(EXIT_FAILURE);
|
||||
<span class="lineNum"> 299 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 300 </span> : }
|
||||
<span class="lineNum"> 301 </span> :
|
||||
<span class="lineNum"> 302 </span><span class="lineCov"> 4703 : if (S_ISREG(st.st_mode)) {</span>
|
||||
<span class="lineNum"> 302 </span><span class="lineCov"> 4719 : if (S_ISREG(st.st_mode)) {</span>
|
||||
<span class="lineNum"> 303 </span> : unsigned char* data;
|
||||
<span class="lineNum"> 304 </span> : off_t off;
|
||||
<span class="lineNum"> 305 </span> : int f;
|
||||
<span class="lineNum"> 306 </span> :
|
||||
<span class="lineNum"> 307 </span> : /* not over the end */
|
||||
<span class="lineNum"> 308 </span><span class="lineCov"> 4676 : if (size > st.st_size)</span>
|
||||
<span class="lineNum"> 309 </span><span class="lineCov"> 179 : size = st.st_size;</span>
|
||||
<span class="lineNum"> 308 </span><span class="lineCov"> 4692 : if (size > st.st_size)</span>
|
||||
<span class="lineNum"> 309 </span><span class="lineCov"> 175 : size = st.st_size;</span>
|
||||
<span class="lineNum"> 310 </span> :
|
||||
<span class="lineNum"> 311 </span> : /* start at random position inside the file */
|
||||
<span class="lineNum"> 312 </span><span class="lineCov"> 4676 : if (size < st.st_size)</span>
|
||||
<span class="lineNum"> 313 </span><span class="lineCov"> 4496 : off = rnd(st.st_size - size);</span>
|
||||
<span class="lineNum"> 312 </span><span class="lineCov"> 4692 : if (size < st.st_size)</span>
|
||||
<span class="lineNum"> 313 </span><span class="lineCov"> 4517 : off = rnd(st.st_size - size);</span>
|
||||
<span class="lineNum"> 314 </span> : else
|
||||
<span class="lineNum"> 315 </span><span class="lineCov"> 180 : off = 0;</span>
|
||||
<span class="lineNum"> 315 </span><span class="lineCov"> 175 : off = 0;</span>
|
||||
<span class="lineNum"> 316 </span> :
|
||||
<span class="lineNum"> 317 </span><span class="lineCov"> 4676 : data = malloc(size);</span>
|
||||
<span class="lineNum"> 317 </span><span class="lineCov"> 4692 : data = malloc(size);</span>
|
||||
<span class="lineNum"> 318 </span> :
|
||||
<span class="lineNum"> 319 </span><span class="lineCov"> 4676 : rndnz_range(data, size);</span>
|
||||
<span class="lineNum"> 319 </span><span class="lineCov"> 4692 : rndnz_range(data, size);</span>
|
||||
<span class="lineNum"> 320 </span> :
|
||||
<span class="lineNum"> 321 </span><span class="lineCov"> 4676 : f = open(path, O_WRONLY | O_BINARY | O_NOFOLLOW);</span>
|
||||
<span class="lineNum"> 322 </span><span class="lineCov"> 4676 : if (f < 0) {</span>
|
||||
<span class="lineNum"> 321 </span><span class="lineCov"> 4692 : f = open(path, O_WRONLY | O_BINARY | O_NOFOLLOW);</span>
|
||||
<span class="lineNum"> 322 </span><span class="lineCov"> 4692 : if (f < 0) {</span>
|
||||
<span class="lineNum"> 323 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 324 </span> : log_fatal("Error creating file %s\n", path);
|
||||
<span class="lineNum"> 325 </span> : exit(EXIT_FAILURE);
|
||||
<span class="lineNum"> 326 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 327 </span> : }
|
||||
<span class="lineNum"> 328 </span> :
|
||||
<span class="lineNum"> 329 </span><span class="lineCov"> 4676 : if (lseek(f, off, SEEK_SET) != off) {</span>
|
||||
<span class="lineNum"> 329 </span><span class="lineCov"> 4692 : if (lseek(f, off, SEEK_SET) != off) {</span>
|
||||
<span class="lineNum"> 330 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 331 </span> : log_fatal("Error seeking file %s\n", path);
|
||||
<span class="lineNum"> 332 </span> : exit(EXIT_FAILURE);
|
||||
<span class="lineNum"> 333 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 334 </span> : }
|
||||
<span class="lineNum"> 335 </span> :
|
||||
<span class="lineNum"> 336 </span><span class="lineCov"> 4676 : if (write(f, data, size) != size) {</span>
|
||||
<span class="lineNum"> 336 </span><span class="lineCov"> 4692 : if (write(f, data, size) != size) {</span>
|
||||
<span class="lineNum"> 337 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 338 </span> : log_fatal("Error writing file %s\n", path);
|
||||
<span class="lineNum"> 339 </span> : exit(EXIT_FAILURE);
|
||||
<span class="lineNum"> 340 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 341 </span> : }
|
||||
<span class="lineNum"> 342 </span> :
|
||||
<span class="lineNum"> 343 </span><span class="lineCov"> 4676 : if (close(f) != 0) {</span>
|
||||
<span class="lineNum"> 343 </span><span class="lineCov"> 4692 : if (close(f) != 0) {</span>
|
||||
<span class="lineNum"> 344 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 345 </span> : log_fatal("Error closing file %s\n", path);
|
||||
<span class="lineNum"> 346 </span> : exit(EXIT_FAILURE);
|
||||
<span class="lineNum"> 347 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 348 </span> : }
|
||||
<span class="lineNum"> 349 </span> :
|
||||
<span class="lineNum"> 350 </span><span class="lineCov"> 4676 : free(data);</span>
|
||||
<span class="lineNum"> 350 </span><span class="lineCov"> 4692 : free(data);</span>
|
||||
<span class="lineNum"> 351 </span> : }
|
||||
<span class="lineNum"> 352 </span><span class="lineCov"> 4703 : }</span>
|
||||
<span class="lineNum"> 352 </span><span class="lineCov"> 4719 : }</span>
|
||||
<span class="lineNum"> 353 </span> :
|
||||
<span class="lineNum"> 354 </span> : /**
|
||||
<span class="lineNum"> 355 </span> : * Damage a file.
|
||||
|
|
@ -518,50 +518,50 @@
|
|||
<span class="lineNum"> 456 </span> : * - The file must exist.
|
||||
<a name="457"><span class="lineNum"> 457 </span> : * - If it's a symlink nothing is done.</a>
|
||||
<span class="lineNum"> 458 </span> : */
|
||||
<span class="lineNum"> 459 </span><span class="lineCov"> 3252 : void cmd_append(const char* path, int size)</span>
|
||||
<span class="lineNum"> 459 </span><span class="lineCov"> 3192 : void cmd_append(const char* path, int size)</span>
|
||||
<span class="lineNum"> 460 </span> : {
|
||||
<span class="lineNum"> 461 </span> : struct stat st;
|
||||
<span class="lineNum"> 462 </span> :
|
||||
<span class="lineNum"> 463 </span><span class="lineCov"> 3252 : if (lstat(path, &st) != 0) {</span>
|
||||
<span class="lineNum"> 463 </span><span class="lineCov"> 3192 : if (lstat(path, &st) != 0) {</span>
|
||||
<span class="lineNum"> 464 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 465 </span> : log_fatal("Error accessing %s\n", path);
|
||||
<span class="lineNum"> 466 </span> : exit(EXIT_FAILURE);
|
||||
<span class="lineNum"> 467 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 468 </span> : }
|
||||
<span class="lineNum"> 469 </span> :
|
||||
<span class="lineNum"> 470 </span><span class="lineCov"> 3252 : if (S_ISREG(st.st_mode)) {</span>
|
||||
<span class="lineNum"> 470 </span><span class="lineCov"> 3192 : if (S_ISREG(st.st_mode)) {</span>
|
||||
<span class="lineNum"> 471 </span> : unsigned char* data;
|
||||
<span class="lineNum"> 472 </span> : int f;
|
||||
<span class="lineNum"> 473 </span> :
|
||||
<span class="lineNum"> 474 </span><span class="lineCov"> 3252 : data = malloc(size);</span>
|
||||
<span class="lineNum"> 474 </span><span class="lineCov"> 3192 : data = malloc(size);</span>
|
||||
<span class="lineNum"> 475 </span> :
|
||||
<span class="lineNum"> 476 </span><span class="lineCov"> 3252 : rndnz_range(data, size);</span>
|
||||
<span class="lineNum"> 476 </span><span class="lineCov"> 3192 : rndnz_range(data, size);</span>
|
||||
<span class="lineNum"> 477 </span> :
|
||||
<span class="lineNum"> 478 </span><span class="lineCov"> 3252 : f = open(path, O_WRONLY | O_APPEND | O_BINARY | O_NOFOLLOW);</span>
|
||||
<span class="lineNum"> 479 </span><span class="lineCov"> 3252 : if (f < 0) {</span>
|
||||
<span class="lineNum"> 478 </span><span class="lineCov"> 3192 : f = open(path, O_WRONLY | O_APPEND | O_BINARY | O_NOFOLLOW);</span>
|
||||
<span class="lineNum"> 479 </span><span class="lineCov"> 3192 : if (f < 0) {</span>
|
||||
<span class="lineNum"> 480 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 481 </span> : log_fatal("Error opening file %s\n", path);
|
||||
<span class="lineNum"> 482 </span> : exit(EXIT_FAILURE);
|
||||
<span class="lineNum"> 483 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 484 </span> : }
|
||||
<span class="lineNum"> 485 </span> :
|
||||
<span class="lineNum"> 486 </span><span class="lineCov"> 3252 : if (write(f, data, size) != size) {</span>
|
||||
<span class="lineNum"> 486 </span><span class="lineCov"> 3192 : if (write(f, data, size) != size) {</span>
|
||||
<span class="lineNum"> 487 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 488 </span> : log_fatal("Error writing file %s\n", path);
|
||||
<span class="lineNum"> 489 </span> : exit(EXIT_FAILURE);
|
||||
<span class="lineNum"> 490 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 491 </span> : }
|
||||
<span class="lineNum"> 492 </span> :
|
||||
<span class="lineNum"> 493 </span><span class="lineCov"> 3252 : if (close(f) != 0) {</span>
|
||||
<span class="lineNum"> 493 </span><span class="lineCov"> 3192 : if (close(f) != 0) {</span>
|
||||
<span class="lineNum"> 494 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 495 </span> : log_fatal("Error closing file %s\n", path);
|
||||
<span class="lineNum"> 496 </span> : exit(EXIT_FAILURE);
|
||||
<span class="lineNum"> 497 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 498 </span> : }
|
||||
<span class="lineNum"> 499 </span> :
|
||||
<span class="lineNum"> 500 </span><span class="lineCov"> 3252 : free(data);</span>
|
||||
<span class="lineNum"> 500 </span><span class="lineCov"> 3192 : free(data);</span>
|
||||
<span class="lineNum"> 501 </span> : }
|
||||
<span class="lineNum"> 502 </span><span class="lineCov"> 3252 : }</span>
|
||||
<span class="lineNum"> 502 </span><span class="lineCov"> 3192 : }</span>
|
||||
<span class="lineNum"> 503 </span> :
|
||||
<span class="lineNum"> 504 </span> : /**
|
||||
<span class="lineNum"> 505 </span> : * Truncate a file.
|
||||
|
|
@ -569,69 +569,69 @@
|
|||
<span class="lineNum"> 507 </span> : * - The file is NEVER truncated to 0.
|
||||
<a name="508"><span class="lineNum"> 508 </span> : * - If it's a symlink nothing is done.</a>
|
||||
<span class="lineNum"> 509 </span> : */
|
||||
<span class="lineNum"> 510 </span><span class="lineCov"> 3151 : void cmd_truncate(const char* path, int size)</span>
|
||||
<span class="lineNum"> 510 </span><span class="lineCov"> 3139 : void cmd_truncate(const char* path, int size)</span>
|
||||
<span class="lineNum"> 511 </span> : {
|
||||
<span class="lineNum"> 512 </span> : struct stat st;
|
||||
<span class="lineNum"> 513 </span> :
|
||||
<span class="lineNum"> 514 </span><span class="lineCov"> 3151 : if (lstat(path, &st) != 0) {</span>
|
||||
<span class="lineNum"> 514 </span><span class="lineCov"> 3139 : if (lstat(path, &st) != 0) {</span>
|
||||
<span class="lineNum"> 515 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 516 </span> : log_fatal("Error accessing %s\n", path);
|
||||
<span class="lineNum"> 517 </span> : exit(EXIT_FAILURE);
|
||||
<span class="lineNum"> 518 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 519 </span> : }
|
||||
<span class="lineNum"> 520 </span> :
|
||||
<span class="lineNum"> 521 </span><span class="lineCov"> 3151 : if (S_ISREG(st.st_mode)) {</span>
|
||||
<span class="lineNum"> 521 </span><span class="lineCov"> 3139 : if (S_ISREG(st.st_mode)) {</span>
|
||||
<span class="lineNum"> 522 </span> : off_t off;
|
||||
<span class="lineNum"> 523 </span> : int f;
|
||||
<span class="lineNum"> 524 </span> :
|
||||
<span class="lineNum"> 525 </span> : /* if file is empty, just rewrite it */
|
||||
<span class="lineNum"> 526 </span><span class="lineCov"> 3151 : if (st.st_size == 0) {</span>
|
||||
<span class="lineNum"> 527 </span><span class="lineCov"> 3 : size = 0;</span>
|
||||
<span class="lineNum"> 526 </span><span class="lineCov"> 3139 : if (st.st_size == 0) {</span>
|
||||
<span class="lineNum"> 527 </span><span class="lineCov"> 4 : size = 0;</span>
|
||||
<span class="lineNum"> 528 </span> : } else {
|
||||
<span class="lineNum"> 529 </span> : /* don't truncate files to 0 size to avoid ZERO file size protection */
|
||||
<span class="lineNum"> 530 </span><span class="lineCov"> 3148 : if (size >= st.st_size)</span>
|
||||
<span class="lineNum"> 531 </span><span class="lineCov"> 193 : size = st.st_size - 1;</span>
|
||||
<span class="lineNum"> 530 </span><span class="lineCov"> 3135 : if (size >= st.st_size)</span>
|
||||
<span class="lineNum"> 531 </span><span class="lineCov"> 211 : size = st.st_size - 1;</span>
|
||||
<span class="lineNum"> 532 </span> : }
|
||||
<span class="lineNum"> 533 </span> :
|
||||
<span class="lineNum"> 534 </span><span class="lineCov"> 3151 : off = st.st_size - size;</span>
|
||||
<span class="lineNum"> 534 </span><span class="lineCov"> 3139 : off = st.st_size - size;</span>
|
||||
<span class="lineNum"> 535 </span> :
|
||||
<span class="lineNum"> 536 </span><span class="lineCov"> 3151 : f = open(path, O_WRONLY | O_BINARY | O_NOFOLLOW);</span>
|
||||
<span class="lineNum"> 537 </span><span class="lineCov"> 3151 : if (f < 0) {</span>
|
||||
<span class="lineNum"> 536 </span><span class="lineCov"> 3139 : f = open(path, O_WRONLY | O_BINARY | O_NOFOLLOW);</span>
|
||||
<span class="lineNum"> 537 </span><span class="lineCov"> 3139 : if (f < 0) {</span>
|
||||
<span class="lineNum"> 538 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 539 </span> : log_fatal("Error opening file %s\n", path);
|
||||
<span class="lineNum"> 540 </span> : exit(EXIT_FAILURE);
|
||||
<span class="lineNum"> 541 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 542 </span> : }
|
||||
<span class="lineNum"> 543 </span> :
|
||||
<span class="lineNum"> 544 </span><span class="lineCov"> 3151 : if (ftruncate(f, off) != 0) {</span>
|
||||
<span class="lineNum"> 544 </span><span class="lineCov"> 3139 : if (ftruncate(f, off) != 0) {</span>
|
||||
<span class="lineNum"> 545 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 546 </span> : log_fatal("Error truncating file %s\n", path);
|
||||
<span class="lineNum"> 547 </span> : exit(EXIT_FAILURE);
|
||||
<span class="lineNum"> 548 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 549 </span> : }
|
||||
<span class="lineNum"> 550 </span> :
|
||||
<span class="lineNum"> 551 </span><span class="lineCov"> 3151 : if (close(f) != 0) {</span>
|
||||
<span class="lineNum"> 551 </span><span class="lineCov"> 3139 : if (close(f) != 0) {</span>
|
||||
<span class="lineNum"> 552 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 553 </span> : log_fatal("Error closing file %s\n", path);
|
||||
<span class="lineNum"> 554 </span> : exit(EXIT_FAILURE);
|
||||
<span class="lineNum"> 555 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 556 </span> : }
|
||||
<span class="lineNum"> 557 </span> : }
|
||||
<span class="lineNum"> 558 </span><span class="lineCov"> 3151 : }</span>
|
||||
<span class="lineNum"> 558 </span><span class="lineCov"> 3139 : }</span>
|
||||
<span class="lineNum"> 559 </span> :
|
||||
<span class="lineNum"> 560 </span> : /**
|
||||
<span class="lineNum"> 561 </span> : * Delete a file.
|
||||
<a name="562"><span class="lineNum"> 562 </span> : * - The file must exist.</a>
|
||||
<span class="lineNum"> 563 </span> : */
|
||||
<span class="lineNum"> 564 </span><span class="lineCov"> 3155 : void cmd_delete(const char* path)</span>
|
||||
<span class="lineNum"> 564 </span><span class="lineCov"> 3209 : void cmd_delete(const char* path)</span>
|
||||
<span class="lineNum"> 565 </span> : {
|
||||
<span class="lineNum"> 566 </span><span class="lineCov"> 3155 : if (remove(path) != 0) {</span>
|
||||
<span class="lineNum"> 566 </span><span class="lineCov"> 3209 : if (remove(path) != 0) {</span>
|
||||
<span class="lineNum"> 567 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 568 </span> : log_fatal("Error removing %s\n", path);
|
||||
<span class="lineNum"> 569 </span> : exit(EXIT_FAILURE);
|
||||
<span class="lineNum"> 570 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 571 </span> : }
|
||||
<span class="lineNum"> 572 </span><span class="lineCov"> 3155 : }</span>
|
||||
<span class="lineNum"> 572 </span><span class="lineCov"> 3209 : }</span>
|
||||
<span class="lineNum"> 573 </span> :
|
||||
<span class="lineNum"> 574 </span> : /**
|
||||
<span class="lineNum"> 575 </span> : * Change a file. Or deleted/truncated/append/created.
|
||||
|
|
@ -642,20 +642,20 @@
|
|||
<span class="lineNum"> 580 </span> : struct stat st;
|
||||
<span class="lineNum"> 581 </span> :
|
||||
<span class="lineNum"> 582 </span><span class="lineCov"> 13128 : if (!size)</span>
|
||||
<span class="lineNum"> 583 </span><span class="lineCov"> 13152 : return;</span>
|
||||
<span class="lineNum"> 583 </span><span class="lineCov"> 13153 : return;</span>
|
||||
<span class="lineNum"> 584 </span> :
|
||||
<span class="lineNum"> 585 </span><span class="lineCov"> 13104 : if (lstat(path, &st) != 0) {</span>
|
||||
<span class="lineNum"> 585 </span><span class="lineCov"> 13103 : if (lstat(path, &st) != 0) {</span>
|
||||
<span class="lineNum"> 586 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 587 </span> : log_fatal("Error accessing %s\n", path);
|
||||
<span class="lineNum"> 588 </span> : exit(EXIT_FAILURE);
|
||||
<span class="lineNum"> 589 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 590 </span> : }
|
||||
<span class="lineNum"> 591 </span> :
|
||||
<span class="lineNum"> 592 </span><span class="lineCov"> 13104 : if (S_ISLNK(st.st_mode)) {</span>
|
||||
<span class="lineNum"> 592 </span><span class="lineCov"> 13103 : if (S_ISLNK(st.st_mode)) {</span>
|
||||
<span class="lineNum"> 593 </span> : /* symlink */
|
||||
<span class="lineNum"> 594 </span><span class="lineCov"> 392 : if (rnd(2) == 0) {</span>
|
||||
<span class="lineNum"> 594 </span><span class="lineCov"> 393 : if (rnd(2) == 0) {</span>
|
||||
<span class="lineNum"> 595 </span> : /* delete */
|
||||
<span class="lineNum"> 596 </span><span class="lineCov"> 210 : if (remove(path) != 0) {</span>
|
||||
<span class="lineNum"> 596 </span><span class="lineCov"> 186 : if (remove(path) != 0) {</span>
|
||||
<span class="lineNum"> 597 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 598 </span> : log_fatal("Error removing %s\n", path);
|
||||
<span class="lineNum"> 599 </span> : exit(EXIT_FAILURE);
|
||||
|
|
@ -665,30 +665,30 @@
|
|||
<span class="lineNum"> 603 </span> : /* recreate */
|
||||
<span class="lineNum"> 604 </span> : char linkto[PATH_MAX];
|
||||
<span class="lineNum"> 605 </span> :
|
||||
<span class="lineNum"> 606 </span><span class="lineCov"> 182 : if (remove(path) != 0) {</span>
|
||||
<span class="lineNum"> 606 </span><span class="lineCov"> 207 : if (remove(path) != 0) {</span>
|
||||
<span class="lineNum"> 607 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 608 </span> : log_fatal("Error removing %s\n", path);
|
||||
<span class="lineNum"> 609 </span> : exit(EXIT_FAILURE);
|
||||
<span class="lineNum"> 610 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 611 </span> : }
|
||||
<span class="lineNum"> 612 </span> :
|
||||
<span class="lineNum"> 613 </span><span class="lineCov"> 182 : rnd_name(linkto);</span>
|
||||
<span class="lineNum"> 613 </span><span class="lineCov"> 207 : rnd_name(linkto);</span>
|
||||
<span class="lineNum"> 614 </span> :
|
||||
<span class="lineNum"> 615 </span><span class="lineCov"> 182 : cmd_generate_symlink(path, linkto);</span>
|
||||
<span class="lineNum"> 615 </span><span class="lineCov"> 207 : cmd_generate_symlink(path, linkto);</span>
|
||||
<span class="lineNum"> 616 </span> : }
|
||||
<span class="lineNum"> 617 </span><span class="lineCov"> 12712 : } else if (S_ISREG(st.st_mode)) {</span>
|
||||
<span class="lineNum"> 617 </span><span class="lineCov"> 12710 : } else if (S_ISREG(st.st_mode)) {</span>
|
||||
<span class="lineNum"> 618 </span> : int r;
|
||||
<span class="lineNum"> 619 </span> :
|
||||
<span class="lineNum"> 620 </span><span class="lineCov"> 12712 : r = rnd(4);</span>
|
||||
<span class="lineNum"> 620 </span><span class="lineCov"> 12710 : r = rnd(4);</span>
|
||||
<span class="lineNum"> 621 </span> :
|
||||
<span class="lineNum"> 622 </span><span class="lineCov"> 12712 : if (r == 0) {</span>
|
||||
<span class="lineNum"> 623 </span><span class="lineCov"> 3154 : cmd_write(path, size);</span>
|
||||
<span class="lineNum"> 624 </span><span class="lineCov"> 9558 : } else if (r == 1) {</span>
|
||||
<span class="lineNum"> 625 </span><span class="lineCov"> 3252 : cmd_append(path, size);</span>
|
||||
<span class="lineNum"> 626 </span><span class="lineCov"> 6306 : } else if (r == 2) {</span>
|
||||
<span class="lineNum"> 627 </span><span class="lineCov"> 3151 : cmd_truncate(path, size);</span>
|
||||
<span class="lineNum"> 622 </span><span class="lineCov"> 12710 : if (r == 0) {</span>
|
||||
<span class="lineNum"> 623 </span><span class="lineCov"> 3170 : cmd_write(path, size);</span>
|
||||
<span class="lineNum"> 624 </span><span class="lineCov"> 9540 : } else if (r == 1) {</span>
|
||||
<span class="lineNum"> 625 </span><span class="lineCov"> 3192 : cmd_append(path, size);</span>
|
||||
<span class="lineNum"> 626 </span><span class="lineCov"> 6348 : } else if (r == 2) {</span>
|
||||
<span class="lineNum"> 627 </span><span class="lineCov"> 3139 : cmd_truncate(path, size);</span>
|
||||
<span class="lineNum"> 628 </span> : } else {
|
||||
<span class="lineNum"> 629 </span><span class="lineCov"> 3155 : cmd_delete(path);</span>
|
||||
<span class="lineNum"> 629 </span><span class="lineCov"> 3209 : cmd_delete(path);</span>
|
||||
<span class="lineNum"> 630 </span> : }
|
||||
<span class="lineNum"> 631 </span> : }
|
||||
<a name="632"><span class="lineNum"> 632 </span> : }</a>
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Date:</td>
|
||||
<td class="headerValue">2015-11-20</td>
|
||||
<td class="headerValue">2016-01-09</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntry">2</td>
|
||||
|
|
@ -61,11 +61,11 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="murmur3.c.gcov.html#30">fmix32</a></td>
|
||||
<td class="coverFnHi">9010328</td>
|
||||
<td class="coverFnHi">7745044</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="murmur3.c.gcov.html#76">MurmurHash3_x86_128</a></td>
|
||||
<td class="coverFnHi">2252582</td>
|
||||
<td class="coverFnHi">1936261</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Date:</td>
|
||||
<td class="headerValue">2015-11-20</td>
|
||||
<td class="headerValue">2016-01-09</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntry">2</td>
|
||||
|
|
@ -61,11 +61,11 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="murmur3.c.gcov.html#76">MurmurHash3_x86_128</a></td>
|
||||
<td class="coverFnHi">2252582</td>
|
||||
<td class="coverFnHi">1936261</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="murmur3.c.gcov.html#30">fmix32</a></td>
|
||||
<td class="coverFnHi">9010328</td>
|
||||
<td class="coverFnHi">7745044</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Date:</td>
|
||||
<td class="headerValue">2015-11-20</td>
|
||||
<td class="headerValue">2016-01-09</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntry">2</td>
|
||||
|
|
@ -91,14 +91,14 @@
|
|||
<span class="lineNum"> 29 </span> : // domain. The author hereby disclaims copyright to this source code.
|
||||
<a name="30"><span class="lineNum"> 30 </span> : </a>
|
||||
<span class="lineNum"> 31 </span> : /* Finalization mix - force all bits of a hash block to avalanche */
|
||||
<span class="lineNum"> 32 </span><span class="lineCov"> 9010328 : static inline uint32_t fmix32(uint32_t h)</span>
|
||||
<span class="lineNum"> 32 </span><span class="lineCov"> 7745044 : static inline uint32_t fmix32(uint32_t h)</span>
|
||||
<span class="lineNum"> 33 </span> : {
|
||||
<span class="lineNum"> 34 </span><span class="lineCov"> 9010328 : h ^= h >> 16;</span>
|
||||
<span class="lineNum"> 35 </span><span class="lineCov"> 9010328 : h *= 0x85ebca6b;</span>
|
||||
<span class="lineNum"> 36 </span><span class="lineCov"> 9010328 : h ^= h >> 13;</span>
|
||||
<span class="lineNum"> 37 </span><span class="lineCov"> 9010328 : h *= 0xc2b2ae35;</span>
|
||||
<span class="lineNum"> 38 </span><span class="lineCov"> 9010328 : h ^= h >> 16;</span>
|
||||
<span class="lineNum"> 39 </span><span class="lineCov"> 9010328 : return h;</span>
|
||||
<span class="lineNum"> 34 </span><span class="lineCov"> 7745044 : h ^= h >> 16;</span>
|
||||
<span class="lineNum"> 35 </span><span class="lineCov"> 7745044 : h *= 0x85ebca6b;</span>
|
||||
<span class="lineNum"> 36 </span><span class="lineCov"> 7745044 : h ^= h >> 13;</span>
|
||||
<span class="lineNum"> 37 </span><span class="lineCov"> 7745044 : h *= 0xc2b2ae35;</span>
|
||||
<span class="lineNum"> 38 </span><span class="lineCov"> 7745044 : h ^= h >> 16;</span>
|
||||
<span class="lineNum"> 39 </span><span class="lineCov"> 7745044 : return h;</span>
|
||||
<span class="lineNum"> 40 </span> : }
|
||||
<span class="lineNum"> 41 </span> :
|
||||
<span class="lineNum"> 42 </span> : /*
|
||||
|
|
@ -137,17 +137,17 @@
|
|||
<span class="lineNum"> 75 </span> : uint32_t c3 = 0x38b34ae5;
|
||||
<a name="76"><span class="lineNum"> 76 </span> : uint32_t c4 = 0xa1e38b93;</a>
|
||||
<span class="lineNum"> 77 </span> :
|
||||
<span class="lineNum"> 78 </span><span class="lineCov"> 2252582 : void MurmurHash3_x86_128(const void* data, size_t size, const uint8_t* seed, void* digest)</span>
|
||||
<span class="lineNum"> 78 </span><span class="lineCov"> 1936261 : void MurmurHash3_x86_128(const void* data, size_t size, const uint8_t* seed, void* digest)</span>
|
||||
<span class="lineNum"> 79 </span> : {
|
||||
<span class="lineNum"> 80 </span> : size_t nblocks;
|
||||
<span class="lineNum"> 81 </span> : const uint32_t* blocks;
|
||||
<span class="lineNum"> 82 </span> : const uint32_t* end;
|
||||
<span class="lineNum"> 83 </span> : size_t size_remainder;
|
||||
<span class="lineNum"> 84 </span> :
|
||||
<span class="lineNum"> 85 </span><span class="lineCov"> 2252582 : uint32_t h1 = ((const uint32_t*)seed)[0];</span>
|
||||
<span class="lineNum"> 86 </span><span class="lineCov"> 2252582 : uint32_t h2 = ((const uint32_t*)seed)[1];</span>
|
||||
<span class="lineNum"> 87 </span><span class="lineCov"> 2252582 : uint32_t h3 = ((const uint32_t*)seed)[2];</span>
|
||||
<span class="lineNum"> 88 </span><span class="lineCov"> 2252582 : uint32_t h4 = ((const uint32_t*)seed)[3];</span>
|
||||
<span class="lineNum"> 85 </span><span class="lineCov"> 1936261 : uint32_t h1 = ((const uint32_t*)seed)[0];</span>
|
||||
<span class="lineNum"> 86 </span><span class="lineCov"> 1936261 : uint32_t h2 = ((const uint32_t*)seed)[1];</span>
|
||||
<span class="lineNum"> 87 </span><span class="lineCov"> 1936261 : uint32_t h3 = ((const uint32_t*)seed)[2];</span>
|
||||
<span class="lineNum"> 88 </span><span class="lineCov"> 1936261 : uint32_t h4 = ((const uint32_t*)seed)[3];</span>
|
||||
<span class="lineNum"> 89 </span> :
|
||||
<span class="lineNum"> 90 </span> : #if WORDS_BIGENDIAN
|
||||
<span class="lineNum"> 91 </span> : h1 = util_swap32(h1);
|
||||
|
|
@ -156,16 +156,16 @@
|
|||
<span class="lineNum"> 94 </span> : h4 = util_swap32(h4);
|
||||
<span class="lineNum"> 95 </span> : #endif
|
||||
<span class="lineNum"> 96 </span> :
|
||||
<span class="lineNum"> 97 </span><span class="lineCov"> 2252582 : nblocks = size / 16;</span>
|
||||
<span class="lineNum"> 98 </span><span class="lineCov"> 2252582 : blocks = data;</span>
|
||||
<span class="lineNum"> 99 </span><span class="lineCov"> 2252582 : end = blocks + nblocks * 4;</span>
|
||||
<span class="lineNum"> 97 </span><span class="lineCov"> 1936261 : nblocks = size / 16;</span>
|
||||
<span class="lineNum"> 98 </span><span class="lineCov"> 1936261 : blocks = data;</span>
|
||||
<span class="lineNum"> 99 </span><span class="lineCov"> 1936261 : end = blocks + nblocks * 4;</span>
|
||||
<span class="lineNum"> 100 </span> :
|
||||
<span class="lineNum"> 101 </span> : /* body */
|
||||
<span class="lineNum"> 102 </span><span class="lineCov"> 119857435 : while (blocks < end) {</span>
|
||||
<span class="lineNum"> 103 </span><span class="lineCov"> 115352271 : uint32_t k1 = blocks[0];</span>
|
||||
<span class="lineNum"> 104 </span><span class="lineCov"> 115352271 : uint32_t k2 = blocks[1];</span>
|
||||
<span class="lineNum"> 105 </span><span class="lineCov"> 115352271 : uint32_t k3 = blocks[2];</span>
|
||||
<span class="lineNum"> 106 </span><span class="lineCov"> 115352271 : uint32_t k4 = blocks[3];</span>
|
||||
<span class="lineNum"> 102 </span><span class="lineCov"> 103248950 : while (blocks < end) {</span>
|
||||
<span class="lineNum"> 103 </span><span class="lineCov"> 99376428 : uint32_t k1 = blocks[0];</span>
|
||||
<span class="lineNum"> 104 </span><span class="lineCov"> 99376428 : uint32_t k2 = blocks[1];</span>
|
||||
<span class="lineNum"> 105 </span><span class="lineCov"> 99376428 : uint32_t k3 = blocks[2];</span>
|
||||
<span class="lineNum"> 106 </span><span class="lineCov"> 99376428 : uint32_t k4 = blocks[3];</span>
|
||||
<span class="lineNum"> 107 </span> :
|
||||
<span class="lineNum"> 108 </span> : #if WORDS_BIGENDIAN
|
||||
<span class="lineNum"> 109 </span> : k1 = util_swap32(k1);
|
||||
|
|
@ -174,71 +174,71 @@
|
|||
<span class="lineNum"> 112 </span> : k4 = util_swap32(k4);
|
||||
<span class="lineNum"> 113 </span> : #endif
|
||||
<span class="lineNum"> 114 </span> :
|
||||
<span class="lineNum"> 115 </span><span class="lineCov"> 115352271 : k1 *= c1; k1 = util_rotl32(k1, 15); k1 *= c2; h1 ^= k1;</span>
|
||||
<span class="lineNum"> 115 </span><span class="lineCov"> 99376428 : k1 *= c1; k1 = util_rotl32(k1, 15); k1 *= c2; h1 ^= k1;</span>
|
||||
<span class="lineNum"> 116 </span> :
|
||||
<span class="lineNum"> 117 </span><span class="lineCov"> 115352271 : h1 = util_rotl32(h1, 19); h1 += h2; h1 = h1 * 5 + 0x561ccd1b;</span>
|
||||
<span class="lineNum"> 117 </span><span class="lineCov"> 99376428 : h1 = util_rotl32(h1, 19); h1 += h2; h1 = h1 * 5 + 0x561ccd1b;</span>
|
||||
<span class="lineNum"> 118 </span> :
|
||||
<span class="lineNum"> 119 </span><span class="lineCov"> 115352271 : k2 *= c2; k2 = util_rotl32(k2, 16); k2 *= c3; h2 ^= k2;</span>
|
||||
<span class="lineNum"> 119 </span><span class="lineCov"> 99376428 : k2 *= c2; k2 = util_rotl32(k2, 16); k2 *= c3; h2 ^= k2;</span>
|
||||
<span class="lineNum"> 120 </span> :
|
||||
<span class="lineNum"> 121 </span><span class="lineCov"> 115352271 : h2 = util_rotl32(h2, 17); h2 += h3; h2 = h2 * 5 + 0x0bcaa747;</span>
|
||||
<span class="lineNum"> 121 </span><span class="lineCov"> 99376428 : h2 = util_rotl32(h2, 17); h2 += h3; h2 = h2 * 5 + 0x0bcaa747;</span>
|
||||
<span class="lineNum"> 122 </span> :
|
||||
<span class="lineNum"> 123 </span><span class="lineCov"> 115352271 : k3 *= c3; k3 = util_rotl32(k3, 17); k3 *= c4; h3 ^= k3;</span>
|
||||
<span class="lineNum"> 123 </span><span class="lineCov"> 99376428 : k3 *= c3; k3 = util_rotl32(k3, 17); k3 *= c4; h3 ^= k3;</span>
|
||||
<span class="lineNum"> 124 </span> :
|
||||
<span class="lineNum"> 125 </span><span class="lineCov"> 115352271 : h3 = util_rotl32(h3, 15); h3 += h4; h3 = h3 * 5 + 0x96cd1c35;</span>
|
||||
<span class="lineNum"> 125 </span><span class="lineCov"> 99376428 : h3 = util_rotl32(h3, 15); h3 += h4; h3 = h3 * 5 + 0x96cd1c35;</span>
|
||||
<span class="lineNum"> 126 </span> :
|
||||
<span class="lineNum"> 127 </span><span class="lineCov"> 115352271 : k4 *= c4; k4 = util_rotl32(k4, 18); k4 *= c1; h4 ^= k4;</span>
|
||||
<span class="lineNum"> 127 </span><span class="lineCov"> 99376428 : k4 *= c4; k4 = util_rotl32(k4, 18); k4 *= c1; h4 ^= k4;</span>
|
||||
<span class="lineNum"> 128 </span> :
|
||||
<span class="lineNum"> 129 </span><span class="lineCov"> 115352271 : h4 = util_rotl32(h4, 13); h4 += h1; h4 = h4 * 5 + 0x32ac3b17;</span>
|
||||
<span class="lineNum"> 129 </span><span class="lineCov"> 99376428 : h4 = util_rotl32(h4, 13); h4 += h1; h4 = h4 * 5 + 0x32ac3b17;</span>
|
||||
<span class="lineNum"> 130 </span> :
|
||||
<span class="lineNum"> 131 </span><span class="lineCov"> 115352271 : blocks += 4;</span>
|
||||
<span class="lineNum"> 131 </span><span class="lineCov"> 99376428 : blocks += 4;</span>
|
||||
<span class="lineNum"> 132 </span> : }
|
||||
<span class="lineNum"> 133 </span> :
|
||||
<span class="lineNum"> 134 </span> : /* tail */
|
||||
<span class="lineNum"> 135 </span><span class="lineCov"> 2252582 : size_remainder = size & 15;</span>
|
||||
<span class="lineNum"> 136 </span><span class="lineCov"> 2252582 : if (size_remainder != 0) {</span>
|
||||
<span class="lineNum"> 137 </span><span class="lineCov"> 848153 : const uint8_t* tail = (const uint8_t*)blocks;</span>
|
||||
<span class="lineNum"> 135 </span><span class="lineCov"> 1936261 : size_remainder = size & 15;</span>
|
||||
<span class="lineNum"> 136 </span><span class="lineCov"> 1936261 : if (size_remainder != 0) {</span>
|
||||
<span class="lineNum"> 137 </span><span class="lineCov"> 726747 : const uint8_t* tail = (const uint8_t*)blocks;</span>
|
||||
<span class="lineNum"> 138 </span> :
|
||||
<span class="lineNum"> 139 </span><span class="lineCov"> 848153 : uint32_t k1 = 0;</span>
|
||||
<span class="lineNum"> 140 </span><span class="lineCov"> 848153 : uint32_t k2 = 0;</span>
|
||||
<span class="lineNum"> 141 </span><span class="lineCov"> 848153 : uint32_t k3 = 0;</span>
|
||||
<span class="lineNum"> 142 </span><span class="lineCov"> 848153 : uint32_t k4 = 0;</span>
|
||||
<span class="lineNum"> 139 </span><span class="lineCov"> 726747 : uint32_t k1 = 0;</span>
|
||||
<span class="lineNum"> 140 </span><span class="lineCov"> 726747 : uint32_t k2 = 0;</span>
|
||||
<span class="lineNum"> 141 </span><span class="lineCov"> 726747 : uint32_t k3 = 0;</span>
|
||||
<span class="lineNum"> 142 </span><span class="lineCov"> 726747 : uint32_t k4 = 0;</span>
|
||||
<span class="lineNum"> 143 </span> :
|
||||
<span class="lineNum"> 144 </span><span class="lineCov"> 848153 : switch (size_remainder) {</span>
|
||||
<span class="lineNum"> 145 </span><span class="lineCov"> 55834 : case 15 : k4 ^= tail[14] << 16;</span>
|
||||
<span class="lineNum"> 146 </span><span class="lineCov"> 112972 : case 14 : k4 ^= tail[13] << 8;</span>
|
||||
<span class="lineNum"> 147 </span><span class="lineCov"> 170132 : case 13 : k4 ^= tail[12] << 0;</span>
|
||||
<span class="lineNum"> 148 </span><span class="lineCov"> 170132 : k4 *= c4; k4 = util_rotl32(k4, 18); k4 *= c1; h4 ^= k4;</span>
|
||||
<span class="lineNum"> 149 </span><span class="lineCov"> 227529 : case 12 : k3 ^= tail[11] << 24;</span>
|
||||
<span class="lineNum"> 150 </span><span class="lineCov"> 284808 : case 11 : k3 ^= tail[10] << 16;</span>
|
||||
<span class="lineNum"> 151 </span><span class="lineCov"> 341803 : case 10 : k3 ^= tail[ 9] << 8;</span>
|
||||
<span class="lineNum"> 152 </span><span class="lineCov"> 400242 : case 9 : k3 ^= tail[ 8] << 0;</span>
|
||||
<span class="lineNum"> 153 </span><span class="lineCov"> 400242 : k3 *= c3; k3 = util_rotl32(k3, 17); k3 *= c4; h3 ^= k3;</span>
|
||||
<span class="lineNum"> 154 </span><span class="lineCov"> 458531 : case 8 : k2 ^= tail[ 7] << 24;</span>
|
||||
<span class="lineNum"> 155 </span><span class="lineCov"> 512645 : case 7 : k2 ^= tail[ 6] << 16;</span>
|
||||
<span class="lineNum"> 156 </span><span class="lineCov"> 569544 : case 6 : k2 ^= tail[ 5] << 8;</span>
|
||||
<span class="lineNum"> 157 </span><span class="lineCov"> 624516 : case 5 : k2 ^= tail[ 4] << 0;</span>
|
||||
<span class="lineNum"> 158 </span><span class="lineCov"> 624516 : k2 *= c2; k2 = util_rotl32(k2, 16); k2 *= c3; h2 ^= k2;</span>
|
||||
<span class="lineNum"> 159 </span><span class="lineCov"> 680502 : case 4 : k1 ^= tail[ 3] << 24;</span>
|
||||
<span class="lineNum"> 160 </span><span class="lineCov"> 735518 : case 3 : k1 ^= tail[ 2] << 16;</span>
|
||||
<span class="lineNum"> 161 </span><span class="lineCov"> 791435 : case 2 : k1 ^= tail[ 1] << 8;</span>
|
||||
<span class="lineNum"> 162 </span><span class="lineCov"> 848153 : case 1 : k1 ^= tail[ 0] << 0;</span>
|
||||
<span class="lineNum"> 163 </span><span class="lineCov"> 848153 : k1 *= c1; k1 = util_rotl32(k1, 15); k1 *= c2; h1 ^= k1;</span>
|
||||
<span class="lineNum"> 144 </span><span class="lineCov"> 726747 : switch (size_remainder) {</span>
|
||||
<span class="lineNum"> 145 </span><span class="lineCov"> 47814 : case 15 : k4 ^= (uint32_t)tail[14] << 16;</span>
|
||||
<span class="lineNum"> 146 </span><span class="lineCov"> 97089 : case 14 : k4 ^= (uint32_t)tail[13] << 8;</span>
|
||||
<span class="lineNum"> 147 </span><span class="lineCov"> 145774 : case 13 : k4 ^= (uint32_t)tail[12] << 0;</span>
|
||||
<span class="lineNum"> 148 </span><span class="lineCov"> 145774 : k4 *= c4; k4 = util_rotl32(k4, 18); k4 *= c1; h4 ^= k4;</span>
|
||||
<span class="lineNum"> 149 </span><span class="lineCov"> 194991 : case 12 : k3 ^= (uint32_t)tail[11] << 24;</span>
|
||||
<span class="lineNum"> 150 </span><span class="lineCov"> 244008 : case 11 : k3 ^= (uint32_t)tail[10] << 16;</span>
|
||||
<span class="lineNum"> 151 </span><span class="lineCov"> 292626 : case 10 : k3 ^= (uint32_t)tail[ 9] << 8;</span>
|
||||
<span class="lineNum"> 152 </span><span class="lineCov"> 342276 : case 9 : k3 ^= (uint32_t)tail[ 8] << 0;</span>
|
||||
<span class="lineNum"> 153 </span><span class="lineCov"> 342276 : k3 *= c3; k3 = util_rotl32(k3, 17); k3 *= c4; h3 ^= k3;</span>
|
||||
<span class="lineNum"> 154 </span><span class="lineCov"> 392525 : case 8 : k2 ^= (uint32_t)tail[ 7] << 24;</span>
|
||||
<span class="lineNum"> 155 </span><span class="lineCov"> 438669 : case 7 : k2 ^= (uint32_t)tail[ 6] << 16;</span>
|
||||
<span class="lineNum"> 156 </span><span class="lineCov"> 487770 : case 6 : k2 ^= (uint32_t)tail[ 5] << 8;</span>
|
||||
<span class="lineNum"> 157 </span><span class="lineCov"> 534928 : case 5 : k2 ^= (uint32_t)tail[ 4] << 0;</span>
|
||||
<span class="lineNum"> 158 </span><span class="lineCov"> 534928 : k2 *= c2; k2 = util_rotl32(k2, 16); k2 *= c3; h2 ^= k2;</span>
|
||||
<span class="lineNum"> 159 </span><span class="lineCov"> 583310 : case 4 : k1 ^= (uint32_t)tail[ 3] << 24;</span>
|
||||
<span class="lineNum"> 160 </span><span class="lineCov"> 630301 : case 3 : k1 ^= (uint32_t)tail[ 2] << 16;</span>
|
||||
<span class="lineNum"> 161 </span><span class="lineCov"> 678080 : case 2 : k1 ^= (uint32_t)tail[ 1] << 8;</span>
|
||||
<span class="lineNum"> 162 </span><span class="lineCov"> 726747 : case 1 : k1 ^= (uint32_t)tail[ 0] << 0;</span>
|
||||
<span class="lineNum"> 163 </span><span class="lineCov"> 726747 : k1 *= c1; k1 = util_rotl32(k1, 15); k1 *= c2; h1 ^= k1;</span>
|
||||
<span class="lineNum"> 164 </span> : }
|
||||
<span class="lineNum"> 165 </span> : }
|
||||
<span class="lineNum"> 166 </span> :
|
||||
<span class="lineNum"> 167 </span> : /* finalization */
|
||||
<span class="lineNum"> 168 </span><span class="lineCov"> 2252582 : h1 ^= size; h2 ^= size; h3 ^= size; h4 ^= size;</span>
|
||||
<span class="lineNum"> 168 </span><span class="lineCov"> 1936261 : h1 ^= size; h2 ^= size; h3 ^= size; h4 ^= size;</span>
|
||||
<span class="lineNum"> 169 </span> :
|
||||
<span class="lineNum"> 170 </span><span class="lineCov"> 2252582 : h1 += h2; h1 += h3; h1 += h4;</span>
|
||||
<span class="lineNum"> 171 </span><span class="lineCov"> 2252582 : h2 += h1; h3 += h1; h4 += h1;</span>
|
||||
<span class="lineNum"> 170 </span><span class="lineCov"> 1936261 : h1 += h2; h1 += h3; h1 += h4;</span>
|
||||
<span class="lineNum"> 171 </span><span class="lineCov"> 1936261 : h2 += h1; h3 += h1; h4 += h1;</span>
|
||||
<span class="lineNum"> 172 </span> :
|
||||
<span class="lineNum"> 173 </span><span class="lineCov"> 2252582 : h1 = fmix32(h1);</span>
|
||||
<span class="lineNum"> 174 </span><span class="lineCov"> 2252582 : h2 = fmix32(h2);</span>
|
||||
<span class="lineNum"> 175 </span><span class="lineCov"> 2252582 : h3 = fmix32(h3);</span>
|
||||
<span class="lineNum"> 176 </span><span class="lineCov"> 2252582 : h4 = fmix32(h4);</span>
|
||||
<span class="lineNum"> 173 </span><span class="lineCov"> 1936261 : h1 = fmix32(h1);</span>
|
||||
<span class="lineNum"> 174 </span><span class="lineCov"> 1936261 : h2 = fmix32(h2);</span>
|
||||
<span class="lineNum"> 175 </span><span class="lineCov"> 1936261 : h3 = fmix32(h3);</span>
|
||||
<span class="lineNum"> 176 </span><span class="lineCov"> 1936261 : h4 = fmix32(h4);</span>
|
||||
<span class="lineNum"> 177 </span> :
|
||||
<span class="lineNum"> 178 </span><span class="lineCov"> 2252582 : h1 += h2; h1 += h3; h1 += h4;</span>
|
||||
<span class="lineNum"> 179 </span><span class="lineCov"> 2252582 : h2 += h1; h3 += h1; h4 += h1;</span>
|
||||
<span class="lineNum"> 178 </span><span class="lineCov"> 1936261 : h1 += h2; h1 += h3; h1 += h4;</span>
|
||||
<span class="lineNum"> 179 </span><span class="lineCov"> 1936261 : h2 += h1; h3 += h1; h4 += h1;</span>
|
||||
<span class="lineNum"> 180 </span> :
|
||||
<span class="lineNum"> 181 </span> : #if WORDS_BIGENDIAN
|
||||
<span class="lineNum"> 182 </span> : h1 = util_swap32(h1);
|
||||
|
|
@ -247,11 +247,11 @@
|
|||
<span class="lineNum"> 185 </span> : h4 = util_swap32(h4);
|
||||
<span class="lineNum"> 186 </span> : #endif
|
||||
<span class="lineNum"> 187 </span> :
|
||||
<span class="lineNum"> 188 </span><span class="lineCov"> 2252582 : ((uint32_t*)digest)[0] = h1;</span>
|
||||
<span class="lineNum"> 189 </span><span class="lineCov"> 2252582 : ((uint32_t*)digest)[1] = h2;</span>
|
||||
<span class="lineNum"> 190 </span><span class="lineCov"> 2252582 : ((uint32_t*)digest)[2] = h3;</span>
|
||||
<span class="lineNum"> 191 </span><span class="lineCov"> 2252582 : ((uint32_t*)digest)[3] = h4;</span>
|
||||
<span class="lineNum"> 192 </span><span class="lineCov"> 2252582 : }</span>
|
||||
<span class="lineNum"> 188 </span><span class="lineCov"> 1936261 : ((uint32_t*)digest)[0] = h1;</span>
|
||||
<span class="lineNum"> 189 </span><span class="lineCov"> 1936261 : ((uint32_t*)digest)[1] = h2;</span>
|
||||
<span class="lineNum"> 190 </span><span class="lineCov"> 1936261 : ((uint32_t*)digest)[2] = h3;</span>
|
||||
<span class="lineNum"> 191 </span><span class="lineCov"> 1936261 : ((uint32_t*)digest)[3] = h4;</span>
|
||||
<span class="lineNum"> 192 </span><span class="lineCov"> 1936261 : }</span>
|
||||
<span class="lineNum"> 193 </span> :
|
||||
</pre>
|
||||
</td>
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Date:</td>
|
||||
<td class="headerValue">2015-11-20</td>
|
||||
<td class="headerValue">2016-01-09</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Date:</td>
|
||||
<td class="headerValue">2015-11-20</td>
|
||||
<td class="headerValue">2016-01-09</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Date:</td>
|
||||
<td class="headerValue">2015-11-20</td>
|
||||
<td class="headerValue">2016-01-09</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
|
|
@ -96,13 +96,13 @@
|
|||
<span class="lineNum"> 34 </span> : tommy_node* j;
|
||||
<span class="lineNum"> 35 </span> :
|
||||
<span class="lineNum"> 36 </span> : /* for all files */
|
||||
<span class="lineNum"> 37 </span><span class="lineCov"> 5724 : for (j = disk->filelist; j != 0; j = j->next) {</span>
|
||||
<span class="lineNum"> 38 </span><span class="lineCov"> 5718 : struct snapraid_file* file = j->data;</span>
|
||||
<span class="lineNum"> 37 </span><span class="lineCov"> 5731 : for (j = disk->filelist; j != 0; j = j->next) {</span>
|
||||
<span class="lineNum"> 38 </span><span class="lineCov"> 5725 : struct snapraid_file* file = j->data;</span>
|
||||
<span class="lineNum"> 39 </span> :
|
||||
<span class="lineNum"> 40 </span> : /* if the file has a zero nanosecond timestamp */
|
||||
<span class="lineNum"> 41 </span> : /* note that symbolic links are not in the file list */
|
||||
<span class="lineNum"> 42 </span> : /* and then are not processed */
|
||||
<span class="lineNum"> 43 </span><span class="lineCov"> 5718 : if (file->mtime_nsec == 0) {</span>
|
||||
<span class="lineNum"> 43 </span><span class="lineCov"> 5725 : if (file->mtime_nsec == 0) {</span>
|
||||
<span class="lineNum"> 44 </span> : char path[PATH_MAX];
|
||||
<span class="lineNum"> 45 </span> : struct stat st;
|
||||
<span class="lineNum"> 46 </span> : int f;
|
||||
|
|
@ -180,7 +180,7 @@
|
|||
<span class="lineNum"> 118 </span> :
|
||||
<span class="lineNum"> 119 </span> : /* set the same nanosecond value in the content file */
|
||||
<span class="lineNum"> 120 </span> : /* note that if the seconds value is already matching */
|
||||
<span class="lineNum"> 121 </span> : /* the file won't be synched because the content file will */
|
||||
<span class="lineNum"> 121 </span> : /* the file won't be synced because the content file will */
|
||||
<span class="lineNum"> 122 </span> : /* contain the new updated timestamp */
|
||||
<span class="lineNum"> 123 </span><span class="lineCov"> 16 : file->mtime_nsec = STAT_NSEC(&st);</span>
|
||||
<span class="lineNum"> 124 </span> :
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Date:</td>
|
||||
<td class="headerValue">2015-11-20</td>
|
||||
<td class="headerValue">2016-01-09</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntry">10</td>
|
||||
|
|
@ -61,39 +61,39 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="parity.c.gcov.html#470">parity_read</a></td>
|
||||
<td class="coverFnHi">3488577</td>
|
||||
<td class="coverFnHi">3492991</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="parity.c.gcov.html#425">parity_write</a></td>
|
||||
<td class="coverFnHi">506040</td>
|
||||
<td class="coverFnHi">559380</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="parity.c.gcov.html#399">parity_close</a></td>
|
||||
<td class="coverFnHi">952</td>
|
||||
<td class="coverFnHi">1000</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="parity.c.gcov.html#27">parity_allocated_size</a></td>
|
||||
<td class="coverFnHi">589</td>
|
||||
<td class="coverFnHi">616</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="parity.c.gcov.html#150">parity_create</a></td>
|
||||
<td class="coverFnHi">551</td>
|
||||
<td class="coverFnHi">599</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="parity.c.gcov.html#207">parity_chsize</a></td>
|
||||
<td class="coverFnHi">551</td>
|
||||
<td class="coverFnHi">599</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="parity.c.gcov.html#379">parity_sync</a></td>
|
||||
<td class="coverFnHi">447</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="parity.c.gcov.html#324">parity_open</a></td>
|
||||
<td class="coverFnHi">402</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="parity.c.gcov.html#379">parity_sync</a></td>
|
||||
<td class="coverFnHi">399</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="parity.c.gcov.html#54">parity_used_size</a></td>
|
||||
<td class="coverFnHi">72</td>
|
||||
<td class="coverFnHi">80</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="parity.c.gcov.html#79">parity_is_invalid</a></td>
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Date:</td>
|
||||
<td class="headerValue">2015-11-20</td>
|
||||
<td class="headerValue">2016-01-09</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntry">10</td>
|
||||
|
|
@ -61,19 +61,19 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="parity.c.gcov.html#27">parity_allocated_size</a></td>
|
||||
<td class="coverFnHi">589</td>
|
||||
<td class="coverFnHi">616</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="parity.c.gcov.html#207">parity_chsize</a></td>
|
||||
<td class="coverFnHi">551</td>
|
||||
<td class="coverFnHi">599</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="parity.c.gcov.html#399">parity_close</a></td>
|
||||
<td class="coverFnHi">952</td>
|
||||
<td class="coverFnHi">1000</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="parity.c.gcov.html#150">parity_create</a></td>
|
||||
<td class="coverFnHi">551</td>
|
||||
<td class="coverFnHi">599</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="parity.c.gcov.html#79">parity_is_invalid</a></td>
|
||||
|
|
@ -89,19 +89,19 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="parity.c.gcov.html#470">parity_read</a></td>
|
||||
<td class="coverFnHi">3488577</td>
|
||||
<td class="coverFnHi">3492991</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="parity.c.gcov.html#379">parity_sync</a></td>
|
||||
<td class="coverFnHi">399</td>
|
||||
<td class="coverFnHi">447</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="parity.c.gcov.html#54">parity_used_size</a></td>
|
||||
<td class="coverFnHi">72</td>
|
||||
<td class="coverFnHi">80</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="parity.c.gcov.html#425">parity_write</a></td>
|
||||
<td class="coverFnHi">506040</td>
|
||||
<td class="coverFnHi">559380</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Date:</td>
|
||||
<td class="headerValue">2015-11-20</td>
|
||||
<td class="headerValue">2016-01-09</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntry">10</td>
|
||||
|
|
@ -88,56 +88,56 @@
|
|||
<span class="lineNum"> 26 </span> : /****************************************************************************/
|
||||
<a name="27"><span class="lineNum"> 27 </span> : /* parity */</a>
|
||||
<span class="lineNum"> 28 </span> :
|
||||
<span class="lineNum"> 29 </span><span class="lineCov"> 589 : block_off_t parity_allocated_size(struct snapraid_state* state)</span>
|
||||
<span class="lineNum"> 29 </span><span class="lineCov"> 616 : block_off_t parity_allocated_size(struct snapraid_state* state)</span>
|
||||
<span class="lineNum"> 30 </span> : {
|
||||
<span class="lineNum"> 31 </span> : block_off_t parity_block;
|
||||
<span class="lineNum"> 32 </span> : tommy_node* i;
|
||||
<span class="lineNum"> 33 </span> :
|
||||
<span class="lineNum"> 34 </span> : /* compute the size of the parity file */
|
||||
<span class="lineNum"> 35 </span><span class="lineCov"> 589 : parity_block = 0;</span>
|
||||
<span class="lineNum"> 36 </span><span class="lineCov"> 4113 : for (i = state->disklist; i != 0; i = i->next) {</span>
|
||||
<span class="lineNum"> 37 </span><span class="lineCov"> 3524 : struct snapraid_disk* disk = i->data;</span>
|
||||
<span class="lineNum"> 35 </span><span class="lineCov"> 616 : parity_block = 0;</span>
|
||||
<span class="lineNum"> 36 </span><span class="lineCov"> 4302 : for (i = state->disklist; i != 0; i = i->next) {</span>
|
||||
<span class="lineNum"> 37 </span><span class="lineCov"> 3686 : struct snapraid_disk* disk = i->data;</span>
|
||||
<span class="lineNum"> 38 </span> :
|
||||
<span class="lineNum"> 39 </span> : /* start from the declared size */
|
||||
<span class="lineNum"> 40 </span><span class="lineCov"> 3524 : block_off_t block = disk_size(disk);</span>
|
||||
<span class="lineNum"> 40 </span><span class="lineCov"> 3686 : block_off_t block = disk_size(disk);</span>
|
||||
<span class="lineNum"> 41 </span> :
|
||||
<span class="lineNum"> 42 </span> : /* decrease the block until an allocated one, but part of a file */
|
||||
<span class="lineNum"> 43 </span> : /* we don't stop at deleted blocks, because we want to have them cleared */
|
||||
<span class="lineNum"> 44 </span> : /* if they are at the end of the parity */
|
||||
<span class="lineNum"> 45 </span><span class="lineCov"> 189514 : while (block > parity_block && !block_has_file(fs_par2block_get(disk, block - 1)))</span>
|
||||
<span class="lineNum"> 46 </span><span class="lineCov"> 182466 : --block;</span>
|
||||
<span class="lineNum"> 45 </span><span class="lineCov"> 128726 : while (block > parity_block && !block_has_file(fs_par2block_get(disk, block - 1)))</span>
|
||||
<span class="lineNum"> 46 </span><span class="lineCov"> 121354 : --block;</span>
|
||||
<span class="lineNum"> 47 </span> :
|
||||
<span class="lineNum"> 48 </span> : /* get the highest value */
|
||||
<span class="lineNum"> 49 </span><span class="lineCov"> 3524 : if (block > parity_block)</span>
|
||||
<span class="lineNum"> 50 </span><span class="lineCov"> 2273 : parity_block = block;</span>
|
||||
<span class="lineNum"> 49 </span><span class="lineCov"> 3686 : if (block > parity_block)</span>
|
||||
<span class="lineNum"> 50 </span><span class="lineCov"> 2201 : parity_block = block;</span>
|
||||
<span class="lineNum"> 51 </span> : }
|
||||
<span class="lineNum"> 52 </span> :
|
||||
<span class="lineNum"> 53 </span><span class="lineCov"> 589 : return parity_block;</span>
|
||||
<span class="lineNum"> 53 </span><span class="lineCov"> 616 : return parity_block;</span>
|
||||
<a name="54"><span class="lineNum"> 54 </span> : }</a>
|
||||
<span class="lineNum"> 55 </span> :
|
||||
<span class="lineNum"> 56 </span><span class="lineCov"> 72 : block_off_t parity_used_size(struct snapraid_state* state)</span>
|
||||
<span class="lineNum"> 56 </span><span class="lineCov"> 80 : block_off_t parity_used_size(struct snapraid_state* state)</span>
|
||||
<span class="lineNum"> 57 </span> : {
|
||||
<span class="lineNum"> 58 </span> : block_off_t parity_block;
|
||||
<span class="lineNum"> 59 </span> : tommy_node* i;
|
||||
<span class="lineNum"> 60 </span> :
|
||||
<span class="lineNum"> 61 </span> : /* compute the size of the parity file */
|
||||
<span class="lineNum"> 62 </span><span class="lineCov"> 72 : parity_block = 0;</span>
|
||||
<span class="lineNum"> 63 </span><span class="lineCov"> 503 : for (i = state->disklist; i != 0; i = i->next) {</span>
|
||||
<span class="lineNum"> 64 </span><span class="lineCov"> 431 : struct snapraid_disk* disk = i->data;</span>
|
||||
<span class="lineNum"> 62 </span><span class="lineCov"> 80 : parity_block = 0;</span>
|
||||
<span class="lineNum"> 63 </span><span class="lineCov"> 559 : for (i = state->disklist; i != 0; i = i->next) {</span>
|
||||
<span class="lineNum"> 64 </span><span class="lineCov"> 479 : struct snapraid_disk* disk = i->data;</span>
|
||||
<span class="lineNum"> 65 </span> :
|
||||
<span class="lineNum"> 66 </span> : /* start from the declared size */
|
||||
<span class="lineNum"> 67 </span><span class="lineCov"> 431 : block_off_t block = disk_size(disk);</span>
|
||||
<span class="lineNum"> 67 </span><span class="lineCov"> 479 : block_off_t block = disk_size(disk);</span>
|
||||
<span class="lineNum"> 68 </span> :
|
||||
<span class="lineNum"> 69 </span> : /* decrease the block until an used one */
|
||||
<span class="lineNum"> 70 </span><span class="lineCov"> 221700 : while (block > parity_block && !block_has_file_and_valid_parity(fs_par2block_get(disk, block - 1)))</span>
|
||||
<span class="lineNum"> 71 </span><span class="lineCov"> 220838 : --block;</span>
|
||||
<span class="lineNum"> 70 </span><span class="lineCov"> 258592 : while (block > parity_block && !block_has_file_and_valid_parity(fs_par2block_get(disk, block - 1)))</span>
|
||||
<span class="lineNum"> 71 </span><span class="lineCov"> 257634 : --block;</span>
|
||||
<span class="lineNum"> 72 </span> :
|
||||
<span class="lineNum"> 73 </span> : /* get the highest value */
|
||||
<span class="lineNum"> 74 </span><span class="lineCov"> 431 : if (block > parity_block)</span>
|
||||
<span class="lineNum"> 75 </span><span class="lineCov"> 262 : parity_block = block;</span>
|
||||
<span class="lineNum"> 74 </span><span class="lineCov"> 479 : if (block > parity_block)</span>
|
||||
<span class="lineNum"> 75 </span><span class="lineCov"> 259 : parity_block = block;</span>
|
||||
<span class="lineNum"> 76 </span> : }
|
||||
<span class="lineNum"> 77 </span> :
|
||||
<span class="lineNum"> 78 </span><span class="lineCov"> 72 : return parity_block;</span>
|
||||
<span class="lineNum"> 78 </span><span class="lineCov"> 80 : return parity_block;</span>
|
||||
<a name="79"><span class="lineNum"> 79 </span> : }</a>
|
||||
<span class="lineNum"> 80 </span> :
|
||||
<span class="lineNum"> 81 </span><span class="lineCov"> 1 : int parity_is_invalid(struct snapraid_state* state)</span>
|
||||
|
|
@ -211,20 +211,20 @@
|
|||
<span class="lineNum"> 149 </span> : }
|
||||
<a name="150"><span class="lineNum"> 150 </span> : }</a>
|
||||
<span class="lineNum"> 151 </span> :
|
||||
<span class="lineNum"> 152 </span><span class="lineCov"> 551 : int parity_create(struct snapraid_parity_handle* parity, const char* path, data_off_t* out_size, int mode)</span>
|
||||
<span class="lineNum"> 152 </span><span class="lineCov"> 599 : int parity_create(struct snapraid_parity_handle* parity, const char* path, data_off_t* out_size, int mode)</span>
|
||||
<span class="lineNum"> 153 </span> : {
|
||||
<span class="lineNum"> 154 </span> : int ret;
|
||||
<span class="lineNum"> 155 </span> : int flags;
|
||||
<span class="lineNum"> 156 </span> :
|
||||
<span class="lineNum"> 157 </span><span class="lineCov"> 551 : pathcpy(parity->path, sizeof(parity->path), path);</span>
|
||||
<span class="lineNum"> 157 </span><span class="lineCov"> 599 : pathcpy(parity->path, sizeof(parity->path), path);</span>
|
||||
<span class="lineNum"> 158 </span> :
|
||||
<span class="lineNum"> 159 </span> : /* opening in sequential mode in Windows */
|
||||
<span class="lineNum"> 160 </span> : /* O_SEQUENTIAL: opening in sequential mode in Windows */
|
||||
<span class="lineNum"> 161 </span><span class="lineCov"> 551 : flags = O_RDWR | O_CREAT | O_BINARY;</span>
|
||||
<span class="lineNum"> 162 </span><span class="lineCov"> 551 : if ((mode & MODE_SEQUENTIAL) != 0)</span>
|
||||
<span class="lineNum"> 163 </span><span class="lineCov"> 551 : flags |= O_SEQUENTIAL;</span>
|
||||
<span class="lineNum"> 164 </span><span class="lineCov"> 551 : parity->f = open(parity->path, flags, 0600);</span>
|
||||
<span class="lineNum"> 165 </span><span class="lineCov"> 551 : if (parity->f == -1) {</span>
|
||||
<span class="lineNum"> 161 </span><span class="lineCov"> 599 : flags = O_RDWR | O_CREAT | O_BINARY;</span>
|
||||
<span class="lineNum"> 162 </span><span class="lineCov"> 599 : if ((mode & MODE_SEQUENTIAL) != 0)</span>
|
||||
<span class="lineNum"> 163 </span><span class="lineCov"> 599 : flags |= O_SEQUENTIAL;</span>
|
||||
<span class="lineNum"> 164 </span><span class="lineCov"> 599 : parity->f = open(parity->path, flags, 0600);</span>
|
||||
<span class="lineNum"> 165 </span><span class="lineCov"> 599 : if (parity->f == -1) {</span>
|
||||
<span class="lineNum"> 166 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 167 </span> : log_fatal("Error opening parity file '%s'. %s.\n", parity->path, strerror(errno));
|
||||
<span class="lineNum"> 168 </span> : return -1;
|
||||
|
|
@ -232,8 +232,8 @@
|
|||
<span class="lineNum"> 170 </span> : }
|
||||
<span class="lineNum"> 171 </span> :
|
||||
<span class="lineNum"> 172 </span> : /* get the stat info */
|
||||
<span class="lineNum"> 173 </span><span class="lineCov"> 551 : ret = fstat(parity->f, &parity->st);</span>
|
||||
<span class="lineNum"> 174 </span><span class="lineCov"> 551 : if (ret != 0) {</span>
|
||||
<span class="lineNum"> 173 </span><span class="lineCov"> 599 : ret = fstat(parity->f, &parity->st);</span>
|
||||
<span class="lineNum"> 174 </span><span class="lineCov"> 599 : if (ret != 0) {</span>
|
||||
<span class="lineNum"> 175 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 176 </span> : log_fatal("Error accessing parity file '%s'. %s.\n", parity->path, strerror(errno));
|
||||
<span class="lineNum"> 177 </span> : goto bail;
|
||||
|
|
@ -241,10 +241,10 @@
|
|||
<span class="lineNum"> 179 </span> : }
|
||||
<span class="lineNum"> 180 </span> :
|
||||
<span class="lineNum"> 181 </span> : #if HAVE_POSIX_FADVISE
|
||||
<span class="lineNum"> 182 </span><span class="lineCov"> 551 : if ((mode & MODE_SEQUENTIAL) != 0) {</span>
|
||||
<span class="lineNum"> 182 </span><span class="lineCov"> 599 : if ((mode & MODE_SEQUENTIAL) != 0) {</span>
|
||||
<span class="lineNum"> 183 </span> : /* advise sequential access */
|
||||
<span class="lineNum"> 184 </span><span class="lineCov"> 551 : ret = posix_fadvise(parity->f, 0, 0, POSIX_FADV_SEQUENTIAL);</span>
|
||||
<span class="lineNum"> 185 </span><span class="lineCov"> 551 : if (ret != 0) {</span>
|
||||
<span class="lineNum"> 184 </span><span class="lineCov"> 599 : ret = posix_fadvise(parity->f, 0, 0, POSIX_FADV_SEQUENTIAL);</span>
|
||||
<span class="lineNum"> 185 </span><span class="lineCov"> 599 : if (ret != 0) {</span>
|
||||
<span class="lineNum"> 186 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 187 </span> : log_fatal("Error advising parity file '%s'. %s.\n", parity->path, strerror(ret));
|
||||
<span class="lineNum"> 188 </span> : goto bail;
|
||||
|
|
@ -254,10 +254,10 @@
|
|||
<span class="lineNum"> 192 </span> : #endif
|
||||
<span class="lineNum"> 193 </span> :
|
||||
<span class="lineNum"> 194 </span> : /* get the size of the existing data */
|
||||
<span class="lineNum"> 195 </span><span class="lineCov"> 551 : parity->valid_size = parity->st.st_size;</span>
|
||||
<span class="lineNum"> 196 </span><span class="lineCov"> 551 : *out_size = parity->st.st_size;</span>
|
||||
<span class="lineNum"> 195 </span><span class="lineCov"> 599 : parity->valid_size = parity->st.st_size;</span>
|
||||
<span class="lineNum"> 196 </span><span class="lineCov"> 599 : *out_size = parity->st.st_size;</span>
|
||||
<span class="lineNum"> 197 </span> :
|
||||
<span class="lineNum"> 198 </span><span class="lineCov"> 551 : return 0;</span>
|
||||
<span class="lineNum"> 198 </span><span class="lineCov"> 599 : return 0;</span>
|
||||
<span class="lineNum"> 199 </span> :
|
||||
<span class="lineNum"> 200 </span> : bail:
|
||||
<span class="lineNum"> 201 </span> : /* LCOV_EXCL_START */
|
||||
|
|
@ -268,28 +268,28 @@
|
|||
<span class="lineNum"> 206 </span> : /* LCOV_EXCL_STOP */
|
||||
<a name="207"><span class="lineNum"> 207 </span> : }</a>
|
||||
<span class="lineNum"> 208 </span> :
|
||||
<span class="lineNum"> 209 </span><span class="lineCov"> 551 : int parity_chsize(struct snapraid_parity_handle* parity, data_off_t size, data_off_t* out_size, int skip_fallocate)</span>
|
||||
<span class="lineNum"> 209 </span><span class="lineCov"> 599 : int parity_chsize(struct snapraid_parity_handle* parity, data_off_t size, data_off_t* out_size, int skip_fallocate)</span>
|
||||
<span class="lineNum"> 210 </span> : {
|
||||
<span class="lineNum"> 211 </span> : int ret;
|
||||
<span class="lineNum"> 212 </span> :
|
||||
<span class="lineNum"> 213 </span><span class="lineCov"> 551 : if (parity->st.st_size < size) {</span>
|
||||
<span class="lineNum"> 213 </span><span class="lineCov"> 599 : if (parity->st.st_size < size) {</span>
|
||||
<span class="lineNum"> 214 </span> : int f_ret;
|
||||
<span class="lineNum"> 215 </span> : int f_errno;
|
||||
<span class="lineNum"> 216 </span> : const char* call;
|
||||
<span class="lineNum"> 217 </span> :
|
||||
<span class="lineNum"> 218 </span> : #if HAVE_FALLOCATE
|
||||
<span class="lineNum"> 219 </span><span class="lineCov"> 83 : call = "fallocate";</span>
|
||||
<span class="lineNum"> 220 </span><span class="lineCov"> 83 : if (!skip_fallocate) {</span>
|
||||
<span class="lineNum"> 219 </span><span class="lineCov"> 95 : call = "fallocate";</span>
|
||||
<span class="lineNum"> 220 </span><span class="lineCov"> 95 : if (!skip_fallocate) {</span>
|
||||
<span class="lineNum"> 221 </span> : /* allocate real space using the specific Linux fallocate() operation. */
|
||||
<span class="lineNum"> 222 </span> : /* If the underline filesystem doesn't support it, this operation fails, */
|
||||
<span class="lineNum"> 222 </span> : /* If the underline file-system doesn't support it, this operation fails, */
|
||||
<span class="lineNum"> 223 </span> : /* instead posix_fallocate() fallbacks to write the whole file. */
|
||||
<span class="lineNum"> 224 </span><span class="lineCov"> 82 : ret = fallocate(parity->f, 0, 0, size);</span>
|
||||
<span class="lineNum"> 224 </span><span class="lineCov"> 94 : ret = fallocate(parity->f, 0, 0, size);</span>
|
||||
<span class="lineNum"> 225 </span> :
|
||||
<span class="lineNum"> 226 </span> : /* fallocate() returns the error number as positive integer, */
|
||||
<span class="lineNum"> 227 </span> : /* and in this case it doesn't set errno, just like posix_fallocate() */
|
||||
<span class="lineNum"> 228 </span> : /* Checking the glibc code (2.11.1 and 2.14.1) it seems that ENOSYS */
|
||||
<span class="lineNum"> 229 </span> : /* may be returned in errno, so we support both the return way */
|
||||
<span class="lineNum"> 230 </span><span class="lineCov"> 82 : if (ret > 0) { /* if a positive error is returned, convert it to errno */</span>
|
||||
<span class="lineNum"> 230 </span><span class="lineCov"> 94 : if (ret > 0) { /* if a positive error is returned, convert it to errno */</span>
|
||||
<span class="lineNum"> 231 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 232 </span> : errno = ret;
|
||||
<span class="lineNum"> 233 </span> : ret = -1;
|
||||
|
|
@ -302,7 +302,7 @@
|
|||
<span class="lineNum"> 240 </span> :
|
||||
<span class="lineNum"> 241 </span> : /* we get EOPNOTSUPP if the operation is not supported, like in ext3/ext2 */
|
||||
<span class="lineNum"> 242 </span> : /* or ENOSYS with kernel before 2.6.23 */
|
||||
<span class="lineNum"> 243 </span><span class="lineCov"> 83 : if (errno == EOPNOTSUPP || errno == ENOSYS) {</span>
|
||||
<span class="lineNum"> 243 </span><span class="lineCov"> 95 : if (errno == EOPNOTSUPP || errno == ENOSYS) {</span>
|
||||
<span class="lineNum"> 244 </span> : /* fallback using ftruncate() */
|
||||
<span class="lineNum"> 245 </span><span class="lineCov"> 1 : call = "ftruncate";</span>
|
||||
<span class="lineNum"> 246 </span><span class="lineCov"> 1 : ret = ftruncate(parity->f, size);</span>
|
||||
|
|
@ -315,12 +315,12 @@
|
|||
<span class="lineNum"> 253 </span> : ret = ftruncate(parity->f, size);
|
||||
<span class="lineNum"> 254 </span> : #endif
|
||||
<span class="lineNum"> 255 </span> : /* save the state of the grow operation */
|
||||
<span class="lineNum"> 256 </span><span class="lineCov"> 83 : f_ret = ret;</span>
|
||||
<span class="lineNum"> 257 </span><span class="lineCov"> 83 : f_errno = errno;</span>
|
||||
<span class="lineNum"> 256 </span><span class="lineCov"> 95 : f_ret = ret;</span>
|
||||
<span class="lineNum"> 257 </span><span class="lineCov"> 95 : f_errno = errno;</span>
|
||||
<span class="lineNum"> 258 </span> :
|
||||
<span class="lineNum"> 259 </span> : /* get the stat info */
|
||||
<span class="lineNum"> 260 </span><span class="lineCov"> 83 : ret = fstat(parity->f, &parity->st);</span>
|
||||
<span class="lineNum"> 261 </span><span class="lineCov"> 83 : if (ret != 0) {</span>
|
||||
<span class="lineNum"> 260 </span><span class="lineCov"> 95 : ret = fstat(parity->f, &parity->st);</span>
|
||||
<span class="lineNum"> 261 </span><span class="lineCov"> 95 : if (ret != 0) {</span>
|
||||
<span class="lineNum"> 262 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 263 </span> : log_fatal("Error accessing parity file '%s'. %s.\n", parity->path, strerror(errno));
|
||||
<span class="lineNum"> 264 </span> : goto bail;
|
||||
|
|
@ -328,10 +328,10 @@
|
|||
<span class="lineNum"> 266 </span> : }
|
||||
<span class="lineNum"> 267 </span> :
|
||||
<span class="lineNum"> 268 </span> : /* return the new size */
|
||||
<span class="lineNum"> 269 </span><span class="lineCov"> 83 : *out_size = parity->st.st_size;</span>
|
||||
<span class="lineNum"> 269 </span><span class="lineCov"> 95 : *out_size = parity->st.st_size;</span>
|
||||
<span class="lineNum"> 270 </span> :
|
||||
<span class="lineNum"> 271 </span> : /* now check the error */
|
||||
<span class="lineNum"> 272 </span><span class="lineCov"> 83 : if (f_ret != 0) {</span>
|
||||
<span class="lineNum"> 272 </span><span class="lineCov"> 95 : if (f_ret != 0) {</span>
|
||||
<span class="lineNum"> 273 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 274 </span> : if (f_errno == ENOSPC) {
|
||||
<span class="lineNum"> 275 </span> : log_fatal("Failed to grow parity file '%s' to size %" PRIu64 " using %s due lack of space.\n", parity->path, size, call);
|
||||
|
|
@ -341,20 +341,20 @@
|
|||
<span class="lineNum"> 279 </span> : goto bail;
|
||||
<span class="lineNum"> 280 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 281 </span> : }
|
||||
<span class="lineNum"> 282 </span><span class="lineCov"> 468 : } else if (parity->st.st_size > size) {</span>
|
||||
<span class="lineNum"> 282 </span><span class="lineCov"> 504 : } else if (parity->st.st_size > size) {</span>
|
||||
<span class="lineNum"> 283 </span> : int f_ret;
|
||||
<span class="lineNum"> 284 </span> : int f_errno;
|
||||
<span class="lineNum"> 285 </span> :
|
||||
<span class="lineNum"> 286 </span> : /* truncate the parity file */
|
||||
<span class="lineNum"> 287 </span><span class="lineCov"> 48 : ret = ftruncate(parity->f, size);</span>
|
||||
<span class="lineNum"> 287 </span><span class="lineCov"> 72 : ret = ftruncate(parity->f, size);</span>
|
||||
<span class="lineNum"> 288 </span> :
|
||||
<span class="lineNum"> 289 </span> : /* save the state of the shrink operation */
|
||||
<span class="lineNum"> 290 </span><span class="lineCov"> 48 : f_ret = ret;</span>
|
||||
<span class="lineNum"> 291 </span><span class="lineCov"> 48 : f_errno = errno;</span>
|
||||
<span class="lineNum"> 290 </span><span class="lineCov"> 72 : f_ret = ret;</span>
|
||||
<span class="lineNum"> 291 </span><span class="lineCov"> 72 : f_errno = errno;</span>
|
||||
<span class="lineNum"> 292 </span> :
|
||||
<span class="lineNum"> 293 </span> : /* get the stat info */
|
||||
<span class="lineNum"> 294 </span><span class="lineCov"> 48 : ret = fstat(parity->f, &parity->st);</span>
|
||||
<span class="lineNum"> 295 </span><span class="lineCov"> 48 : if (ret != 0) {</span>
|
||||
<span class="lineNum"> 294 </span><span class="lineCov"> 72 : ret = fstat(parity->f, &parity->st);</span>
|
||||
<span class="lineNum"> 295 </span><span class="lineCov"> 72 : if (ret != 0) {</span>
|
||||
<span class="lineNum"> 296 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 297 </span> : log_fatal("Error accessing parity file '%s'. %s.\n", parity->path, strerror(errno));
|
||||
<span class="lineNum"> 298 </span> : goto bail;
|
||||
|
|
@ -362,10 +362,10 @@
|
|||
<span class="lineNum"> 300 </span> : }
|
||||
<span class="lineNum"> 301 </span> :
|
||||
<span class="lineNum"> 302 </span> : /* return the new size */
|
||||
<span class="lineNum"> 303 </span><span class="lineCov"> 48 : *out_size = parity->st.st_size;</span>
|
||||
<span class="lineNum"> 303 </span><span class="lineCov"> 72 : *out_size = parity->st.st_size;</span>
|
||||
<span class="lineNum"> 304 </span> :
|
||||
<span class="lineNum"> 305 </span> : /* now check the error */
|
||||
<span class="lineNum"> 306 </span><span class="lineCov"> 48 : if (f_ret != 0) {</span>
|
||||
<span class="lineNum"> 306 </span><span class="lineCov"> 72 : if (f_ret != 0) {</span>
|
||||
<span class="lineNum"> 307 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 308 </span> : log_fatal("Error truncating parity file '%s' to size %" PRIu64 ". %s.\n", parity->path, size, strerror(f_errno));
|
||||
<span class="lineNum"> 309 </span> : goto bail;
|
||||
|
|
@ -373,10 +373,10 @@
|
|||
<span class="lineNum"> 311 </span> : }
|
||||
<span class="lineNum"> 312 </span> :
|
||||
<span class="lineNum"> 313 </span> : /* adjust the valid to the new size */
|
||||
<span class="lineNum"> 314 </span><span class="lineCov"> 48 : parity->valid_size = size;</span>
|
||||
<span class="lineNum"> 314 </span><span class="lineCov"> 72 : parity->valid_size = size;</span>
|
||||
<span class="lineNum"> 315 </span> : }
|
||||
<span class="lineNum"> 316 </span> :
|
||||
<span class="lineNum"> 317 </span><span class="lineCov"> 551 : return 0;</span>
|
||||
<span class="lineNum"> 317 </span><span class="lineCov"> 599 : return 0;</span>
|
||||
<span class="lineNum"> 318 </span> :
|
||||
<span class="lineNum"> 319 </span> : bail:
|
||||
<span class="lineNum"> 320 </span> : /* LCOV_EXCL_START */
|
||||
|
|
@ -413,7 +413,7 @@
|
|||
<span class="lineNum"> 351 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 352 </span> : }
|
||||
<span class="lineNum"> 353 </span> :
|
||||
<span class="lineNum"> 354 </span> : /* get the size of the exising data */
|
||||
<span class="lineNum"> 354 </span> : /* get the size of the existing data */
|
||||
<span class="lineNum"> 355 </span><span class="lineCov"> 401 : parity->valid_size = parity->st.st_size;</span>
|
||||
<span class="lineNum"> 356 </span> :
|
||||
<span class="lineNum"> 357 </span> : #if HAVE_POSIX_FADVISE
|
||||
|
|
@ -440,7 +440,7 @@
|
|||
<span class="lineNum"> 378 </span> : /* LCOV_EXCL_STOP */
|
||||
<a name="379"><span class="lineNum"> 379 </span> : }</a>
|
||||
<span class="lineNum"> 380 </span> :
|
||||
<span class="lineNum"> 381 </span><span class="lineCov"> 399 : int parity_sync(struct snapraid_parity_handle* parity)</span>
|
||||
<span class="lineNum"> 381 </span><span class="lineCov"> 447 : int parity_sync(struct snapraid_parity_handle* parity)</span>
|
||||
<span class="lineNum"> 382 </span> : {
|
||||
<span class="lineNum"> 383 </span> : #if HAVE_FSYNC
|
||||
<span class="lineNum"> 384 </span> : int ret;
|
||||
|
|
@ -448,8 +448,8 @@
|
|||
<span class="lineNum"> 386 </span> : /* Ensure that data changes are written to disk. */
|
||||
<span class="lineNum"> 387 </span> : /* This is required to ensure that parity is more updated than content */
|
||||
<span class="lineNum"> 388 </span> : /* in case of a system crash. */
|
||||
<span class="lineNum"> 389 </span><span class="lineCov"> 399 : ret = fsync(parity->f);</span>
|
||||
<span class="lineNum"> 390 </span><span class="lineCov"> 399 : if (ret != 0) {</span>
|
||||
<span class="lineNum"> 389 </span><span class="lineCov"> 447 : ret = fsync(parity->f);</span>
|
||||
<span class="lineNum"> 390 </span><span class="lineCov"> 447 : if (ret != 0) {</span>
|
||||
<span class="lineNum"> 391 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 392 </span> : log_fatal("Error synching parity file '%s'. %s.\n", parity->path, strerror(errno));
|
||||
<span class="lineNum"> 393 </span> : return -1;
|
||||
|
|
@ -457,15 +457,15 @@
|
|||
<span class="lineNum"> 395 </span> : }
|
||||
<span class="lineNum"> 396 </span> : #endif
|
||||
<span class="lineNum"> 397 </span> :
|
||||
<span class="lineNum"> 398 </span><span class="lineCov"> 399 : return 0;</span>
|
||||
<span class="lineNum"> 398 </span><span class="lineCov"> 447 : return 0;</span>
|
||||
<a name="399"><span class="lineNum"> 399 </span> : }</a>
|
||||
<span class="lineNum"> 400 </span> :
|
||||
<span class="lineNum"> 401 </span><span class="lineCov"> 952 : int parity_close(struct snapraid_parity_handle* parity)</span>
|
||||
<span class="lineNum"> 401 </span><span class="lineCov"> 1000 : int parity_close(struct snapraid_parity_handle* parity)</span>
|
||||
<span class="lineNum"> 402 </span> : {
|
||||
<span class="lineNum"> 403 </span> : int ret;
|
||||
<span class="lineNum"> 404 </span> :
|
||||
<span class="lineNum"> 405 </span><span class="lineCov"> 952 : ret = close(parity->f);</span>
|
||||
<span class="lineNum"> 406 </span><span class="lineCov"> 952 : if (ret != 0) {</span>
|
||||
<span class="lineNum"> 405 </span><span class="lineCov"> 1000 : ret = close(parity->f);</span>
|
||||
<span class="lineNum"> 406 </span><span class="lineCov"> 1000 : if (ret != 0) {</span>
|
||||
<span class="lineNum"> 407 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 408 </span> : /* invalidate for error */
|
||||
<span class="lineNum"> 409 </span> : parity->f = -1;
|
||||
|
|
@ -473,28 +473,28 @@
|
|||
<span class="lineNum"> 411 </span> :
|
||||
<span class="lineNum"> 412 </span> : /* This is a serious error, as it may be the result of a failed write */
|
||||
<span class="lineNum"> 413 </span> : /* identified at later time. */
|
||||
<span class="lineNum"> 414 </span> : /* In a normal filesystem (not NFS) it should never happen */
|
||||
<span class="lineNum"> 414 </span> : /* In a normal file-system (not NFS) it should never happen */
|
||||
<span class="lineNum"> 415 </span> : log_fatal("Error closing parity file '%s'. %s.\n", parity->path, strerror(errno));
|
||||
<span class="lineNum"> 416 </span> : return -1;
|
||||
<span class="lineNum"> 417 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 418 </span> : }
|
||||
<span class="lineNum"> 419 </span> :
|
||||
<span class="lineNum"> 420 </span> : /* reset the descriptor */
|
||||
<span class="lineNum"> 421 </span><span class="lineCov"> 952 : parity->f = -1;</span>
|
||||
<span class="lineNum"> 422 </span><span class="lineCov"> 952 : parity->valid_size = 0;</span>
|
||||
<span class="lineNum"> 421 </span><span class="lineCov"> 1000 : parity->f = -1;</span>
|
||||
<span class="lineNum"> 422 </span><span class="lineCov"> 1000 : parity->valid_size = 0;</span>
|
||||
<span class="lineNum"> 423 </span> :
|
||||
<span class="lineNum"> 424 </span><span class="lineCov"> 952 : return 0;</span>
|
||||
<span class="lineNum"> 424 </span><span class="lineCov"> 1000 : return 0;</span>
|
||||
<a name="425"><span class="lineNum"> 425 </span> : }</a>
|
||||
<span class="lineNum"> 426 </span> :
|
||||
<span class="lineNum"> 427 </span><span class="lineCov"> 506040 : int parity_write(struct snapraid_parity_handle* parity, block_off_t pos, unsigned char* block_buffer, unsigned block_size)</span>
|
||||
<span class="lineNum"> 427 </span><span class="lineCov"> 559380 : int parity_write(struct snapraid_parity_handle* parity, block_off_t pos, unsigned char* block_buffer, unsigned block_size)</span>
|
||||
<span class="lineNum"> 428 </span> : {
|
||||
<span class="lineNum"> 429 </span> : ssize_t write_ret;
|
||||
<span class="lineNum"> 430 </span> : data_off_t offset;
|
||||
<span class="lineNum"> 431 </span> :
|
||||
<span class="lineNum"> 432 </span><span class="lineCov"> 506040 : offset = pos * (data_off_t)block_size;</span>
|
||||
<span class="lineNum"> 432 </span><span class="lineCov"> 559380 : offset = pos * (data_off_t)block_size;</span>
|
||||
<span class="lineNum"> 433 </span> :
|
||||
<span class="lineNum"> 434 </span> : #if HAVE_PWRITE
|
||||
<span class="lineNum"> 435 </span><span class="lineCov"> 506040 : write_ret = pwrite(parity->f, block_buffer, block_size, offset);</span>
|
||||
<span class="lineNum"> 435 </span><span class="lineCov"> 559380 : write_ret = pwrite(parity->f, block_buffer, block_size, offset);</span>
|
||||
<span class="lineNum"> 436 </span> : #else
|
||||
<span class="lineNum"> 437 </span> : if (lseek(parity->f, offset, SEEK_SET) != offset) {
|
||||
<span class="lineNum"> 438 </span> : /* LCOV_EXCL_START */
|
||||
|
|
@ -509,7 +509,7 @@
|
|||
<span class="lineNum"> 447 </span> :
|
||||
<span class="lineNum"> 448 </span> : write_ret = write(parity->f, block_buffer, block_size);
|
||||
<span class="lineNum"> 449 </span> : #endif
|
||||
<span class="lineNum"> 450 </span><span class="lineCov"> 506040 : if (write_ret != (ssize_t)block_size) { /* conversion is safe because block_size is always small */</span>
|
||||
<span class="lineNum"> 450 </span><span class="lineCov"> 559380 : if (write_ret != (ssize_t)block_size) { /* conversion is safe because block_size is always small */</span>
|
||||
<span class="lineNum"> 451 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 452 </span> : if (errno == ENOSPC) {
|
||||
<span class="lineNum"> 453 </span> : log_fatal("Failed to grow parity file '%s' using write due lack of space.\n", parity->path);
|
||||
|
|
@ -521,28 +521,28 @@
|
|||
<span class="lineNum"> 459 </span> : }
|
||||
<span class="lineNum"> 460 </span> :
|
||||
<span class="lineNum"> 461 </span> : /* adjust the size of the valid data */
|
||||
<span class="lineNum"> 462 </span><span class="lineCov"> 506040 : if (parity->valid_size < offset + block_size) {</span>
|
||||
<span class="lineNum"> 463 </span><span class="lineCov"> 170559 : parity->valid_size = offset + block_size;</span>
|
||||
<span class="lineNum"> 462 </span><span class="lineCov"> 559380 : if (parity->valid_size < offset + block_size) {</span>
|
||||
<span class="lineNum"> 463 </span><span class="lineCov"> 171021 : parity->valid_size = offset + block_size;</span>
|
||||
<span class="lineNum"> 464 </span> : }
|
||||
<span class="lineNum"> 465 </span> :
|
||||
<span class="lineNum"> 466 </span> : /* Here doesn't make sense to call posix_fadvise(..., POSIX_FADV_DONTNEED) because */
|
||||
<span class="lineNum"> 467 </span> : /* at this time the data is still in not yet written and it cannot be discharged. */
|
||||
<span class="lineNum"> 468 </span> :
|
||||
<span class="lineNum"> 469 </span><span class="lineCov"> 506040 : return 0;</span>
|
||||
<span class="lineNum"> 469 </span><span class="lineCov"> 559380 : return 0;</span>
|
||||
<a name="470"><span class="lineNum"> 470 </span> : }</a>
|
||||
<span class="lineNum"> 471 </span> :
|
||||
<span class="lineNum"> 472 </span><span class="lineCov"> 3488577 : int parity_read(struct snapraid_parity_handle* parity, block_off_t pos, unsigned char* block_buffer, unsigned block_size, fptr* out)</span>
|
||||
<span class="lineNum"> 472 </span><span class="lineCov"> 3492991 : int parity_read(struct snapraid_parity_handle* parity, block_off_t pos, unsigned char* block_buffer, unsigned block_size, fptr* out)</span>
|
||||
<span class="lineNum"> 473 </span> : {
|
||||
<span class="lineNum"> 474 </span> : ssize_t read_ret;
|
||||
<span class="lineNum"> 475 </span> : data_off_t offset;
|
||||
<span class="lineNum"> 476 </span> : unsigned count;
|
||||
<span class="lineNum"> 477 </span> :
|
||||
<span class="lineNum"> 478 </span><span class="lineCov"> 3488577 : offset = pos * (data_off_t)block_size;</span>
|
||||
<span class="lineNum"> 478 </span><span class="lineCov"> 3492991 : offset = pos * (data_off_t)block_size;</span>
|
||||
<span class="lineNum"> 479 </span> :
|
||||
<span class="lineNum"> 480 </span> : /* check if we are going to read only not initialized data */
|
||||
<span class="lineNum"> 481 </span><span class="lineCov"> 3488577 : if (offset >= parity->valid_size) {</span>
|
||||
<span class="lineNum"> 482 </span><span class="lineCov"> 90275 : out("Reading missing data from file '%s' at offset %" PRIu64 ".\n", parity->path, offset);</span>
|
||||
<span class="lineNum"> 483 </span><span class="lineCov"> 90275 : return -1;</span>
|
||||
<span class="lineNum"> 481 </span><span class="lineCov"> 3492991 : if (offset >= parity->valid_size) {</span>
|
||||
<span class="lineNum"> 482 </span><span class="lineCov"> 90295 : out("Reading missing data from file '%s' at offset %" PRIu64 ".\n", parity->path, offset);</span>
|
||||
<span class="lineNum"> 483 </span><span class="lineCov"> 90295 : return -1;</span>
|
||||
<span class="lineNum"> 484 </span> : }
|
||||
<span class="lineNum"> 485 </span> :
|
||||
<span class="lineNum"> 486 </span> : #if !HAVE_PREAD
|
||||
|
|
@ -554,36 +554,36 @@
|
|||
<span class="lineNum"> 492 </span> : }
|
||||
<span class="lineNum"> 493 </span> : #endif
|
||||
<span class="lineNum"> 494 </span> :
|
||||
<span class="lineNum"> 495 </span><span class="lineCov"> 3398302 : count = 0;</span>
|
||||
<span class="lineNum"> 495 </span><span class="lineCov"> 3402696 : count = 0;</span>
|
||||
<span class="lineNum"> 496 </span> : do {
|
||||
<span class="lineNum"> 497 </span> :
|
||||
<span class="lineNum"> 498 </span> : #if HAVE_PREAD
|
||||
<span class="lineNum"> 499 </span><span class="lineCov"> 3398302 : read_ret = pread(parity->f, block_buffer + count, block_size - count, offset + count);</span>
|
||||
<span class="lineNum"> 499 </span><span class="lineCov"> 3402696 : read_ret = pread(parity->f, block_buffer + count, block_size - count, offset + count);</span>
|
||||
<span class="lineNum"> 500 </span> : #else
|
||||
<span class="lineNum"> 501 </span> : read_ret = read(parity->f, block_buffer + count, block_size - count);
|
||||
<span class="lineNum"> 502 </span> : #endif
|
||||
<span class="lineNum"> 503 </span><span class="lineCov"> 3398302 : if (read_ret < 0) {</span>
|
||||
<span class="lineNum"> 503 </span><span class="lineCov"> 3402696 : if (read_ret < 0) {</span>
|
||||
<span class="lineNum"> 504 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 505 </span> : out("Error reading file '%s' at offset %" PRIu64 " for size %u. %s.\n", parity->path, offset + count, block_size - count, strerror(errno));
|
||||
<span class="lineNum"> 506 </span> : return -1;
|
||||
<span class="lineNum"> 507 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 508 </span> : }
|
||||
<span class="lineNum"> 509 </span><span class="lineCov"> 3398302 : if (read_ret == 0) {</span>
|
||||
<span class="lineNum"> 509 </span><span class="lineCov"> 3402696 : if (read_ret == 0) {</span>
|
||||
<span class="lineNum"> 510 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 511 </span> : out("Unexpected end of file '%s' at offset %" PRIu64 ". %s.\n", parity->path, offset, strerror(errno));
|
||||
<span class="lineNum"> 512 </span> : return -1;
|
||||
<span class="lineNum"> 513 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 514 </span> : }
|
||||
<span class="lineNum"> 515 </span> :
|
||||
<span class="lineNum"> 516 </span><span class="lineCov"> 3398302 : count += read_ret;</span>
|
||||
<span class="lineNum"> 517 </span><span class="lineCov"> 3398302 : } while (count < block_size);</span>
|
||||
<span class="lineNum"> 516 </span><span class="lineCov"> 3402696 : count += read_ret;</span>
|
||||
<span class="lineNum"> 517 </span><span class="lineCov"> 3402696 : } while (count < block_size);</span>
|
||||
<span class="lineNum"> 518 </span> :
|
||||
<span class="lineNum"> 519 </span> : /* Here isn't needed to call posix_fadvise(..., POSIX_FADV_DONTNEED) */
|
||||
<span class="lineNum"> 520 </span> : /* because we already advised sequential access with POSIX_FADV_SEQUENTIAL. */
|
||||
<span class="lineNum"> 521 </span> : /* In Linux 2.6.33 it's enough to ensure that data is not kept in the cache. */
|
||||
<span class="lineNum"> 522 </span> : /* Better to do nothing and save a syscall for each block. */
|
||||
<span class="lineNum"> 523 </span> :
|
||||
<span class="lineNum"> 524 </span><span class="lineCov"> 3398302 : return block_size;</span>
|
||||
<span class="lineNum"> 524 </span><span class="lineCov"> 3402696 : return block_size;</span>
|
||||
<span class="lineNum"> 525 </span> : }
|
||||
<span class="lineNum"> 526 </span> :
|
||||
</pre>
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Date:</td>
|
||||
<td class="headerValue">2015-11-20</td>
|
||||
<td class="headerValue">2016-01-09</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntry">3</td>
|
||||
|
|
@ -61,7 +61,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="pool.c.gcov.html#148">make_link</a></td>
|
||||
<td class="coverFnHi">17569</td>
|
||||
<td class="coverFnHi">17583</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="pool.c.gcov.html#26">clean_dir</a></td>
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Date:</td>
|
||||
<td class="headerValue">2015-11-20</td>
|
||||
<td class="headerValue">2016-01-09</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntry">3</td>
|
||||
|
|
@ -65,7 +65,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="pool.c.gcov.html#148">make_link</a></td>
|
||||
<td class="coverFnHi">17569</td>
|
||||
<td class="coverFnHi">17583</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="pool.c.gcov.html#199">state_pool</a></td>
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Date:</td>
|
||||
<td class="headerValue">2015-11-20</td>
|
||||
<td class="headerValue">2016-01-09</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntry">3</td>
|
||||
|
|
@ -107,24 +107,24 @@
|
|||
<span class="lineNum"> 45 </span> : struct dirent* dd;
|
||||
<span class="lineNum"> 46 </span> :
|
||||
<span class="lineNum"> 47 </span> : /* clear errno to detect erroneous conditions */
|
||||
<span class="lineNum"> 48 </span><span class="lineCov"> 5760 : errno = 0;</span>
|
||||
<span class="lineNum"> 49 </span><span class="lineCov"> 5760 : dd = readdir(d);</span>
|
||||
<span class="lineNum"> 50 </span><span class="lineCov"> 5760 : if (dd == 0 && errno != 0) {</span>
|
||||
<span class="lineNum"> 48 </span><span class="lineCov"> 5767 : errno = 0;</span>
|
||||
<span class="lineNum"> 49 </span><span class="lineCov"> 5767 : dd = readdir(d);</span>
|
||||
<span class="lineNum"> 50 </span><span class="lineCov"> 5767 : if (dd == 0 && errno != 0) {</span>
|
||||
<span class="lineNum"> 51 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 52 </span> : log_fatal("Error reading pool directory '%s'. %s.\n", dir, strerror(errno));
|
||||
<span class="lineNum"> 53 </span> : exit(EXIT_FAILURE);
|
||||
<span class="lineNum"> 54 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 55 </span> : }
|
||||
<span class="lineNum"> 56 </span><span class="lineCov"> 5760 : if (dd == 0 && errno == 0) {</span>
|
||||
<span class="lineNum"> 56 </span><span class="lineCov"> 5767 : if (dd == 0 && errno == 0) {</span>
|
||||
<span class="lineNum"> 57 </span><span class="lineCov"> 5 : break; /* finished */</span>
|
||||
<span class="lineNum"> 58 </span> : }
|
||||
<span class="lineNum"> 59 </span> :
|
||||
<span class="lineNum"> 60 </span> : /* skip "." and ".." files */
|
||||
<span class="lineNum"> 61 </span><span class="lineCov"> 5755 : name = dd->d_name;</span>
|
||||
<span class="lineNum"> 62 </span><span class="lineCov"> 5755 : if (name[0] == '.' && (name[1] == 0 || (name[1] == '.' && name[2] == 0)))</span>
|
||||
<span class="lineNum"> 61 </span><span class="lineCov"> 5762 : name = dd->d_name;</span>
|
||||
<span class="lineNum"> 62 </span><span class="lineCov"> 5762 : if (name[0] == '.' && (name[1] == 0 || (name[1] == '.' && name[2] == 0)))</span>
|
||||
<span class="lineNum"> 63 </span><span class="lineCov"> 10 : continue;</span>
|
||||
<span class="lineNum"> 64 </span> :
|
||||
<span class="lineNum"> 65 </span><span class="lineCov"> 5745 : pathprint(path_next, sizeof(path_next), "%s%s", dir, name);</span>
|
||||
<span class="lineNum"> 65 </span><span class="lineCov"> 5752 : pathprint(path_next, sizeof(path_next), "%s%s", dir, name);</span>
|
||||
<span class="lineNum"> 66 </span> :
|
||||
<span class="lineNum"> 67 </span> : #if HAVE_STRUCT_DIRENT_D_STAT
|
||||
<span class="lineNum"> 68 </span> : /* convert dirent to lstat result */
|
||||
|
|
@ -142,7 +142,7 @@
|
|||
<span class="lineNum"> 80 </span> : }
|
||||
<span class="lineNum"> 81 </span> : #else
|
||||
<span class="lineNum"> 82 </span> : /* get lstat info about the file */
|
||||
<span class="lineNum"> 83 </span><span class="lineCov"> 5745 : if (lstat(path_next, &st) != 0) {</span>
|
||||
<span class="lineNum"> 83 </span><span class="lineCov"> 5752 : if (lstat(path_next, &st) != 0) {</span>
|
||||
<span class="lineNum"> 84 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 85 </span> : log_fatal("Error in stat file/directory '%s'. %s.\n", path_next, strerror(errno));
|
||||
<span class="lineNum"> 86 </span> : exit(EXIT_FAILURE);
|
||||
|
|
@ -150,12 +150,12 @@
|
|||
<span class="lineNum"> 88 </span> : }
|
||||
<span class="lineNum"> 89 </span> : #endif
|
||||
<span class="lineNum"> 90 </span> :
|
||||
<span class="lineNum"> 91 </span><span class="lineCov"> 5745 : if (S_ISLNK(st.st_mode)) {</span>
|
||||
<span class="lineNum"> 91 </span><span class="lineCov"> 5752 : if (S_ISLNK(st.st_mode)) {</span>
|
||||
<span class="lineNum"> 92 </span> : int ret;
|
||||
<span class="lineNum"> 93 </span> :
|
||||
<span class="lineNum"> 94 </span> : /* delete the link */
|
||||
<span class="lineNum"> 95 </span><span class="lineCov"> 5743 : ret = remove(path_next);</span>
|
||||
<span class="lineNum"> 96 </span><span class="lineCov"> 5743 : if (ret < 0) {</span>
|
||||
<span class="lineNum"> 95 </span><span class="lineCov"> 5750 : ret = remove(path_next);</span>
|
||||
<span class="lineNum"> 96 </span><span class="lineCov"> 5750 : if (ret < 0) {</span>
|
||||
<span class="lineNum"> 97 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 98 </span> : log_fatal("Error removing symlink '%s'. %s.\n", path_next, strerror(errno));
|
||||
<span class="lineNum"> 99 </span> : exit(EXIT_FAILURE);
|
||||
|
|
@ -194,7 +194,7 @@
|
|||
<span class="lineNum"> 132 </span><span class="lineNoCov"> 0 : ignored = 1;</span>
|
||||
<span class="lineNum"> 133 </span><span class="lineNoCov"> 0 : msg_verbose("Ignoring pool file '%s'\n", path_next);</span>
|
||||
<span class="lineNum"> 134 </span> : }
|
||||
<span class="lineNum"> 135 </span><span class="lineCov"> 5755 : }</span>
|
||||
<span class="lineNum"> 135 </span><span class="lineCov"> 5762 : }</span>
|
||||
<span class="lineNum"> 136 </span> :
|
||||
<span class="lineNum"> 137 </span><span class="lineCov"> 5 : if (closedir(d) != 0) {</span>
|
||||
<span class="lineNum"> 138 </span> : /* LCOV_EXCL_START */
|
||||
|
|
@ -209,7 +209,7 @@
|
|||
<span class="lineNum"> 147 </span> : /**
|
||||
<a name="148"><span class="lineNum"> 148 </span> : * Create a link to the specified disk entry.</a>
|
||||
<span class="lineNum"> 149 </span> : */
|
||||
<span class="lineNum"> 150 </span><span class="lineCov"> 17569 : static void make_link(const char* pool_dir, const char* share_dir, struct snapraid_disk* disk, const char* sub)</span>
|
||||
<span class="lineNum"> 150 </span><span class="lineCov"> 17583 : static void make_link(const char* pool_dir, const char* share_dir, struct snapraid_disk* disk, const char* sub)</span>
|
||||
<span class="lineNum"> 151 </span> : {
|
||||
<span class="lineNum"> 152 </span> : char path[PATH_MAX];
|
||||
<span class="lineNum"> 153 </span> : char linkto[PATH_MAX];
|
||||
|
|
@ -217,31 +217,31 @@
|
|||
<span class="lineNum"> 155 </span> : int ret;
|
||||
<span class="lineNum"> 156 </span> :
|
||||
<span class="lineNum"> 157 </span> : /* make the source path */
|
||||
<span class="lineNum"> 158 </span><span class="lineCov"> 17569 : pathprint(path, sizeof(path), "%s%s", pool_dir, sub);</span>
|
||||
<span class="lineNum"> 158 </span><span class="lineCov"> 17583 : pathprint(path, sizeof(path), "%s%s", pool_dir, sub);</span>
|
||||
<span class="lineNum"> 159 </span> :
|
||||
<span class="lineNum"> 160 </span> : /* make the linkto path */
|
||||
<span class="lineNum"> 161 </span><span class="lineCov"> 17569 : if (share_dir[0] != 0) {</span>
|
||||
<span class="lineNum"> 161 </span><span class="lineCov"> 17583 : if (share_dir[0] != 0) {</span>
|
||||
<span class="lineNum"> 162 </span> : /* with a shared directory, use it */
|
||||
<span class="lineNum"> 163 </span><span class="lineCov"> 17569 : pathprint(linkto, sizeof(linkto), "%s%s/%s", share_dir, disk->name, sub);</span>
|
||||
<span class="lineNum"> 163 </span><span class="lineCov"> 17583 : pathprint(linkto, sizeof(linkto), "%s%s/%s", share_dir, disk->name, sub);</span>
|
||||
<span class="lineNum"> 164 </span> : } else {
|
||||
<span class="lineNum"> 165 </span> : /* without a share directory, use the local disk paths */
|
||||
<span class="lineNum"> 166 </span><span class="lineNoCov"> 0 : pathprint(linkto, sizeof(linkto), "%s%s", disk->dir, sub);</span>
|
||||
<span class="lineNum"> 167 </span> : }
|
||||
<span class="lineNum"> 168 </span> :
|
||||
<span class="lineNum"> 169 </span> : /* create the ancestor directories */
|
||||
<span class="lineNum"> 170 </span><span class="lineCov"> 17569 : ret = mkancestor(path);</span>
|
||||
<span class="lineNum"> 171 </span><span class="lineCov"> 17569 : if (ret != 0) {</span>
|
||||
<span class="lineNum"> 170 </span><span class="lineCov"> 17583 : ret = mkancestor(path);</span>
|
||||
<span class="lineNum"> 171 </span><span class="lineCov"> 17583 : if (ret != 0) {</span>
|
||||
<span class="lineNum"> 172 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 173 </span> : exit(EXIT_FAILURE);
|
||||
<span class="lineNum"> 174 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 175 </span> : }
|
||||
<span class="lineNum"> 176 </span> :
|
||||
<span class="lineNum"> 177 </span> : /* convert back slashes */
|
||||
<span class="lineNum"> 178 </span><span class="lineCov"> 17569 : pathexport(linkto_exported, sizeof(linkto_exported), linkto);</span>
|
||||
<span class="lineNum"> 178 </span><span class="lineCov"> 17583 : pathexport(linkto_exported, sizeof(linkto_exported), linkto);</span>
|
||||
<span class="lineNum"> 179 </span> :
|
||||
<span class="lineNum"> 180 </span> : /* create the symlink */
|
||||
<span class="lineNum"> 181 </span><span class="lineCov"> 17569 : ret = symlink(linkto_exported, path);</span>
|
||||
<span class="lineNum"> 182 </span><span class="lineCov"> 17569 : if (ret != 0) {</span>
|
||||
<span class="lineNum"> 181 </span><span class="lineCov"> 17583 : ret = symlink(linkto_exported, path);</span>
|
||||
<span class="lineNum"> 182 </span><span class="lineCov"> 17583 : if (ret != 0) {</span>
|
||||
<span class="lineNum"> 183 </span><span class="lineCov"> 517 : if (errno == EEXIST) {</span>
|
||||
<span class="lineNum"> 184 </span><span class="lineCov"> 517 : log_fatal("WARNING! Duplicate pooling for '%s'\n", path);</span>
|
||||
<span class="lineNum"> 185 </span> : #ifdef _WIN32
|
||||
|
|
@ -258,7 +258,7 @@
|
|||
<span class="lineNum"> 196 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 197 </span> : }
|
||||
<span class="lineNum"> 198 </span> : }
|
||||
<a name="199"><span class="lineNum"> 199 </span><span class="lineCov"> 17569 : }</span></a>
|
||||
<a name="199"><span class="lineNum"> 199 </span><span class="lineCov"> 17583 : }</span></a>
|
||||
<span class="lineNum"> 200 </span> :
|
||||
<span class="lineNum"> 201 </span><span class="lineCov"> 3 : void state_pool(struct snapraid_state* state)</span>
|
||||
<span class="lineNum"> 202 </span> : {
|
||||
|
|
@ -296,10 +296,10 @@
|
|||
<span class="lineNum"> 234 </span><span class="lineCov"> 18 : struct snapraid_disk* disk = i->data;</span>
|
||||
<span class="lineNum"> 235 </span> :
|
||||
<span class="lineNum"> 236 </span> : /* for each file */
|
||||
<span class="lineNum"> 237 </span><span class="lineCov"> 16998 : for (j = disk->filelist; j != 0; j = j->next) {</span>
|
||||
<span class="lineNum"> 238 </span><span class="lineCov"> 16980 : struct snapraid_file* file = j->data;</span>
|
||||
<span class="lineNum"> 239 </span><span class="lineCov"> 16980 : make_link(pool_dir, share_dir, disk, file->sub);</span>
|
||||
<span class="lineNum"> 240 </span><span class="lineCov"> 16980 : ++count;</span>
|
||||
<span class="lineNum"> 237 </span><span class="lineCov"> 17012 : for (j = disk->filelist; j != 0; j = j->next) {</span>
|
||||
<span class="lineNum"> 238 </span><span class="lineCov"> 16994 : struct snapraid_file* file = j->data;</span>
|
||||
<span class="lineNum"> 239 </span><span class="lineCov"> 16994 : make_link(pool_dir, share_dir, disk, file->sub);</span>
|
||||
<span class="lineNum"> 240 </span><span class="lineCov"> 16994 : ++count;</span>
|
||||
<span class="lineNum"> 241 </span> : }
|
||||
<span class="lineNum"> 242 </span> :
|
||||
<span class="lineNum"> 243 </span> : /* for each link */
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Date:</td>
|
||||
<td class="headerValue">2015-11-20</td>
|
||||
<td class="headerValue">2016-01-09</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
|
|
@ -60,7 +60,7 @@
|
|||
<td width="20%" class="tableHead">Hit count <span class="tableHeadSort"><img src="../glass.png" width=10 height=14 alt="Sort by hit count" title="Sort by hit count" border=0></span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="portable.h.gcov.html#255">hardlink</a></td>
|
||||
<td class="coverFn"><a href="portable.h.gcov.html#278">hardlink</a></td>
|
||||
<td class="coverFnHi">12</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Date:</td>
|
||||
<td class="headerValue">2015-11-20</td>
|
||||
<td class="headerValue">2016-01-09</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
|
|
@ -60,7 +60,7 @@
|
|||
<td width="20%" class="tableHead">Hit count <span class="tableHeadSort"><a href="portable.h.func-sort-c.html"><img src="../updown.png" width=10 height=14 alt="Sort by hit count" title="Sort by hit count" border=0></a></span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="portable.h.gcov.html#255">hardlink</a></td>
|
||||
<td class="coverFn"><a href="portable.h.gcov.html#278">hardlink</a></td>
|
||||
<td class="coverFnHi">12</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Date:</td>
|
||||
<td class="headerValue">2015-11-20</td>
|
||||
<td class="headerValue">2016-01-09</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
|
|
@ -131,357 +131,385 @@
|
|||
<span class="lineNum"> 69 </span> : #define __always_inline inline __attribute__((always_inline))
|
||||
<span class="lineNum"> 70 </span> : #endif
|
||||
<span class="lineNum"> 71 </span> :
|
||||
<span class="lineNum"> 72 </span> : /**
|
||||
<span class="lineNum"> 73 </span> : * Architecture.
|
||||
<span class="lineNum"> 74 </span> : */
|
||||
<span class="lineNum"> 75 </span> : #if defined(__i386__)
|
||||
<span class="lineNum"> 76 </span> : #define CONFIG_X86 1
|
||||
<span class="lineNum"> 77 </span> : #define CONFIG_X86_32 1
|
||||
<span class="lineNum"> 78 </span> : #endif
|
||||
<span class="lineNum"> 79 </span> :
|
||||
<span class="lineNum"> 80 </span> : #if defined(__x86_64__)
|
||||
<span class="lineNum"> 72 </span> : #ifndef __noreturn
|
||||
<span class="lineNum"> 73 </span> : #define __noreturn __attribute__((noreturn))
|
||||
<span class="lineNum"> 74 </span> : #endif
|
||||
<span class="lineNum"> 75 </span> :
|
||||
<span class="lineNum"> 76 </span> :
|
||||
<span class="lineNum"> 77 </span> : /**
|
||||
<span class="lineNum"> 78 </span> : * Architecture.
|
||||
<span class="lineNum"> 79 </span> : */
|
||||
<span class="lineNum"> 80 </span> : #if defined(__i386__)
|
||||
<span class="lineNum"> 81 </span> : #define CONFIG_X86 1
|
||||
<span class="lineNum"> 82 </span> : #define CONFIG_X86_64 1
|
||||
<span class="lineNum"> 82 </span> : #define CONFIG_X86_32 1
|
||||
<span class="lineNum"> 83 </span> : #endif
|
||||
<span class="lineNum"> 84 </span> :
|
||||
<span class="lineNum"> 85 </span> : /**
|
||||
<span class="lineNum"> 86 </span> : * Includes some platform specific headers.
|
||||
<span class="lineNum"> 87 </span> : */
|
||||
<span class="lineNum"> 88 </span> : #if HAVE_SYS_PARAM_H
|
||||
<span class="lineNum"> 89 </span> : #include <sys/param.h>
|
||||
<span class="lineNum"> 90 </span> : #endif
|
||||
<span class="lineNum"> 91 </span> :
|
||||
<span class="lineNum"> 92 </span> : #if HAVE_SYS_MOUNT_H
|
||||
<span class="lineNum"> 93 </span> : #include <sys/mount.h>
|
||||
<span class="lineNum"> 94 </span> : #endif
|
||||
<span class="lineNum"> 95 </span> :
|
||||
<span class="lineNum"> 96 </span> : #if HAVE_SYS_VFS_H
|
||||
<span class="lineNum"> 97 </span> : #include <sys/vfs.h>
|
||||
<span class="lineNum"> 98 </span> : #endif
|
||||
<span class="lineNum"> 99 </span> :
|
||||
<span class="lineNum"> 100 </span> : #if HAVE_SYS_STATFS_H
|
||||
<span class="lineNum"> 101 </span> : #include <sys/statfs.h>
|
||||
<span class="lineNum"> 102 </span> : #endif
|
||||
<span class="lineNum"> 103 </span> :
|
||||
<span class="lineNum"> 104 </span> : #if HAVE_SYS_FILE_H
|
||||
<span class="lineNum"> 105 </span> : #include <sys/file.h>
|
||||
<span class="lineNum"> 106 </span> : #endif
|
||||
<span class="lineNum"> 107 </span> :
|
||||
<span class="lineNum"> 108 </span> : #if HAVE_SYS_IOCTL_H
|
||||
<span class="lineNum"> 109 </span> : #include <sys/ioctl.h>
|
||||
<span class="lineNum"> 110 </span> : #endif
|
||||
<span class="lineNum"> 111 </span> :
|
||||
<span class="lineNum"> 112 </span> : #if HAVE_LINUX_FS_H
|
||||
<span class="lineNum"> 113 </span> : #include <linux/fs.h>
|
||||
<span class="lineNum"> 114 </span> : #endif
|
||||
<span class="lineNum"> 115 </span> :
|
||||
<span class="lineNum"> 116 </span> : #if HAVE_LINUX_FIEMAP_H
|
||||
<span class="lineNum"> 117 </span> : #include <linux/fiemap.h>
|
||||
<span class="lineNum"> 118 </span> : #endif
|
||||
<span class="lineNum"> 119 </span> :
|
||||
<span class="lineNum"> 120 </span> : /**
|
||||
<span class="lineNum"> 121 </span> : * Includes some standard headers.
|
||||
<span class="lineNum"> 122 </span> : */
|
||||
<span class="lineNum"> 123 </span> : #include <stdio.h>
|
||||
<span class="lineNum"> 124 </span> : #include <stdlib.h> /* On many systems (e.g., Darwin), `stdio.h' is a prerequisite. */
|
||||
<span class="lineNum"> 125 </span> : #include <stdarg.h>
|
||||
<span class="lineNum"> 126 </span> : #include <string.h>
|
||||
<span class="lineNum"> 127 </span> : #include <ctype.h>
|
||||
<span class="lineNum"> 128 </span> : #include <fcntl.h>
|
||||
<span class="lineNum"> 129 </span> : #include <assert.h>
|
||||
<span class="lineNum"> 130 </span> : #include <errno.h>
|
||||
<span class="lineNum"> 131 </span> : #include <signal.h>
|
||||
<span class="lineNum"> 132 </span> : #include <limits.h>
|
||||
<span class="lineNum"> 133 </span> :
|
||||
<span class="lineNum"> 134 </span> : #if HAVE_STDINT_H
|
||||
<span class="lineNum"> 135 </span> : #include <stdint.h>
|
||||
<span class="lineNum"> 136 </span> : #endif
|
||||
<span class="lineNum"> 137 </span> :
|
||||
<span class="lineNum"> 138 </span> : #if HAVE_INTTYPES_H
|
||||
<span class="lineNum"> 139 </span> : #include <inttypes.h>
|
||||
<span class="lineNum"> 140 </span> : #endif
|
||||
<span class="lineNum"> 141 </span> :
|
||||
<span class="lineNum"> 142 </span> : #if HAVE_UNISTD_H
|
||||
<span class="lineNum"> 143 </span> : #include <unistd.h>
|
||||
<span class="lineNum"> 144 </span> : #endif
|
||||
<span class="lineNum"> 85 </span> : #if defined(__x86_64__)
|
||||
<span class="lineNum"> 86 </span> : #define CONFIG_X86 1
|
||||
<span class="lineNum"> 87 </span> : #define CONFIG_X86_64 1
|
||||
<span class="lineNum"> 88 </span> : #endif
|
||||
<span class="lineNum"> 89 </span> :
|
||||
<span class="lineNum"> 90 </span> : /**
|
||||
<span class="lineNum"> 91 </span> : * Includes some platform specific headers.
|
||||
<span class="lineNum"> 92 </span> : */
|
||||
<span class="lineNum"> 93 </span> : #if HAVE_SYS_PARAM_H
|
||||
<span class="lineNum"> 94 </span> : #include <sys/param.h>
|
||||
<span class="lineNum"> 95 </span> : #endif
|
||||
<span class="lineNum"> 96 </span> :
|
||||
<span class="lineNum"> 97 </span> : #if HAVE_SYS_MOUNT_H
|
||||
<span class="lineNum"> 98 </span> : #include <sys/mount.h>
|
||||
<span class="lineNum"> 99 </span> : #endif
|
||||
<span class="lineNum"> 100 </span> :
|
||||
<span class="lineNum"> 101 </span> : #if HAVE_SYS_VFS_H
|
||||
<span class="lineNum"> 102 </span> : #include <sys/vfs.h>
|
||||
<span class="lineNum"> 103 </span> : #endif
|
||||
<span class="lineNum"> 104 </span> :
|
||||
<span class="lineNum"> 105 </span> : #if HAVE_SYS_STATFS_H
|
||||
<span class="lineNum"> 106 </span> : #include <sys/statfs.h>
|
||||
<span class="lineNum"> 107 </span> : #endif
|
||||
<span class="lineNum"> 108 </span> :
|
||||
<span class="lineNum"> 109 </span> : #if HAVE_SYS_FILE_H
|
||||
<span class="lineNum"> 110 </span> : #include <sys/file.h>
|
||||
<span class="lineNum"> 111 </span> : #endif
|
||||
<span class="lineNum"> 112 </span> :
|
||||
<span class="lineNum"> 113 </span> : #if HAVE_SYS_IOCTL_H
|
||||
<span class="lineNum"> 114 </span> : #include <sys/ioctl.h>
|
||||
<span class="lineNum"> 115 </span> : #endif
|
||||
<span class="lineNum"> 116 </span> :
|
||||
<span class="lineNum"> 117 </span> : #if HAVE_LINUX_FS_H
|
||||
<span class="lineNum"> 118 </span> : #include <linux/fs.h>
|
||||
<span class="lineNum"> 119 </span> : #endif
|
||||
<span class="lineNum"> 120 </span> :
|
||||
<span class="lineNum"> 121 </span> : #if HAVE_LINUX_FIEMAP_H
|
||||
<span class="lineNum"> 122 </span> : #include <linux/fiemap.h>
|
||||
<span class="lineNum"> 123 </span> : #endif
|
||||
<span class="lineNum"> 124 </span> :
|
||||
<span class="lineNum"> 125 </span> : #if HAVE_BLKID_BLKID_H
|
||||
<span class="lineNum"> 126 </span> : #include <blkid/blkid.h>
|
||||
<span class="lineNum"> 127 </span> : #if HAVE_BLKID_DEVNO_TO_DEVNAME && HAVE_BLKID_GET_TAG_VALUE
|
||||
<span class="lineNum"> 128 </span> : #define HAVE_BLKID 1
|
||||
<span class="lineNum"> 129 </span> : #endif
|
||||
<span class="lineNum"> 130 </span> : #endif
|
||||
<span class="lineNum"> 131 </span> :
|
||||
<span class="lineNum"> 132 </span> : /**
|
||||
<span class="lineNum"> 133 </span> : * Includes some standard headers.
|
||||
<span class="lineNum"> 134 </span> : */
|
||||
<span class="lineNum"> 135 </span> : #include <stdio.h>
|
||||
<span class="lineNum"> 136 </span> : #include <stdlib.h> /* On many systems (e.g., Darwin), `stdio.h' is a prerequisite. */
|
||||
<span class="lineNum"> 137 </span> : #include <stdarg.h>
|
||||
<span class="lineNum"> 138 </span> : #include <string.h>
|
||||
<span class="lineNum"> 139 </span> : #include <ctype.h>
|
||||
<span class="lineNum"> 140 </span> : #include <fcntl.h>
|
||||
<span class="lineNum"> 141 </span> : #include <assert.h>
|
||||
<span class="lineNum"> 142 </span> : #include <errno.h>
|
||||
<span class="lineNum"> 143 </span> : #include <signal.h>
|
||||
<span class="lineNum"> 144 </span> : #include <limits.h>
|
||||
<span class="lineNum"> 145 </span> :
|
||||
<span class="lineNum"> 146 </span> : #if TIME_WITH_SYS_TIME
|
||||
<span class="lineNum"> 147 </span> : #include <sys/time.h>
|
||||
<span class="lineNum"> 148 </span> : #include <time.h>
|
||||
<span class="lineNum"> 149 </span> : #else
|
||||
<span class="lineNum"> 150 </span> : #if HAVE_SYS_TIME_H
|
||||
<span class="lineNum"> 151 </span> : #include <sys/time.h>
|
||||
<span class="lineNum"> 152 </span> : #else
|
||||
<span class="lineNum"> 153 </span> : #include <time.h>
|
||||
<span class="lineNum"> 154 </span> : #endif
|
||||
<span class="lineNum"> 155 </span> : #endif
|
||||
<span class="lineNum"> 156 </span> :
|
||||
<span class="lineNum"> 157 </span> : #if HAVE_MACH_MACH_TIME_H
|
||||
<span class="lineNum"> 158 </span> : #include <mach/mach_time.h>
|
||||
<span class="lineNum"> 159 </span> : #endif
|
||||
<span class="lineNum"> 160 </span> :
|
||||
<span class="lineNum"> 161 </span> : #if HAVE_DIRENT_H
|
||||
<span class="lineNum"> 162 </span> : #include <dirent.h>
|
||||
<span class="lineNum"> 163 </span> : #define NAMLEN(dirent) strlen((dirent)->d_name)
|
||||
<span class="lineNum"> 146 </span> : #if HAVE_STDINT_H
|
||||
<span class="lineNum"> 147 </span> : #include <stdint.h>
|
||||
<span class="lineNum"> 148 </span> : #endif
|
||||
<span class="lineNum"> 149 </span> :
|
||||
<span class="lineNum"> 150 </span> : #if HAVE_INTTYPES_H
|
||||
<span class="lineNum"> 151 </span> : #include <inttypes.h>
|
||||
<span class="lineNum"> 152 </span> : #endif
|
||||
<span class="lineNum"> 153 </span> :
|
||||
<span class="lineNum"> 154 </span> : #if HAVE_UNISTD_H
|
||||
<span class="lineNum"> 155 </span> : #include <unistd.h>
|
||||
<span class="lineNum"> 156 </span> : #endif
|
||||
<span class="lineNum"> 157 </span> :
|
||||
<span class="lineNum"> 158 </span> : #if TIME_WITH_SYS_TIME
|
||||
<span class="lineNum"> 159 </span> : #include <sys/time.h>
|
||||
<span class="lineNum"> 160 </span> : #include <time.h>
|
||||
<span class="lineNum"> 161 </span> : #else
|
||||
<span class="lineNum"> 162 </span> : #if HAVE_SYS_TIME_H
|
||||
<span class="lineNum"> 163 </span> : #include <sys/time.h>
|
||||
<span class="lineNum"> 164 </span> : #else
|
||||
<span class="lineNum"> 165 </span> : #define dirent direct
|
||||
<span class="lineNum"> 166 </span> : #define NAMLEN(dirent) (dirent)->d_namlen
|
||||
<span class="lineNum"> 167 </span> : #if HAVE_SYS_NDIR_H
|
||||
<span class="lineNum"> 168 </span> : #include <sys/ndir.h>
|
||||
<span class="lineNum"> 169 </span> : #endif
|
||||
<span class="lineNum"> 170 </span> : #if HAVE_SYS_DIR_H
|
||||
<span class="lineNum"> 171 </span> : #include <sys/dir.h>
|
||||
<span class="lineNum"> 172 </span> : #endif
|
||||
<span class="lineNum"> 173 </span> : #if HAVE_NDIR_H
|
||||
<span class="lineNum"> 174 </span> : #include <ndir.h>
|
||||
<span class="lineNum"> 175 </span> : #endif
|
||||
<span class="lineNum"> 176 </span> : #endif
|
||||
<span class="lineNum"> 177 </span> :
|
||||
<span class="lineNum"> 178 </span> : #if HAVE_SYS_TYPES_H
|
||||
<span class="lineNum"> 179 </span> : #include <sys/types.h>
|
||||
<span class="lineNum"> 180 </span> : #endif
|
||||
<span class="lineNum"> 181 </span> :
|
||||
<span class="lineNum"> 182 </span> : #if HAVE_SYS_STAT_H
|
||||
<span class="lineNum"> 183 </span> : #include <sys/stat.h>
|
||||
<span class="lineNum"> 165 </span> : #include <time.h>
|
||||
<span class="lineNum"> 166 </span> : #endif
|
||||
<span class="lineNum"> 167 </span> : #endif
|
||||
<span class="lineNum"> 168 </span> :
|
||||
<span class="lineNum"> 169 </span> : #if HAVE_MACH_MACH_TIME_H
|
||||
<span class="lineNum"> 170 </span> : #include <mach/mach_time.h>
|
||||
<span class="lineNum"> 171 </span> : #endif
|
||||
<span class="lineNum"> 172 </span> :
|
||||
<span class="lineNum"> 173 </span> : #if HAVE_DIRENT_H
|
||||
<span class="lineNum"> 174 </span> : #include <dirent.h>
|
||||
<span class="lineNum"> 175 </span> : #define NAMLEN(dirent) strlen((dirent)->d_name)
|
||||
<span class="lineNum"> 176 </span> : #else
|
||||
<span class="lineNum"> 177 </span> : #define dirent direct
|
||||
<span class="lineNum"> 178 </span> : #define NAMLEN(dirent) (dirent)->d_namlen
|
||||
<span class="lineNum"> 179 </span> : #if HAVE_SYS_NDIR_H
|
||||
<span class="lineNum"> 180 </span> : #include <sys/ndir.h>
|
||||
<span class="lineNum"> 181 </span> : #endif
|
||||
<span class="lineNum"> 182 </span> : #if HAVE_SYS_DIR_H
|
||||
<span class="lineNum"> 183 </span> : #include <sys/dir.h>
|
||||
<span class="lineNum"> 184 </span> : #endif
|
||||
<span class="lineNum"> 185 </span> :
|
||||
<span class="lineNum"> 186 </span> : #if HAVE_SYS_WAIT_H
|
||||
<span class="lineNum"> 187 </span> : #include <sys/wait.h>
|
||||
<span class="lineNum"> 185 </span> : #if HAVE_NDIR_H
|
||||
<span class="lineNum"> 186 </span> : #include <ndir.h>
|
||||
<span class="lineNum"> 187 </span> : #endif
|
||||
<span class="lineNum"> 188 </span> : #endif
|
||||
<span class="lineNum"> 189 </span> : #ifndef WEXITSTATUS
|
||||
<span class="lineNum"> 190 </span> : #define WEXITSTATUS(stat_val) ((unsigned)(stat_val) >> 8)
|
||||
<span class="lineNum"> 191 </span> : #endif
|
||||
<span class="lineNum"> 192 </span> : #ifndef WIFEXITED
|
||||
<span class="lineNum"> 193 </span> : #define WIFEXITED(stat_val) (((stat_val) & 255) == 0)
|
||||
<span class="lineNum"> 194 </span> : #endif
|
||||
<span class="lineNum"> 195 </span> :
|
||||
<span class="lineNum"> 196 </span> : #if HAVE_GETOPT_H
|
||||
<span class="lineNum"> 197 </span> : #include <getopt.h>
|
||||
<span class="lineNum"> 198 </span> : #endif
|
||||
<span class="lineNum"> 199 </span> :
|
||||
<span class="lineNum"> 200 </span> : #if HAVE_FNMATCH_H
|
||||
<span class="lineNum"> 201 </span> : #include <fnmatch.h>
|
||||
<span class="lineNum"> 202 </span> : #else
|
||||
<span class="lineNum"> 203 </span> : #include "fnmatch.h"
|
||||
<span class="lineNum"> 204 </span> : #endif
|
||||
<span class="lineNum"> 205 </span> :
|
||||
<span class="lineNum"> 206 </span> : #if HAVE_PTHREAD_H
|
||||
<span class="lineNum"> 207 </span> : #include <pthread.h>
|
||||
<span class="lineNum"> 208 </span> : #endif
|
||||
<span class="lineNum"> 209 </span> :
|
||||
<span class="lineNum"> 210 </span> : #if HAVE_MATH_H
|
||||
<span class="lineNum"> 211 </span> : #include <math.h>
|
||||
<span class="lineNum"> 212 </span> : #endif
|
||||
<span class="lineNum"> 213 </span> :
|
||||
<span class="lineNum"> 214 </span> : /**
|
||||
<span class="lineNum"> 215 </span> : * Disable case check in Windows.
|
||||
<span class="lineNum"> 216 </span> : */
|
||||
<span class="lineNum"> 217 </span> : #ifdef _WIN32
|
||||
<span class="lineNum"> 218 </span> : #define FNM_CASEINSENSITIVE_FOR_WIN FNM_CASEFOLD
|
||||
<span class="lineNum"> 219 </span> : #else
|
||||
<span class="lineNum"> 220 </span> : #define FNM_CASEINSENSITIVE_FOR_WIN 0
|
||||
<span class="lineNum"> 221 </span> : #endif
|
||||
<span class="lineNum"> 222 </span> :
|
||||
<span class="lineNum"> 223 </span> : #if HAVE_IO_H
|
||||
<span class="lineNum"> 224 </span> : #include <io.h>
|
||||
<span class="lineNum"> 225 </span> : #endif
|
||||
<span class="lineNum"> 226 </span> :
|
||||
<span class="lineNum"> 227 </span> : #if HAVE_GETOPT_LONG
|
||||
<span class="lineNum"> 228 </span> : #define SWITCH_GETOPT_LONG(a, b) a
|
||||
<span class="lineNum"> 229 </span> : #else
|
||||
<span class="lineNum"> 230 </span> : #define SWITCH_GETOPT_LONG(a, b) b
|
||||
<span class="lineNum"> 231 </span> : #endif
|
||||
<span class="lineNum"> 232 </span> :
|
||||
<span class="lineNum"> 233 </span> : /**
|
||||
<span class="lineNum"> 234 </span> : * Enables lock file support.
|
||||
<span class="lineNum"> 235 </span> : */
|
||||
<span class="lineNum"> 236 </span> : #if HAVE_FLOCK && HAVE_FTRUNCATE
|
||||
<span class="lineNum"> 237 </span> : #define HAVE_LOCKFILE 1
|
||||
<span class="lineNum"> 238 </span> : #endif
|
||||
<span class="lineNum"> 239 </span> :
|
||||
<span class="lineNum"> 240 </span> : /**
|
||||
<span class="lineNum"> 241 </span> : * Includes specific support for Windows or Linux.
|
||||
<span class="lineNum"> 242 </span> : */
|
||||
<span class="lineNum"> 243 </span> : #ifdef __MINGW32__
|
||||
<span class="lineNum"> 244 </span> : #include "mingw.h"
|
||||
<span class="lineNum"> 245 </span> : #else
|
||||
<span class="lineNum"> 246 </span> : #include "unix.h"
|
||||
<span class="lineNum"> 247 </span> : #endif
|
||||
<span class="lineNum"> 248 </span> :
|
||||
<span class="lineNum"> 249 </span> : /**
|
||||
<span class="lineNum"> 250 </span> : * Include list support to have tommy_node.
|
||||
<span class="lineNum"> 251 </span> : */
|
||||
<span class="lineNum"> 252 </span> : #include "tommyds/tommylist.h"
|
||||
<span class="lineNum"> 253 </span> :
|
||||
<span class="lineNum"> 254 </span> : /**
|
||||
<a name="255"><span class="lineNum"> 255 </span> : * Another name for link() to avoid confusion with local variables called "link".</a>
|
||||
<span class="lineNum"> 256 </span> : */
|
||||
<span class="lineNum"> 257 </span><span class="lineCov"> 12 : static inline int hardlink(const char* a, const char* b)</span>
|
||||
<span class="lineNum"> 258 </span> : {
|
||||
<span class="lineNum"> 259 </span><span class="lineCov"> 12 : return link(a, b);</span>
|
||||
<span class="lineNum"> 260 </span> : }
|
||||
<span class="lineNum"> 261 </span> :
|
||||
<span class="lineNum"> 262 </span> : /**
|
||||
<span class="lineNum"> 263 </span> : * Get the device UUID.
|
||||
<span class="lineNum"> 264 </span> : * Return 0 on success.
|
||||
<span class="lineNum"> 189 </span> :
|
||||
<span class="lineNum"> 190 </span> : #if HAVE_SYS_TYPES_H
|
||||
<span class="lineNum"> 191 </span> : #include <sys/types.h>
|
||||
<span class="lineNum"> 192 </span> : #endif
|
||||
<span class="lineNum"> 193 </span> :
|
||||
<span class="lineNum"> 194 </span> : #if HAVE_SYS_STAT_H
|
||||
<span class="lineNum"> 195 </span> : #include <sys/stat.h>
|
||||
<span class="lineNum"> 196 </span> : #endif
|
||||
<span class="lineNum"> 197 </span> :
|
||||
<span class="lineNum"> 198 </span> : #if HAVE_SYS_WAIT_H
|
||||
<span class="lineNum"> 199 </span> : #include <sys/wait.h>
|
||||
<span class="lineNum"> 200 </span> : #endif
|
||||
<span class="lineNum"> 201 </span> : #ifndef WEXITSTATUS
|
||||
<span class="lineNum"> 202 </span> : #define WEXITSTATUS(stat_val) ((unsigned)(stat_val) >> 8)
|
||||
<span class="lineNum"> 203 </span> : #endif
|
||||
<span class="lineNum"> 204 </span> : #ifndef WIFEXITED
|
||||
<span class="lineNum"> 205 </span> : #define WIFEXITED(stat_val) (((stat_val) & 255) == 0)
|
||||
<span class="lineNum"> 206 </span> : #endif
|
||||
<span class="lineNum"> 207 </span> :
|
||||
<span class="lineNum"> 208 </span> : #if HAVE_GETOPT_H
|
||||
<span class="lineNum"> 209 </span> : #include <getopt.h>
|
||||
<span class="lineNum"> 210 </span> : #endif
|
||||
<span class="lineNum"> 211 </span> :
|
||||
<span class="lineNum"> 212 </span> : #if HAVE_FNMATCH_H
|
||||
<span class="lineNum"> 213 </span> : #include <fnmatch.h>
|
||||
<span class="lineNum"> 214 </span> : #else
|
||||
<span class="lineNum"> 215 </span> : #include "fnmatch.h"
|
||||
<span class="lineNum"> 216 </span> : #endif
|
||||
<span class="lineNum"> 217 </span> :
|
||||
<span class="lineNum"> 218 </span> : #if HAVE_PTHREAD_H
|
||||
<span class="lineNum"> 219 </span> : #include <pthread.h>
|
||||
<span class="lineNum"> 220 </span> : #endif
|
||||
<span class="lineNum"> 221 </span> :
|
||||
<span class="lineNum"> 222 </span> : #if HAVE_MATH_H
|
||||
<span class="lineNum"> 223 </span> : #include <math.h>
|
||||
<span class="lineNum"> 224 </span> : #endif
|
||||
<span class="lineNum"> 225 </span> :
|
||||
<span class="lineNum"> 226 </span> : #if HAVE_EXECINFO_H
|
||||
<span class="lineNum"> 227 </span> : #include <execinfo.h>
|
||||
<span class="lineNum"> 228 </span> : #endif
|
||||
<span class="lineNum"> 229 </span> :
|
||||
<span class="lineNum"> 230 </span> : /**
|
||||
<span class="lineNum"> 231 </span> : * Enable thread use.
|
||||
<span class="lineNum"> 232 </span> : */
|
||||
<span class="lineNum"> 233 </span> : #if HAVE_PTHREAD_H && HAVE_PTHREAD_CREATE
|
||||
<span class="lineNum"> 234 </span> : #define HAVE_PTHREAD 1
|
||||
<span class="lineNum"> 235 </span> : #endif
|
||||
<span class="lineNum"> 236 </span> :
|
||||
<span class="lineNum"> 237 </span> : /**
|
||||
<span class="lineNum"> 238 </span> : * Disable case check in Windows.
|
||||
<span class="lineNum"> 239 </span> : */
|
||||
<span class="lineNum"> 240 </span> : #ifdef _WIN32
|
||||
<span class="lineNum"> 241 </span> : #define FNM_CASEINSENSITIVE_FOR_WIN FNM_CASEFOLD
|
||||
<span class="lineNum"> 242 </span> : #else
|
||||
<span class="lineNum"> 243 </span> : #define FNM_CASEINSENSITIVE_FOR_WIN 0
|
||||
<span class="lineNum"> 244 </span> : #endif
|
||||
<span class="lineNum"> 245 </span> :
|
||||
<span class="lineNum"> 246 </span> : #if HAVE_IO_H
|
||||
<span class="lineNum"> 247 </span> : #include <io.h>
|
||||
<span class="lineNum"> 248 </span> : #endif
|
||||
<span class="lineNum"> 249 </span> :
|
||||
<span class="lineNum"> 250 </span> : #if HAVE_GETOPT_LONG
|
||||
<span class="lineNum"> 251 </span> : #define SWITCH_GETOPT_LONG(a, b) a
|
||||
<span class="lineNum"> 252 </span> : #else
|
||||
<span class="lineNum"> 253 </span> : #define SWITCH_GETOPT_LONG(a, b) b
|
||||
<span class="lineNum"> 254 </span> : #endif
|
||||
<span class="lineNum"> 255 </span> :
|
||||
<span class="lineNum"> 256 </span> : /**
|
||||
<span class="lineNum"> 257 </span> : * Enables lock file support.
|
||||
<span class="lineNum"> 258 </span> : */
|
||||
<span class="lineNum"> 259 </span> : #if HAVE_FLOCK && HAVE_FTRUNCATE
|
||||
<span class="lineNum"> 260 </span> : #define HAVE_LOCKFILE 1
|
||||
<span class="lineNum"> 261 </span> : #endif
|
||||
<span class="lineNum"> 262 </span> :
|
||||
<span class="lineNum"> 263 </span> : /**
|
||||
<span class="lineNum"> 264 </span> : * Includes specific support for Windows or Linux.
|
||||
<span class="lineNum"> 265 </span> : */
|
||||
<span class="lineNum"> 266 </span> : int devuuid(uint64_t device, char* uuid, size_t size);
|
||||
<span class="lineNum"> 267 </span> :
|
||||
<span class="lineNum"> 268 </span> : /**
|
||||
<span class="lineNum"> 269 </span> : * Physical offset not yet read.
|
||||
<span class="lineNum"> 270 </span> : */
|
||||
<span class="lineNum"> 271 </span> : #define FILEPHY_UNREAD_OFFSET 0
|
||||
<span class="lineNum"> 272 </span> :
|
||||
<span class="lineNum"> 273 </span> : /**
|
||||
<span class="lineNum"> 274 </span> : * Special value returned when the filesystem doesn't report any offset for unknown reason.
|
||||
<span class="lineNum"> 275 </span> : */
|
||||
<span class="lineNum"> 276 </span> : #define FILEPHY_UNREPORTED_OFFSET 1
|
||||
<span class="lineNum"> 277 </span> :
|
||||
<span class="lineNum"> 278 </span> : /**
|
||||
<span class="lineNum"> 279 </span> : * Special value returned when the file doesn't have a real offset.
|
||||
<span class="lineNum"> 280 </span> : * For example, because it's stored in the NTFS MFT.
|
||||
<span class="lineNum"> 281 </span> : */
|
||||
<span class="lineNum"> 282 </span> : #define FILEPHY_WITHOUT_OFFSET 2
|
||||
<span class="lineNum"> 283 </span> :
|
||||
<span class="lineNum"> 284 </span> : /**
|
||||
<span class="lineNum"> 285 </span> : * Value indicating real offsets. All offsets greater or equal at this one are real.
|
||||
<span class="lineNum"> 286 </span> : */
|
||||
<span class="lineNum"> 287 </span> : #define FILEPHY_REAL_OFFSET 3
|
||||
<span class="lineNum"> 288 </span> :
|
||||
<span class="lineNum"> 289 </span> : /**
|
||||
<span class="lineNum"> 290 </span> : * Get the physcal address of the specified file.
|
||||
<span class="lineNum"> 291 </span> : * This is expected to be just a hint and not necessarely correct or unique.
|
||||
<span class="lineNum"> 292 </span> : * Return 0 on success.
|
||||
<span class="lineNum"> 266 </span> : #ifdef __MINGW32__
|
||||
<span class="lineNum"> 267 </span> : #include "mingw.h"
|
||||
<span class="lineNum"> 268 </span> : #else
|
||||
<span class="lineNum"> 269 </span> : #include "unix.h"
|
||||
<span class="lineNum"> 270 </span> : #endif
|
||||
<span class="lineNum"> 271 </span> :
|
||||
<span class="lineNum"> 272 </span> : /**
|
||||
<span class="lineNum"> 273 </span> : * Include list support to have tommy_node.
|
||||
<span class="lineNum"> 274 </span> : */
|
||||
<span class="lineNum"> 275 </span> : #include "tommyds/tommylist.h"
|
||||
<span class="lineNum"> 276 </span> :
|
||||
<span class="lineNum"> 277 </span> : /**
|
||||
<a name="278"><span class="lineNum"> 278 </span> : * Another name for link() to avoid confusion with local variables called "link".</a>
|
||||
<span class="lineNum"> 279 </span> : */
|
||||
<span class="lineNum"> 280 </span><span class="lineCov"> 12 : static inline int hardlink(const char* a, const char* b)</span>
|
||||
<span class="lineNum"> 281 </span> : {
|
||||
<span class="lineNum"> 282 </span><span class="lineCov"> 12 : return link(a, b);</span>
|
||||
<span class="lineNum"> 283 </span> : }
|
||||
<span class="lineNum"> 284 </span> :
|
||||
<span class="lineNum"> 285 </span> : /**
|
||||
<span class="lineNum"> 286 </span> : * Get the device UUID.
|
||||
<span class="lineNum"> 287 </span> : * Return 0 on success.
|
||||
<span class="lineNum"> 288 </span> : */
|
||||
<span class="lineNum"> 289 </span> : int devuuid(uint64_t device, char* uuid, size_t size);
|
||||
<span class="lineNum"> 290 </span> :
|
||||
<span class="lineNum"> 291 </span> : /**
|
||||
<span class="lineNum"> 292 </span> : * Physical offset not yet read.
|
||||
<span class="lineNum"> 293 </span> : */
|
||||
<span class="lineNum"> 294 </span> : int filephy(const char* path, uint64_t size, uint64_t* physical);
|
||||
<span class="lineNum"> 294 </span> : #define FILEPHY_UNREAD_OFFSET 0
|
||||
<span class="lineNum"> 295 </span> :
|
||||
<span class="lineNum"> 296 </span> : /**
|
||||
<span class="lineNum"> 297 </span> : * Check if the underline filesystem support persistent inodes.
|
||||
<span class="lineNum"> 298 </span> : * Return -1 on error, 0 on success.
|
||||
<span class="lineNum"> 299 </span> : */
|
||||
<span class="lineNum"> 300 </span> : int fsinfo(const char* path, int* has_persistent_inode, uint64_t* total_space, uint64_t* free_space);
|
||||
<span class="lineNum"> 301 </span> :
|
||||
<span class="lineNum"> 302 </span> : /**
|
||||
<span class="lineNum"> 303 </span> : * Get the tick counter value.
|
||||
<span class="lineNum"> 304 </span> : *
|
||||
<span class="lineNum"> 305 </span> : * Note that the frequency is unspecified, because the time measure
|
||||
<span class="lineNum"> 306 </span> : * is meant to be used to compare the ratio between usage times.
|
||||
<span class="lineNum"> 307 </span> : */
|
||||
<span class="lineNum"> 308 </span> : uint64_t tick(void);
|
||||
<span class="lineNum"> 309 </span> :
|
||||
<span class="lineNum"> 310 </span> : /**
|
||||
<span class="lineNum"> 311 </span> : * Get the tick counter value in millisecond.
|
||||
<span class="lineNum"> 312 </span> : */
|
||||
<span class="lineNum"> 313 </span> : uint64_t tick_ms(void);
|
||||
<span class="lineNum"> 314 </span> :
|
||||
<span class="lineNum"> 315 </span> : /**
|
||||
<span class="lineNum"> 316 </span> : * Initializes the system.
|
||||
<span class="lineNum"> 317 </span> : */
|
||||
<span class="lineNum"> 318 </span> : void os_init(int opt);
|
||||
<span class="lineNum"> 319 </span> :
|
||||
<span class="lineNum"> 320 </span> : /**
|
||||
<span class="lineNum"> 321 </span> : * Deintialize the system.
|
||||
<span class="lineNum"> 297 </span> : * Special value returned when the file-system doesn't report any offset for unknown reason.
|
||||
<span class="lineNum"> 298 </span> : */
|
||||
<span class="lineNum"> 299 </span> : #define FILEPHY_UNREPORTED_OFFSET 1
|
||||
<span class="lineNum"> 300 </span> :
|
||||
<span class="lineNum"> 301 </span> : /**
|
||||
<span class="lineNum"> 302 </span> : * Special value returned when the file doesn't have a real offset.
|
||||
<span class="lineNum"> 303 </span> : * For example, because it's stored in the NTFS MFT.
|
||||
<span class="lineNum"> 304 </span> : */
|
||||
<span class="lineNum"> 305 </span> : #define FILEPHY_WITHOUT_OFFSET 2
|
||||
<span class="lineNum"> 306 </span> :
|
||||
<span class="lineNum"> 307 </span> : /**
|
||||
<span class="lineNum"> 308 </span> : * Value indicating real offsets. All offsets greater or equal at this one are real.
|
||||
<span class="lineNum"> 309 </span> : */
|
||||
<span class="lineNum"> 310 </span> : #define FILEPHY_REAL_OFFSET 3
|
||||
<span class="lineNum"> 311 </span> :
|
||||
<span class="lineNum"> 312 </span> : /**
|
||||
<span class="lineNum"> 313 </span> : * Get the physcal address of the specified file.
|
||||
<span class="lineNum"> 314 </span> : * This is expected to be just a hint and not necessarily correct or unique.
|
||||
<span class="lineNum"> 315 </span> : * Return 0 on success.
|
||||
<span class="lineNum"> 316 </span> : */
|
||||
<span class="lineNum"> 317 </span> : int filephy(const char* path, uint64_t size, uint64_t* physical);
|
||||
<span class="lineNum"> 318 </span> :
|
||||
<span class="lineNum"> 319 </span> : /**
|
||||
<span class="lineNum"> 320 </span> : * Check if the underline file-system support persistent inodes.
|
||||
<span class="lineNum"> 321 </span> : * Return -1 on error, 0 on success.
|
||||
<span class="lineNum"> 322 </span> : */
|
||||
<span class="lineNum"> 323 </span> : void os_done(void);
|
||||
<span class="lineNum"> 323 </span> : int fsinfo(const char* path, int* has_persistent_inode, uint64_t* total_space, uint64_t* free_space);
|
||||
<span class="lineNum"> 324 </span> :
|
||||
<span class="lineNum"> 325 </span> : /**
|
||||
<span class="lineNum"> 326 </span> : * Log file.
|
||||
<span class="lineNum"> 326 </span> : * Get the tick counter value.
|
||||
<span class="lineNum"> 327 </span> : *
|
||||
<span class="lineNum"> 328 </span> : * This stream if fully buffered.
|
||||
<span class="lineNum"> 329 </span> : *
|
||||
<span class="lineNum"> 330 </span> : * If no log file is selected, it's 0.
|
||||
<span class="lineNum"> 331 </span> : */
|
||||
<span class="lineNum"> 332 </span> : FILE* stdlog;
|
||||
<span class="lineNum"> 333 </span> :
|
||||
<span class="lineNum"> 334 </span> : /**
|
||||
<span class="lineNum"> 335 </span> : * Exit codes for testing.
|
||||
<span class="lineNum"> 336 </span> : */
|
||||
<span class="lineNum"> 337 </span> : int exit_success;
|
||||
<span class="lineNum"> 338 </span> : int exit_failure;
|
||||
<span class="lineNum"> 339 </span> : int exit_sync_needed;
|
||||
<span class="lineNum"> 340 </span> : #undef EXIT_SUCCESS
|
||||
<span class="lineNum"> 341 </span> : #undef EXIT_FAILURE
|
||||
<span class="lineNum"> 342 </span> : #define EXIT_SUCCESS exit_success
|
||||
<span class="lineNum"> 343 </span> : #define EXIT_FAILURE exit_failure
|
||||
<span class="lineNum"> 344 </span> : #define EXIT_SYNC_NEEDED exit_sync_needed
|
||||
<span class="lineNum"> 345 </span> :
|
||||
<span class="lineNum"> 346 </span> : /**
|
||||
<span class="lineNum"> 347 </span> : * Fill memory with psudeo-random values.
|
||||
<span class="lineNum"> 348 </span> : */
|
||||
<span class="lineNum"> 349 </span> : int randomize(void* ptr, size_t size);
|
||||
<span class="lineNum"> 350 </span> :
|
||||
<span class="lineNum"> 351 </span> : /**
|
||||
<span class="lineNum"> 352 </span> : * Additional SMART attributes.
|
||||
<span class="lineNum"> 353 </span> : */
|
||||
<span class="lineNum"> 354 </span> : #define SMART_ERROR 256 /**< ATA Error count. */
|
||||
<span class="lineNum"> 355 </span> : #define SMART_SIZE 257 /**< Size in bytes. */
|
||||
<span class="lineNum"> 356 </span> : #define SMART_ROTATION_RATE 258 /**< Rotation speed. 0 for SSD. */
|
||||
<span class="lineNum"> 357 </span> : #define SMART_FLAGS 259 /**< Flags returned by smartctl. */
|
||||
<span class="lineNum"> 358 </span> :
|
||||
<span class="lineNum"> 359 </span> : /**
|
||||
<span class="lineNum"> 360 </span> : * SMART attributes count.
|
||||
<span class="lineNum"> 361 </span> : */
|
||||
<span class="lineNum"> 362 </span> : #define SMART_COUNT 260
|
||||
<span class="lineNum"> 363 </span> :
|
||||
<span class="lineNum"> 364 </span> : /**
|
||||
<span class="lineNum"> 365 </span> : * Flags returned by smartctl.
|
||||
<span class="lineNum"> 366 </span> : */
|
||||
<span class="lineNum"> 367 </span> : #define SMARTCTL_FLAG_UNSUPPORTED (1 << 0) /**< Device not recognized, requiring the -d option. */
|
||||
<span class="lineNum"> 368 </span> : #define SMARTCTL_FLAG_OPEN (1 << 1) /**< Device open or identification failed. */
|
||||
<span class="lineNum"> 369 </span> : #define SMARTCTL_FLAG_COMMAND (1 << 2) /**< Some SMART or ATA commands failed. This is a common error, also happening with full info gathering. */
|
||||
<span class="lineNum"> 370 </span> : #define SMARTCTL_FLAG_FAIL (1 << 3) /**< SMART status check returned "DISK FAILING". */
|
||||
<span class="lineNum"> 371 </span> : #define SMARTCTL_FLAG_PREFAIL (1 << 4) /**< We found prefail Attributes <= threshold. */
|
||||
<span class="lineNum"> 372 </span> : #define SMARTCTL_FLAG_PREFAIL_LOGGED (1 << 5) /**< SMART status check returned "DISK OK" but we found that some (usage or prefail) Attributes have been <= threshold at some time in the past. */
|
||||
<span class="lineNum"> 373 </span> : #define SMARTCTL_FLAG_ERROR (1 << 6) /**< The device error log contains records of errors. */
|
||||
<span class="lineNum"> 374 </span> : #define SMARTCTL_FLAG_ERROR_LOGGED (1 << 7) /**< The device self-test log contains records of errors. */
|
||||
<span class="lineNum"> 375 </span> :
|
||||
<span class="lineNum"> 376 </span> : /**
|
||||
<span class="lineNum"> 377 </span> : * SMART max attribute length.
|
||||
<span class="lineNum"> 378 </span> : */
|
||||
<span class="lineNum"> 379 </span> : #define SMART_MAX 64
|
||||
<span class="lineNum"> 380 </span> :
|
||||
<span class="lineNum"> 381 </span> : /**
|
||||
<span class="lineNum"> 382 </span> : * Value for unassigned SMART attribute.
|
||||
<span class="lineNum"> 383 </span> : */
|
||||
<span class="lineNum"> 384 </span> : #define SMART_UNASSIGNED 0xFFFFFFFFFFFFFFFFULL
|
||||
<span class="lineNum"> 385 </span> :
|
||||
<span class="lineNum"> 386 </span> : /**
|
||||
<span class="lineNum"> 387 </span> : * Device info entry.
|
||||
<span class="lineNum"> 388 </span> : */
|
||||
<span class="lineNum"> 389 </span> : struct devinfo_struct {
|
||||
<span class="lineNum"> 390 </span> : uint64_t device; /**< Device ID. */
|
||||
<span class="lineNum"> 391 </span> : char name[PATH_MAX]; /**< Name of the disk. */
|
||||
<span class="lineNum"> 392 </span> : char mount[PATH_MAX]; /**< Mount point or other contained directory. */
|
||||
<span class="lineNum"> 393 </span> : char smartctl[PATH_MAX]; /**< Options for smartctl. */
|
||||
<span class="lineNum"> 394 </span> : char file[PATH_MAX]; /**< File device. */
|
||||
<span class="lineNum"> 395 </span> : #ifdef _WIN32
|
||||
<span class="lineNum"> 396 </span> : char wfile[PATH_MAX]; /**< File device in Windows format. Like \\.\PhysicalDriveX, or \\?\Volume{X}. */
|
||||
<span class="lineNum"> 397 </span> : #endif
|
||||
<span class="lineNum"> 398 </span> : struct devinfo_struct* parent; /**< Pointer at the parent if any. */
|
||||
<span class="lineNum"> 399 </span> : uint64_t smart[SMART_COUNT]; /**< SMART raw attributes. */
|
||||
<span class="lineNum"> 400 </span> : char smart_serial[SMART_MAX]; /**< SMART serial number. */
|
||||
<span class="lineNum"> 401 </span> : #if HAVE_PTHREAD_CREATE
|
||||
<span class="lineNum"> 402 </span> : pthread_t thread;
|
||||
<span class="lineNum"> 403 </span> : #endif
|
||||
<span class="lineNum"> 404 </span> : tommy_node node;
|
||||
<span class="lineNum"> 405 </span> : };
|
||||
<span class="lineNum"> 406 </span> : typedef struct devinfo_struct devinfo_t;
|
||||
<span class="lineNum"> 407 </span> :
|
||||
<span class="lineNum"> 408 </span> : #define DEVICE_LIST 0
|
||||
<span class="lineNum"> 409 </span> : #define DEVICE_DOWN 1
|
||||
<span class="lineNum"> 410 </span> : #define DEVICE_UP 2
|
||||
<span class="lineNum"> 411 </span> : #define DEVICE_SMART 3
|
||||
<span class="lineNum"> 412 </span> :
|
||||
<span class="lineNum"> 413 </span> : /**
|
||||
<span class="lineNum"> 414 </span> : * Query all the "high" level devices with the specified operation,
|
||||
<span class="lineNum"> 415 </span> : * and produces a list of "low" level devices to operate on.
|
||||
<span class="lineNum"> 416 </span> : *
|
||||
<span class="lineNum"> 417 </span> : * The passed "low" device list must be already initialized.
|
||||
<span class="lineNum"> 418 </span> : */
|
||||
<span class="lineNum"> 419 </span> : int devquery(tommy_list* high, tommy_list* low, int operation);
|
||||
<span class="lineNum"> 420 </span> :
|
||||
<span class="lineNum"> 421 </span> : #endif
|
||||
<span class="lineNum"> 422 </span> :
|
||||
<span class="lineNum"> 328 </span> : * Note that the frequency is unspecified, because the time measure
|
||||
<span class="lineNum"> 329 </span> : * is meant to be used to compare the ratio between usage times.
|
||||
<span class="lineNum"> 330 </span> : */
|
||||
<span class="lineNum"> 331 </span> : uint64_t tick(void);
|
||||
<span class="lineNum"> 332 </span> :
|
||||
<span class="lineNum"> 333 </span> : /**
|
||||
<span class="lineNum"> 334 </span> : * Get the tick counter value in millisecond.
|
||||
<span class="lineNum"> 335 </span> : */
|
||||
<span class="lineNum"> 336 </span> : uint64_t tick_ms(void);
|
||||
<span class="lineNum"> 337 </span> :
|
||||
<span class="lineNum"> 338 </span> : /**
|
||||
<span class="lineNum"> 339 </span> : * Initializes the system.
|
||||
<span class="lineNum"> 340 </span> : */
|
||||
<span class="lineNum"> 341 </span> : void os_init(int opt);
|
||||
<span class="lineNum"> 342 </span> :
|
||||
<span class="lineNum"> 343 </span> : /**
|
||||
<span class="lineNum"> 344 </span> : * Deinitialize the system.
|
||||
<span class="lineNum"> 345 </span> : */
|
||||
<span class="lineNum"> 346 </span> : void os_done(void);
|
||||
<span class="lineNum"> 347 </span> :
|
||||
<span class="lineNum"> 348 </span> : /**
|
||||
<span class="lineNum"> 349 </span> : * Abort the process with a stacktrace.
|
||||
<span class="lineNum"> 350 </span> : */
|
||||
<span class="lineNum"> 351 </span> : void os_abort(void) __noreturn;
|
||||
<span class="lineNum"> 352 </span> :
|
||||
<span class="lineNum"> 353 </span> : /**
|
||||
<span class="lineNum"> 354 </span> : * Log file.
|
||||
<span class="lineNum"> 355 </span> : *
|
||||
<span class="lineNum"> 356 </span> : * This stream if fully buffered.
|
||||
<span class="lineNum"> 357 </span> : *
|
||||
<span class="lineNum"> 358 </span> : * If no log file is selected, it's 0.
|
||||
<span class="lineNum"> 359 </span> : */
|
||||
<span class="lineNum"> 360 </span> : FILE* stdlog;
|
||||
<span class="lineNum"> 361 </span> :
|
||||
<span class="lineNum"> 362 </span> : /**
|
||||
<span class="lineNum"> 363 </span> : * Exit codes for testing.
|
||||
<span class="lineNum"> 364 </span> : */
|
||||
<span class="lineNum"> 365 </span> : int exit_success;
|
||||
<span class="lineNum"> 366 </span> : int exit_failure;
|
||||
<span class="lineNum"> 367 </span> : int exit_sync_needed;
|
||||
<span class="lineNum"> 368 </span> : #undef EXIT_SUCCESS
|
||||
<span class="lineNum"> 369 </span> : #undef EXIT_FAILURE
|
||||
<span class="lineNum"> 370 </span> : #define EXIT_SUCCESS exit_success
|
||||
<span class="lineNum"> 371 </span> : #define EXIT_FAILURE exit_failure
|
||||
<span class="lineNum"> 372 </span> : #define EXIT_SYNC_NEEDED exit_sync_needed
|
||||
<span class="lineNum"> 373 </span> :
|
||||
<span class="lineNum"> 374 </span> : /**
|
||||
<span class="lineNum"> 375 </span> : * Fill memory with psudeo-random values.
|
||||
<span class="lineNum"> 376 </span> : */
|
||||
<span class="lineNum"> 377 </span> : int randomize(void* ptr, size_t size);
|
||||
<span class="lineNum"> 378 </span> :
|
||||
<span class="lineNum"> 379 </span> : /**
|
||||
<span class="lineNum"> 380 </span> : * Additional SMART attributes.
|
||||
<span class="lineNum"> 381 </span> : */
|
||||
<span class="lineNum"> 382 </span> : #define SMART_ERROR 256 /**< ATA Error count. */
|
||||
<span class="lineNum"> 383 </span> : #define SMART_SIZE 257 /**< Size in bytes. */
|
||||
<span class="lineNum"> 384 </span> : #define SMART_ROTATION_RATE 258 /**< Rotation speed. 0 for SSD. */
|
||||
<span class="lineNum"> 385 </span> : #define SMART_FLAGS 259 /**< Flags returned by smartctl. */
|
||||
<span class="lineNum"> 386 </span> :
|
||||
<span class="lineNum"> 387 </span> : /**
|
||||
<span class="lineNum"> 388 </span> : * SMART attributes count.
|
||||
<span class="lineNum"> 389 </span> : */
|
||||
<span class="lineNum"> 390 </span> : #define SMART_COUNT 260
|
||||
<span class="lineNum"> 391 </span> :
|
||||
<span class="lineNum"> 392 </span> : /**
|
||||
<span class="lineNum"> 393 </span> : * Flags returned by smartctl.
|
||||
<span class="lineNum"> 394 </span> : */
|
||||
<span class="lineNum"> 395 </span> : #define SMARTCTL_FLAG_UNSUPPORTED (1 << 0) /**< Device not recognized, requiring the -d option. */
|
||||
<span class="lineNum"> 396 </span> : #define SMARTCTL_FLAG_OPEN (1 << 1) /**< Device open or identification failed. */
|
||||
<span class="lineNum"> 397 </span> : #define SMARTCTL_FLAG_COMMAND (1 << 2) /**< Some SMART or ATA commands failed. This is a common error, also happening with full info gathering. */
|
||||
<span class="lineNum"> 398 </span> : #define SMARTCTL_FLAG_FAIL (1 << 3) /**< SMART status check returned "DISK FAILING". */
|
||||
<span class="lineNum"> 399 </span> : #define SMARTCTL_FLAG_PREFAIL (1 << 4) /**< We found prefail Attributes <= threshold. */
|
||||
<span class="lineNum"> 400 </span> : #define SMARTCTL_FLAG_PREFAIL_LOGGED (1 << 5) /**< SMART status check returned "DISK OK" but we found that some (usage or prefail) Attributes have been <= threshold at some time in the past. */
|
||||
<span class="lineNum"> 401 </span> : #define SMARTCTL_FLAG_ERROR (1 << 6) /**< The device error log contains records of errors. */
|
||||
<span class="lineNum"> 402 </span> : #define SMARTCTL_FLAG_ERROR_LOGGED (1 << 7) /**< The device self-test log contains records of errors. */
|
||||
<span class="lineNum"> 403 </span> :
|
||||
<span class="lineNum"> 404 </span> : /**
|
||||
<span class="lineNum"> 405 </span> : * SMART max attribute length.
|
||||
<span class="lineNum"> 406 </span> : */
|
||||
<span class="lineNum"> 407 </span> : #define SMART_MAX 64
|
||||
<span class="lineNum"> 408 </span> :
|
||||
<span class="lineNum"> 409 </span> : /**
|
||||
<span class="lineNum"> 410 </span> : * Value for unassigned SMART attribute.
|
||||
<span class="lineNum"> 411 </span> : */
|
||||
<span class="lineNum"> 412 </span> : #define SMART_UNASSIGNED 0xFFFFFFFFFFFFFFFFULL
|
||||
<span class="lineNum"> 413 </span> :
|
||||
<span class="lineNum"> 414 </span> : /**
|
||||
<span class="lineNum"> 415 </span> : * Device info entry.
|
||||
<span class="lineNum"> 416 </span> : */
|
||||
<span class="lineNum"> 417 </span> : struct devinfo_struct {
|
||||
<span class="lineNum"> 418 </span> : uint64_t device; /**< Device ID. */
|
||||
<span class="lineNum"> 419 </span> : char name[PATH_MAX]; /**< Name of the disk. */
|
||||
<span class="lineNum"> 420 </span> : char mount[PATH_MAX]; /**< Mount point or other contained directory. */
|
||||
<span class="lineNum"> 421 </span> : char smartctl[PATH_MAX]; /**< Options for smartctl. */
|
||||
<span class="lineNum"> 422 </span> : char file[PATH_MAX]; /**< File device. */
|
||||
<span class="lineNum"> 423 </span> : #ifdef _WIN32
|
||||
<span class="lineNum"> 424 </span> : char wfile[PATH_MAX]; /**< File device in Windows format. Like \\.\PhysicalDriveX, or \\?\Volume{X}. */
|
||||
<span class="lineNum"> 425 </span> : #endif
|
||||
<span class="lineNum"> 426 </span> : struct devinfo_struct* parent; /**< Pointer at the parent if any. */
|
||||
<span class="lineNum"> 427 </span> : uint64_t smart[SMART_COUNT]; /**< SMART raw attributes. */
|
||||
<span class="lineNum"> 428 </span> : char smart_serial[SMART_MAX]; /**< SMART serial number. */
|
||||
<span class="lineNum"> 429 </span> : #if HAVE_PTHREAD
|
||||
<span class="lineNum"> 430 </span> : pthread_t thread;
|
||||
<span class="lineNum"> 431 </span> : #endif
|
||||
<span class="lineNum"> 432 </span> : tommy_node node;
|
||||
<span class="lineNum"> 433 </span> : };
|
||||
<span class="lineNum"> 434 </span> : typedef struct devinfo_struct devinfo_t;
|
||||
<span class="lineNum"> 435 </span> :
|
||||
<span class="lineNum"> 436 </span> : #define DEVICE_LIST 0
|
||||
<span class="lineNum"> 437 </span> : #define DEVICE_DOWN 1
|
||||
<span class="lineNum"> 438 </span> : #define DEVICE_UP 2
|
||||
<span class="lineNum"> 439 </span> : #define DEVICE_SMART 3
|
||||
<span class="lineNum"> 440 </span> :
|
||||
<span class="lineNum"> 441 </span> : /**
|
||||
<span class="lineNum"> 442 </span> : * Query all the "high" level devices with the specified operation,
|
||||
<span class="lineNum"> 443 </span> : * and produces a list of "low" level devices to operate on.
|
||||
<span class="lineNum"> 444 </span> : *
|
||||
<span class="lineNum"> 445 </span> : * The passed "low" device list must be already initialized.
|
||||
<span class="lineNum"> 446 </span> : */
|
||||
<span class="lineNum"> 447 </span> : int devquery(tommy_list* high, tommy_list* low, int operation);
|
||||
<span class="lineNum"> 448 </span> :
|
||||
<span class="lineNum"> 449 </span> : #endif
|
||||
<span class="lineNum"> 450 </span> :
|
||||
</pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Date:</td>
|
||||
<td class="headerValue">2015-11-20</td>
|
||||
<td class="headerValue">2016-01-09</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Date:</td>
|
||||
<td class="headerValue">2015-11-20</td>
|
||||
<td class="headerValue">2016-01-09</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Date:</td>
|
||||
<td class="headerValue">2015-11-20</td>
|
||||
<td class="headerValue">2016-01-09</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
|
|
@ -126,28 +126,28 @@
|
|||
<span class="lineNum"> 64 </span> : }
|
||||
<span class="lineNum"> 65 </span> :
|
||||
<span class="lineNum"> 66 </span> : /* mark all the block for rehashing */
|
||||
<span class="lineNum"> 67 </span><span class="lineCov"> 9200 : for (i = 0; i < blockmax; ++i) {</span>
|
||||
<span class="lineNum"> 67 </span><span class="lineCov"> 9208 : for (i = 0; i < blockmax; ++i) {</span>
|
||||
<span class="lineNum"> 68 </span> : snapraid_info info;
|
||||
<span class="lineNum"> 69 </span> :
|
||||
<span class="lineNum"> 70 </span> : /* if it's unused */
|
||||
<span class="lineNum"> 71 </span><span class="lineCov"> 9199 : info = info_get(&state->infoarr, i);</span>
|
||||
<span class="lineNum"> 72 </span><span class="lineCov"> 9199 : if (info == 0) {</span>
|
||||
<span class="lineNum"> 71 </span><span class="lineCov"> 9207 : info = info_get(&state->infoarr, i);</span>
|
||||
<span class="lineNum"> 72 </span><span class="lineCov"> 9207 : if (info == 0) {</span>
|
||||
<span class="lineNum"> 73 </span> : /* skip it */
|
||||
<span class="lineNum"> 74 </span><span class="lineNoCov"> 0 : continue;</span>
|
||||
<span class="lineNum"> 75 </span> : }
|
||||
<span class="lineNum"> 76 </span> :
|
||||
<span class="lineNum"> 77 </span><span class="lineCov"> 9199 : if (info_get_rehash(info)) {</span>
|
||||
<span class="lineNum"> 77 </span><span class="lineCov"> 9207 : if (info_get_rehash(info)) {</span>
|
||||
<span class="lineNum"> 78 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 79 </span> : log_fatal("Internal inconsistency for a rehash already in progress\n");
|
||||
<span class="lineNum"> 80 </span> : exit(EXIT_FAILURE);
|
||||
<span class="lineNum"> 80 </span> : os_abort();
|
||||
<span class="lineNum"> 81 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 82 </span> : }
|
||||
<span class="lineNum"> 83 </span> :
|
||||
<span class="lineNum"> 84 </span> : /* enable the rehash */
|
||||
<span class="lineNum"> 85 </span><span class="lineCov"> 9199 : info = info_set_rehash(info);</span>
|
||||
<span class="lineNum"> 85 </span><span class="lineCov"> 9207 : info = info_set_rehash(info);</span>
|
||||
<span class="lineNum"> 86 </span> :
|
||||
<span class="lineNum"> 87 </span> : /* save it */
|
||||
<span class="lineNum"> 88 </span><span class="lineCov"> 9199 : info_set(&state->infoarr, i, info);</span>
|
||||
<span class="lineNum"> 88 </span><span class="lineCov"> 9207 : info_set(&state->infoarr, i, info);</span>
|
||||
<span class="lineNum"> 89 </span> : }
|
||||
<span class="lineNum"> 90 </span> :
|
||||
<span class="lineNum"> 91 </span> : /* save the new content file */
|
||||
|
|
|
|||
|
|
@ -31,13 +31,13 @@
|
|||
<td class="headerValue">lcov.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntry">542</td>
|
||||
<td class="headerCovTableEntry">620</td>
|
||||
<td class="headerCovTableEntryMed">87.4 %</td>
|
||||
<td class="headerCovTableEntry">554</td>
|
||||
<td class="headerCovTableEntry">622</td>
|
||||
<td class="headerCovTableEntryMed">89.1 %</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Date:</td>
|
||||
<td class="headerValue">2015-11-20</td>
|
||||
<td class="headerValue">2016-01-09</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntry">23</td>
|
||||
|
|
@ -61,59 +61,59 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="scan.c.gcov.html#1066">dd_name_compare</a></td>
|
||||
<td class="coverFnHi">10485497</td>
|
||||
<td class="coverFnHi">10959090</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="scan.c.gcov.html#1085">dstat</a></td>
|
||||
<td class="coverFnHi">1004217</td>
|
||||
<td class="coverFnHi">1049496</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="scan.c.gcov.html#593">scan_file</a></td>
|
||||
<td class="coverFnHi">1003082</td>
|
||||
<td class="coverFnHi">1048310</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="scan.c.gcov.html#574">scan_file_keep</a></td>
|
||||
<td class="coverFnHi">923721</td>
|
||||
<td class="coverFnHi">968997</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="scan.c.gcov.html#360">file_is_full_invalid_parity_and_stable</a></td>
|
||||
<td class="coverFnHi">923721</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="scan.c.gcov.html#1052">dd_ino_compare</a></td>
|
||||
<td class="coverFnHi">103314</td>
|
||||
<td class="coverFnHi">968997</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="scan.c.gcov.html#331">scan_file_delayed_allocate</a></td>
|
||||
<td class="coverFnHi">100975</td>
|
||||
<td class="coverFnHi">103840</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="scan.c.gcov.html#530">scan_file_insert</a></td>
|
||||
<td class="coverFnHi">100975</td>
|
||||
<td class="coverFnHi">103840</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="scan.c.gcov.html#158">scan_file_allocate</a></td>
|
||||
<td class="coverFnHi">100975</td>
|
||||
<td class="coverFnHi">103840</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="scan.c.gcov.html#1052">dd_ino_compare</a></td>
|
||||
<td class="coverFnHi">103366</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="scan.c.gcov.html#453">scan_file_refresh</a></td>
|
||||
<td class="coverFnHi">79190</td>
|
||||
<td class="coverFnHi">79133</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="scan.c.gcov.html#549">scan_file_remove</a></td>
|
||||
<td class="coverFnHi">56139</td>
|
||||
<td class="coverFnHi">58983</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="scan.c.gcov.html#257">scan_file_deallocate</a></td>
|
||||
<td class="coverFnHi">56139</td>
|
||||
<td class="coverFnHi">58983</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="scan.c.gcov.html#84">scan_link</a></td>
|
||||
<td class="coverFnHi">32837</td>
|
||||
<td class="coverFnHi">34294</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="scan.c.gcov.html#401">file_is_full_hashed_and_stable</a></td>
|
||||
<td class="coverFnHi">23659</td>
|
||||
<td class="coverFnHi">23661</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="scan.c.gcov.html#68">scan_link_insert</a></td>
|
||||
|
|
@ -121,7 +121,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="scan.c.gcov.html#1101">scan_dir</a></td>
|
||||
<td class="coverFnHi">1614</td>
|
||||
<td class="coverFnHi">1713</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="scan.c.gcov.html#49">scan_link_remove</a></td>
|
||||
|
|
@ -129,22 +129,22 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="scan.c.gcov.html#1000">scan_emptydir</a></td>
|
||||
<td class="coverFnHi">227</td>
|
||||
<td class="coverFnHi">239</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="scan.c.gcov.html#1388">state_diffscan</a></td>
|
||||
<td class="coverFnHi">80</td>
|
||||
<td class="coverFn"><a href="scan.c.gcov.html#1390">state_diffscan</a></td>
|
||||
<td class="coverFnHi">88</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="scan.c.gcov.html#1831">state_scan</a></td>
|
||||
<td class="coverFnHi">73</td>
|
||||
<td class="coverFn"><a href="scan.c.gcov.html#1837">state_scan</a></td>
|
||||
<td class="coverFnHi">81</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="scan.c.gcov.html#984">scan_emptydir_insert</a></td>
|
||||
<td class="coverFnHi">10</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="scan.c.gcov.html#1826">state_diff</a></td>
|
||||
<td class="coverFn"><a href="scan.c.gcov.html#1832">state_diff</a></td>
|
||||
<td class="coverFnHi">7</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
|
|
|||
|
|
@ -31,13 +31,13 @@
|
|||
<td class="headerValue">lcov.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntry">542</td>
|
||||
<td class="headerCovTableEntry">620</td>
|
||||
<td class="headerCovTableEntryMed">87.4 %</td>
|
||||
<td class="headerCovTableEntry">554</td>
|
||||
<td class="headerCovTableEntry">622</td>
|
||||
<td class="headerCovTableEntryMed">89.1 %</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Date:</td>
|
||||
<td class="headerValue">2015-11-20</td>
|
||||
<td class="headerValue">2016-01-09</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntry">23</td>
|
||||
|
|
@ -61,31 +61,31 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="scan.c.gcov.html#1052">dd_ino_compare</a></td>
|
||||
<td class="coverFnHi">103314</td>
|
||||
<td class="coverFnHi">103366</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="scan.c.gcov.html#1066">dd_name_compare</a></td>
|
||||
<td class="coverFnHi">10485497</td>
|
||||
<td class="coverFnHi">10959090</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="scan.c.gcov.html#1085">dstat</a></td>
|
||||
<td class="coverFnHi">1004217</td>
|
||||
<td class="coverFnHi">1049496</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="scan.c.gcov.html#401">file_is_full_hashed_and_stable</a></td>
|
||||
<td class="coverFnHi">23659</td>
|
||||
<td class="coverFnHi">23661</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="scan.c.gcov.html#360">file_is_full_invalid_parity_and_stable</a></td>
|
||||
<td class="coverFnHi">923721</td>
|
||||
<td class="coverFnHi">968997</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="scan.c.gcov.html#1101">scan_dir</a></td>
|
||||
<td class="coverFnHi">1614</td>
|
||||
<td class="coverFnHi">1713</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="scan.c.gcov.html#1000">scan_emptydir</a></td>
|
||||
<td class="coverFnHi">227</td>
|
||||
<td class="coverFnHi">239</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="scan.c.gcov.html#984">scan_emptydir_insert</a></td>
|
||||
|
|
@ -97,39 +97,39 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="scan.c.gcov.html#593">scan_file</a></td>
|
||||
<td class="coverFnHi">1003082</td>
|
||||
<td class="coverFnHi">1048310</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="scan.c.gcov.html#158">scan_file_allocate</a></td>
|
||||
<td class="coverFnHi">100975</td>
|
||||
<td class="coverFnHi">103840</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="scan.c.gcov.html#257">scan_file_deallocate</a></td>
|
||||
<td class="coverFnHi">56139</td>
|
||||
<td class="coverFnHi">58983</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="scan.c.gcov.html#331">scan_file_delayed_allocate</a></td>
|
||||
<td class="coverFnHi">100975</td>
|
||||
<td class="coverFnHi">103840</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="scan.c.gcov.html#530">scan_file_insert</a></td>
|
||||
<td class="coverFnHi">100975</td>
|
||||
<td class="coverFnHi">103840</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="scan.c.gcov.html#574">scan_file_keep</a></td>
|
||||
<td class="coverFnHi">923721</td>
|
||||
<td class="coverFnHi">968997</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="scan.c.gcov.html#453">scan_file_refresh</a></td>
|
||||
<td class="coverFnHi">79190</td>
|
||||
<td class="coverFnHi">79133</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="scan.c.gcov.html#549">scan_file_remove</a></td>
|
||||
<td class="coverFnHi">56139</td>
|
||||
<td class="coverFnHi">58983</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="scan.c.gcov.html#84">scan_link</a></td>
|
||||
<td class="coverFnHi">32837</td>
|
||||
<td class="coverFnHi">34294</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="scan.c.gcov.html#68">scan_link_insert</a></td>
|
||||
|
|
@ -140,16 +140,16 @@
|
|||
<td class="coverFnHi">956</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="scan.c.gcov.html#1826">state_diff</a></td>
|
||||
<td class="coverFn"><a href="scan.c.gcov.html#1832">state_diff</a></td>
|
||||
<td class="coverFnHi">7</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="scan.c.gcov.html#1388">state_diffscan</a></td>
|
||||
<td class="coverFnHi">80</td>
|
||||
<td class="coverFn"><a href="scan.c.gcov.html#1390">state_diffscan</a></td>
|
||||
<td class="coverFnHi">88</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="scan.c.gcov.html#1831">state_scan</a></td>
|
||||
<td class="coverFnHi">73</td>
|
||||
<td class="coverFn"><a href="scan.c.gcov.html#1837">state_scan</a></td>
|
||||
<td class="coverFnHi">81</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
|
|
@ -37,7 +37,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Date:</td>
|
||||
<td class="headerValue">2015-11-20</td>
|
||||
<td class="headerValue">2016-01-09</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntry">4</td>
|
||||
|
|
@ -61,7 +61,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="scrub.c.gcov.html#49">block_is_enabled</a></td>
|
||||
<td class="coverFnHi">111818</td>
|
||||
<td class="coverFnHi">111994</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="scrub.c.gcov.html#100">state_scrub_process</a></td>
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Date:</td>
|
||||
<td class="headerValue">2015-11-20</td>
|
||||
<td class="headerValue">2016-01-09</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntry">4</td>
|
||||
|
|
@ -61,7 +61,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="scrub.c.gcov.html#49">block_is_enabled</a></td>
|
||||
<td class="coverFnHi">111818</td>
|
||||
<td class="coverFnHi">111994</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="scrub.c.gcov.html#560">md</a></td>
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Date:</td>
|
||||
<td class="headerValue">2015-11-20</td>
|
||||
<td class="headerValue">2016-01-09</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntry">4</td>
|
||||
|
|
@ -110,55 +110,55 @@
|
|||
<span class="lineNum"> 48 </span> : /**
|
||||
<a name="49"><span class="lineNum"> 49 </span> : * Check if we have to process the specified block index ::i.</a>
|
||||
<span class="lineNum"> 50 </span> : */
|
||||
<span class="lineNum"> 51 </span><span class="lineCov"> 111818 : static int block_is_enabled(struct snapraid_state* state, block_off_t i, struct snapraid_plan* plan)</span>
|
||||
<span class="lineNum"> 51 </span><span class="lineCov"> 111994 : static int block_is_enabled(struct snapraid_state* state, block_off_t i, struct snapraid_plan* plan)</span>
|
||||
<span class="lineNum"> 52 </span> : {
|
||||
<span class="lineNum"> 53 </span> : time_t blocktime;
|
||||
<span class="lineNum"> 54 </span> : snapraid_info info;
|
||||
<span class="lineNum"> 55 </span> :
|
||||
<span class="lineNum"> 56 </span> : /* don't scrub unused blocks in all plans */
|
||||
<span class="lineNum"> 57 </span><span class="lineCov"> 111818 : info = info_get(&state->infoarr, i);</span>
|
||||
<span class="lineNum"> 58 </span><span class="lineCov"> 111818 : if (info == 0)</span>
|
||||
<span class="lineNum"> 57 </span><span class="lineCov"> 111994 : info = info_get(&state->infoarr, i);</span>
|
||||
<span class="lineNum"> 58 </span><span class="lineCov"> 111994 : if (info == 0)</span>
|
||||
<span class="lineNum"> 59 </span><span class="lineNoCov"> 0 : return 0;</span>
|
||||
<span class="lineNum"> 60 </span> :
|
||||
<span class="lineNum"> 61 </span> : /* bad blocks are always scrubbed in all plans */
|
||||
<span class="lineNum"> 62 </span><span class="lineCov"> 111818 : if (info_get_bad(info))</span>
|
||||
<span class="lineNum"> 63 </span><span class="lineCov"> 3604 : return 1;</span>
|
||||
<span class="lineNum"> 62 </span><span class="lineCov"> 111994 : if (info_get_bad(info))</span>
|
||||
<span class="lineNum"> 63 </span><span class="lineCov"> 3542 : return 1;</span>
|
||||
<span class="lineNum"> 64 </span> :
|
||||
<span class="lineNum"> 65 </span><span class="lineCov"> 108214 : switch (plan->plan) {</span>
|
||||
<span class="lineNum"> 65 </span><span class="lineCov"> 108452 : switch (plan->plan) {</span>
|
||||
<span class="lineNum"> 66 </span> : case SCRUB_FULL :
|
||||
<span class="lineNum"> 67 </span> : /* in 'full' plan everything is scrubbed */
|
||||
<span class="lineNum"> 68 </span><span class="lineCov"> 16920 : return 1;</span>
|
||||
<span class="lineNum"> 68 </span><span class="lineCov"> 17014 : return 1;</span>
|
||||
<span class="lineNum"> 69 </span> : case SCRUB_EVEN :
|
||||
<span class="lineNum"> 70 </span> : /* in 'even' plan, scrub only even blocks */
|
||||
<span class="lineNum"> 71 </span><span class="lineCov"> 18398 : return i % 2 == 0;</span>
|
||||
<span class="lineNum"> 71 </span><span class="lineCov"> 18414 : return i % 2 == 0;</span>
|
||||
<span class="lineNum"> 72 </span> : case SCRUB_NEW :
|
||||
<span class="lineNum"> 73 </span> : /* in 'sync' plan, only blocks never scrubbed */
|
||||
<span class="lineNum"> 74 </span><span class="lineCov"> 9342 : return info_get_justsynced(info);</span>
|
||||
<span class="lineNum"> 74 </span><span class="lineCov"> 9358 : return info_get_justsynced(info);</span>
|
||||
<span class="lineNum"> 75 </span> : case SCRUB_BAD :
|
||||
<span class="lineNum"> 76 </span> : /* in 'bad' plan, only bad blocks (already reported) */
|
||||
<span class="lineNum"> 77 </span><span class="lineCov"> 7502 : return 0;</span>
|
||||
<span class="lineNum"> 77 </span><span class="lineCov"> 7518 : return 0;</span>
|
||||
<span class="lineNum"> 78 </span> : }
|
||||
<span class="lineNum"> 79 </span> :
|
||||
<span class="lineNum"> 80 </span> : /* if it's too new */
|
||||
<span class="lineNum"> 81 </span><span class="lineCov"> 56052 : blocktime = info_get_time(info);</span>
|
||||
<span class="lineNum"> 82 </span><span class="lineCov"> 56052 : if (blocktime > plan->timelimit) {</span>
|
||||
<span class="lineNum"> 81 </span><span class="lineCov"> 56148 : blocktime = info_get_time(info);</span>
|
||||
<span class="lineNum"> 82 </span><span class="lineCov"> 56148 : if (blocktime > plan->timelimit) {</span>
|
||||
<span class="lineNum"> 83 </span> : /* skip it */
|
||||
<span class="lineNum"> 84 </span><span class="lineCov"> 22506 : return 0;</span>
|
||||
<span class="lineNum"> 84 </span><span class="lineCov"> 20662 : return 0;</span>
|
||||
<span class="lineNum"> 85 </span> : }
|
||||
<span class="lineNum"> 86 </span> :
|
||||
<span class="lineNum"> 87 </span> : /* if the time is less than the limit, always include */
|
||||
<span class="lineNum"> 88 </span> : /* otherwise, check if we reached the last limit count */
|
||||
<span class="lineNum"> 89 </span><span class="lineCov"> 33546 : if (blocktime == plan->timelimit) {</span>
|
||||
<span class="lineNum"> 89 </span><span class="lineCov"> 35486 : if (blocktime == plan->timelimit) {</span>
|
||||
<span class="lineNum"> 90 </span> : /* if we reached the count limit */
|
||||
<span class="lineNum"> 91 </span><span class="lineCov"> 16872 : if (plan->countlast >= plan->lastlimit) {</span>
|
||||
<span class="lineNum"> 91 </span><span class="lineCov"> 18980 : if (plan->countlast >= plan->lastlimit) {</span>
|
||||
<span class="lineNum"> 92 </span> : /* skip it */
|
||||
<span class="lineNum"> 93 </span><span class="lineCov"> 11882 : return 0;</span>
|
||||
<span class="lineNum"> 93 </span><span class="lineCov"> 13790 : return 0;</span>
|
||||
<span class="lineNum"> 94 </span> : }
|
||||
<span class="lineNum"> 95 </span> :
|
||||
<span class="lineNum"> 96 </span><span class="lineCov"> 4990 : ++plan->countlast;</span>
|
||||
<span class="lineNum"> 96 </span><span class="lineCov"> 5190 : ++plan->countlast;</span>
|
||||
<span class="lineNum"> 97 </span> : }
|
||||
<span class="lineNum"> 98 </span> :
|
||||
<span class="lineNum"> 99 </span><span class="lineCov"> 21664 : return 1;</span>
|
||||
<span class="lineNum"> 99 </span><span class="lineCov"> 21696 : return 1;</span>
|
||||
<a name="100"><span class="lineNum"> 100 </span> : }</a>
|
||||
<span class="lineNum"> 101 </span> :
|
||||
<span class="lineNum"> 102 </span><span class="lineCov"> 11 : static int state_scrub_process(struct snapraid_state* state, struct snapraid_parity_handle** parity, block_off_t blockstart, block_off_t blockmax, struct snapraid_plan* plan, time_t now)</span>
|
||||
|
|
@ -204,11 +204,11 @@
|
|||
<span class="lineNum"> 142 </span> : /* first count the number of blocks to process */
|
||||
<span class="lineNum"> 143 </span><span class="lineCov"> 11 : countmax = 0;</span>
|
||||
<span class="lineNum"> 144 </span><span class="lineCov"> 11 : plan->countlast = 0;</span>
|
||||
<span class="lineNum"> 145 </span><span class="lineCov"> 55920 : for (i = blockstart; i < blockmax; ++i) {</span>
|
||||
<span class="lineNum"> 146 </span><span class="lineCov"> 55909 : if (!block_is_enabled(state, i, plan))</span>
|
||||
<span class="lineNum"> 147 </span><span class="lineCov"> 27950 : continue;</span>
|
||||
<span class="lineNum"> 145 </span><span class="lineCov"> 56008 : for (i = blockstart; i < blockmax; ++i) {</span>
|
||||
<span class="lineNum"> 146 </span><span class="lineCov"> 55997 : if (!block_is_enabled(state, i, plan))</span>
|
||||
<span class="lineNum"> 147 </span><span class="lineCov"> 28002 : continue;</span>
|
||||
<span class="lineNum"> 148 </span> :
|
||||
<span class="lineNum"> 149 </span><span class="lineCov"> 27959 : ++countmax;</span>
|
||||
<span class="lineNum"> 149 </span><span class="lineCov"> 27995 : ++countmax;</span>
|
||||
<span class="lineNum"> 150 </span> : }
|
||||
<span class="lineNum"> 151 </span> :
|
||||
<span class="lineNum"> 152 </span> : /* compute the autosave size for all disk, even if not read */
|
||||
|
|
@ -225,7 +225,7 @@
|
|||
<span class="lineNum"> 163 </span><span class="lineCov"> 11 : countpos = 0;</span>
|
||||
<span class="lineNum"> 164 </span><span class="lineCov"> 11 : plan->countlast = 0;</span>
|
||||
<span class="lineNum"> 165 </span><span class="lineCov"> 11 : state_progress_begin(state, blockstart, blockmax, countmax);</span>
|
||||
<span class="lineNum"> 166 </span><span class="lineCov"> 55920 : for (i = blockstart; i < blockmax; ++i) {</span>
|
||||
<span class="lineNum"> 166 </span><span class="lineCov"> 56008 : for (i = blockstart; i < blockmax; ++i) {</span>
|
||||
<span class="lineNum"> 167 </span> : snapraid_info info;
|
||||
<span class="lineNum"> 168 </span> : int error_on_this_block;
|
||||
<span class="lineNum"> 169 </span> : int silent_error_on_this_block;
|
||||
|
|
@ -233,65 +233,65 @@
|
|||
<span class="lineNum"> 171 </span> : int block_is_unsynced;
|
||||
<span class="lineNum"> 172 </span> : int rehash;
|
||||
<span class="lineNum"> 173 </span> :
|
||||
<span class="lineNum"> 174 </span><span class="lineCov"> 55909 : if (!block_is_enabled(state, i, plan))</span>
|
||||
<span class="lineNum"> 175 </span><span class="lineCov"> 27950 : continue;</span>
|
||||
<span class="lineNum"> 174 </span><span class="lineCov"> 55997 : if (!block_is_enabled(state, i, plan))</span>
|
||||
<span class="lineNum"> 175 </span><span class="lineCov"> 28002 : continue;</span>
|
||||
<span class="lineNum"> 176 </span> :
|
||||
<span class="lineNum"> 177 </span> : /* one more block processed for autosave */
|
||||
<span class="lineNum"> 178 </span><span class="lineCov"> 27959 : ++autosavedone;</span>
|
||||
<span class="lineNum"> 179 </span><span class="lineCov"> 27959 : --autosavemissing;</span>
|
||||
<span class="lineNum"> 178 </span><span class="lineCov"> 27995 : ++autosavedone;</span>
|
||||
<span class="lineNum"> 179 </span><span class="lineCov"> 27995 : --autosavemissing;</span>
|
||||
<span class="lineNum"> 180 </span> :
|
||||
<span class="lineNum"> 181 </span> : /* by default process the block, and skip it if something goes wrong */
|
||||
<span class="lineNum"> 182 </span><span class="lineCov"> 27959 : error_on_this_block = 0;</span>
|
||||
<span class="lineNum"> 183 </span><span class="lineCov"> 27959 : silent_error_on_this_block = 0;</span>
|
||||
<span class="lineNum"> 184 </span><span class="lineCov"> 27959 : io_error_on_this_block = 0;</span>
|
||||
<span class="lineNum"> 182 </span><span class="lineCov"> 27995 : error_on_this_block = 0;</span>
|
||||
<span class="lineNum"> 183 </span><span class="lineCov"> 27995 : silent_error_on_this_block = 0;</span>
|
||||
<span class="lineNum"> 184 </span><span class="lineCov"> 27995 : io_error_on_this_block = 0;</span>
|
||||
<span class="lineNum"> 185 </span> :
|
||||
<span class="lineNum"> 186 </span> : /* if all the blocks at this address are synced */
|
||||
<span class="lineNum"> 187 </span> : /* if not, parity is not even checked */
|
||||
<span class="lineNum"> 188 </span><span class="lineCov"> 27959 : block_is_unsynced = 0;</span>
|
||||
<span class="lineNum"> 188 </span><span class="lineCov"> 27995 : block_is_unsynced = 0;</span>
|
||||
<span class="lineNum"> 189 </span> :
|
||||
<span class="lineNum"> 190 </span> : /* get block specific info */
|
||||
<span class="lineNum"> 191 </span><span class="lineCov"> 27959 : info = info_get(&state->infoarr, i);</span>
|
||||
<span class="lineNum"> 191 </span><span class="lineCov"> 27995 : info = info_get(&state->infoarr, i);</span>
|
||||
<span class="lineNum"> 192 </span> :
|
||||
<span class="lineNum"> 193 </span> : /* if we have to use the old hash */
|
||||
<span class="lineNum"> 194 </span><span class="lineCov"> 27959 : rehash = info_get_rehash(info);</span>
|
||||
<span class="lineNum"> 194 </span><span class="lineCov"> 27995 : rehash = info_get_rehash(info);</span>
|
||||
<span class="lineNum"> 195 </span> :
|
||||
<span class="lineNum"> 196 </span> : /* for each disk, process the block */
|
||||
<span class="lineNum"> 197 </span><span class="lineCov"> 195713 : for (j = 0; j < diskmax; ++j) {</span>
|
||||
<span class="lineNum"> 197 </span><span class="lineCov"> 195965 : for (j = 0; j < diskmax; ++j) {</span>
|
||||
<span class="lineNum"> 198 </span> : int read_size;
|
||||
<span class="lineNum"> 199 </span> : unsigned char hash[HASH_SIZE];
|
||||
<span class="lineNum"> 200 </span> : struct snapraid_block* block;
|
||||
<span class="lineNum"> 201 </span> : int file_is_unsynced;
|
||||
<span class="lineNum"> 202 </span><span class="lineCov"> 167754 : struct snapraid_disk* disk = handle[j].disk;</span>
|
||||
<span class="lineNum"> 202 </span><span class="lineCov"> 167970 : struct snapraid_disk* disk = handle[j].disk;</span>
|
||||
<span class="lineNum"> 203 </span> : struct snapraid_file* file;
|
||||
<span class="lineNum"> 204 </span> : block_off_t file_pos;
|
||||
<span class="lineNum"> 205 </span> :
|
||||
<span class="lineNum"> 206 </span> : /* if the file on this disk is synced */
|
||||
<span class="lineNum"> 207 </span> : /* if not, silent errors are assumed as expected error */
|
||||
<span class="lineNum"> 208 </span><span class="lineCov"> 167754 : file_is_unsynced = 0;</span>
|
||||
<span class="lineNum"> 208 </span><span class="lineCov"> 167970 : file_is_unsynced = 0;</span>
|
||||
<span class="lineNum"> 209 </span> :
|
||||
<span class="lineNum"> 210 </span> : /* by default no rehash in case of "continue" */
|
||||
<span class="lineNum"> 211 </span><span class="lineCov"> 167754 : rehandle[j].block = 0;</span>
|
||||
<span class="lineNum"> 211 </span><span class="lineCov"> 167970 : rehandle[j].block = 0;</span>
|
||||
<span class="lineNum"> 212 </span> :
|
||||
<span class="lineNum"> 213 </span> : /* if the disk position is not used */
|
||||
<span class="lineNum"> 214 </span><span class="lineCov"> 167754 : if (!disk) {</span>
|
||||
<span class="lineNum"> 214 </span><span class="lineCov"> 167970 : if (!disk) {</span>
|
||||
<span class="lineNum"> 215 </span> : /* use an empty block */
|
||||
<span class="lineNum"> 216 </span><span class="lineNoCov"> 0 : memset(buffer[j], 0, state->block_size);</span>
|
||||
<span class="lineNum"> 217 </span><span class="lineCov"> 2433 : continue;</span>
|
||||
<span class="lineNum"> 217 </span><span class="lineCov"> 2397 : continue;</span>
|
||||
<span class="lineNum"> 218 </span> : }
|
||||
<span class="lineNum"> 219 </span> :
|
||||
<span class="lineNum"> 220 </span> : /* if the block is not used */
|
||||
<span class="lineNum"> 221 </span><span class="lineCov"> 167754 : block = fs_par2block_get(disk, i);</span>
|
||||
<span class="lineNum"> 222 </span><span class="lineCov"> 167754 : if (!block_has_file(block)) {</span>
|
||||
<span class="lineNum"> 221 </span><span class="lineCov"> 167970 : block = fs_par2block_get(disk, i);</span>
|
||||
<span class="lineNum"> 222 </span><span class="lineCov"> 167970 : if (!block_has_file(block)) {</span>
|
||||
<span class="lineNum"> 223 </span> : /* use an empty block */
|
||||
<span class="lineNum"> 224 </span><span class="lineCov"> 1513 : memset(buffer[j], 0, state->block_size);</span>
|
||||
<span class="lineNum"> 225 </span><span class="lineCov"> 1513 : continue;</span>
|
||||
<span class="lineNum"> 224 </span><span class="lineCov"> 1477 : memset(buffer[j], 0, state->block_size);</span>
|
||||
<span class="lineNum"> 225 </span><span class="lineCov"> 1477 : continue;</span>
|
||||
<span class="lineNum"> 226 </span> : }
|
||||
<span class="lineNum"> 227 </span> :
|
||||
<span class="lineNum"> 228 </span> : /* get the file of this block */
|
||||
<span class="lineNum"> 229 </span><span class="lineCov"> 166241 : file = fs_par2file_get(disk, i, &file_pos);</span>
|
||||
<span class="lineNum"> 229 </span><span class="lineCov"> 166493 : file = fs_par2file_get(disk, i, &file_pos);</span>
|
||||
<span class="lineNum"> 230 </span> :
|
||||
<span class="lineNum"> 231 </span> : /* if the block is unsynced, errors are expected */
|
||||
<span class="lineNum"> 232 </span><span class="lineCov"> 166241 : if (block_has_invalid_parity(block)) {</span>
|
||||
<span class="lineNum"> 232 </span><span class="lineCov"> 166493 : if (block_has_invalid_parity(block)) {</span>
|
||||
<span class="lineNum"> 233 </span> : /* report that the block and the file are not synced */
|
||||
<span class="lineNum"> 234 </span><span class="lineNoCov"> 0 : block_is_unsynced = 1;</span>
|
||||
<span class="lineNum"> 235 </span><span class="lineNoCov"> 0 : file_is_unsynced = 1;</span>
|
||||
|
|
@ -299,14 +299,14 @@
|
|||
<span class="lineNum"> 237 </span> : }
|
||||
<span class="lineNum"> 238 </span> :
|
||||
<span class="lineNum"> 239 </span> : /* until now is CPU */
|
||||
<span class="lineNum"> 240 </span><span class="lineCov"> 166241 : state_usage_cpu(state);</span>
|
||||
<span class="lineNum"> 240 </span><span class="lineCov"> 166493 : state_usage_cpu(state);</span>
|
||||
<span class="lineNum"> 241 </span> :
|
||||
<span class="lineNum"> 242 </span> : /* if the file is different than the current one, close it */
|
||||
<span class="lineNum"> 243 </span><span class="lineCov"> 166241 : if (handle[j].file != 0 && handle[j].file != file) {</span>
|
||||
<span class="lineNum"> 243 </span><span class="lineCov"> 166493 : if (handle[j].file != 0 && handle[j].file != file) {</span>
|
||||
<span class="lineNum"> 244 </span> : /* keep a pointer at the file we are going to close for error reporting */
|
||||
<span class="lineNum"> 245 </span><span class="lineCov"> 78552 : struct snapraid_file* report = handle[j].file;</span>
|
||||
<span class="lineNum"> 246 </span><span class="lineCov"> 78552 : ret = handle_close(&handle[j]);</span>
|
||||
<span class="lineNum"> 247 </span><span class="lineCov"> 78552 : if (ret == -1) {</span>
|
||||
<span class="lineNum"> 245 </span><span class="lineCov"> 78228 : struct snapraid_file* report = handle[j].file;</span>
|
||||
<span class="lineNum"> 246 </span><span class="lineCov"> 78228 : ret = handle_close(&handle[j]);</span>
|
||||
<span class="lineNum"> 247 </span><span class="lineCov"> 78228 : if (ret == -1) {</span>
|
||||
<span class="lineNum"> 248 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 249 </span> : /* This one is really an unexpected error, because we are only reading */
|
||||
<span class="lineNum"> 250 </span> : /* and closing a descriptor should never fail */
|
||||
|
|
@ -329,8 +329,8 @@
|
|||
<span class="lineNum"> 267 </span> : }
|
||||
<span class="lineNum"> 268 </span> : }
|
||||
<span class="lineNum"> 269 </span> :
|
||||
<span class="lineNum"> 270 </span><span class="lineCov"> 166241 : ret = handle_open(&handle[j], file, state->file_mode, log_error, 0);</span>
|
||||
<span class="lineNum"> 271 </span><span class="lineCov"> 166241 : if (ret == -1) {</span>
|
||||
<span class="lineNum"> 270 </span><span class="lineCov"> 166493 : ret = handle_open(&handle[j], file, state->file_mode, log_error, 0);</span>
|
||||
<span class="lineNum"> 271 </span><span class="lineCov"> 166493 : if (ret == -1) {</span>
|
||||
<span class="lineNum"> 272 </span><span class="lineNoCov"> 0 : if (errno == EIO) {</span>
|
||||
<span class="lineNum"> 273 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 274 </span> : log_tag("error:%u:%s:%s: Open EIO error. %s\n", i, disk->name, esc(file->sub), strerror(errno));
|
||||
|
|
@ -349,14 +349,14 @@
|
|||
<span class="lineNum"> 287 </span> : }
|
||||
<span class="lineNum"> 288 </span> :
|
||||
<span class="lineNum"> 289 </span> : /* check if the file is changed */
|
||||
<span class="lineNum"> 290 </span><span class="lineCov"> 166241 : if (handle[j].st.st_size != file->size</span>
|
||||
<span class="lineNum"> 291 </span><span class="lineCov"> 166241 : || handle[j].st.st_mtime != file->mtime_sec</span>
|
||||
<span class="lineNum"> 292 </span><span class="lineCov"> 160522 : || STAT_NSEC(&handle[j].st) != file->mtime_nsec</span>
|
||||
<span class="lineNum"> 293 </span> : /* don't check the inode to support filesystem without persistent inodes */
|
||||
<span class="lineNum"> 290 </span><span class="lineCov"> 166493 : if (handle[j].st.st_size != file->size</span>
|
||||
<span class="lineNum"> 291 </span><span class="lineCov"> 166493 : || handle[j].st.st_mtime != file->mtime_sec</span>
|
||||
<span class="lineNum"> 292 </span><span class="lineCov"> 160895 : || STAT_NSEC(&handle[j].st) != file->mtime_nsec</span>
|
||||
<span class="lineNum"> 293 </span> : /* don't check the inode to support file-system without persistent inodes */
|
||||
<span class="lineNum"> 294 </span> : ) {
|
||||
<span class="lineNum"> 295 </span> : /* report that the block and the file are not synced */
|
||||
<span class="lineNum"> 296 </span><span class="lineCov"> 5719 : block_is_unsynced = 1;</span>
|
||||
<span class="lineNum"> 297 </span><span class="lineCov"> 5719 : file_is_unsynced = 1;</span>
|
||||
<span class="lineNum"> 296 </span><span class="lineCov"> 5598 : block_is_unsynced = 1;</span>
|
||||
<span class="lineNum"> 297 </span><span class="lineCov"> 5598 : file_is_unsynced = 1;</span>
|
||||
<span class="lineNum"> 298 </span> : /* follow */
|
||||
<span class="lineNum"> 299 </span> : }
|
||||
<span class="lineNum"> 300 </span> :
|
||||
|
|
@ -364,8 +364,8 @@
|
|||
<span class="lineNum"> 302 </span> : /* from the last sync, as we are expected to return errors if running */
|
||||
<span class="lineNum"> 303 </span> : /* in an unsynced array. This is just like the check command. */
|
||||
<span class="lineNum"> 304 </span> :
|
||||
<span class="lineNum"> 305 </span><span class="lineCov"> 166241 : read_size = handle_read(&handle[j], file_pos, buffer[j], state->block_size, log_error, 0);</span>
|
||||
<span class="lineNum"> 306 </span><span class="lineCov"> 166241 : if (read_size == -1) {</span>
|
||||
<span class="lineNum"> 305 </span><span class="lineCov"> 166493 : read_size = handle_read(&handle[j], file_pos, buffer[j], state->block_size, log_error, 0);</span>
|
||||
<span class="lineNum"> 306 </span><span class="lineCov"> 166493 : if (read_size == -1) {</span>
|
||||
<span class="lineNum"> 307 </span><span class="lineNoCov"> 0 : if (errno == EIO) {</span>
|
||||
<span class="lineNum"> 308 </span><span class="lineNoCov"> 0 : log_tag("error:%u:%s:%s: Read EIO error at position %u. %s\n", i, disk->name, esc(file->sub), file_pos, strerror(errno));</span>
|
||||
<span class="lineNum"> 309 </span><span class="lineNoCov"> 0 : if (io_error >= state->opt.io_error_limit) {</span>
|
||||
|
|
@ -391,24 +391,24 @@
|
|||
<span class="lineNum"> 329 </span> : }
|
||||
<span class="lineNum"> 330 </span> :
|
||||
<span class="lineNum"> 331 </span> : /* until now is disk */
|
||||
<span class="lineNum"> 332 </span><span class="lineCov"> 166241 : state_usage_disk(state, disk);</span>
|
||||
<span class="lineNum"> 332 </span><span class="lineCov"> 166493 : state_usage_disk(state, disk);</span>
|
||||
<span class="lineNum"> 333 </span> :
|
||||
<span class="lineNum"> 334 </span><span class="lineCov"> 166241 : countsize += read_size;</span>
|
||||
<span class="lineNum"> 334 </span><span class="lineCov"> 166493 : countsize += read_size;</span>
|
||||
<span class="lineNum"> 335 </span> :
|
||||
<span class="lineNum"> 336 </span> : /* now compute the hash */
|
||||
<span class="lineNum"> 337 </span><span class="lineCov"> 166241 : if (rehash) {</span>
|
||||
<span class="lineNum"> 338 </span><span class="lineCov"> 27207 : memhash(state->prevhash, state->prevhashseed, hash, buffer[j], read_size);</span>
|
||||
<span class="lineNum"> 337 </span><span class="lineCov"> 166493 : if (rehash) {</span>
|
||||
<span class="lineNum"> 338 </span><span class="lineCov"> 27235 : memhash(state->prevhash, state->prevhashseed, hash, buffer[j], read_size);</span>
|
||||
<span class="lineNum"> 339 </span> :
|
||||
<span class="lineNum"> 340 </span> : /* compute the new hash, and store it */
|
||||
<span class="lineNum"> 341 </span><span class="lineCov"> 27207 : rehandle[j].block = block;</span>
|
||||
<span class="lineNum"> 342 </span><span class="lineCov"> 27207 : memhash(state->hash, state->hashseed, rehandle[j].hash, buffer[j], read_size);</span>
|
||||
<span class="lineNum"> 341 </span><span class="lineCov"> 27235 : rehandle[j].block = block;</span>
|
||||
<span class="lineNum"> 342 </span><span class="lineCov"> 27235 : memhash(state->hash, state->hashseed, rehandle[j].hash, buffer[j], read_size);</span>
|
||||
<span class="lineNum"> 343 </span> : } else {
|
||||
<span class="lineNum"> 344 </span><span class="lineCov"> 139034 : memhash(state->hash, state->hashseed, hash, buffer[j], read_size);</span>
|
||||
<span class="lineNum"> 344 </span><span class="lineCov"> 139258 : memhash(state->hash, state->hashseed, hash, buffer[j], read_size);</span>
|
||||
<span class="lineNum"> 345 </span> : }
|
||||
<span class="lineNum"> 346 </span> :
|
||||
<span class="lineNum"> 347 </span><span class="lineCov"> 166241 : if (block_has_updated_hash(block)) {</span>
|
||||
<span class="lineNum"> 347 </span><span class="lineCov"> 166493 : if (block_has_updated_hash(block)) {</span>
|
||||
<span class="lineNum"> 348 </span> : /* compare the hash */
|
||||
<span class="lineNum"> 349 </span><span class="lineCov"> 166241 : if (memcmp(hash, block->hash, HASH_SIZE) != 0) {</span>
|
||||
<span class="lineNum"> 349 </span><span class="lineCov"> 166493 : if (memcmp(hash, block->hash, HASH_SIZE) != 0) {</span>
|
||||
<span class="lineNum"> 350 </span><span class="lineCov"> 920 : unsigned diff = memdiff(hash, block->hash, HASH_SIZE);</span>
|
||||
<span class="lineNum"> 351 </span> :
|
||||
<span class="lineNum"> 352 </span><span class="lineCov"> 920 : log_tag("error:%u:%s:%s: Data error at position %u, diff bits %u\n", i, disk->name, esc(file->sub), file_pos, diff);</span>
|
||||
|
|
@ -428,22 +428,22 @@
|
|||
<span class="lineNum"> 366 </span> : }
|
||||
<span class="lineNum"> 367 </span> :
|
||||
<span class="lineNum"> 368 </span> : /* if we have read all the data required and it's correct, proceed with the parity check */
|
||||
<span class="lineNum"> 369 </span><span class="lineCov"> 27959 : if (!error_on_this_block && !silent_error_on_this_block && !io_error_on_this_block) {</span>
|
||||
<span class="lineNum"> 369 </span><span class="lineCov"> 27995 : if (!error_on_this_block && !silent_error_on_this_block && !io_error_on_this_block) {</span>
|
||||
<span class="lineNum"> 370 </span> : unsigned char* buffer_recov[LEV_MAX];
|
||||
<span class="lineNum"> 371 </span> :
|
||||
<span class="lineNum"> 372 </span> : /* until now is CPU */
|
||||
<span class="lineNum"> 373 </span><span class="lineCov"> 27039 : state_usage_cpu(state);</span>
|
||||
<span class="lineNum"> 373 </span><span class="lineCov"> 27075 : state_usage_cpu(state);</span>
|
||||
<span class="lineNum"> 374 </span> :
|
||||
<span class="lineNum"> 375 </span> : /* buffers for parity read and not computed */
|
||||
<span class="lineNum"> 376 </span><span class="lineCov"> 189273 : for (l = 0; l < state->level; ++l)</span>
|
||||
<span class="lineNum"> 377 </span><span class="lineCov"> 162234 : buffer_recov[l] = buffer[diskmax + state->level + l];</span>
|
||||
<span class="lineNum"> 378 </span><span class="lineCov"> 27039 : for (; l < LEV_MAX; ++l)</span>
|
||||
<span class="lineNum"> 376 </span><span class="lineCov"> 189525 : for (l = 0; l < state->level; ++l)</span>
|
||||
<span class="lineNum"> 377 </span><span class="lineCov"> 162450 : buffer_recov[l] = buffer[diskmax + state->level + l];</span>
|
||||
<span class="lineNum"> 378 </span><span class="lineCov"> 27075 : for (; l < LEV_MAX; ++l)</span>
|
||||
<span class="lineNum"> 379 </span><span class="lineNoCov"> 0 : buffer_recov[l] = 0;</span>
|
||||
<span class="lineNum"> 380 </span> :
|
||||
<span class="lineNum"> 381 </span> : /* read the parity */
|
||||
<span class="lineNum"> 382 </span><span class="lineCov"> 189273 : for (l = 0; l < state->level; ++l) {</span>
|
||||
<span class="lineNum"> 383 </span><span class="lineCov"> 162234 : ret = parity_read(parity[l], i, buffer_recov[l], state->block_size, log_error);</span>
|
||||
<span class="lineNum"> 384 </span><span class="lineCov"> 162234 : if (ret == -1) {</span>
|
||||
<span class="lineNum"> 382 </span><span class="lineCov"> 189525 : for (l = 0; l < state->level; ++l) {</span>
|
||||
<span class="lineNum"> 383 </span><span class="lineCov"> 162450 : ret = parity_read(parity[l], i, buffer_recov[l], state->block_size, log_error);</span>
|
||||
<span class="lineNum"> 384 </span><span class="lineCov"> 162450 : if (ret == -1) {</span>
|
||||
<span class="lineNum"> 385 </span><span class="lineNoCov"> 0 : buffer_recov[l] = 0;</span>
|
||||
<span class="lineNum"> 386 </span> :
|
||||
<span class="lineNum"> 387 </span><span class="lineNoCov"> 0 : if (errno == EIO) {</span>
|
||||
|
|
@ -471,15 +471,15 @@
|
|||
<span class="lineNum"> 409 </span> : }
|
||||
<span class="lineNum"> 410 </span> :
|
||||
<span class="lineNum"> 411 </span> : /* until now is parity */
|
||||
<span class="lineNum"> 412 </span><span class="lineCov"> 162234 : state_usage_parity(state, l);</span>
|
||||
<span class="lineNum"> 412 </span><span class="lineCov"> 162450 : state_usage_parity(state, l);</span>
|
||||
<span class="lineNum"> 413 </span> : }
|
||||
<span class="lineNum"> 414 </span> :
|
||||
<span class="lineNum"> 415 </span> : /* compute the parity */
|
||||
<span class="lineNum"> 416 </span><span class="lineCov"> 27039 : raid_gen(diskmax, state->level, state->block_size, buffer);</span>
|
||||
<span class="lineNum"> 416 </span><span class="lineCov"> 27075 : raid_gen(diskmax, state->level, state->block_size, buffer);</span>
|
||||
<span class="lineNum"> 417 </span> :
|
||||
<span class="lineNum"> 418 </span> : /* compare the parity */
|
||||
<span class="lineNum"> 419 </span><span class="lineCov"> 189273 : for (l = 0; l < state->level; ++l) {</span>
|
||||
<span class="lineNum"> 420 </span><span class="lineCov"> 162234 : if (buffer_recov[l] && memcmp(buffer[diskmax + l], buffer_recov[l], state->block_size) != 0) {</span>
|
||||
<span class="lineNum"> 419 </span><span class="lineCov"> 189525 : for (l = 0; l < state->level; ++l) {</span>
|
||||
<span class="lineNum"> 420 </span><span class="lineCov"> 162450 : if (buffer_recov[l] && memcmp(buffer[diskmax + l], buffer_recov[l], state->block_size) != 0) {</span>
|
||||
<span class="lineNum"> 421 </span><span class="lineNoCov"> 0 : unsigned diff = memdiff(buffer[diskmax + l], buffer_recov[l], state->block_size);</span>
|
||||
<span class="lineNum"> 422 </span> :
|
||||
<span class="lineNum"> 423 </span><span class="lineNoCov"> 0 : log_tag("parity_error:%u:%s: Data error, diff bits %u\n", i, lev_config_name(l), diff);</span>
|
||||
|
|
@ -497,42 +497,42 @@
|
|||
<span class="lineNum"> 435 </span> : }
|
||||
<span class="lineNum"> 436 </span> : }
|
||||
<span class="lineNum"> 437 </span> :
|
||||
<span class="lineNum"> 438 </span><span class="lineCov"> 27959 : if (silent_error_on_this_block || io_error_on_this_block) {</span>
|
||||
<span class="lineNum"> 438 </span><span class="lineCov"> 27995 : if (silent_error_on_this_block || io_error_on_this_block) {</span>
|
||||
<span class="lineNum"> 439 </span> : /* set the error status keeping other info */
|
||||
<span class="lineNum"> 440 </span><span class="lineCov"> 920 : info_set(&state->infoarr, i, info_set_bad(info));</span>
|
||||
<span class="lineNum"> 441 </span><span class="lineCov"> 27039 : } else if (error_on_this_block) {</span>
|
||||
<span class="lineNum"> 441 </span><span class="lineCov"> 27075 : } else if (error_on_this_block) {</span>
|
||||
<span class="lineNum"> 442 </span> : /* do nothing, as this is a generic error */
|
||||
<span class="lineNum"> 443 </span> : /* likely caused by a not synced array */
|
||||
<span class="lineNum"> 444 </span> : } else {
|
||||
<span class="lineNum"> 445 </span> : /* if rehash is needed */
|
||||
<span class="lineNum"> 446 </span><span class="lineCov"> 27039 : if (rehash) {</span>
|
||||
<span class="lineNum"> 446 </span><span class="lineCov"> 27075 : if (rehash) {</span>
|
||||
<span class="lineNum"> 447 </span> : /* store all the new hash already computed */
|
||||
<span class="lineNum"> 448 </span><span class="lineCov"> 32200 : for (j = 0; j < diskmax; ++j) {</span>
|
||||
<span class="lineNum"> 449 </span><span class="lineCov"> 27600 : if (rehandle[j].block)</span>
|
||||
<span class="lineNum"> 450 </span><span class="lineCov"> 27207 : memcpy(rehandle[j].block->hash, rehandle[j].hash, HASH_SIZE);</span>
|
||||
<span class="lineNum"> 448 </span><span class="lineCov"> 32228 : for (j = 0; j < diskmax; ++j) {</span>
|
||||
<span class="lineNum"> 449 </span><span class="lineCov"> 27624 : if (rehandle[j].block)</span>
|
||||
<span class="lineNum"> 450 </span><span class="lineCov"> 27235 : memcpy(rehandle[j].block->hash, rehandle[j].hash, HASH_SIZE);</span>
|
||||
<span class="lineNum"> 451 </span> : }
|
||||
<span class="lineNum"> 452 </span> : }
|
||||
<span class="lineNum"> 453 </span> :
|
||||
<span class="lineNum"> 454 </span> : /* update the time info of the block */
|
||||
<span class="lineNum"> 455 </span> : /* and clear any other flag */
|
||||
<span class="lineNum"> 456 </span><span class="lineCov"> 27039 : info_set(&state->infoarr, i, info_make(now, 0, 0, 0));</span>
|
||||
<span class="lineNum"> 456 </span><span class="lineCov"> 27075 : info_set(&state->infoarr, i, info_make(now, 0, 0, 0));</span>
|
||||
<span class="lineNum"> 457 </span> : }
|
||||
<span class="lineNum"> 458 </span> :
|
||||
<span class="lineNum"> 459 </span> : /* mark the state as needing write */
|
||||
<span class="lineNum"> 460 </span><span class="lineCov"> 27959 : state->need_write = 1;</span>
|
||||
<span class="lineNum"> 460 </span><span class="lineCov"> 27995 : state->need_write = 1;</span>
|
||||
<span class="lineNum"> 461 </span> :
|
||||
<span class="lineNum"> 462 </span> : /* count the number of processed block */
|
||||
<span class="lineNum"> 463 </span><span class="lineCov"> 27959 : ++countpos;</span>
|
||||
<span class="lineNum"> 463 </span><span class="lineCov"> 27995 : ++countpos;</span>
|
||||
<span class="lineNum"> 464 </span> :
|
||||
<span class="lineNum"> 465 </span> : /* progress */
|
||||
<span class="lineNum"> 466 </span><span class="lineCov"> 27959 : if (state_progress(state, i, countpos, countmax, countsize)) {</span>
|
||||
<span class="lineNum"> 466 </span><span class="lineCov"> 27995 : if (state_progress(state, i, countpos, countmax, countsize)) {</span>
|
||||
<span class="lineNum"> 467 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 468 </span> : break;
|
||||
<span class="lineNum"> 469 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 470 </span> : }
|
||||
<span class="lineNum"> 471 </span> :
|
||||
<span class="lineNum"> 472 </span> : /* autosave */
|
||||
<span class="lineNum"> 473 </span><span class="lineCov"> 27959 : if (state->autosave != 0</span>
|
||||
<span class="lineNum"> 473 </span><span class="lineCov"> 27995 : if (state->autosave != 0</span>
|
||||
<span class="lineNum"> 474 </span><span class="lineNoCov"> 0 : && autosavedone >= autosavelimit /* if we have reached the limit */</span>
|
||||
<span class="lineNum"> 475 </span><span class="lineNoCov"> 0 : && autosavemissing >= autosavelimit /* if we have at least a full step to do */</span>
|
||||
<span class="lineNum"> 476 </span> : ) {
|
||||
|
|
@ -705,14 +705,14 @@
|
|||
<span class="lineNum"> 643 </span> : /* copy the info in the temp vector */
|
||||
<span class="lineNum"> 644 </span><span class="lineCov"> 11 : count = 0;</span>
|
||||
<span class="lineNum"> 645 </span><span class="lineCov"> 11 : log_tag("block_count:%u\n", blockmax);</span>
|
||||
<span class="lineNum"> 646 </span><span class="lineCov"> 55920 : for (i = 0; i < blockmax; ++i) {</span>
|
||||
<span class="lineNum"> 647 </span><span class="lineCov"> 55909 : snapraid_info info = info_get(&state->infoarr, i);</span>
|
||||
<span class="lineNum"> 646 </span><span class="lineCov"> 56008 : for (i = 0; i < blockmax; ++i) {</span>
|
||||
<span class="lineNum"> 647 </span><span class="lineCov"> 55997 : snapraid_info info = info_get(&state->infoarr, i);</span>
|
||||
<span class="lineNum"> 648 </span> :
|
||||
<span class="lineNum"> 649 </span> : /* skip unused blocks */
|
||||
<span class="lineNum"> 650 </span><span class="lineCov"> 55909 : if (info == 0)</span>
|
||||
<span class="lineNum"> 650 </span><span class="lineCov"> 55997 : if (info == 0)</span>
|
||||
<span class="lineNum"> 651 </span><span class="lineNoCov"> 0 : continue;</span>
|
||||
<span class="lineNum"> 652 </span> :
|
||||
<span class="lineNum"> 653 </span><span class="lineCov"> 55909 : timemap[count++] = info_get_time(info);</span>
|
||||
<span class="lineNum"> 653 </span><span class="lineCov"> 55997 : timemap[count++] = info_get_time(info);</span>
|
||||
<span class="lineNum"> 654 </span> : }
|
||||
<span class="lineNum"> 655 </span> :
|
||||
<span class="lineNum"> 656 </span><span class="lineCov"> 11 : if (!count) {</span>
|
||||
|
|
@ -728,12 +728,12 @@
|
|||
<span class="lineNum"> 666 </span> : /* output the info map */
|
||||
<span class="lineNum"> 667 </span><span class="lineCov"> 11 : i = 0;</span>
|
||||
<span class="lineNum"> 668 </span><span class="lineCov"> 11 : log_tag("info_count:%u\n", count);</span>
|
||||
<span class="lineNum"> 669 </span><span class="lineCov"> 54 : while (i < count) {</span>
|
||||
<span class="lineNum"> 670 </span><span class="lineCov"> 32 : unsigned j = i + 1;</span>
|
||||
<span class="lineNum"> 671 </span><span class="lineCov"> 55941 : while (j < count && timemap[i] == timemap[j])</span>
|
||||
<span class="lineNum"> 672 </span><span class="lineCov"> 55877 : ++j;</span>
|
||||
<span class="lineNum"> 673 </span><span class="lineCov"> 32 : log_tag("info_time:%" PRIu64 ":%u\n", (uint64_t)timemap[i], j - i);</span>
|
||||
<span class="lineNum"> 674 </span><span class="lineCov"> 32 : i = j;</span>
|
||||
<span class="lineNum"> 669 </span><span class="lineCov"> 49 : while (i < count) {</span>
|
||||
<span class="lineNum"> 670 </span><span class="lineCov"> 27 : unsigned j = i + 1;</span>
|
||||
<span class="lineNum"> 671 </span><span class="lineCov"> 56024 : while (j < count && timemap[i] == timemap[j])</span>
|
||||
<span class="lineNum"> 672 </span><span class="lineCov"> 55970 : ++j;</span>
|
||||
<span class="lineNum"> 673 </span><span class="lineCov"> 27 : log_tag("info_time:%" PRIu64 ":%u\n", (uint64_t)timemap[i], j - i);</span>
|
||||
<span class="lineNum"> 674 </span><span class="lineCov"> 27 : i = j;</span>
|
||||
<span class="lineNum"> 675 </span> : }
|
||||
<span class="lineNum"> 676 </span> :
|
||||
<span class="lineNum"> 677 </span> : /* compute the limits from count/recentlimit */
|
||||
|
|
@ -754,8 +754,8 @@
|
|||
<span class="lineNum"> 692 </span> : /* count how many entries for this exact time we have to scrub */
|
||||
<span class="lineNum"> 693 </span> : /* if the blocks have all the same time, we end with countlimit == lastlimit */
|
||||
<span class="lineNum"> 694 </span><span class="lineCov"> 5 : ps.lastlimit = 1;</span>
|
||||
<span class="lineNum"> 695 </span><span class="lineCov"> 2500 : while (countlimit > ps.lastlimit && timemap[countlimit - ps.lastlimit - 1] == ps.timelimit)</span>
|
||||
<span class="lineNum"> 696 </span><span class="lineCov"> 2490 : ++ps.lastlimit;</span>
|
||||
<span class="lineNum"> 695 </span><span class="lineCov"> 2600 : while (countlimit > ps.lastlimit && timemap[countlimit - ps.lastlimit - 1] == ps.timelimit)</span>
|
||||
<span class="lineNum"> 696 </span><span class="lineCov"> 2590 : ++ps.lastlimit;</span>
|
||||
<span class="lineNum"> 697 </span> : } else {
|
||||
<span class="lineNum"> 698 </span> : /* if nothing to scrub, disable also other limits */
|
||||
<span class="lineNum"> 699 </span><span class="lineCov"> 1 : ps.timelimit = 0;</span>
|
||||
|
|
|
|||
|
|
@ -31,13 +31,13 @@
|
|||
<td class="headerValue">lcov.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntry">92</td>
|
||||
<td class="headerCovTableEntry">91</td>
|
||||
<td class="headerCovTableEntry">100</td>
|
||||
<td class="headerCovTableEntryHi">92.0 %</td>
|
||||
<td class="headerCovTableEntryHi">91.0 %</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Date:</td>
|
||||
<td class="headerValue">2015-11-20</td>
|
||||
<td class="headerValue">2016-01-09</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntry">7</td>
|
||||
|
|
@ -61,19 +61,19 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="search.c.gcov.html#24">search_file</a></td>
|
||||
<td class="coverFnHi">1842576</td>
|
||||
<td class="coverFnHi">1843303</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="search.c.gcov.html#40">search_file_free</a></td>
|
||||
<td class="coverFnHi">1842576</td>
|
||||
<td class="coverFnHi">1843303</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="search.c.gcov.html#131">state_search_fetch</a></td>
|
||||
<td class="coverFnHi">630482</td>
|
||||
<td class="coverFnHi">639672</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="search.c.gcov.html#56">search_file_compare</a></td>
|
||||
<td class="coverFnHi">11531</td>
|
||||
<td class="coverFnHi">20073</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="search.c.gcov.html#156">search_dir</a></td>
|
||||
|
|
|
|||
|
|
@ -31,13 +31,13 @@
|
|||
<td class="headerValue">lcov.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntry">92</td>
|
||||
<td class="headerCovTableEntry">91</td>
|
||||
<td class="headerCovTableEntry">100</td>
|
||||
<td class="headerCovTableEntryHi">92.0 %</td>
|
||||
<td class="headerCovTableEntryHi">91.0 %</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Date:</td>
|
||||
<td class="headerValue">2015-11-20</td>
|
||||
<td class="headerValue">2016-01-09</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntry">7</td>
|
||||
|
|
@ -65,15 +65,15 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="search.c.gcov.html#24">search_file</a></td>
|
||||
<td class="coverFnHi">1842576</td>
|
||||
<td class="coverFnHi">1843303</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="search.c.gcov.html#56">search_file_compare</a></td>
|
||||
<td class="coverFnHi">11531</td>
|
||||
<td class="coverFnHi">20073</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="search.c.gcov.html#40">search_file_free</a></td>
|
||||
<td class="coverFnHi">1842576</td>
|
||||
<td class="coverFnHi">1843303</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="search.c.gcov.html#262">state_search</a></td>
|
||||
|
|
@ -85,7 +85,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="search.c.gcov.html#131">state_search_fetch</a></td>
|
||||
<td class="coverFnHi">630482</td>
|
||||
<td class="coverFnHi">639672</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
|
|
|
|||
|
|
@ -31,13 +31,13 @@
|
|||
<td class="headerValue">lcov.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntry">92</td>
|
||||
<td class="headerCovTableEntry">91</td>
|
||||
<td class="headerCovTableEntry">100</td>
|
||||
<td class="headerCovTableEntryHi">92.0 %</td>
|
||||
<td class="headerCovTableEntryHi">91.0 %</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Date:</td>
|
||||
<td class="headerValue">2015-11-20</td>
|
||||
<td class="headerValue">2016-01-09</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntry">7</td>
|
||||
|
|
@ -85,27 +85,27 @@
|
|||
<span class="lineNum"> 23 </span> : /****************************************************************************/
|
||||
<a name="24"><span class="lineNum"> 24 </span> : /* search */</a>
|
||||
<span class="lineNum"> 25 </span> :
|
||||
<span class="lineNum"> 26 </span><span class="lineCov"> 1842576 : static void search_file(struct snapraid_state* state, const char* path, data_off_t size, int64_t mtime_sec, int mtime_nsec)</span>
|
||||
<span class="lineNum"> 26 </span><span class="lineCov"> 1843303 : static void search_file(struct snapraid_state* state, const char* path, data_off_t size, int64_t mtime_sec, int mtime_nsec)</span>
|
||||
<span class="lineNum"> 27 </span> : {
|
||||
<span class="lineNum"> 28 </span> : struct snapraid_search_file* file;
|
||||
<span class="lineNum"> 29 </span> : tommy_uint32_t file_hash;
|
||||
<span class="lineNum"> 30 </span> :
|
||||
<span class="lineNum"> 31 </span><span class="lineCov"> 1842576 : file = malloc_nofail(sizeof(struct snapraid_search_file));</span>
|
||||
<span class="lineNum"> 32 </span><span class="lineCov"> 1842576 : file->path = strdup_nofail(path);</span>
|
||||
<span class="lineNum"> 33 </span><span class="lineCov"> 1842576 : file->size = size;</span>
|
||||
<span class="lineNum"> 34 </span><span class="lineCov"> 1842576 : file->mtime_sec = mtime_sec;</span>
|
||||
<span class="lineNum"> 35 </span><span class="lineCov"> 1842576 : file->mtime_nsec = mtime_nsec;</span>
|
||||
<span class="lineNum"> 31 </span><span class="lineCov"> 1843303 : file = malloc_nofail(sizeof(struct snapraid_search_file));</span>
|
||||
<span class="lineNum"> 32 </span><span class="lineCov"> 1843303 : file->path = strdup_nofail(path);</span>
|
||||
<span class="lineNum"> 33 </span><span class="lineCov"> 1843303 : file->size = size;</span>
|
||||
<span class="lineNum"> 34 </span><span class="lineCov"> 1843303 : file->mtime_sec = mtime_sec;</span>
|
||||
<span class="lineNum"> 35 </span><span class="lineCov"> 1843303 : file->mtime_nsec = mtime_nsec;</span>
|
||||
<span class="lineNum"> 36 </span> :
|
||||
<span class="lineNum"> 37 </span><span class="lineCov"> 1842576 : file_hash = file_stamp_hash(file->size, file->mtime_sec, file->mtime_nsec);</span>
|
||||
<span class="lineNum"> 37 </span><span class="lineCov"> 1843303 : file_hash = file_stamp_hash(file->size, file->mtime_sec, file->mtime_nsec);</span>
|
||||
<span class="lineNum"> 38 </span> :
|
||||
<span class="lineNum"> 39 </span><span class="lineCov"> 1842576 : tommy_hashdyn_insert(&state->searchset, &file->node, file, file_hash);</span>
|
||||
<a name="40"><span class="lineNum"> 40 </span><span class="lineCov"> 1842576 : }</span></a>
|
||||
<span class="lineNum"> 39 </span><span class="lineCov"> 1843303 : tommy_hashdyn_insert(&state->searchset, &file->node, file, file_hash);</span>
|
||||
<a name="40"><span class="lineNum"> 40 </span><span class="lineCov"> 1843303 : }</span></a>
|
||||
<span class="lineNum"> 41 </span> :
|
||||
<span class="lineNum"> 42 </span><span class="lineCov"> 1842576 : void search_file_free(struct snapraid_search_file* file)</span>
|
||||
<span class="lineNum"> 42 </span><span class="lineCov"> 1843303 : void search_file_free(struct snapraid_search_file* file)</span>
|
||||
<span class="lineNum"> 43 </span> : {
|
||||
<span class="lineNum"> 44 </span><span class="lineCov"> 1842576 : free(file->path);</span>
|
||||
<span class="lineNum"> 45 </span><span class="lineCov"> 1842576 : free(file);</span>
|
||||
<span class="lineNum"> 46 </span><span class="lineCov"> 1842576 : }</span>
|
||||
<span class="lineNum"> 44 </span><span class="lineCov"> 1843303 : free(file->path);</span>
|
||||
<span class="lineNum"> 45 </span><span class="lineCov"> 1843303 : free(file);</span>
|
||||
<span class="lineNum"> 46 </span><span class="lineCov"> 1843303 : }</span>
|
||||
<span class="lineNum"> 47 </span> :
|
||||
<span class="lineNum"> 48 </span> : struct search_file_compare_arg {
|
||||
<span class="lineNum"> 49 </span> : const struct snapraid_state* state;
|
||||
|
|
@ -117,29 +117,29 @@
|
|||
<span class="lineNum"> 55 </span> : int prevhash;
|
||||
<a name="56"><span class="lineNum"> 56 </span> : };</a>
|
||||
<span class="lineNum"> 57 </span> :
|
||||
<span class="lineNum"> 58 </span><span class="lineCov"> 11531 : int search_file_compare(const void* void_arg, const void* void_data)</span>
|
||||
<span class="lineNum"> 58 </span><span class="lineCov"> 20073 : int search_file_compare(const void* void_arg, const void* void_data)</span>
|
||||
<span class="lineNum"> 59 </span> : {
|
||||
<span class="lineNum"> 60 </span><span class="lineCov"> 11531 : const struct search_file_compare_arg* arg = void_arg;</span>
|
||||
<span class="lineNum"> 61 </span><span class="lineCov"> 11531 : const struct snapraid_search_file* file = void_data;</span>
|
||||
<span class="lineNum"> 62 </span><span class="lineCov"> 11531 : const struct snapraid_state* state = arg->state;</span>
|
||||
<span class="lineNum"> 60 </span><span class="lineCov"> 20073 : const struct search_file_compare_arg* arg = void_arg;</span>
|
||||
<span class="lineNum"> 61 </span><span class="lineCov"> 20073 : const struct snapraid_search_file* file = void_data;</span>
|
||||
<span class="lineNum"> 62 </span><span class="lineCov"> 20073 : const struct snapraid_state* state = arg->state;</span>
|
||||
<span class="lineNum"> 63 </span> : unsigned char buffer_hash[HASH_SIZE];
|
||||
<span class="lineNum"> 64 </span><span class="lineCov"> 11531 : const char* path = file->path;</span>
|
||||
<span class="lineNum"> 64 </span><span class="lineCov"> 20073 : const char* path = file->path;</span>
|
||||
<span class="lineNum"> 65 </span> : int f;
|
||||
<span class="lineNum"> 66 </span> : ssize_t ret;
|
||||
<span class="lineNum"> 67 </span> :
|
||||
<span class="lineNum"> 68 </span> : /* compare file info */
|
||||
<span class="lineNum"> 69 </span><span class="lineCov"> 11531 : if (arg->file->size != file->size)</span>
|
||||
<span class="lineNum"> 69 </span><span class="lineCov"> 20073 : if (arg->file->size != file->size)</span>
|
||||
<span class="lineNum"> 70 </span><span class="lineNoCov"> 0 : return -1;</span>
|
||||
<span class="lineNum"> 71 </span> :
|
||||
<span class="lineNum"> 72 </span><span class="lineCov"> 11531 : if (arg->file->mtime_sec != file->mtime_sec)</span>
|
||||
<span class="lineNum"> 72 </span><span class="lineCov"> 20073 : if (arg->file->mtime_sec != file->mtime_sec)</span>
|
||||
<span class="lineNum"> 73 </span><span class="lineNoCov"> 0 : return -1;</span>
|
||||
<span class="lineNum"> 74 </span> :
|
||||
<span class="lineNum"> 75 </span><span class="lineCov"> 11531 : if (arg->file->mtime_nsec != file->mtime_nsec)</span>
|
||||
<span class="lineNum"> 75 </span><span class="lineCov"> 20073 : if (arg->file->mtime_nsec != file->mtime_nsec)</span>
|
||||
<span class="lineNum"> 76 </span><span class="lineNoCov"> 0 : return -1;</span>
|
||||
<span class="lineNum"> 77 </span> :
|
||||
<span class="lineNum"> 78 </span> : /* read the block and compare the hash */
|
||||
<span class="lineNum"> 79 </span><span class="lineCov"> 11531 : f = open(path, O_RDONLY | O_BINARY);</span>
|
||||
<span class="lineNum"> 80 </span><span class="lineCov"> 11531 : if (f == -1) {</span>
|
||||
<span class="lineNum"> 79 </span><span class="lineCov"> 20073 : f = open(path, O_RDONLY | O_BINARY);</span>
|
||||
<span class="lineNum"> 80 </span><span class="lineCov"> 20073 : if (f == -1) {</span>
|
||||
<span class="lineNum"> 81 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 82 </span> : if (errno == ENOENT) {
|
||||
<span class="lineNum"> 83 </span> : log_fatal("DANGER! file '%s' disappeared.\n", path);
|
||||
|
|
@ -151,23 +151,23 @@
|
|||
<span class="lineNum"> 89 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 90 </span> : }
|
||||
<span class="lineNum"> 91 </span> :
|
||||
<span class="lineNum"> 92 </span><span class="lineCov"> 11531 : if (lseek(f, arg->offset, SEEK_SET) != arg->offset) {</span>
|
||||
<span class="lineNum"> 92 </span><span class="lineCov"> 20073 : if (lseek(f, arg->offset, SEEK_SET) != arg->offset) {</span>
|
||||
<span class="lineNum"> 93 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 94 </span> : log_fatal("Error seeking file '%s'. %s.\n", path, strerror(errno));
|
||||
<span class="lineNum"> 95 </span> : exit(EXIT_FAILURE);
|
||||
<span class="lineNum"> 96 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 97 </span> : }
|
||||
<span class="lineNum"> 98 </span> :
|
||||
<span class="lineNum"> 99 </span><span class="lineCov"> 11531 : ret = read(f, arg->buffer, arg->read_size);</span>
|
||||
<span class="lineNum"> 100 </span><span class="lineCov"> 11531 : if (ret < 0 || (unsigned)ret != arg->read_size) {</span>
|
||||
<span class="lineNum"> 99 </span><span class="lineCov"> 20073 : ret = read(f, arg->buffer, arg->read_size);</span>
|
||||
<span class="lineNum"> 100 </span><span class="lineCov"> 20073 : if (ret < 0 || (unsigned)ret != arg->read_size) {</span>
|
||||
<span class="lineNum"> 101 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 102 </span> : log_fatal("Error reading file '%s'. %s.\n", path, strerror(errno));
|
||||
<span class="lineNum"> 103 </span> : exit(EXIT_FAILURE);
|
||||
<span class="lineNum"> 104 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 105 </span> : }
|
||||
<span class="lineNum"> 106 </span> :
|
||||
<span class="lineNum"> 107 </span><span class="lineCov"> 11531 : ret = close(f);</span>
|
||||
<span class="lineNum"> 108 </span><span class="lineCov"> 11531 : if (ret != 0) {</span>
|
||||
<span class="lineNum"> 107 </span><span class="lineCov"> 20073 : ret = close(f);</span>
|
||||
<span class="lineNum"> 108 </span><span class="lineCov"> 20073 : if (ret != 0) {</span>
|
||||
<span class="lineNum"> 109 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 110 </span> : log_fatal("Error closing file '%s'. %s.\n", path, strerror(errno));
|
||||
<span class="lineNum"> 111 </span> : exit(EXIT_FAILURE);
|
||||
|
|
@ -175,46 +175,46 @@
|
|||
<span class="lineNum"> 113 </span> : }
|
||||
<span class="lineNum"> 114 </span> :
|
||||
<span class="lineNum"> 115 </span> : /* compute the hash */
|
||||
<span class="lineNum"> 116 </span><span class="lineCov"> 11531 : if (arg->prevhash)</span>
|
||||
<span class="lineNum"> 117 </span><span class="lineCov"> 4492 : memhash(state->prevhash, state->prevhashseed, buffer_hash, arg->buffer, arg->read_size);</span>
|
||||
<span class="lineNum"> 116 </span><span class="lineCov"> 20073 : if (arg->prevhash)</span>
|
||||
<span class="lineNum"> 117 </span><span class="lineNoCov"> 0 : memhash(state->prevhash, state->prevhashseed, buffer_hash, arg->buffer, arg->read_size);</span>
|
||||
<span class="lineNum"> 118 </span> : else
|
||||
<span class="lineNum"> 119 </span><span class="lineCov"> 7039 : memhash(state->hash, state->hashseed, buffer_hash, arg->buffer, arg->read_size);</span>
|
||||
<span class="lineNum"> 119 </span><span class="lineCov"> 20073 : memhash(state->hash, state->hashseed, buffer_hash, arg->buffer, arg->read_size);</span>
|
||||
<span class="lineNum"> 120 </span> :
|
||||
<span class="lineNum"> 121 </span> : /* check if the hash is matching */
|
||||
<span class="lineNum"> 122 </span><span class="lineCov"> 11531 : if (memcmp(buffer_hash, arg->block->hash, HASH_SIZE) != 0)</span>
|
||||
<span class="lineNum"> 123 </span><span class="lineCov"> 2119 : return -1;</span>
|
||||
<span class="lineNum"> 122 </span><span class="lineCov"> 20073 : if (memcmp(buffer_hash, arg->block->hash, HASH_SIZE) != 0)</span>
|
||||
<span class="lineNum"> 123 </span><span class="lineCov"> 2235 : return -1;</span>
|
||||
<span class="lineNum"> 124 </span> :
|
||||
<span class="lineNum"> 125 </span><span class="lineCov"> 9412 : if (arg->read_size != state->block_size) {</span>
|
||||
<span class="lineNum"> 125 </span><span class="lineCov"> 17838 : if (arg->read_size != state->block_size) {</span>
|
||||
<span class="lineNum"> 126 </span> : /* fill the remaining with 0 */
|
||||
<span class="lineNum"> 127 </span><span class="lineCov"> 3956 : memset(arg->buffer + arg->read_size, 0, state->block_size - arg->read_size);</span>
|
||||
<span class="lineNum"> 127 </span><span class="lineCov"> 7108 : memset(arg->buffer + arg->read_size, 0, state->block_size - arg->read_size);</span>
|
||||
<span class="lineNum"> 128 </span> : }
|
||||
<span class="lineNum"> 129 </span> :
|
||||
<span class="lineNum"> 130 </span><span class="lineCov"> 9412 : return 0;</span>
|
||||
<span class="lineNum"> 130 </span><span class="lineCov"> 17838 : return 0;</span>
|
||||
<a name="131"><span class="lineNum"> 131 </span> : }</a>
|
||||
<span class="lineNum"> 132 </span> :
|
||||
<span class="lineNum"> 133 </span><span class="lineCov"> 630482 : int state_search_fetch(struct snapraid_state* state, int prevhash, struct snapraid_file* missing_file, block_off_t missing_file_pos, struct snapraid_block* missing_block, unsigned char* buffer)</span>
|
||||
<span class="lineNum"> 133 </span><span class="lineCov"> 639672 : int state_search_fetch(struct snapraid_state* state, int prevhash, struct snapraid_file* missing_file, block_off_t missing_file_pos, struct snapraid_block* missing_block, unsigned char* buffer)</span>
|
||||
<span class="lineNum"> 134 </span> : {
|
||||
<span class="lineNum"> 135 </span> : struct snapraid_search_file* file;
|
||||
<span class="lineNum"> 136 </span> : tommy_uint32_t file_hash;
|
||||
<span class="lineNum"> 137 </span> : struct search_file_compare_arg arg;
|
||||
<span class="lineNum"> 138 </span> :
|
||||
<span class="lineNum"> 139 </span><span class="lineCov"> 630482 : arg.state = state;</span>
|
||||
<span class="lineNum"> 140 </span><span class="lineCov"> 630482 : arg.block = missing_block;</span>
|
||||
<span class="lineNum"> 141 </span><span class="lineCov"> 630482 : arg.file = missing_file;</span>
|
||||
<span class="lineNum"> 142 </span><span class="lineCov"> 630482 : arg.buffer = buffer;</span>
|
||||
<span class="lineNum"> 143 </span><span class="lineCov"> 630482 : arg.offset = state->block_size * (data_off_t)missing_file_pos;</span>
|
||||
<span class="lineNum"> 144 </span><span class="lineCov"> 630482 : arg.read_size = file_block_size(missing_file, missing_file_pos, state->block_size);</span>
|
||||
<span class="lineNum"> 145 </span><span class="lineCov"> 630482 : arg.prevhash = prevhash;</span>
|
||||
<span class="lineNum"> 139 </span><span class="lineCov"> 639672 : arg.state = state;</span>
|
||||
<span class="lineNum"> 140 </span><span class="lineCov"> 639672 : arg.block = missing_block;</span>
|
||||
<span class="lineNum"> 141 </span><span class="lineCov"> 639672 : arg.file = missing_file;</span>
|
||||
<span class="lineNum"> 142 </span><span class="lineCov"> 639672 : arg.buffer = buffer;</span>
|
||||
<span class="lineNum"> 143 </span><span class="lineCov"> 639672 : arg.offset = state->block_size * (data_off_t)missing_file_pos;</span>
|
||||
<span class="lineNum"> 144 </span><span class="lineCov"> 639672 : arg.read_size = file_block_size(missing_file, missing_file_pos, state->block_size);</span>
|
||||
<span class="lineNum"> 145 </span><span class="lineCov"> 639672 : arg.prevhash = prevhash;</span>
|
||||
<span class="lineNum"> 146 </span> :
|
||||
<span class="lineNum"> 147 </span><span class="lineCov"> 630482 : file_hash = file_stamp_hash(arg.file->size, arg.file->mtime_sec, arg.file->mtime_nsec);</span>
|
||||
<span class="lineNum"> 147 </span><span class="lineCov"> 639672 : file_hash = file_stamp_hash(arg.file->size, arg.file->mtime_sec, arg.file->mtime_nsec);</span>
|
||||
<span class="lineNum"> 148 </span> :
|
||||
<span class="lineNum"> 149 </span> : /* search in the hashtable, and also check if the data matches the hash */
|
||||
<span class="lineNum"> 150 </span><span class="lineCov"> 630482 : file = tommy_hashdyn_search(&state->searchset, search_file_compare, &arg, file_hash);</span>
|
||||
<span class="lineNum"> 151 </span><span class="lineCov"> 630482 : if (!file)</span>
|
||||
<span class="lineNum"> 152 </span><span class="lineCov"> 621070 : return -1;</span>
|
||||
<span class="lineNum"> 150 </span><span class="lineCov"> 639672 : file = tommy_hashdyn_search(&state->searchset, search_file_compare, &arg, file_hash);</span>
|
||||
<span class="lineNum"> 151 </span><span class="lineCov"> 639672 : if (!file)</span>
|
||||
<span class="lineNum"> 152 </span><span class="lineCov"> 621834 : return -1;</span>
|
||||
<span class="lineNum"> 153 </span> :
|
||||
<span class="lineNum"> 154 </span> : /* if found, buffer is already set with data */
|
||||
<span class="lineNum"> 155 </span><span class="lineCov"> 9412 : return 0;</span>
|
||||
<span class="lineNum"> 155 </span><span class="lineCov"> 17838 : return 0;</span>
|
||||
<a name="156"><span class="lineNum"> 156 </span> : }</a>
|
||||
<span class="lineNum"> 157 </span> :
|
||||
<span class="lineNum"> 158 </span><span class="lineCov"> 2462 : static void search_dir(struct snapraid_state* state, struct snapraid_disk* disk, const char* dir, const char* sub)</span>
|
||||
|
|
@ -233,40 +233,40 @@
|
|||
<span class="lineNum"> 171 </span> : char path_next[PATH_MAX];
|
||||
<span class="lineNum"> 172 </span> : char sub_next[PATH_MAX];
|
||||
<span class="lineNum"> 173 </span> : char out[PATH_MAX];
|
||||
<span class="lineNum"> 174 </span><span class="lineCov"> 2039164 : struct snapraid_filter* reason = 0;</span>
|
||||
<span class="lineNum"> 174 </span><span class="lineCov"> 2039885 : struct snapraid_filter* reason = 0;</span>
|
||||
<span class="lineNum"> 175 </span> : struct stat st;
|
||||
<span class="lineNum"> 176 </span> : const char* name;
|
||||
<span class="lineNum"> 177 </span> : struct dirent* dd;
|
||||
<span class="lineNum"> 178 </span> :
|
||||
<span class="lineNum"> 179 </span> : /* clear errno to detect erroneous conditions */
|
||||
<span class="lineNum"> 180 </span><span class="lineCov"> 2039164 : errno = 0;</span>
|
||||
<span class="lineNum"> 181 </span><span class="lineCov"> 2039164 : dd = readdir(d);</span>
|
||||
<span class="lineNum"> 182 </span><span class="lineCov"> 2039164 : if (dd == 0 && errno != 0) {</span>
|
||||
<span class="lineNum"> 180 </span><span class="lineCov"> 2039885 : errno = 0;</span>
|
||||
<span class="lineNum"> 181 </span><span class="lineCov"> 2039885 : dd = readdir(d);</span>
|
||||
<span class="lineNum"> 182 </span><span class="lineCov"> 2039885 : if (dd == 0 && errno != 0) {</span>
|
||||
<span class="lineNum"> 183 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 184 </span> : log_fatal("Error reading directory '%s'. %s.\n", dir, strerror(errno));
|
||||
<span class="lineNum"> 185 </span> : exit(EXIT_FAILURE);
|
||||
<span class="lineNum"> 186 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 187 </span> : }
|
||||
<span class="lineNum"> 188 </span><span class="lineCov"> 2039164 : if (dd == 0) {</span>
|
||||
<span class="lineNum"> 188 </span><span class="lineCov"> 2039885 : if (dd == 0) {</span>
|
||||
<span class="lineNum"> 189 </span><span class="lineCov"> 2462 : break; /* finished */</span>
|
||||
<span class="lineNum"> 190 </span> : }
|
||||
<span class="lineNum"> 191 </span> :
|
||||
<span class="lineNum"> 192 </span> : /* skip "." and ".." files */
|
||||
<span class="lineNum"> 193 </span><span class="lineCov"> 2036702 : name = dd->d_name;</span>
|
||||
<span class="lineNum"> 194 </span><span class="lineCov"> 2036702 : if (name[0] == '.' && (name[1] == 0 || (name[1] == '.' && name[2] == 0)))</span>
|
||||
<span class="lineNum"> 193 </span><span class="lineCov"> 2037423 : name = dd->d_name;</span>
|
||||
<span class="lineNum"> 194 </span><span class="lineCov"> 2037423 : if (name[0] == '.' && (name[1] == 0 || (name[1] == '.' && name[2] == 0)))</span>
|
||||
<span class="lineNum"> 195 </span><span class="lineCov"> 9848 : continue;</span>
|
||||
<span class="lineNum"> 196 </span> :
|
||||
<span class="lineNum"> 197 </span><span class="lineCov"> 2031778 : pathprint(path_next, sizeof(path_next), "%s%s", dir, name);</span>
|
||||
<span class="lineNum"> 198 </span><span class="lineCov"> 2031778 : pathprint(sub_next, sizeof(sub_next), "%s%s", sub, name);</span>
|
||||
<span class="lineNum"> 197 </span><span class="lineCov"> 2032499 : pathprint(path_next, sizeof(path_next), "%s%s", dir, name);</span>
|
||||
<span class="lineNum"> 198 </span><span class="lineCov"> 2032499 : pathprint(sub_next, sizeof(sub_next), "%s%s", sub, name);</span>
|
||||
<span class="lineNum"> 199 </span> :
|
||||
<span class="lineNum"> 200 </span> : /* exclude hidden files even before calling lstat() */
|
||||
<span class="lineNum"> 201 </span><span class="lineCov"> 2031778 : if (disk != 0 && filter_hidden(state->filter_hidden, dd) != 0) {</span>
|
||||
<span class="lineNum"> 201 </span><span class="lineCov"> 2032499 : if (disk != 0 && filter_hidden(state->filter_hidden, dd) != 0) {</span>
|
||||
<span class="lineNum"> 202 </span><span class="lineNoCov"> 0 : msg_verbose("Excluding hidden '%s'\n", path_next);</span>
|
||||
<span class="lineNum"> 203 </span><span class="lineNoCov"> 0 : continue;</span>
|
||||
<span class="lineNum"> 204 </span> : }
|
||||
<span class="lineNum"> 205 </span> :
|
||||
<span class="lineNum"> 206 </span> : /* exclude content files even before calling lstat() */
|
||||
<span class="lineNum"> 207 </span><span class="lineCov"> 2031778 : if (disk != 0 && filter_content(&state->contentlist, path_next) != 0) {</span>
|
||||
<span class="lineNum"> 207 </span><span class="lineCov"> 2032499 : if (disk != 0 && filter_content(&state->contentlist, path_next) != 0) {</span>
|
||||
<span class="lineNum"> 208 </span><span class="lineNoCov"> 0 : msg_verbose("Excluding content '%s'\n", path_next);</span>
|
||||
<span class="lineNum"> 209 </span><span class="lineNoCov"> 0 : continue;</span>
|
||||
<span class="lineNum"> 210 </span> : }
|
||||
|
|
@ -290,7 +290,7 @@
|
|||
<span class="lineNum"> 228 </span> : }
|
||||
<span class="lineNum"> 229 </span> : #else
|
||||
<span class="lineNum"> 230 </span> : /* get lstat info about the file */
|
||||
<span class="lineNum"> 231 </span><span class="lineCov"> 2031778 : if (lstat(path_next, &st) != 0) {</span>
|
||||
<span class="lineNum"> 231 </span><span class="lineCov"> 2032499 : if (lstat(path_next, &st) != 0) {</span>
|
||||
<span class="lineNum"> 232 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 233 </span> : log_fatal("Error in stat file/directory '%s'. %s.\n", path_next, strerror(errno));
|
||||
<span class="lineNum"> 234 </span> : exit(EXIT_FAILURE);
|
||||
|
|
@ -298,13 +298,13 @@
|
|||
<span class="lineNum"> 236 </span> : }
|
||||
<span class="lineNum"> 237 </span> : #endif
|
||||
<span class="lineNum"> 238 </span> :
|
||||
<span class="lineNum"> 239 </span><span class="lineCov"> 2031778 : if (S_ISREG(st.st_mode)) {</span>
|
||||
<span class="lineNum"> 240 </span><span class="lineCov"> 1967521 : if (disk == 0 || filter_path(&state->filterlist, &reason, disk->name, sub_next) == 0) {</span>
|
||||
<span class="lineNum"> 241 </span><span class="lineCov"> 1842576 : search_file(state, path_next, st.st_size, st.st_mtime, STAT_NSEC(&st));</span>
|
||||
<span class="lineNum"> 239 </span><span class="lineCov"> 2032499 : if (S_ISREG(st.st_mode)) {</span>
|
||||
<span class="lineNum"> 240 </span><span class="lineCov"> 1968182 : if (disk == 0 || filter_path(&state->filterlist, &reason, disk->name, sub_next) == 0) {</span>
|
||||
<span class="lineNum"> 241 </span><span class="lineCov"> 1843303 : search_file(state, path_next, st.st_size, st.st_mtime, STAT_NSEC(&st));</span>
|
||||
<span class="lineNum"> 242 </span> : } else {
|
||||
<span class="lineNum"> 243 </span><span class="lineCov"> 124945 : msg_verbose("Excluding link '%s' for rule '%s'\n", path_next, filter_type(reason, out, sizeof(out)));</span>
|
||||
<span class="lineNum"> 243 </span><span class="lineCov"> 124879 : msg_verbose("Excluding link '%s' for rule '%s'\n", path_next, filter_type(reason, out, sizeof(out)));</span>
|
||||
<span class="lineNum"> 244 </span> : }
|
||||
<span class="lineNum"> 245 </span><span class="lineCov"> 64257 : } else if (S_ISDIR(st.st_mode)) {</span>
|
||||
<span class="lineNum"> 245 </span><span class="lineCov"> 64317 : } else if (S_ISDIR(st.st_mode)) {</span>
|
||||
<span class="lineNum"> 246 </span><span class="lineCov"> 1781 : if (disk == 0 || filter_dir(&state->filterlist, &reason, disk->name, sub_next) == 0) {</span>
|
||||
<span class="lineNum"> 247 </span><span class="lineCov"> 1781 : pathslash(path_next, sizeof(path_next));</span>
|
||||
<span class="lineNum"> 248 </span><span class="lineCov"> 1781 : pathslash(sub_next, sizeof(sub_next));</span>
|
||||
|
|
@ -313,7 +313,7 @@
|
|||
<span class="lineNum"> 251 </span><span class="lineNoCov"> 0 : msg_verbose("Excluding directory '%s' for rule '%s'\n", path_next, filter_type(reason, out, sizeof(out)));</span>
|
||||
<span class="lineNum"> 252 </span> : }
|
||||
<span class="lineNum"> 253 </span> : }
|
||||
<span class="lineNum"> 254 </span><span class="lineCov"> 2036702 : }</span>
|
||||
<span class="lineNum"> 254 </span><span class="lineCov"> 2037423 : }</span>
|
||||
<span class="lineNum"> 255 </span> :
|
||||
<span class="lineNum"> 256 </span><span class="lineCov"> 2462 : if (closedir(d) != 0) {</span>
|
||||
<span class="lineNum"> 257 </span> : /* LCOV_EXCL_START */
|
||||
|
|
|
|||
|
|
@ -32,12 +32,12 @@
|
|||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntry">144</td>
|
||||
<td class="headerCovTableEntry">172</td>
|
||||
<td class="headerCovTableEntryMed">83.7 %</td>
|
||||
<td class="headerCovTableEntry">144</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Date:</td>
|
||||
<td class="headerValue">2015-11-20</td>
|
||||
<td class="headerValue">2016-01-09</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntry">8</td>
|
||||
|
|
@ -88,7 +88,7 @@
|
|||
<td class="coverFnHi">1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="selftest.c.gcov.html#444">selftest</a></td>
|
||||
<td class="coverFn"><a href="selftest.c.gcov.html#525">selftest</a></td>
|
||||
<td class="coverFnHi">1</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
|
|||
|
|
@ -32,12 +32,12 @@
|
|||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntry">144</td>
|
||||
<td class="headerCovTableEntry">172</td>
|
||||
<td class="headerCovTableEntryMed">83.7 %</td>
|
||||
<td class="headerCovTableEntry">144</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Date:</td>
|
||||
<td class="headerValue">2015-11-20</td>
|
||||
<td class="headerValue">2016-01-09</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntry">8</td>
|
||||
|
|
@ -60,7 +60,7 @@
|
|||
<td width="20%" class="tableHead">Hit count <span class="tableHeadSort"><a href="selftest.c.func-sort-c.html"><img src="../updown.png" width=10 height=14 alt="Sort by hit count" title="Sort by hit count" border=0></a></span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="selftest.c.gcov.html#444">selftest</a></td>
|
||||
<td class="coverFn"><a href="selftest.c.gcov.html#525">selftest</a></td>
|
||||
<td class="coverFnHi">1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
|
|
|||
|
|
@ -32,12 +32,12 @@
|
|||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntry">144</td>
|
||||
<td class="headerCovTableEntry">172</td>
|
||||
<td class="headerCovTableEntryMed">83.7 %</td>
|
||||
<td class="headerCovTableEntry">144</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Date:</td>
|
||||
<td class="headerValue">2015-11-20</td>
|
||||
<td class="headerValue">2016-01-09</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntry">8</td>
|
||||
|
|
@ -378,207 +378,288 @@
|
|||
<span class="lineNum"> 316 </span><span class="lineCov"> 256 : *(unsigned*)tommy_arrayblkof_ref(&arrayblkof, i) = i;</span>
|
||||
<span class="lineNum"> 317 </span> : }
|
||||
<span class="lineNum"> 318 </span> :
|
||||
<span class="lineNum"> 319 </span><span class="lineCov"> 1 : if (tommy_array_memory_usage(&array) < TOMMY_SIZE * sizeof(void*))</span>
|
||||
<span class="lineNum"> 320 </span><span class="lineNoCov"> 0 : goto bail;</span>
|
||||
<span class="lineNum"> 321 </span><span class="lineCov"> 1 : if (tommy_arrayblk_memory_usage(&arrayblk) < TOMMY_SIZE * sizeof(void*))</span>
|
||||
<span class="lineNum"> 322 </span><span class="lineNoCov"> 0 : goto bail;</span>
|
||||
<span class="lineNum"> 323 </span><span class="lineCov"> 1 : if (tommy_arrayblkof_memory_usage(&arrayblkof) < TOMMY_SIZE * sizeof(unsigned))</span>
|
||||
<span class="lineNum"> 324 </span><span class="lineNoCov"> 0 : goto bail;</span>
|
||||
<span class="lineNum"> 325 </span> :
|
||||
<span class="lineNum"> 326 </span><span class="lineCov"> 257 : for (i = 0; i < TOMMY_SIZE; ++i) {</span>
|
||||
<span class="lineNum"> 327 </span><span class="lineCov"> 256 : if (tommy_array_get(&array, i) != &node[i])</span>
|
||||
<span class="lineNum"> 328 </span><span class="lineNoCov"> 0 : goto bail;</span>
|
||||
<span class="lineNum"> 329 </span><span class="lineCov"> 256 : if (tommy_arrayblk_get(&arrayblk, i) != &node[i])</span>
|
||||
<span class="lineNum"> 330 </span><span class="lineNoCov"> 0 : goto bail;</span>
|
||||
<span class="lineNum"> 331 </span><span class="lineCov"> 256 : if (*(unsigned*)tommy_arrayblkof_ref(&arrayblkof, i) != i)</span>
|
||||
<span class="lineNum"> 332 </span><span class="lineNoCov"> 0 : goto bail;</span>
|
||||
<span class="lineNum"> 319 </span><span class="lineCov"> 1 : if (tommy_array_memory_usage(&array) < TOMMY_SIZE * sizeof(void*)) {</span>
|
||||
<span class="lineNum"> 320 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 321 </span> : goto bail;
|
||||
<span class="lineNum"> 322 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 323 </span> : }
|
||||
<span class="lineNum"> 324 </span><span class="lineCov"> 1 : if (tommy_arrayblk_memory_usage(&arrayblk) < TOMMY_SIZE * sizeof(void*)) {</span>
|
||||
<span class="lineNum"> 325 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 326 </span> : goto bail;
|
||||
<span class="lineNum"> 327 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 328 </span> : }
|
||||
<span class="lineNum"> 329 </span><span class="lineCov"> 1 : if (tommy_arrayblkof_memory_usage(&arrayblkof) < TOMMY_SIZE * sizeof(unsigned)) {</span>
|
||||
<span class="lineNum"> 330 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 331 </span> : goto bail;
|
||||
<span class="lineNum"> 332 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 333 </span> : }
|
||||
<span class="lineNum"> 334 </span> :
|
||||
<span class="lineNum"> 335 </span><span class="lineCov"> 1 : tommy_arrayblkof_done(&arrayblkof);</span>
|
||||
<span class="lineNum"> 336 </span><span class="lineCov"> 1 : tommy_arrayblk_done(&arrayblk);</span>
|
||||
<span class="lineNum"> 337 </span><span class="lineCov"> 1 : tommy_array_done(&array);</span>
|
||||
<span class="lineNum"> 338 </span> :
|
||||
<span class="lineNum"> 339 </span><span class="lineCov"> 1 : tommy_list_init(&list);</span>
|
||||
<span class="lineNum"> 340 </span> :
|
||||
<span class="lineNum"> 341 </span><span class="lineCov"> 1 : if (!tommy_list_empty(&list))</span>
|
||||
<span class="lineNum"> 342 </span><span class="lineNoCov"> 0 : goto bail;</span>
|
||||
<span class="lineNum"> 343 </span> :
|
||||
<span class="lineNum"> 344 </span><span class="lineCov"> 1 : if (tommy_list_tail(&list))</span>
|
||||
<span class="lineNum"> 345 </span><span class="lineNoCov"> 0 : goto bail;</span>
|
||||
<span class="lineNum"> 346 </span> :
|
||||
<span class="lineNum"> 347 </span><span class="lineCov"> 1 : if (tommy_list_head(&list))</span>
|
||||
<span class="lineNum"> 348 </span><span class="lineNoCov"> 0 : goto bail;</span>
|
||||
<span class="lineNum"> 349 </span> :
|
||||
<span class="lineNum"> 350 </span><span class="lineCov"> 1 : tommy_hashdyn_init(&hashdyn);</span>
|
||||
<span class="lineNum"> 351 </span> :
|
||||
<span class="lineNum"> 352 </span><span class="lineCov"> 257 : for (i = 0; i < TOMMY_SIZE; ++i)</span>
|
||||
<span class="lineNum"> 353 </span><span class="lineCov"> 256 : tommy_hashdyn_insert(&hashdyn, &node[i], &node[i], i % 64);</span>
|
||||
<span class="lineNum"> 354 </span> :
|
||||
<span class="lineNum"> 355 </span><span class="lineCov"> 1 : if (tommy_hashdyn_count(&hashdyn) != TOMMY_SIZE)</span>
|
||||
<span class="lineNum"> 356 </span><span class="lineNoCov"> 0 : goto bail;</span>
|
||||
<span class="lineNum"> 357 </span> :
|
||||
<span class="lineNum"> 358 </span><span class="lineCov"> 1 : if (tommy_hashdyn_memory_usage(&hashdyn) < TOMMY_SIZE * sizeof(tommy_node))</span>
|
||||
<span class="lineNum"> 359 </span><span class="lineNoCov"> 0 : goto bail;</span>
|
||||
<span class="lineNum"> 360 </span> :
|
||||
<span class="lineNum"> 361 </span><span class="lineCov"> 1 : tommy_test_foreach_count = 0;</span>
|
||||
<span class="lineNum"> 362 </span><span class="lineCov"> 1 : tommy_hashdyn_foreach(&hashdyn, tommy_test_foreach);</span>
|
||||
<span class="lineNum"> 363 </span><span class="lineCov"> 1 : if (tommy_test_foreach_count != TOMMY_SIZE)</span>
|
||||
<span class="lineNum"> 364 </span><span class="lineNoCov"> 0 : goto bail;</span>
|
||||
<span class="lineNum"> 365 </span> :
|
||||
<span class="lineNum"> 366 </span><span class="lineCov"> 1 : tommy_test_foreach_count = 0;</span>
|
||||
<span class="lineNum"> 367 </span><span class="lineCov"> 1 : tommy_hashdyn_foreach_arg(&hashdyn, tommy_test_foreach_arg, &tommy_test_foreach_count);</span>
|
||||
<span class="lineNum"> 368 </span><span class="lineCov"> 1 : if (tommy_test_foreach_count != TOMMY_SIZE)</span>
|
||||
<span class="lineNum"> 369 </span><span class="lineNoCov"> 0 : goto bail;</span>
|
||||
<span class="lineNum"> 335 </span><span class="lineCov"> 257 : for (i = 0; i < TOMMY_SIZE; ++i) {</span>
|
||||
<span class="lineNum"> 336 </span><span class="lineCov"> 256 : if (tommy_array_get(&array, i) != &node[i]) {</span>
|
||||
<span class="lineNum"> 337 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 338 </span> : goto bail;
|
||||
<span class="lineNum"> 339 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 340 </span> : }
|
||||
<span class="lineNum"> 341 </span><span class="lineCov"> 256 : if (tommy_arrayblk_get(&arrayblk, i) != &node[i]) {</span>
|
||||
<span class="lineNum"> 342 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 343 </span> : goto bail;
|
||||
<span class="lineNum"> 344 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 345 </span> : }
|
||||
<span class="lineNum"> 346 </span><span class="lineCov"> 256 : if (*(unsigned*)tommy_arrayblkof_ref(&arrayblkof, i) != i) {</span>
|
||||
<span class="lineNum"> 347 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 348 </span> : goto bail;
|
||||
<span class="lineNum"> 349 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 350 </span> : }
|
||||
<span class="lineNum"> 351 </span> : }
|
||||
<span class="lineNum"> 352 </span> :
|
||||
<span class="lineNum"> 353 </span><span class="lineCov"> 1 : tommy_arrayblkof_done(&arrayblkof);</span>
|
||||
<span class="lineNum"> 354 </span><span class="lineCov"> 1 : tommy_arrayblk_done(&arrayblk);</span>
|
||||
<span class="lineNum"> 355 </span><span class="lineCov"> 1 : tommy_array_done(&array);</span>
|
||||
<span class="lineNum"> 356 </span> :
|
||||
<span class="lineNum"> 357 </span><span class="lineCov"> 1 : tommy_list_init(&list);</span>
|
||||
<span class="lineNum"> 358 </span> :
|
||||
<span class="lineNum"> 359 </span><span class="lineCov"> 1 : if (!tommy_list_empty(&list)) {</span>
|
||||
<span class="lineNum"> 360 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 361 </span> : goto bail;
|
||||
<span class="lineNum"> 362 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 363 </span> : }
|
||||
<span class="lineNum"> 364 </span> :
|
||||
<span class="lineNum"> 365 </span><span class="lineCov"> 1 : if (tommy_list_tail(&list)) {</span>
|
||||
<span class="lineNum"> 366 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 367 </span> : goto bail;
|
||||
<span class="lineNum"> 368 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 369 </span> : }
|
||||
<span class="lineNum"> 370 </span> :
|
||||
<span class="lineNum"> 371 </span><span class="lineCov"> 129 : for (i = 0; i < TOMMY_SIZE / 2; ++i)</span>
|
||||
<span class="lineNum"> 372 </span><span class="lineCov"> 128 : tommy_hashdyn_remove_existing(&hashdyn, &node[i]);</span>
|
||||
<span class="lineNum"> 373 </span> :
|
||||
<span class="lineNum"> 374 </span><span class="lineCov"> 129 : for (i = 0; i < TOMMY_SIZE / 2; ++i)</span>
|
||||
<span class="lineNum"> 375 </span><span class="lineCov"> 128 : if (tommy_hashdyn_remove(&hashdyn, tommy_test_search, &node[i], i % 64) != 0)</span>
|
||||
<span class="lineNum"> 376 </span><span class="lineNoCov"> 0 : goto bail;</span>
|
||||
<span class="lineNum"> 377 </span> :
|
||||
<span class="lineNum"> 378 </span><span class="lineCov"> 129 : for (i = TOMMY_SIZE / 2; i < TOMMY_SIZE; ++i)</span>
|
||||
<span class="lineNum"> 379 </span><span class="lineCov"> 128 : if (tommy_hashdyn_remove(&hashdyn, tommy_test_search, &node[i], i % 64) == 0)</span>
|
||||
<span class="lineNum"> 380 </span><span class="lineNoCov"> 0 : goto bail;</span>
|
||||
<span class="lineNum"> 371 </span><span class="lineCov"> 1 : if (tommy_list_head(&list)) {</span>
|
||||
<span class="lineNum"> 372 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 373 </span> : goto bail;
|
||||
<span class="lineNum"> 374 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 375 </span> : }
|
||||
<span class="lineNum"> 376 </span> :
|
||||
<span class="lineNum"> 377 </span><span class="lineCov"> 1 : tommy_hashdyn_init(&hashdyn);</span>
|
||||
<span class="lineNum"> 378 </span> :
|
||||
<span class="lineNum"> 379 </span><span class="lineCov"> 257 : for (i = 0; i < TOMMY_SIZE; ++i)</span>
|
||||
<span class="lineNum"> 380 </span><span class="lineCov"> 256 : tommy_hashdyn_insert(&hashdyn, &node[i], &node[i], i % 64);</span>
|
||||
<span class="lineNum"> 381 </span> :
|
||||
<span class="lineNum"> 382 </span><span class="lineCov"> 1 : if (tommy_hashdyn_count(&hashdyn) != 0)</span>
|
||||
<span class="lineNum"> 383 </span><span class="lineNoCov"> 0 : goto bail;</span>
|
||||
<span class="lineNum"> 384 </span> :
|
||||
<span class="lineNum"> 385 </span><span class="lineCov"> 1 : tommy_hashdyn_done(&hashdyn);</span>
|
||||
<span class="lineNum"> 386 </span> :
|
||||
<span class="lineNum"> 387 </span><span class="lineCov"> 1 : tommy_tree_init(&tree, tommy_test_compare);</span>
|
||||
<span class="lineNum"> 388 </span> :
|
||||
<span class="lineNum"> 389 </span><span class="lineCov"> 257 : for (i = 0; i < TOMMY_SIZE; ++i)</span>
|
||||
<span class="lineNum"> 390 </span><span class="lineCov"> 256 : tommy_tree_insert(&tree, &node[i], (void*)(uintptr_t)(i+1));</span>
|
||||
<span class="lineNum"> 391 </span> :
|
||||
<span class="lineNum"> 392 </span> : /* try to insert a duplicate, count should not change */
|
||||
<span class="lineNum"> 393 </span><span class="lineCov"> 1 : if (tommy_tree_insert(&tree, &node[TOMMY_SIZE], (void*)1) != (void*)1)</span>
|
||||
<span class="lineNum"> 394 </span><span class="lineNoCov"> 0 : goto bail;</span>
|
||||
<span class="lineNum"> 395 </span> :
|
||||
<span class="lineNum"> 396 </span><span class="lineCov"> 1 : if (tommy_tree_count(&tree) != TOMMY_SIZE)</span>
|
||||
<span class="lineNum"> 397 </span><span class="lineNoCov"> 0 : goto bail;</span>
|
||||
<span class="lineNum"> 398 </span> :
|
||||
<span class="lineNum"> 399 </span><span class="lineCov"> 1 : if (tommy_tree_memory_usage(&tree) < TOMMY_SIZE * sizeof(tommy_node))</span>
|
||||
<span class="lineNum"> 400 </span><span class="lineNoCov"> 0 : goto bail;</span>
|
||||
<span class="lineNum"> 382 </span><span class="lineCov"> 1 : if (tommy_hashdyn_count(&hashdyn) != TOMMY_SIZE) {</span>
|
||||
<span class="lineNum"> 383 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 384 </span> : goto bail;
|
||||
<span class="lineNum"> 385 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 386 </span> : }
|
||||
<span class="lineNum"> 387 </span> :
|
||||
<span class="lineNum"> 388 </span><span class="lineCov"> 1 : if (tommy_hashdyn_memory_usage(&hashdyn) < TOMMY_SIZE * sizeof(tommy_node)) {</span>
|
||||
<span class="lineNum"> 389 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 390 </span> : goto bail;
|
||||
<span class="lineNum"> 391 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 392 </span> : }
|
||||
<span class="lineNum"> 393 </span> :
|
||||
<span class="lineNum"> 394 </span><span class="lineCov"> 1 : tommy_test_foreach_count = 0;</span>
|
||||
<span class="lineNum"> 395 </span><span class="lineCov"> 1 : tommy_hashdyn_foreach(&hashdyn, tommy_test_foreach);</span>
|
||||
<span class="lineNum"> 396 </span><span class="lineCov"> 1 : if (tommy_test_foreach_count != TOMMY_SIZE) {</span>
|
||||
<span class="lineNum"> 397 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 398 </span> : goto bail;
|
||||
<span class="lineNum"> 399 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 400 </span> : }
|
||||
<span class="lineNum"> 401 </span> :
|
||||
<span class="lineNum"> 402 </span><span class="lineCov"> 1 : if (tommy_tree_search(&tree, (void*)1) != (void*)1)</span>
|
||||
<span class="lineNum"> 403 </span><span class="lineNoCov"> 0 : goto bail;</span>
|
||||
<span class="lineNum"> 404 </span> :
|
||||
<span class="lineNum"> 405 </span><span class="lineCov"> 1 : if (tommy_tree_search(&tree, (void*)-1) != 0)</span>
|
||||
<span class="lineNum"> 406 </span><span class="lineNoCov"> 0 : goto bail;</span>
|
||||
<span class="lineNum"> 407 </span> :
|
||||
<span class="lineNum"> 408 </span><span class="lineCov"> 1 : if (tommy_tree_search_compare(&tree, tommy_test_compare, (void*)1) != (void*)1)</span>
|
||||
<span class="lineNum"> 409 </span><span class="lineNoCov"> 0 : goto bail;</span>
|
||||
<span class="lineNum"> 410 </span> :
|
||||
<span class="lineNum"> 411 </span><span class="lineCov"> 1 : if (tommy_tree_search_compare(&tree, tommy_test_compare, (void*)-1) != 0)</span>
|
||||
<span class="lineNum"> 412 </span><span class="lineNoCov"> 0 : goto bail;</span>
|
||||
<span class="lineNum"> 413 </span> :
|
||||
<span class="lineNum"> 414 </span><span class="lineCov"> 1 : tommy_test_foreach_count = 0;</span>
|
||||
<span class="lineNum"> 415 </span><span class="lineCov"> 1 : tommy_tree_foreach(&tree, tommy_test_foreach);</span>
|
||||
<span class="lineNum"> 416 </span><span class="lineCov"> 1 : if (tommy_test_foreach_count != TOMMY_SIZE)</span>
|
||||
<span class="lineNum"> 417 </span><span class="lineNoCov"> 0 : goto bail;</span>
|
||||
<span class="lineNum"> 418 </span> :
|
||||
<span class="lineNum"> 419 </span><span class="lineCov"> 1 : tommy_test_foreach_count = 0;</span>
|
||||
<span class="lineNum"> 420 </span><span class="lineCov"> 1 : tommy_tree_foreach_arg(&tree, tommy_test_foreach_arg, &tommy_test_foreach_count);</span>
|
||||
<span class="lineNum"> 421 </span><span class="lineCov"> 1 : if (tommy_test_foreach_count != TOMMY_SIZE)</span>
|
||||
<span class="lineNum"> 422 </span><span class="lineNoCov"> 0 : goto bail;</span>
|
||||
<span class="lineNum"> 423 </span> :
|
||||
<span class="lineNum"> 424 </span><span class="lineCov"> 129 : for (i = 0; i < TOMMY_SIZE / 2; ++i)</span>
|
||||
<span class="lineNum"> 425 </span><span class="lineCov"> 128 : tommy_tree_remove_existing(&tree, &node[i]);</span>
|
||||
<span class="lineNum"> 426 </span> :
|
||||
<span class="lineNum"> 427 </span><span class="lineCov"> 129 : for (i = 0; i < TOMMY_SIZE / 2; ++i)</span>
|
||||
<span class="lineNum"> 428 </span><span class="lineCov"> 128 : if (tommy_tree_remove(&tree, (void*)(uintptr_t)(i+1)) != 0)</span>
|
||||
<span class="lineNum"> 429 </span><span class="lineNoCov"> 0 : goto bail;</span>
|
||||
<span class="lineNum"> 430 </span> :
|
||||
<span class="lineNum"> 431 </span><span class="lineCov"> 129 : for (i = TOMMY_SIZE / 2; i < TOMMY_SIZE; ++i)</span>
|
||||
<span class="lineNum"> 432 </span><span class="lineCov"> 128 : if (tommy_tree_remove(&tree, (void*)(uintptr_t)(i+1)) == 0)</span>
|
||||
<span class="lineNum"> 433 </span><span class="lineNoCov"> 0 : goto bail;</span>
|
||||
<span class="lineNum"> 434 </span> :
|
||||
<span class="lineNum"> 435 </span><span class="lineCov"> 1 : if (tommy_tree_count(&tree) != 0)</span>
|
||||
<span class="lineNum"> 436 </span><span class="lineNoCov"> 0 : goto bail;</span>
|
||||
<span class="lineNum"> 402 </span><span class="lineCov"> 1 : tommy_test_foreach_count = 0;</span>
|
||||
<span class="lineNum"> 403 </span><span class="lineCov"> 1 : tommy_hashdyn_foreach_arg(&hashdyn, tommy_test_foreach_arg, &tommy_test_foreach_count);</span>
|
||||
<span class="lineNum"> 404 </span><span class="lineCov"> 1 : if (tommy_test_foreach_count != TOMMY_SIZE) {</span>
|
||||
<span class="lineNum"> 405 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 406 </span> : goto bail;
|
||||
<span class="lineNum"> 407 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 408 </span> : }
|
||||
<span class="lineNum"> 409 </span> :
|
||||
<span class="lineNum"> 410 </span><span class="lineCov"> 129 : for (i = 0; i < TOMMY_SIZE / 2; ++i)</span>
|
||||
<span class="lineNum"> 411 </span><span class="lineCov"> 128 : tommy_hashdyn_remove_existing(&hashdyn, &node[i]);</span>
|
||||
<span class="lineNum"> 412 </span> :
|
||||
<span class="lineNum"> 413 </span><span class="lineCov"> 129 : for (i = 0; i < TOMMY_SIZE / 2; ++i) {</span>
|
||||
<span class="lineNum"> 414 </span><span class="lineCov"> 128 : if (tommy_hashdyn_remove(&hashdyn, tommy_test_search, &node[i], i % 64) != 0) {</span>
|
||||
<span class="lineNum"> 415 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 416 </span> : goto bail;
|
||||
<span class="lineNum"> 417 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 418 </span> : }
|
||||
<span class="lineNum"> 419 </span> : }
|
||||
<span class="lineNum"> 420 </span><span class="lineCov"> 129 : for (i = TOMMY_SIZE / 2; i < TOMMY_SIZE; ++i) {</span>
|
||||
<span class="lineNum"> 421 </span><span class="lineCov"> 128 : if (tommy_hashdyn_remove(&hashdyn, tommy_test_search, &node[i], i % 64) == 0) {</span>
|
||||
<span class="lineNum"> 422 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 423 </span> : goto bail;
|
||||
<span class="lineNum"> 424 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 425 </span> : }
|
||||
<span class="lineNum"> 426 </span> : }
|
||||
<span class="lineNum"> 427 </span> :
|
||||
<span class="lineNum"> 428 </span><span class="lineCov"> 1 : if (tommy_hashdyn_count(&hashdyn) != 0) {</span>
|
||||
<span class="lineNum"> 429 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 430 </span> : goto bail;
|
||||
<span class="lineNum"> 431 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 432 </span> : }
|
||||
<span class="lineNum"> 433 </span> :
|
||||
<span class="lineNum"> 434 </span><span class="lineCov"> 1 : tommy_hashdyn_done(&hashdyn);</span>
|
||||
<span class="lineNum"> 435 </span> :
|
||||
<span class="lineNum"> 436 </span><span class="lineCov"> 1 : tommy_tree_init(&tree, tommy_test_compare);</span>
|
||||
<span class="lineNum"> 437 </span> :
|
||||
<span class="lineNum"> 438 </span><span class="lineCov"> 2 : return;</span>
|
||||
<span class="lineNum"> 439 </span> : bail:
|
||||
<span class="lineNum"> 440 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 441 </span> : log_fatal("Failed tommy test\n");
|
||||
<span class="lineNum"> 442 </span> : exit(EXIT_FAILURE);
|
||||
<span class="lineNum"> 443 </span> : /* LCOV_EXCL_STOP */
|
||||
<a name="444"><span class="lineNum"> 444 </span> : }</a>
|
||||
<span class="lineNum"> 445 </span> :
|
||||
<span class="lineNum"> 446 </span><span class="lineCov"> 1 : void selftest(void)</span>
|
||||
<span class="lineNum"> 447 </span> : {
|
||||
<span class="lineNum"> 448 </span><span class="lineCov"> 1 : log_tag("selftest:\n");</span>
|
||||
<span class="lineNum"> 449 </span><span class="lineCov"> 1 : log_flush();</span>
|
||||
<span class="lineNum"> 450 </span> :
|
||||
<span class="lineNum"> 451 </span><span class="lineCov"> 1 : msg_progress("Self test...\n");</span>
|
||||
<span class="lineNum"> 452 </span> :
|
||||
<span class="lineNum"> 453 </span> : /* large file check */
|
||||
<span class="lineNum"> 454 </span> : if (sizeof(off_t) < sizeof(uint64_t)) {
|
||||
<span class="lineNum"> 455 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 456 </span> : log_fatal("Missing support for large files\n");
|
||||
<span class="lineNum"> 457 </span> : exit(EXIT_FAILURE);
|
||||
<span class="lineNum"> 458 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 459 </span> : }
|
||||
<span class="lineNum"> 460 </span> :
|
||||
<span class="lineNum"> 461 </span><span class="lineCov"> 1 : test_hash();</span>
|
||||
<span class="lineNum"> 462 </span><span class="lineCov"> 1 : test_crc32c();</span>
|
||||
<span class="lineNum"> 463 </span><span class="lineCov"> 1 : test_tommy();</span>
|
||||
<span class="lineNum"> 464 </span><span class="lineCov"> 1 : if (raid_selftest() != 0) {</span>
|
||||
<span class="lineNum"> 465 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 466 </span> : log_fatal("Failed SELF test\n");
|
||||
<span class="lineNum"> 467 </span> : exit(EXIT_FAILURE);
|
||||
<span class="lineNum"> 468 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 469 </span> : }
|
||||
<span class="lineNum"> 470 </span><span class="lineCov"> 1 : if (raid_test_sort() != 0) {</span>
|
||||
<span class="lineNum"> 471 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 472 </span> : log_fatal("Failed SORT test\n");
|
||||
<span class="lineNum"> 473 </span> : exit(EXIT_FAILURE);
|
||||
<span class="lineNum"> 474 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 475 </span> : }
|
||||
<span class="lineNum"> 476 </span><span class="lineCov"> 1 : if (raid_test_insert() != 0) {</span>
|
||||
<span class="lineNum"> 477 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 478 </span> : log_fatal("Failed INSERT test\n");
|
||||
<span class="lineNum"> 479 </span> : exit(EXIT_FAILURE);
|
||||
<span class="lineNum"> 480 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 481 </span> : }
|
||||
<span class="lineNum"> 482 </span><span class="lineCov"> 1 : if (raid_test_combo() != 0) {</span>
|
||||
<span class="lineNum"> 483 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 484 </span> : log_fatal("Failed COMBO test\n");
|
||||
<span class="lineNum"> 485 </span> : exit(EXIT_FAILURE);
|
||||
<span class="lineNum"> 486 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 487 </span> : }
|
||||
<span class="lineNum"> 488 </span><span class="lineCov"> 1 : if (raid_test_par(RAID_MODE_VANDERMONDE, 32, 256) != 0) {</span>
|
||||
<span class="lineNum"> 438 </span><span class="lineCov"> 257 : for (i = 0; i < TOMMY_SIZE; ++i)</span>
|
||||
<span class="lineNum"> 439 </span><span class="lineCov"> 256 : tommy_tree_insert(&tree, &node[i], (void*)(uintptr_t)(i+1));</span>
|
||||
<span class="lineNum"> 440 </span> :
|
||||
<span class="lineNum"> 441 </span> : /* try to insert a duplicate, count should not change */
|
||||
<span class="lineNum"> 442 </span><span class="lineCov"> 1 : if (tommy_tree_insert(&tree, &node[TOMMY_SIZE], (void*)1) != (void*)1) {</span>
|
||||
<span class="lineNum"> 443 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 444 </span> : goto bail;
|
||||
<span class="lineNum"> 445 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 446 </span> : }
|
||||
<span class="lineNum"> 447 </span><span class="lineCov"> 1 : if (tommy_tree_count(&tree) != TOMMY_SIZE) {</span>
|
||||
<span class="lineNum"> 448 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 449 </span> : goto bail;
|
||||
<span class="lineNum"> 450 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 451 </span> : }
|
||||
<span class="lineNum"> 452 </span><span class="lineCov"> 1 : if (tommy_tree_memory_usage(&tree) < TOMMY_SIZE * sizeof(tommy_node)) {</span>
|
||||
<span class="lineNum"> 453 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 454 </span> : goto bail;
|
||||
<span class="lineNum"> 455 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 456 </span> : }
|
||||
<span class="lineNum"> 457 </span><span class="lineCov"> 1 : if (tommy_tree_search(&tree, (void*)1) != (void*)1) {</span>
|
||||
<span class="lineNum"> 458 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 459 </span> : goto bail;
|
||||
<span class="lineNum"> 460 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 461 </span> : }
|
||||
<span class="lineNum"> 462 </span><span class="lineCov"> 1 : if (tommy_tree_search(&tree, (void*)-1) != 0) {</span>
|
||||
<span class="lineNum"> 463 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 464 </span> : goto bail;
|
||||
<span class="lineNum"> 465 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 466 </span> : }
|
||||
<span class="lineNum"> 467 </span><span class="lineCov"> 1 : if (tommy_tree_search_compare(&tree, tommy_test_compare, (void*)1) != (void*)1) {</span>
|
||||
<span class="lineNum"> 468 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 469 </span> : goto bail;
|
||||
<span class="lineNum"> 470 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 471 </span> : }
|
||||
<span class="lineNum"> 472 </span><span class="lineCov"> 1 : if (tommy_tree_search_compare(&tree, tommy_test_compare, (void*)-1) != 0) {</span>
|
||||
<span class="lineNum"> 473 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 474 </span> : goto bail;
|
||||
<span class="lineNum"> 475 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 476 </span> : }
|
||||
<span class="lineNum"> 477 </span> :
|
||||
<span class="lineNum"> 478 </span><span class="lineCov"> 1 : tommy_test_foreach_count = 0;</span>
|
||||
<span class="lineNum"> 479 </span><span class="lineCov"> 1 : tommy_tree_foreach(&tree, tommy_test_foreach);</span>
|
||||
<span class="lineNum"> 480 </span><span class="lineCov"> 1 : if (tommy_test_foreach_count != TOMMY_SIZE) {</span>
|
||||
<span class="lineNum"> 481 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 482 </span> : goto bail;
|
||||
<span class="lineNum"> 483 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 484 </span> : }
|
||||
<span class="lineNum"> 485 </span> :
|
||||
<span class="lineNum"> 486 </span><span class="lineCov"> 1 : tommy_test_foreach_count = 0;</span>
|
||||
<span class="lineNum"> 487 </span><span class="lineCov"> 1 : tommy_tree_foreach_arg(&tree, tommy_test_foreach_arg, &tommy_test_foreach_count);</span>
|
||||
<span class="lineNum"> 488 </span><span class="lineCov"> 1 : if (tommy_test_foreach_count != TOMMY_SIZE) {</span>
|
||||
<span class="lineNum"> 489 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 490 </span> : log_fatal("Failed GEN Vandermonde test\n");
|
||||
<span class="lineNum"> 491 </span> : exit(EXIT_FAILURE);
|
||||
<span class="lineNum"> 492 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 493 </span> : }
|
||||
<span class="lineNum"> 494 </span><span class="lineCov"> 1 : if (raid_test_rec(RAID_MODE_VANDERMONDE, 12, 256) != 0) {</span>
|
||||
<span class="lineNum"> 495 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 496 </span> : log_fatal("Failed REC Vandermonde test\n");
|
||||
<span class="lineNum"> 497 </span> : exit(EXIT_FAILURE);
|
||||
<span class="lineNum"> 498 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 499 </span> : }
|
||||
<span class="lineNum"> 500 </span><span class="lineCov"> 1 : if (raid_test_par(RAID_MODE_CAUCHY, 32, 256) != 0) {</span>
|
||||
<span class="lineNum"> 501 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 502 </span> : log_fatal("Failed GEN Cauchy test\n");
|
||||
<span class="lineNum"> 503 </span> : exit(EXIT_FAILURE);
|
||||
<span class="lineNum"> 504 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 505 </span> : }
|
||||
<span class="lineNum"> 506 </span><span class="lineCov"> 1 : if (raid_test_rec(RAID_MODE_CAUCHY, 12, 256) != 0) {</span>
|
||||
<span class="lineNum"> 507 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 508 </span> : log_fatal("Failed REC Cauchy test\n");
|
||||
<span class="lineNum"> 509 </span> : exit(EXIT_FAILURE);
|
||||
<span class="lineNum"> 510 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 490 </span> : goto bail;
|
||||
<span class="lineNum"> 491 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 492 </span> : }
|
||||
<span class="lineNum"> 493 </span> :
|
||||
<span class="lineNum"> 494 </span><span class="lineCov"> 129 : for (i = 0; i < TOMMY_SIZE / 2; ++i)</span>
|
||||
<span class="lineNum"> 495 </span><span class="lineCov"> 128 : tommy_tree_remove_existing(&tree, &node[i]);</span>
|
||||
<span class="lineNum"> 496 </span> :
|
||||
<span class="lineNum"> 497 </span><span class="lineCov"> 129 : for (i = 0; i < TOMMY_SIZE / 2; ++i) {</span>
|
||||
<span class="lineNum"> 498 </span><span class="lineCov"> 128 : if (tommy_tree_remove(&tree, (void*)(uintptr_t)(i+1)) != 0) {</span>
|
||||
<span class="lineNum"> 499 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 500 </span> : goto bail;
|
||||
<span class="lineNum"> 501 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 502 </span> : }
|
||||
<span class="lineNum"> 503 </span> : }
|
||||
<span class="lineNum"> 504 </span> :
|
||||
<span class="lineNum"> 505 </span><span class="lineCov"> 129 : for (i = TOMMY_SIZE / 2; i < TOMMY_SIZE; ++i) {</span>
|
||||
<span class="lineNum"> 506 </span><span class="lineCov"> 128 : if (tommy_tree_remove(&tree, (void*)(uintptr_t)(i+1)) == 0) {</span>
|
||||
<span class="lineNum"> 507 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 508 </span> : goto bail;
|
||||
<span class="lineNum"> 509 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 510 </span> : }
|
||||
<span class="lineNum"> 511 </span> : }
|
||||
<span class="lineNum"> 512 </span><span class="lineCov"> 1 : if (raid_test_par(RAID_MODE_CAUCHY, 1, 256) != 0) {</span>
|
||||
<span class="lineNum"> 513 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 514 </span> : log_fatal("Failed GEN Cauchy test sigle data disk\n");
|
||||
<span class="lineNum"> 515 </span> : exit(EXIT_FAILURE);
|
||||
<span class="lineNum"> 512 </span> :
|
||||
<span class="lineNum"> 513 </span><span class="lineCov"> 1 : if (tommy_tree_count(&tree) != 0) {</span>
|
||||
<span class="lineNum"> 514 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 515 </span> : goto bail;
|
||||
<span class="lineNum"> 516 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 517 </span> : }
|
||||
<span class="lineNum"> 518 </span><span class="lineCov"> 1 : }</span>
|
||||
<span class="lineNum"> 519 </span> :
|
||||
<span class="lineNum"> 518 </span> :
|
||||
<span class="lineNum"> 519 </span><span class="lineCov"> 2 : return;</span>
|
||||
<span class="lineNum"> 520 </span> : bail:
|
||||
<span class="lineNum"> 521 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 522 </span> : log_fatal("Failed tommy test\n");
|
||||
<span class="lineNum"> 523 </span> : exit(EXIT_FAILURE);
|
||||
<span class="lineNum"> 524 </span> : /* LCOV_EXCL_STOP */
|
||||
<a name="525"><span class="lineNum"> 525 </span> : }</a>
|
||||
<span class="lineNum"> 526 </span> :
|
||||
<span class="lineNum"> 527 </span><span class="lineCov"> 1 : void selftest(void)</span>
|
||||
<span class="lineNum"> 528 </span> : {
|
||||
<span class="lineNum"> 529 </span><span class="lineCov"> 1 : log_tag("selftest:\n");</span>
|
||||
<span class="lineNum"> 530 </span><span class="lineCov"> 1 : log_flush();</span>
|
||||
<span class="lineNum"> 531 </span> :
|
||||
<span class="lineNum"> 532 </span><span class="lineCov"> 1 : msg_progress("Self test...\n");</span>
|
||||
<span class="lineNum"> 533 </span> :
|
||||
<span class="lineNum"> 534 </span> : /* large file check */
|
||||
<span class="lineNum"> 535 </span> : if (sizeof(off_t) < sizeof(uint64_t)) {
|
||||
<span class="lineNum"> 536 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 537 </span> : log_fatal("Missing support for large files\n");
|
||||
<span class="lineNum"> 538 </span> : exit(EXIT_FAILURE);
|
||||
<span class="lineNum"> 539 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 540 </span> : }
|
||||
<span class="lineNum"> 541 </span> :
|
||||
<span class="lineNum"> 542 </span><span class="lineCov"> 1 : test_hash();</span>
|
||||
<span class="lineNum"> 543 </span><span class="lineCov"> 1 : test_crc32c();</span>
|
||||
<span class="lineNum"> 544 </span><span class="lineCov"> 1 : test_tommy();</span>
|
||||
<span class="lineNum"> 545 </span><span class="lineCov"> 1 : if (raid_selftest() != 0) {</span>
|
||||
<span class="lineNum"> 546 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 547 </span> : log_fatal("Failed SELF test\n");
|
||||
<span class="lineNum"> 548 </span> : exit(EXIT_FAILURE);
|
||||
<span class="lineNum"> 549 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 550 </span> : }
|
||||
<span class="lineNum"> 551 </span><span class="lineCov"> 1 : if (raid_test_sort() != 0) {</span>
|
||||
<span class="lineNum"> 552 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 553 </span> : log_fatal("Failed SORT test\n");
|
||||
<span class="lineNum"> 554 </span> : exit(EXIT_FAILURE);
|
||||
<span class="lineNum"> 555 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 556 </span> : }
|
||||
<span class="lineNum"> 557 </span><span class="lineCov"> 1 : if (raid_test_insert() != 0) {</span>
|
||||
<span class="lineNum"> 558 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 559 </span> : log_fatal("Failed INSERT test\n");
|
||||
<span class="lineNum"> 560 </span> : exit(EXIT_FAILURE);
|
||||
<span class="lineNum"> 561 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 562 </span> : }
|
||||
<span class="lineNum"> 563 </span><span class="lineCov"> 1 : if (raid_test_combo() != 0) {</span>
|
||||
<span class="lineNum"> 564 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 565 </span> : log_fatal("Failed COMBO test\n");
|
||||
<span class="lineNum"> 566 </span> : exit(EXIT_FAILURE);
|
||||
<span class="lineNum"> 567 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 568 </span> : }
|
||||
<span class="lineNum"> 569 </span><span class="lineCov"> 1 : if (raid_test_par(RAID_MODE_VANDERMONDE, 32, 256) != 0) {</span>
|
||||
<span class="lineNum"> 570 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 571 </span> : log_fatal("Failed GEN Vandermonde test\n");
|
||||
<span class="lineNum"> 572 </span> : exit(EXIT_FAILURE);
|
||||
<span class="lineNum"> 573 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 574 </span> : }
|
||||
<span class="lineNum"> 575 </span><span class="lineCov"> 1 : if (raid_test_rec(RAID_MODE_VANDERMONDE, 12, 256) != 0) {</span>
|
||||
<span class="lineNum"> 576 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 577 </span> : log_fatal("Failed REC Vandermonde test\n");
|
||||
<span class="lineNum"> 578 </span> : exit(EXIT_FAILURE);
|
||||
<span class="lineNum"> 579 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 580 </span> : }
|
||||
<span class="lineNum"> 581 </span><span class="lineCov"> 1 : if (raid_test_par(RAID_MODE_CAUCHY, 32, 256) != 0) {</span>
|
||||
<span class="lineNum"> 582 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 583 </span> : log_fatal("Failed GEN Cauchy test\n");
|
||||
<span class="lineNum"> 584 </span> : exit(EXIT_FAILURE);
|
||||
<span class="lineNum"> 585 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 586 </span> : }
|
||||
<span class="lineNum"> 587 </span><span class="lineCov"> 1 : if (raid_test_rec(RAID_MODE_CAUCHY, 12, 256) != 0) {</span>
|
||||
<span class="lineNum"> 588 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 589 </span> : log_fatal("Failed REC Cauchy test\n");
|
||||
<span class="lineNum"> 590 </span> : exit(EXIT_FAILURE);
|
||||
<span class="lineNum"> 591 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 592 </span> : }
|
||||
<span class="lineNum"> 593 </span><span class="lineCov"> 1 : if (raid_test_par(RAID_MODE_CAUCHY, 1, 256) != 0) {</span>
|
||||
<span class="lineNum"> 594 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 595 </span> : log_fatal("Failed GEN Cauchy test sigle data disk\n");
|
||||
<span class="lineNum"> 596 </span> : exit(EXIT_FAILURE);
|
||||
<span class="lineNum"> 597 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 598 </span> : }
|
||||
<span class="lineNum"> 599 </span><span class="lineCov"> 1 : }</span>
|
||||
<span class="lineNum"> 600 </span> :
|
||||
</pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
|
|
|||
|
|
@ -31,13 +31,13 @@
|
|||
<td class="headerValue">lcov.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntry">446</td>
|
||||
<td class="headerCovTableEntry">474</td>
|
||||
<td class="headerCovTableEntryHi">94.1 %</td>
|
||||
<td class="headerCovTableEntry">454</td>
|
||||
<td class="headerCovTableEntry">484</td>
|
||||
<td class="headerCovTableEntryHi">93.8 %</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Date:</td>
|
||||
<td class="headerValue">2015-11-20</td>
|
||||
<td class="headerValue">2016-01-09</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntry">8</td>
|
||||
|
|
@ -60,28 +60,28 @@
|
|||
<td width="20%" class="tableHead">Hit count <span class="tableHeadSort"><img src="../glass.png" width=10 height=14 alt="Sort by hit count" title="Sort by hit count" border=0></span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="snapraid.c.gcov.html#418">main</a></td>
|
||||
<td class="coverFnHi">257</td>
|
||||
<td class="coverFn"><a href="snapraid.c.gcov.html#434">main</a></td>
|
||||
<td class="coverFnHi">265</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="snapraid.c.gcov.html#193">config</a></td>
|
||||
<td class="coverFnHi">257</td>
|
||||
<td class="coverFnHi">265</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="snapraid.c.gcov.html#92">log_open</a></td>
|
||||
<td class="coverFnHi">247</td>
|
||||
<td class="coverFnHi">255</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="snapraid.c.gcov.html#176">log_close</a></td>
|
||||
<td class="coverFnHi">225</td>
|
||||
<td class="coverFnHi">233</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="snapraid.c.gcov.html#75">memory</a></td>
|
||||
<td class="coverFnHi">222</td>
|
||||
<td class="coverFnHi">230</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="snapraid.c.gcov.html#379">signal_init</a></td>
|
||||
<td class="coverFnHi">208</td>
|
||||
<td class="coverFn"><a href="snapraid.c.gcov.html#395">signal_init</a></td>
|
||||
<td class="coverFnHi">216</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="snapraid.c.gcov.html#29">version</a></td>
|
||||
|
|
|
|||
|
|
@ -31,13 +31,13 @@
|
|||
<td class="headerValue">lcov.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntry">446</td>
|
||||
<td class="headerCovTableEntry">474</td>
|
||||
<td class="headerCovTableEntryHi">94.1 %</td>
|
||||
<td class="headerCovTableEntry">454</td>
|
||||
<td class="headerCovTableEntry">484</td>
|
||||
<td class="headerCovTableEntryHi">93.8 %</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Date:</td>
|
||||
<td class="headerValue">2015-11-20</td>
|
||||
<td class="headerValue">2016-01-09</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntry">8</td>
|
||||
|
|
@ -61,27 +61,27 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="snapraid.c.gcov.html#193">config</a></td>
|
||||
<td class="coverFnHi">257</td>
|
||||
<td class="coverFnHi">265</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="snapraid.c.gcov.html#176">log_close</a></td>
|
||||
<td class="coverFnHi">225</td>
|
||||
<td class="coverFnHi">233</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="snapraid.c.gcov.html#92">log_open</a></td>
|
||||
<td class="coverFnHi">247</td>
|
||||
<td class="coverFnHi">255</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="snapraid.c.gcov.html#418">main</a></td>
|
||||
<td class="coverFnHi">257</td>
|
||||
<td class="coverFn"><a href="snapraid.c.gcov.html#434">main</a></td>
|
||||
<td class="coverFnHi">265</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="snapraid.c.gcov.html#75">memory</a></td>
|
||||
<td class="coverFnHi">222</td>
|
||||
<td class="coverFnHi">230</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="snapraid.c.gcov.html#379">signal_init</a></td>
|
||||
<td class="coverFnHi">208</td>
|
||||
<td class="coverFn"><a href="snapraid.c.gcov.html#395">signal_init</a></td>
|
||||
<td class="coverFnHi">216</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="snapraid.c.gcov.html#34">usage</a></td>
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
|
|
@ -37,7 +37,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Date:</td>
|
||||
<td class="headerValue">2015-11-20</td>
|
||||
<td class="headerValue">2016-01-09</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntry">2</td>
|
||||
|
|
@ -61,7 +61,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="speed.c.gcov.html#39">diffgettimeofday</a></td>
|
||||
<td class="coverFnHi">1866</td>
|
||||
<td class="coverFnHi">1878</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="speed.c.gcov.html#76">speed</a></td>
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Date:</td>
|
||||
<td class="headerValue">2015-11-20</td>
|
||||
<td class="headerValue">2016-01-09</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntry">2</td>
|
||||
|
|
@ -61,7 +61,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="speed.c.gcov.html#39">diffgettimeofday</a></td>
|
||||
<td class="coverFnHi">1866</td>
|
||||
<td class="coverFnHi">1878</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="speed.c.gcov.html#76">speed</a></td>
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Date:</td>
|
||||
<td class="headerValue">2015-11-20</td>
|
||||
<td class="headerValue">2016-01-09</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntry">2</td>
|
||||
|
|
@ -100,14 +100,14 @@
|
|||
<span class="lineNum"> 38 </span> : /**
|
||||
<a name="39"><span class="lineNum"> 39 </span> : * Differential us of two timeval.</a>
|
||||
<span class="lineNum"> 40 </span> : */
|
||||
<span class="lineNum"> 41 </span><span class="lineCov"> 1866 : static int64_t diffgettimeofday(struct timeval *start, struct timeval *stop)</span>
|
||||
<span class="lineNum"> 41 </span><span class="lineCov"> 1878 : static int64_t diffgettimeofday(struct timeval *start, struct timeval *stop)</span>
|
||||
<span class="lineNum"> 42 </span> : {
|
||||
<span class="lineNum"> 43 </span> : int64_t d;
|
||||
<span class="lineNum"> 44 </span> :
|
||||
<span class="lineNum"> 45 </span><span class="lineCov"> 1866 : d = 1000000LL * (stop->tv_sec - start->tv_sec);</span>
|
||||
<span class="lineNum"> 46 </span><span class="lineCov"> 1866 : d += stop->tv_usec - start->tv_usec;</span>
|
||||
<span class="lineNum"> 45 </span><span class="lineCov"> 1878 : d = 1000000LL * (stop->tv_sec - start->tv_sec);</span>
|
||||
<span class="lineNum"> 46 </span><span class="lineCov"> 1878 : d += stop->tv_usec - start->tv_usec;</span>
|
||||
<span class="lineNum"> 47 </span> :
|
||||
<span class="lineNum"> 48 </span><span class="lineCov"> 1866 : return d;</span>
|
||||
<span class="lineNum"> 48 </span><span class="lineCov"> 1878 : return d;</span>
|
||||
<span class="lineNum"> 49 </span> : }
|
||||
<span class="lineNum"> 50 </span> :
|
||||
<span class="lineNum"> 51 </span> : /**
|
||||
|
|
@ -232,10 +232,10 @@
|
|||
<span class="lineNum"> 170 </span><span class="lineCov"> 4 : printf("%8s", "memset");</span>
|
||||
<span class="lineNum"> 171 </span><span class="lineCov"> 4 : fflush(stdout);</span>
|
||||
<span class="lineNum"> 172 </span> :
|
||||
<span class="lineNum"> 173 </span><span class="lineCov"> 385 : SPEED_START {</span>
|
||||
<span class="lineNum"> 174 </span><span class="lineCov"> 3429 : for (j = 0; j < nd; ++j)</span>
|
||||
<span class="lineNum"> 175 </span><span class="lineCov"> 3048 : memset(v[j], j, size);</span>
|
||||
<span class="lineNum"> 176 </span><span class="lineCov"> 381 : } SPEED_STOP</span>
|
||||
<span class="lineNum"> 173 </span><span class="lineCov"> 375 : SPEED_START {</span>
|
||||
<span class="lineNum"> 174 </span><span class="lineCov"> 3339 : for (j = 0; j < nd; ++j)</span>
|
||||
<span class="lineNum"> 175 </span><span class="lineCov"> 2968 : memset(v[j], j, size);</span>
|
||||
<span class="lineNum"> 176 </span><span class="lineCov"> 371 : } SPEED_STOP</span>
|
||||
<span class="lineNum"> 177 </span> :
|
||||
<span class="lineNum"> 178 </span><span class="lineCov"> 4 : printf("%8" PRIu64, ds / dt);</span>
|
||||
<span class="lineNum"> 179 </span><span class="lineCov"> 4 : printf("\n");</span>
|
||||
|
|
@ -247,10 +247,10 @@
|
|||
<span class="lineNum"> 185 </span><span class="lineCov"> 4 : printf("%8s", "table");</span>
|
||||
<span class="lineNum"> 186 </span><span class="lineCov"> 4 : fflush(stdout);</span>
|
||||
<span class="lineNum"> 187 </span> :
|
||||
<span class="lineNum"> 188 </span><span class="lineCov"> 46 : SPEED_START {</span>
|
||||
<span class="lineNum"> 189 </span><span class="lineCov"> 378 : for (j = 0; j < nd; ++j)</span>
|
||||
<span class="lineNum"> 190 </span><span class="lineCov"> 336 : side_effect += crc32c_gen(0, v[j], size);</span>
|
||||
<span class="lineNum"> 191 </span><span class="lineCov"> 42 : } SPEED_STOP</span>
|
||||
<span class="lineNum"> 188 </span><span class="lineCov"> 48 : SPEED_START {</span>
|
||||
<span class="lineNum"> 189 </span><span class="lineCov"> 396 : for (j = 0; j < nd; ++j)</span>
|
||||
<span class="lineNum"> 190 </span><span class="lineCov"> 352 : side_effect += crc32c_gen(0, v[j], size);</span>
|
||||
<span class="lineNum"> 191 </span><span class="lineCov"> 44 : } SPEED_STOP</span>
|
||||
<span class="lineNum"> 192 </span> :
|
||||
<span class="lineNum"> 193 </span><span class="lineCov"> 4 : printf("%8" PRIu64, ds / dt);</span>
|
||||
<span class="lineNum"> 194 </span><span class="lineCov"> 4 : printf("\n");</span>
|
||||
|
|
@ -302,10 +302,10 @@
|
|||
<span class="lineNum"> 240 </span><span class="lineCov"> 4 : printf("%8" PRIu64, ds / dt);</span>
|
||||
<span class="lineNum"> 241 </span><span class="lineCov"> 4 : fflush(stdout);</span>
|
||||
<span class="lineNum"> 242 </span> :
|
||||
<span class="lineNum"> 243 </span><span class="lineCov"> 35 : SPEED_START {</span>
|
||||
<span class="lineNum"> 244 </span><span class="lineCov"> 279 : for (j = 0; j < nd; ++j)</span>
|
||||
<span class="lineNum"> 245 </span><span class="lineCov"> 248 : memhash(HASH_SPOOKY2, seed, digest, v[j], size);</span>
|
||||
<span class="lineNum"> 246 </span><span class="lineCov"> 31 : } SPEED_STOP</span>
|
||||
<span class="lineNum"> 243 </span><span class="lineCov"> 36 : SPEED_START {</span>
|
||||
<span class="lineNum"> 244 </span><span class="lineCov"> 288 : for (j = 0; j < nd; ++j)</span>
|
||||
<span class="lineNum"> 245 </span><span class="lineCov"> 256 : memhash(HASH_SPOOKY2, seed, digest, v[j], size);</span>
|
||||
<span class="lineNum"> 246 </span><span class="lineCov"> 32 : } SPEED_STOP</span>
|
||||
<span class="lineNum"> 247 </span> :
|
||||
<span class="lineNum"> 248 </span><span class="lineCov"> 4 : printf("%8" PRIu64, ds / dt);</span>
|
||||
<span class="lineNum"> 249 </span><span class="lineCov"> 4 : printf("\n");</span>
|
||||
|
|
@ -341,16 +341,16 @@
|
|||
<span class="lineNum"> 279 </span> :
|
||||
<span class="lineNum"> 280 </span><span class="lineCov"> 4 : printf("%8s", "");</span>
|
||||
<span class="lineNum"> 281 </span> :
|
||||
<span class="lineNum"> 282 </span><span class="lineCov"> 118 : SPEED_START {</span>
|
||||
<span class="lineNum"> 283 </span><span class="lineCov"> 114 : raid_gen1_int32(nd, size, v);</span>
|
||||
<span class="lineNum"> 284 </span><span class="lineCov"> 114 : } SPEED_STOP</span>
|
||||
<span class="lineNum"> 282 </span><span class="lineCov"> 120 : SPEED_START {</span>
|
||||
<span class="lineNum"> 283 </span><span class="lineCov"> 116 : raid_gen1_int32(nd, size, v);</span>
|
||||
<span class="lineNum"> 284 </span><span class="lineCov"> 116 : } SPEED_STOP</span>
|
||||
<span class="lineNum"> 285 </span> :
|
||||
<span class="lineNum"> 286 </span><span class="lineCov"> 4 : printf("%8" PRIu64, ds / dt);</span>
|
||||
<span class="lineNum"> 287 </span><span class="lineCov"> 4 : fflush(stdout);</span>
|
||||
<span class="lineNum"> 288 </span> :
|
||||
<span class="lineNum"> 289 </span><span class="lineCov"> 189 : SPEED_START {</span>
|
||||
<span class="lineNum"> 290 </span><span class="lineCov"> 185 : raid_gen1_int64(nd, size, v);</span>
|
||||
<span class="lineNum"> 291 </span><span class="lineCov"> 185 : } SPEED_STOP</span>
|
||||
<span class="lineNum"> 289 </span><span class="lineCov"> 192 : SPEED_START {</span>
|
||||
<span class="lineNum"> 290 </span><span class="lineCov"> 188 : raid_gen1_int64(nd, size, v);</span>
|
||||
<span class="lineNum"> 291 </span><span class="lineCov"> 188 : } SPEED_STOP</span>
|
||||
<span class="lineNum"> 292 </span> :
|
||||
<span class="lineNum"> 293 </span><span class="lineCov"> 4 : printf("%8" PRIu64, ds / dt);</span>
|
||||
<span class="lineNum"> 294 </span><span class="lineCov"> 4 : fflush(stdout);</span>
|
||||
|
|
@ -358,9 +358,9 @@
|
|||
<span class="lineNum"> 296 </span> : #ifdef CONFIG_X86
|
||||
<span class="lineNum"> 297 </span> : #ifdef CONFIG_SSE2
|
||||
<span class="lineNum"> 298 </span><span class="lineCov"> 4 : if (raid_cpu_has_sse2()) {</span>
|
||||
<span class="lineNum"> 299 </span><span class="lineCov"> 310 : SPEED_START {</span>
|
||||
<span class="lineNum"> 300 </span><span class="lineCov"> 306 : raid_gen1_sse2(nd, size, v);</span>
|
||||
<span class="lineNum"> 301 </span><span class="lineCov"> 306 : } SPEED_STOP</span>
|
||||
<span class="lineNum"> 299 </span><span class="lineCov"> 317 : SPEED_START {</span>
|
||||
<span class="lineNum"> 300 </span><span class="lineCov"> 313 : raid_gen1_sse2(nd, size, v);</span>
|
||||
<span class="lineNum"> 301 </span><span class="lineCov"> 313 : } SPEED_STOP</span>
|
||||
<span class="lineNum"> 302 </span> :
|
||||
<span class="lineNum"> 303 </span><span class="lineCov"> 4 : printf("%8" PRIu64, ds / dt);</span>
|
||||
<span class="lineNum"> 304 </span><span class="lineCov"> 4 : fflush(stdout);</span>
|
||||
|
|
@ -411,9 +411,9 @@
|
|||
<span class="lineNum"> 349 </span> : #ifdef CONFIG_X86
|
||||
<span class="lineNum"> 350 </span> : #ifdef CONFIG_SSE2
|
||||
<span class="lineNum"> 351 </span><span class="lineCov"> 4 : if (raid_cpu_has_sse2()) {</span>
|
||||
<span class="lineNum"> 352 </span><span class="lineCov"> 147 : SPEED_START {</span>
|
||||
<span class="lineNum"> 353 </span><span class="lineCov"> 143 : raid_gen2_sse2(nd, size, v);</span>
|
||||
<span class="lineNum"> 354 </span><span class="lineCov"> 143 : } SPEED_STOP</span>
|
||||
<span class="lineNum"> 352 </span><span class="lineCov"> 151 : SPEED_START {</span>
|
||||
<span class="lineNum"> 353 </span><span class="lineCov"> 147 : raid_gen2_sse2(nd, size, v);</span>
|
||||
<span class="lineNum"> 354 </span><span class="lineCov"> 147 : } SPEED_STOP</span>
|
||||
<span class="lineNum"> 355 </span> :
|
||||
<span class="lineNum"> 356 </span><span class="lineCov"> 4 : printf("%8" PRIu64, ds / dt);</span>
|
||||
<span class="lineNum"> 357 </span><span class="lineCov"> 4 : fflush(stdout);</span>
|
||||
|
|
@ -470,9 +470,9 @@
|
|||
<span class="lineNum"> 408 </span> : #ifdef CONFIG_X86
|
||||
<span class="lineNum"> 409 </span> : #ifdef CONFIG_SSE2
|
||||
<span class="lineNum"> 410 </span><span class="lineCov"> 4 : if (raid_cpu_has_sse2()) {</span>
|
||||
<span class="lineNum"> 411 </span><span class="lineCov"> 88 : SPEED_START {</span>
|
||||
<span class="lineNum"> 412 </span><span class="lineCov"> 84 : raid_genz_sse2(nd, size, v);</span>
|
||||
<span class="lineNum"> 413 </span><span class="lineCov"> 84 : } SPEED_STOP</span>
|
||||
<span class="lineNum"> 411 </span><span class="lineCov"> 89 : SPEED_START {</span>
|
||||
<span class="lineNum"> 412 </span><span class="lineCov"> 85 : raid_genz_sse2(nd, size, v);</span>
|
||||
<span class="lineNum"> 413 </span><span class="lineCov"> 85 : } SPEED_STOP</span>
|
||||
<span class="lineNum"> 414 </span> :
|
||||
<span class="lineNum"> 415 </span><span class="lineCov"> 4 : printf("%8" PRIu64, ds / dt);</span>
|
||||
<span class="lineNum"> 416 </span><span class="lineCov"> 4 : fflush(stdout);</span>
|
||||
|
|
@ -707,9 +707,9 @@
|
|||
<span class="lineNum"> 645 </span><span class="lineCov"> 4 : printf("%8s", raid_gen6_tag());</span>
|
||||
<span class="lineNum"> 646 </span><span class="lineCov"> 4 : fflush(stdout);</span>
|
||||
<span class="lineNum"> 647 </span> :
|
||||
<span class="lineNum"> 648 </span><span class="lineCov"> 10 : SPEED_START {</span>
|
||||
<span class="lineNum"> 649 </span><span class="lineCov"> 6 : raid_gen6_int8(nd, size, v);</span>
|
||||
<span class="lineNum"> 650 </span><span class="lineCov"> 6 : } SPEED_STOP</span>
|
||||
<span class="lineNum"> 648 </span><span class="lineCov"> 12 : SPEED_START {</span>
|
||||
<span class="lineNum"> 649 </span><span class="lineCov"> 8 : raid_gen6_int8(nd, size, v);</span>
|
||||
<span class="lineNum"> 650 </span><span class="lineCov"> 8 : } SPEED_STOP</span>
|
||||
<span class="lineNum"> 651 </span> :
|
||||
<span class="lineNum"> 652 </span><span class="lineCov"> 4 : printf("%8" PRIu64, ds / dt);</span>
|
||||
<span class="lineNum"> 653 </span><span class="lineCov"> 4 : fflush(stdout);</span>
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Date:</td>
|
||||
<td class="headerValue">2015-11-20</td>
|
||||
<td class="headerValue">2016-01-09</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
|
|
@ -61,7 +61,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="spooky2.c.gcov.html#109">SpookyHash128</a></td>
|
||||
<td class="coverFnHi">3472174</td>
|
||||
<td class="coverFnHi">3855152</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Date:</td>
|
||||
<td class="headerValue">2015-11-20</td>
|
||||
<td class="headerValue">2016-01-09</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
|
|
@ -61,7 +61,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="spooky2.c.gcov.html#109">SpookyHash128</a></td>
|
||||
<td class="coverFnHi">3472174</td>
|
||||
<td class="coverFnHi">3855152</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Date:</td>
|
||||
<td class="headerValue">2015-11-20</td>
|
||||
<td class="headerValue">2016-01-09</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntry">1</td>
|
||||
|
|
@ -170,7 +170,7 @@
|
|||
<span class="lineNum"> 108 </span> : //
|
||||
<a name="109"><span class="lineNum"> 109 </span> : #define sc_const 0xdeadbeefdeadbeefLL</a>
|
||||
<span class="lineNum"> 110 </span> :
|
||||
<span class="lineNum"> 111 </span><span class="lineCov"> 3472174 : void SpookyHash128(const void* data, size_t size, const uint8_t* seed, uint8_t* digest)</span>
|
||||
<span class="lineNum"> 111 </span><span class="lineCov"> 3855152 : void SpookyHash128(const void* data, size_t size, const uint8_t* seed, uint8_t* digest)</span>
|
||||
<span class="lineNum"> 112 </span> : {
|
||||
<span class="lineNum"> 113 </span> : uint64_t h0, h1, h2, h3, h4, h5, h6, h7, h8, h9, h10, h11;
|
||||
<span class="lineNum"> 114 </span> : uint64_t buf[sc_numVars];
|
||||
|
|
@ -182,39 +182,39 @@
|
|||
<span class="lineNum"> 120 </span> : unsigned i;
|
||||
<span class="lineNum"> 121 </span> : #endif
|
||||
<span class="lineNum"> 122 </span> :
|
||||
<span class="lineNum"> 123 </span><span class="lineCov"> 3472174 : h9 = ((const uint64_t*)seed)[0];</span>
|
||||
<span class="lineNum"> 124 </span><span class="lineCov"> 3472174 : h10 = ((const uint64_t*)seed)[1];</span>
|
||||
<span class="lineNum"> 123 </span><span class="lineCov"> 3855152 : h9 = ((const uint64_t*)seed)[0];</span>
|
||||
<span class="lineNum"> 124 </span><span class="lineCov"> 3855152 : h10 = ((const uint64_t*)seed)[1];</span>
|
||||
<span class="lineNum"> 125 </span> :
|
||||
<span class="lineNum"> 126 </span> : #if WORDS_BIGENDIAN
|
||||
<span class="lineNum"> 127 </span> : h9 = util_swap64(h9);
|
||||
<span class="lineNum"> 128 </span> : h10 = util_swap64(h10);
|
||||
<span class="lineNum"> 129 </span> : #endif
|
||||
<span class="lineNum"> 130 </span> :
|
||||
<span class="lineNum"> 131 </span><span class="lineCov"> 3472174 : h0 = h3 = h6 = h9;</span>
|
||||
<span class="lineNum"> 132 </span><span class="lineCov"> 3472174 : h1 = h4 = h7 = h10;</span>
|
||||
<span class="lineNum"> 133 </span><span class="lineCov"> 3472174 : h2 = h5 = h8 = h11 = sc_const;</span>
|
||||
<span class="lineNum"> 131 </span><span class="lineCov"> 3855152 : h0 = h3 = h6 = h9;</span>
|
||||
<span class="lineNum"> 132 </span><span class="lineCov"> 3855152 : h1 = h4 = h7 = h10;</span>
|
||||
<span class="lineNum"> 133 </span><span class="lineCov"> 3855152 : h2 = h5 = h8 = h11 = sc_const;</span>
|
||||
<span class="lineNum"> 134 </span> :
|
||||
<span class="lineNum"> 135 </span><span class="lineCov"> 3472174 : nblocks = size / sc_blockSize;</span>
|
||||
<span class="lineNum"> 136 </span><span class="lineCov"> 3472174 : blocks = data;</span>
|
||||
<span class="lineNum"> 137 </span><span class="lineCov"> 3472174 : end = blocks + nblocks * sc_numVars;</span>
|
||||
<span class="lineNum"> 135 </span><span class="lineCov"> 3855152 : nblocks = size / sc_blockSize;</span>
|
||||
<span class="lineNum"> 136 </span><span class="lineCov"> 3855152 : blocks = data;</span>
|
||||
<span class="lineNum"> 137 </span><span class="lineCov"> 3855152 : end = blocks + nblocks * sc_numVars;</span>
|
||||
<span class="lineNum"> 138 </span> :
|
||||
<span class="lineNum"> 139 </span> : /* body */
|
||||
<span class="lineNum"> 140 </span><span class="lineCov"> 34945798 : while (blocks < end) {</span>
|
||||
<span class="lineNum"> 140 </span><span class="lineCov"> 38762369 : while (blocks < end) {</span>
|
||||
<span class="lineNum"> 141 </span> : #if WORDS_BIGENDIAN
|
||||
<span class="lineNum"> 142 </span> : for (i = 0; i < sc_numVars; ++i)
|
||||
<span class="lineNum"> 143 </span> : buf[i] = util_swap64(blocks[i]);
|
||||
<span class="lineNum"> 144 </span> : Mix(buf, h0, h1, h2, h3, h4, h5, h6, h7, h8, h9, h10, h11);
|
||||
<span class="lineNum"> 145 </span> : #else
|
||||
<span class="lineNum"> 146 </span><span class="lineCov"> 28001450 : Mix(blocks, h0, h1, h2, h3, h4, h5, h6, h7, h8, h9, h10, h11);</span>
|
||||
<span class="lineNum"> 146 </span><span class="lineCov"> 31052065 : Mix(blocks, h0, h1, h2, h3, h4, h5, h6, h7, h8, h9, h10, h11);</span>
|
||||
<span class="lineNum"> 147 </span> : #endif
|
||||
<span class="lineNum"> 148 </span><span class="lineCov"> 28001450 : blocks += sc_numVars;</span>
|
||||
<span class="lineNum"> 148 </span><span class="lineCov"> 31052065 : blocks += sc_numVars;</span>
|
||||
<span class="lineNum"> 149 </span> : }
|
||||
<span class="lineNum"> 150 </span> :
|
||||
<span class="lineNum"> 151 </span> : /* tail */
|
||||
<span class="lineNum"> 152 </span><span class="lineCov"> 3472174 : size_remainder = (size - ((const uint8_t*)end - (const uint8_t*)data));</span>
|
||||
<span class="lineNum"> 153 </span><span class="lineCov"> 3472174 : memcpy(buf, end, size_remainder);</span>
|
||||
<span class="lineNum"> 154 </span><span class="lineCov"> 3472174 : memset(((uint8_t*)buf) + size_remainder, 0, sc_blockSize - size_remainder);</span>
|
||||
<span class="lineNum"> 155 </span><span class="lineCov"> 3472174 : ((uint8_t*)buf)[sc_blockSize - 1] = size_remainder;</span>
|
||||
<span class="lineNum"> 152 </span><span class="lineCov"> 3855152 : size_remainder = (size - ((const uint8_t*)end - (const uint8_t*)data));</span>
|
||||
<span class="lineNum"> 153 </span><span class="lineCov"> 3855152 : memcpy(buf, end, size_remainder);</span>
|
||||
<span class="lineNum"> 154 </span><span class="lineCov"> 3855152 : memset(((uint8_t*)buf) + size_remainder, 0, sc_blockSize - size_remainder);</span>
|
||||
<span class="lineNum"> 155 </span><span class="lineCov"> 3855152 : ((uint8_t*)buf)[sc_blockSize - 1] = size_remainder;</span>
|
||||
<span class="lineNum"> 156 </span> :
|
||||
<span class="lineNum"> 157 </span> : /* finalization */
|
||||
<span class="lineNum"> 158 </span> : #if WORDS_BIGENDIAN
|
||||
|
|
@ -222,16 +222,16 @@
|
|||
<span class="lineNum"> 160 </span> : buf[i] = util_swap64(buf[i]);
|
||||
<span class="lineNum"> 161 </span> : #endif
|
||||
<span class="lineNum"> 162 </span> :
|
||||
<span class="lineNum"> 163 </span><span class="lineCov"> 3472174 : End(buf, h0, h1, h2, h3, h4, h5, h6, h7, h8, h9, h10, h11);</span>
|
||||
<span class="lineNum"> 163 </span><span class="lineCov"> 3855152 : End(buf, h0, h1, h2, h3, h4, h5, h6, h7, h8, h9, h10, h11);</span>
|
||||
<span class="lineNum"> 164 </span> :
|
||||
<span class="lineNum"> 165 </span> : #if WORDS_BIGENDIAN
|
||||
<span class="lineNum"> 166 </span> : h0 = util_swap64(h0);
|
||||
<span class="lineNum"> 167 </span> : h1 = util_swap64(h1);
|
||||
<span class="lineNum"> 168 </span> : #endif
|
||||
<span class="lineNum"> 169 </span> :
|
||||
<span class="lineNum"> 170 </span><span class="lineCov"> 3472174 : ((uint64_t*)digest)[0] = h0;</span>
|
||||
<span class="lineNum"> 171 </span><span class="lineCov"> 3472174 : ((uint64_t*)digest)[1] = h1;</span>
|
||||
<span class="lineNum"> 172 </span><span class="lineCov"> 3472174 : }</span>
|
||||
<span class="lineNum"> 170 </span><span class="lineCov"> 3855152 : ((uint64_t*)digest)[0] = h0;</span>
|
||||
<span class="lineNum"> 171 </span><span class="lineCov"> 3855152 : ((uint64_t*)digest)[1] = h1;</span>
|
||||
<span class="lineNum"> 172 </span><span class="lineCov"> 3855152 : }</span>
|
||||
<span class="lineNum"> 173 </span> :
|
||||
</pre>
|
||||
</td>
|
||||
|
|
|
|||
|
|
@ -31,18 +31,18 @@
|
|||
<td class="headerValue">lcov.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntry">1248</td>
|
||||
<td class="headerCovTableEntry">1351</td>
|
||||
<td class="headerCovTableEntryHi">92.4 %</td>
|
||||
<td class="headerCovTableEntry">1262</td>
|
||||
<td class="headerCovTableEntry">1363</td>
|
||||
<td class="headerCovTableEntryHi">92.6 %</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Date:</td>
|
||||
<td class="headerValue">2015-11-20</td>
|
||||
<td class="headerValue">2016-01-09</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntry">35</td>
|
||||
<td class="headerCovTableEntry">36</td>
|
||||
<td class="headerCovTableEntryHi">97.2 %</td>
|
||||
<td class="headerCovTableEntry">37</td>
|
||||
<td class="headerCovTableEntryHi">97.3 %</td>
|
||||
</tr>
|
||||
<tr><td><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
|
|
@ -60,147 +60,151 @@
|
|||
<td width="20%" class="tableHead">Hit count <span class="tableHeadSort"><img src="../glass.png" width=10 height=14 alt="Sort by hit count" title="Sort by hit count" border=0></span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#1531">fs_is_block_deleted_ts</a></td>
|
||||
<td class="coverFnHi">29344162</td>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#1600">fs_is_block_deleted_ts</a></td>
|
||||
<td class="coverFnHi">4507856</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#1494">fs_info_is_required</a></td>
|
||||
<td class="coverFnHi">1491820</td>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#1563">fs_info_is_required</a></td>
|
||||
<td class="coverFnHi">1513218</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#3715">state_progress</a></td>
|
||||
<td class="coverFnHi">1038958</td>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#3887">state_progress</a></td>
|
||||
<td class="coverFnHi">1048979</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#1465">fs_position_is_required</a></td>
|
||||
<td class="coverFnHi">729418</td>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#1534">fs_position_is_required</a></td>
|
||||
<td class="coverFnHi">752491</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#42">lev_config_name</a></td>
|
||||
<td class="coverFnHi">178766</td>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#62">lev_config_name</a></td>
|
||||
<td class="coverFnHi">178997</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#1138">find_disk</a></td>
|
||||
<td class="coverFnHi">11051</td>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#1176">find_disk_by_name</a></td>
|
||||
<td class="coverFnHi">6723</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#56">lev_config_scan</a></td>
|
||||
<td class="coverFnHi">5905</td>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#76">lev_config_scan</a></td>
|
||||
<td class="coverFnHi">6118</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#2511">state_write_thread</a></td>
|
||||
<td class="coverFnHi">913</td>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#3501">state_verify_thread</a></td>
|
||||
<td class="coverFnHi">990</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#3323">state_verify_thread</a></td>
|
||||
<td class="coverFnHi">912</td>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#4066">state_fscheck</a></td>
|
||||
<td class="coverFnHi">474</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#3894">state_fscheck</a></td>
|
||||
<td class="coverFnHi">447</td>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#480">validate_smartctl</a></td>
|
||||
<td class="coverFnHi">358</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#458">validate_smartctl</a></td>
|
||||
<td class="coverFnHi">344</td>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#135">state_init</a></td>
|
||||
<td class="coverFnHi">256</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#115">state_init</a></td>
|
||||
<td class="coverFnHi">248</td>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#505">state_config</a></td>
|
||||
<td class="coverFnHi">255</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#483">state_config</a></td>
|
||||
<td class="coverFnHi">247</td>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#118">lev_raid_name</a></td>
|
||||
<td class="coverFnHi">254</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#98">lev_raid_name</a></td>
|
||||
<td class="coverFnHi">246</td>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#197">state_config_check</a></td>
|
||||
<td class="coverFnHi">254</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#177">state_config_check</a></td>
|
||||
<td class="coverFnHi">246</td>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#3340">state_read</a></td>
|
||||
<td class="coverFnHi">250</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#3164">state_read</a></td>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#1236">state_map</a></td>
|
||||
<td class="coverFnHi">249</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#1659">state_read_content</a></td>
|
||||
<td class="coverFnHi">243</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#1503">state_content_check</a></td>
|
||||
<td class="coverFnHi">242</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#1165">state_map</a></td>
|
||||
<td class="coverFnHi">241</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#1590">state_read_content</a></td>
|
||||
<td class="coverFnHi">235</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#1434">state_content_check</a></td>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#180">state_done</a></td>
|
||||
<td class="coverFnHi">234</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#160">state_done</a></td>
|
||||
<td class="coverFnHi">226</td>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#3832">state_progress_end</a></td>
|
||||
<td class="coverFnHi">214</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#3660">state_progress_end</a></td>
|
||||
<td class="coverFnHi">206</td>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#3800">state_progress_begin</a></td>
|
||||
<td class="coverFnHi">214</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#3628">state_progress_begin</a></td>
|
||||
<td class="coverFnHi">206</td>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#1439">state_refresh</a></td>
|
||||
<td class="coverFnHi">160</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#1370">state_refresh</a></td>
|
||||
<td class="coverFnHi">144</td>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#3659">state_write</a></td>
|
||||
<td class="coverFnHi">145</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#3487">state_write</a></td>
|
||||
<td class="coverFnHi">134</td>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#2604">state_write_thread</a></td>
|
||||
<td class="coverFnHi">145</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#2987">state_write_content</a></td>
|
||||
<td class="coverFnHi">134</td>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#3035">state_write_content</a></td>
|
||||
<td class="coverFnHi">145</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#3392">state_verify_content</a></td>
|
||||
<td class="coverFnHi">134</td>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#3542">state_verify_content</a></td>
|
||||
<td class="coverFnHi">145</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#3465">state_rename_content</a></td>
|
||||
<td class="coverFnHi">134</td>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#3637">state_rename_content</a></td>
|
||||
<td class="coverFnHi">145</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#3504">state_skip</a></td>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#3676">state_skip</a></td>
|
||||
<td class="coverFnHi">122</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#3536">state_filter</a></td>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#3708">state_filter</a></td>
|
||||
<td class="coverFnHi">122</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#3845">state_usage_print</a></td>
|
||||
<td class="coverFnHi">81</td>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#4017">state_usage_print</a></td>
|
||||
<td class="coverFnHi">89</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#28">lev_name</a></td>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#48">lev_name</a></td>
|
||||
<td class="coverFnHi">7</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#3699">state_progress_restart</a></td>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#1203">find_disk_by_uuid</a></td>
|
||||
<td class="coverFnHi">2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#3871">state_progress_restart</a></td>
|
||||
<td class="coverFnHi">1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#3911">generate_configuration</a></td>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#4083">generate_configuration</a></td>
|
||||
<td class="coverFnHi">1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#1542">decoding_error</a></td>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#1611">decoding_error</a></td>
|
||||
<td class="coverFnHi">1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#3685">state_progress_stop</a></td>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#3857">state_progress_stop</a></td>
|
||||
<td class="coverFnHi">1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#1511">fs_position_clear_deleted</a></td>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#1580">fs_position_clear_deleted</a></td>
|
||||
<td class="coverFnLo">0</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
|
|||
|
|
@ -31,18 +31,18 @@
|
|||
<td class="headerValue">lcov.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntry">1248</td>
|
||||
<td class="headerCovTableEntry">1351</td>
|
||||
<td class="headerCovTableEntryHi">92.4 %</td>
|
||||
<td class="headerCovTableEntry">1262</td>
|
||||
<td class="headerCovTableEntry">1363</td>
|
||||
<td class="headerCovTableEntryHi">92.6 %</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Date:</td>
|
||||
<td class="headerValue">2015-11-20</td>
|
||||
<td class="headerValue">2016-01-09</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntry">35</td>
|
||||
<td class="headerCovTableEntry">36</td>
|
||||
<td class="headerCovTableEntryHi">97.2 %</td>
|
||||
<td class="headerCovTableEntry">37</td>
|
||||
<td class="headerCovTableEntryHi">97.3 %</td>
|
||||
</tr>
|
||||
<tr><td><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
|
|
@ -60,148 +60,152 @@
|
|||
<td width="20%" class="tableHead">Hit count <span class="tableHeadSort"><a href="state.c.func-sort-c.html"><img src="../updown.png" width=10 height=14 alt="Sort by hit count" title="Sort by hit count" border=0></a></span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#1542">decoding_error</a></td>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#1611">decoding_error</a></td>
|
||||
<td class="coverFnHi">1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#1138">find_disk</a></td>
|
||||
<td class="coverFnHi">11051</td>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#1176">find_disk_by_name</a></td>
|
||||
<td class="coverFnHi">6723</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#1494">fs_info_is_required</a></td>
|
||||
<td class="coverFnHi">1491820</td>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#1203">find_disk_by_uuid</a></td>
|
||||
<td class="coverFnHi">2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#1531">fs_is_block_deleted_ts</a></td>
|
||||
<td class="coverFnHi">29344162</td>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#1563">fs_info_is_required</a></td>
|
||||
<td class="coverFnHi">1513218</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#1511">fs_position_clear_deleted</a></td>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#1600">fs_is_block_deleted_ts</a></td>
|
||||
<td class="coverFnHi">4507856</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#1580">fs_position_clear_deleted</a></td>
|
||||
<td class="coverFnLo">0</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#1465">fs_position_is_required</a></td>
|
||||
<td class="coverFnHi">729418</td>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#1534">fs_position_is_required</a></td>
|
||||
<td class="coverFnHi">752491</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#3911">generate_configuration</a></td>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#4083">generate_configuration</a></td>
|
||||
<td class="coverFnHi">1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#42">lev_config_name</a></td>
|
||||
<td class="coverFnHi">178766</td>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#62">lev_config_name</a></td>
|
||||
<td class="coverFnHi">178997</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#56">lev_config_scan</a></td>
|
||||
<td class="coverFnHi">5905</td>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#76">lev_config_scan</a></td>
|
||||
<td class="coverFnHi">6118</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#28">lev_name</a></td>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#48">lev_name</a></td>
|
||||
<td class="coverFnHi">7</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#98">lev_raid_name</a></td>
|
||||
<td class="coverFnHi">246</td>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#118">lev_raid_name</a></td>
|
||||
<td class="coverFnHi">254</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#483">state_config</a></td>
|
||||
<td class="coverFnHi">247</td>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#505">state_config</a></td>
|
||||
<td class="coverFnHi">255</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#177">state_config_check</a></td>
|
||||
<td class="coverFnHi">246</td>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#197">state_config_check</a></td>
|
||||
<td class="coverFnHi">254</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#1434">state_content_check</a></td>
|
||||
<td class="coverFnHi">234</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#160">state_done</a></td>
|
||||
<td class="coverFnHi">226</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#3536">state_filter</a></td>
|
||||
<td class="coverFnHi">122</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#3894">state_fscheck</a></td>
|
||||
<td class="coverFnHi">447</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#115">state_init</a></td>
|
||||
<td class="coverFnHi">248</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#1165">state_map</a></td>
|
||||
<td class="coverFnHi">241</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#3715">state_progress</a></td>
|
||||
<td class="coverFnHi">1038958</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#3628">state_progress_begin</a></td>
|
||||
<td class="coverFnHi">206</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#3660">state_progress_end</a></td>
|
||||
<td class="coverFnHi">206</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#3699">state_progress_restart</a></td>
|
||||
<td class="coverFnHi">1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#3685">state_progress_stop</a></td>
|
||||
<td class="coverFnHi">1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#3164">state_read</a></td>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#1503">state_content_check</a></td>
|
||||
<td class="coverFnHi">242</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#1590">state_read_content</a></td>
|
||||
<td class="coverFnHi">235</td>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#180">state_done</a></td>
|
||||
<td class="coverFnHi">234</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#1370">state_refresh</a></td>
|
||||
<td class="coverFnHi">144</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#3465">state_rename_content</a></td>
|
||||
<td class="coverFnHi">134</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#3504">state_skip</a></td>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#3708">state_filter</a></td>
|
||||
<td class="coverFnHi">122</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#3845">state_usage_print</a></td>
|
||||
<td class="coverFnHi">81</td>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#4066">state_fscheck</a></td>
|
||||
<td class="coverFnHi">474</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#3392">state_verify_content</a></td>
|
||||
<td class="coverFnHi">134</td>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#135">state_init</a></td>
|
||||
<td class="coverFnHi">256</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#3323">state_verify_thread</a></td>
|
||||
<td class="coverFnHi">912</td>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#1236">state_map</a></td>
|
||||
<td class="coverFnHi">249</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#3487">state_write</a></td>
|
||||
<td class="coverFnHi">134</td>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#3887">state_progress</a></td>
|
||||
<td class="coverFnHi">1048979</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#2987">state_write_content</a></td>
|
||||
<td class="coverFnHi">134</td>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#3800">state_progress_begin</a></td>
|
||||
<td class="coverFnHi">214</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#2511">state_write_thread</a></td>
|
||||
<td class="coverFnHi">913</td>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#3832">state_progress_end</a></td>
|
||||
<td class="coverFnHi">214</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#458">validate_smartctl</a></td>
|
||||
<td class="coverFnHi">344</td>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#3871">state_progress_restart</a></td>
|
||||
<td class="coverFnHi">1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#3857">state_progress_stop</a></td>
|
||||
<td class="coverFnHi">1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#3340">state_read</a></td>
|
||||
<td class="coverFnHi">250</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#1659">state_read_content</a></td>
|
||||
<td class="coverFnHi">243</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#1439">state_refresh</a></td>
|
||||
<td class="coverFnHi">160</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#3637">state_rename_content</a></td>
|
||||
<td class="coverFnHi">145</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#3676">state_skip</a></td>
|
||||
<td class="coverFnHi">122</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#4017">state_usage_print</a></td>
|
||||
<td class="coverFnHi">89</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#3542">state_verify_content</a></td>
|
||||
<td class="coverFnHi">145</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#3501">state_verify_thread</a></td>
|
||||
<td class="coverFnHi">990</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#3659">state_write</a></td>
|
||||
<td class="coverFnHi">145</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#3035">state_write_content</a></td>
|
||||
<td class="coverFnHi">145</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#2604">state_write_thread</a></td>
|
||||
<td class="coverFnHi">145</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#480">validate_smartctl</a></td>
|
||||
<td class="coverFnHi">358</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
|
|
@ -37,7 +37,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Date:</td>
|
||||
<td class="headerValue">2015-11-20</td>
|
||||
<td class="headerValue">2016-01-09</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntry">4</td>
|
||||
|
|
@ -60,20 +60,20 @@
|
|||
<td width="20%" class="tableHead">Hit count <span class="tableHeadSort"><img src="../glass.png" width=10 height=14 alt="Sort by hit count" title="Sort by hit count" border=0></span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="state.h.gcov.html#333">state_usage_cpu</a></td>
|
||||
<td class="coverFnHi">772778</td>
|
||||
<td class="coverFn"><a href="state.h.gcov.html#337">state_usage_cpu</a></td>
|
||||
<td class="coverFnHi">833206</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="state.h.gcov.html#362">state_usage_parity</a></td>
|
||||
<td class="coverFnHi">653350</td>
|
||||
<td class="coverFn"><a href="state.h.gcov.html#366">state_usage_parity</a></td>
|
||||
<td class="coverFnHi">706913</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="state.h.gcov.html#347">state_usage_disk</a></td>
|
||||
<td class="coverFnHi">622545</td>
|
||||
<td class="coverFn"><a href="state.h.gcov.html#351">state_usage_disk</a></td>
|
||||
<td class="coverFnHi">673880</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="state.h.gcov.html#323">state_usage_waste</a></td>
|
||||
<td class="coverFnHi">89</td>
|
||||
<td class="coverFn"><a href="state.h.gcov.html#327">state_usage_waste</a></td>
|
||||
<td class="coverFnHi">97</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Date:</td>
|
||||
<td class="headerValue">2015-11-20</td>
|
||||
<td class="headerValue">2016-01-09</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntry">4</td>
|
||||
|
|
@ -60,20 +60,20 @@
|
|||
<td width="20%" class="tableHead">Hit count <span class="tableHeadSort"><a href="state.h.func-sort-c.html"><img src="../updown.png" width=10 height=14 alt="Sort by hit count" title="Sort by hit count" border=0></a></span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="state.h.gcov.html#333">state_usage_cpu</a></td>
|
||||
<td class="coverFnHi">772778</td>
|
||||
<td class="coverFn"><a href="state.h.gcov.html#337">state_usage_cpu</a></td>
|
||||
<td class="coverFnHi">833206</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="state.h.gcov.html#347">state_usage_disk</a></td>
|
||||
<td class="coverFnHi">622545</td>
|
||||
<td class="coverFn"><a href="state.h.gcov.html#351">state_usage_disk</a></td>
|
||||
<td class="coverFnHi">673880</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="state.h.gcov.html#362">state_usage_parity</a></td>
|
||||
<td class="coverFnHi">653350</td>
|
||||
<td class="coverFn"><a href="state.h.gcov.html#366">state_usage_parity</a></td>
|
||||
<td class="coverFnHi">706913</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="state.h.gcov.html#323">state_usage_waste</a></td>
|
||||
<td class="coverFnHi">89</td>
|
||||
<td class="coverFn"><a href="state.h.gcov.html#327">state_usage_waste</a></td>
|
||||
<td class="coverFnHi">97</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Date:</td>
|
||||
<td class="headerValue">2015-11-20</td>
|
||||
<td class="headerValue">2016-01-09</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntry">4</td>
|
||||
|
|
@ -136,11 +136,11 @@
|
|||
<span class="lineNum"> 74 </span> : int syncedonly; /**< In fix, fixes only files that are synced. */
|
||||
<span class="lineNum"> 75 </span> : int prehash; /**< Enables the prehash mode for sync. */
|
||||
<span class="lineNum"> 76 </span> : unsigned io_error_limit; /**< Max number of input/output errors before aborting. */
|
||||
<span class="lineNum"> 77 </span> : int force_zero; /**< Forced dangerous operations of synching files now with zero size. */
|
||||
<span class="lineNum"> 78 </span> : int force_empty; /**< Forced dangerous operations of synching disks now empty. */
|
||||
<span class="lineNum"> 79 </span> : int force_uuid; /**< Forced dangerous operations of synching disks with uuid changed. */
|
||||
<span class="lineNum"> 77 </span> : int force_zero; /**< Forced dangerous operations of syncing files now with zero size. */
|
||||
<span class="lineNum"> 78 </span> : int force_empty; /**< Forced dangerous operations of syncing disks now empty. */
|
||||
<span class="lineNum"> 79 </span> : int force_uuid; /**< Forced dangerous operations of syncing disks with uuid changed. */
|
||||
<span class="lineNum"> 80 </span> : int force_device; /**< Forced dangerous operations of using disks with save device id. */
|
||||
<span class="lineNum"> 81 </span> : int force_nocopy; /**< Force dangerous operations of synching files without using copy detection. */
|
||||
<span class="lineNum"> 81 </span> : int force_nocopy; /**< Force dangerous operations of syncing files without using copy detection. */
|
||||
<span class="lineNum"> 82 </span> : int force_full; /**< Force a full sync when using an old content file. */
|
||||
<span class="lineNum"> 83 </span> : int expect_unrecoverable; /**< Expect presence of unrecoverable error in checking or fixing. */
|
||||
<span class="lineNum"> 84 </span> : int expect_recoverable; /**< Expect presence of recoverable error in checking. */
|
||||
|
|
@ -165,299 +165,303 @@
|
|||
<span class="lineNum"> 103 </span> : int force_progress; /**< Force the use of the progress status. */
|
||||
<span class="lineNum"> 104 </span> : unsigned force_autosave_at; /**< Force autosave at the specified block. */
|
||||
<span class="lineNum"> 105 </span> : int fake_device; /**< Fake device data. */
|
||||
<span class="lineNum"> 106 </span> : int expected_missing; /**< If missing files are expected and should not be reported. */
|
||||
<span class="lineNum"> 107 </span> : };
|
||||
<span class="lineNum"> 108 </span> :
|
||||
<span class="lineNum"> 109 </span> : /**
|
||||
<span class="lineNum"> 110 </span> : * Number of measures of the operation progress.
|
||||
<span class="lineNum"> 111 </span> : */
|
||||
<span class="lineNum"> 112 </span> : #define PROGRESS_MAX 100
|
||||
<span class="lineNum"> 113 </span> :
|
||||
<span class="lineNum"> 114 </span> : struct snapraid_state {
|
||||
<span class="lineNum"> 115 </span> : struct snapraid_option opt; /**< Setup options. */
|
||||
<span class="lineNum"> 116 </span> : int filter_hidden; /**< Filter out hidden files. */
|
||||
<span class="lineNum"> 117 </span> : uint64_t autosave; /**< Autosave after the specified amount of data. 0 to disable. */
|
||||
<span class="lineNum"> 118 </span> : int need_write; /**< If the state is changed. */
|
||||
<span class="lineNum"> 119 </span> : int checked_read; /**< If the state was read and checked. */
|
||||
<span class="lineNum"> 120 </span> : uint32_t block_size; /**< Block size in bytes. */
|
||||
<span class="lineNum"> 121 </span> : unsigned raid_mode; /**< Raid mode to use. RAID_MODE_DEFAULT or RAID_MODE_ALTERNATE. */
|
||||
<span class="lineNum"> 122 </span> : int file_mode; /**< File access mode. Combination of MODE_* flags. */
|
||||
<span class="lineNum"> 123 </span> : struct snapraid_parity parity[LEV_MAX]; /**< Parity vector. */
|
||||
<span class="lineNum"> 124 </span> : char share[PATH_MAX]; /**< Path of the share tree. If !=0 pool links are created in a different way. */
|
||||
<span class="lineNum"> 125 </span> : char pool[PATH_MAX]; /**< Path of the pool tree. */
|
||||
<span class="lineNum"> 126 </span> : uint64_t pool_device; /**< Device identifier of the pool. */
|
||||
<span class="lineNum"> 127 </span> : unsigned char hashseed[HASH_SIZE]; /**< Hash seed. Just after a uint64 to provide a minimal alignment. */
|
||||
<span class="lineNum"> 128 </span> : unsigned char prevhashseed[HASH_SIZE]; /**< Previous hash seed. In case of rehash. */
|
||||
<span class="lineNum"> 129 </span> : char lockfile[PATH_MAX]; /**< Path of the lock file to use. */
|
||||
<span class="lineNum"> 130 </span> : unsigned level; /**< Number of parity levels. 1 for PAR1, 2 for PAR2. */
|
||||
<span class="lineNum"> 131 </span> : unsigned hash; /**< Hash kind used. */
|
||||
<span class="lineNum"> 132 </span> : unsigned prevhash; /**< Previous hash kind used. In case of rehash. */
|
||||
<span class="lineNum"> 133 </span> : unsigned besthash; /**< Best hash suggested. */
|
||||
<span class="lineNum"> 134 </span> : const char* command; /**< Command running. */
|
||||
<span class="lineNum"> 135 </span> : tommy_list contentlist; /**< List of content files. */
|
||||
<span class="lineNum"> 136 </span> : tommy_list disklist; /**< List of all the disks. */
|
||||
<span class="lineNum"> 137 </span> : tommy_list maplist; /**< List of all the disk mappings. */
|
||||
<span class="lineNum"> 138 </span> : tommy_list filterlist; /**< List of inclusion/exclusion. */
|
||||
<span class="lineNum"> 139 </span> : tommy_list importlist; /**< List of import file. */
|
||||
<span class="lineNum"> 140 </span> : tommy_hashdyn importset; /**< Hashtable by hash of all the import blocks. */
|
||||
<span class="lineNum"> 141 </span> : tommy_hashdyn previmportset; /**< Hashtable by prevhash of all the import blocks. Valid only if we are in a rehash state. */
|
||||
<span class="lineNum"> 142 </span> : tommy_hashdyn searchset; /**< Hashtable by timestamp of all the search files. */
|
||||
<span class="lineNum"> 143 </span> : tommy_arrayblkof infoarr; /**< Block information array. */
|
||||
<span class="lineNum"> 144 </span> :
|
||||
<span class="lineNum"> 145 </span> : /**
|
||||
<span class="lineNum"> 146 </span> : * Cumulative time used for computations.
|
||||
<span class="lineNum"> 147 </span> : */
|
||||
<span class="lineNum"> 148 </span> : uint64_t tick_cpu;
|
||||
<span class="lineNum"> 149 </span> :
|
||||
<span class="lineNum"> 150 </span> : /**
|
||||
<span class="lineNum"> 151 </span> : * Cumulative time used for all io operations of disks.
|
||||
<span class="lineNum"> 152 </span> : */
|
||||
<span class="lineNum"> 153 </span> : uint64_t tick_io;
|
||||
<span class="lineNum"> 154 </span> :
|
||||
<span class="lineNum"> 155 </span> : /**
|
||||
<span class="lineNum"> 156 </span> : * Last time used for time measure.
|
||||
<span class="lineNum"> 157 </span> : */
|
||||
<span class="lineNum"> 158 </span> : uint64_t tick_last;
|
||||
<span class="lineNum"> 159 </span> :
|
||||
<span class="lineNum"> 160 </span> : int clear_past_hash; /**< Clear all the hash from CHG and DELETED blocks when reading the state from an incomplete sync. */
|
||||
<span class="lineNum"> 161 </span> :
|
||||
<span class="lineNum"> 162 </span> : time_t progress_whole_start; /**< Initial start of the whole process. */
|
||||
<span class="lineNum"> 163 </span> : time_t progress_interruption; /**< Time of the start of the progress interruption. */
|
||||
<span class="lineNum"> 164 </span> : time_t progress_wasted; /**< Time wasted in interruptions. */
|
||||
<span class="lineNum"> 106 </span> : int no_warnings; /**< Remove some warning messages. */
|
||||
<span class="lineNum"> 107 </span> : int expected_missing; /**< If missing files are expected and should not be reported. */
|
||||
<span class="lineNum"> 108 </span> : int fake_uuid; /**< Set fakes UUID for testing. */
|
||||
<span class="lineNum"> 109 </span> : int match_first_uuid; /**< Force the matching of the first UUID. */
|
||||
<span class="lineNum"> 110 </span> : int force_parity_update; /**< Force parity update even if data is not changed. */
|
||||
<span class="lineNum"> 111 </span> : };
|
||||
<span class="lineNum"> 112 </span> :
|
||||
<span class="lineNum"> 113 </span> : /**
|
||||
<span class="lineNum"> 114 </span> : * Number of measures of the operation progress.
|
||||
<span class="lineNum"> 115 </span> : */
|
||||
<span class="lineNum"> 116 </span> : #define PROGRESS_MAX 100
|
||||
<span class="lineNum"> 117 </span> :
|
||||
<span class="lineNum"> 118 </span> : struct snapraid_state {
|
||||
<span class="lineNum"> 119 </span> : struct snapraid_option opt; /**< Setup options. */
|
||||
<span class="lineNum"> 120 </span> : int filter_hidden; /**< Filter out hidden files. */
|
||||
<span class="lineNum"> 121 </span> : uint64_t autosave; /**< Autosave after the specified amount of data. 0 to disable. */
|
||||
<span class="lineNum"> 122 </span> : int need_write; /**< If the state is changed. */
|
||||
<span class="lineNum"> 123 </span> : int checked_read; /**< If the state was read and checked. */
|
||||
<span class="lineNum"> 124 </span> : uint32_t block_size; /**< Block size in bytes. */
|
||||
<span class="lineNum"> 125 </span> : unsigned raid_mode; /**< Raid mode to use. RAID_MODE_DEFAULT or RAID_MODE_ALTERNATE. */
|
||||
<span class="lineNum"> 126 </span> : int file_mode; /**< File access mode. Combination of MODE_* flags. */
|
||||
<span class="lineNum"> 127 </span> : struct snapraid_parity parity[LEV_MAX]; /**< Parity vector. */
|
||||
<span class="lineNum"> 128 </span> : char share[PATH_MAX]; /**< Path of the share tree. If !=0 pool links are created in a different way. */
|
||||
<span class="lineNum"> 129 </span> : char pool[PATH_MAX]; /**< Path of the pool tree. */
|
||||
<span class="lineNum"> 130 </span> : uint64_t pool_device; /**< Device identifier of the pool. */
|
||||
<span class="lineNum"> 131 </span> : unsigned char hashseed[HASH_SIZE]; /**< Hash seed. Just after a uint64 to provide a minimal alignment. */
|
||||
<span class="lineNum"> 132 </span> : unsigned char prevhashseed[HASH_SIZE]; /**< Previous hash seed. In case of rehash. */
|
||||
<span class="lineNum"> 133 </span> : char lockfile[PATH_MAX]; /**< Path of the lock file to use. */
|
||||
<span class="lineNum"> 134 </span> : unsigned level; /**< Number of parity levels. 1 for PAR1, 2 for PAR2. */
|
||||
<span class="lineNum"> 135 </span> : unsigned hash; /**< Hash kind used. */
|
||||
<span class="lineNum"> 136 </span> : unsigned prevhash; /**< Previous hash kind used. In case of rehash. */
|
||||
<span class="lineNum"> 137 </span> : unsigned besthash; /**< Best hash suggested. */
|
||||
<span class="lineNum"> 138 </span> : const char* command; /**< Command running. */
|
||||
<span class="lineNum"> 139 </span> : tommy_list contentlist; /**< List of content files. */
|
||||
<span class="lineNum"> 140 </span> : tommy_list disklist; /**< List of all the disks. */
|
||||
<span class="lineNum"> 141 </span> : tommy_list maplist; /**< List of all the disk mappings. */
|
||||
<span class="lineNum"> 142 </span> : tommy_list filterlist; /**< List of inclusion/exclusion. */
|
||||
<span class="lineNum"> 143 </span> : tommy_list importlist; /**< List of import file. */
|
||||
<span class="lineNum"> 144 </span> : tommy_hashdyn importset; /**< Hashtable by hash of all the import blocks. */
|
||||
<span class="lineNum"> 145 </span> : tommy_hashdyn previmportset; /**< Hashtable by prevhash of all the import blocks. Valid only if we are in a rehash state. */
|
||||
<span class="lineNum"> 146 </span> : tommy_hashdyn searchset; /**< Hashtable by timestamp of all the search files. */
|
||||
<span class="lineNum"> 147 </span> : tommy_arrayblkof infoarr; /**< Block information array. */
|
||||
<span class="lineNum"> 148 </span> :
|
||||
<span class="lineNum"> 149 </span> : /**
|
||||
<span class="lineNum"> 150 </span> : * Cumulative time used for computations.
|
||||
<span class="lineNum"> 151 </span> : */
|
||||
<span class="lineNum"> 152 </span> : uint64_t tick_cpu;
|
||||
<span class="lineNum"> 153 </span> :
|
||||
<span class="lineNum"> 154 </span> : /**
|
||||
<span class="lineNum"> 155 </span> : * Cumulative time used for all io operations of disks.
|
||||
<span class="lineNum"> 156 </span> : */
|
||||
<span class="lineNum"> 157 </span> : uint64_t tick_io;
|
||||
<span class="lineNum"> 158 </span> :
|
||||
<span class="lineNum"> 159 </span> : /**
|
||||
<span class="lineNum"> 160 </span> : * Last time used for time measure.
|
||||
<span class="lineNum"> 161 </span> : */
|
||||
<span class="lineNum"> 162 </span> : uint64_t tick_last;
|
||||
<span class="lineNum"> 163 </span> :
|
||||
<span class="lineNum"> 164 </span> : int clear_past_hash; /**< Clear all the hash from CHG and DELETED blocks when reading the state from an incomplete sync. */
|
||||
<span class="lineNum"> 165 </span> :
|
||||
<span class="lineNum"> 166 </span> : time_t progress_time[PROGRESS_MAX]; /**< Last times of progress. */
|
||||
<span class="lineNum"> 167 </span> : block_off_t progress_pos[PROGRESS_MAX]; /**< Last positions of progress. */
|
||||
<span class="lineNum"> 168 </span> : data_off_t progress_size[PROGRESS_MAX]; /**< Last sizes of progress. */
|
||||
<span class="lineNum"> 169 </span> : uint64_t progress_tick_cpu[PROGRESS_MAX]; /**< Last cpu ticks of progress. */
|
||||
<span class="lineNum"> 170 </span> : uint64_t progress_tick_total[PROGRESS_MAX]; /**< Last total ticks of progress. */
|
||||
<span class="lineNum"> 171 </span> :
|
||||
<span class="lineNum"> 172 </span> : int progress_ptr; /**< Pointer to the next position to fill. Rolling over. */
|
||||
<span class="lineNum"> 173 </span> : int progress_tick; /**< Number of measures done. */
|
||||
<span class="lineNum"> 174 </span> :
|
||||
<span class="lineNum"> 175 </span> : int no_conf; /**< Automatically add missing info. Used to load content without a configuration file. */
|
||||
<span class="lineNum"> 176 </span> : };
|
||||
<span class="lineNum"> 177 </span> :
|
||||
<span class="lineNum"> 178 </span> : /**
|
||||
<span class="lineNum"> 179 </span> : * Initialize the state.
|
||||
<span class="lineNum"> 180 </span> : */
|
||||
<span class="lineNum"> 181 </span> : void state_init(struct snapraid_state* state);
|
||||
<span class="lineNum"> 182 </span> :
|
||||
<span class="lineNum"> 183 </span> : /**
|
||||
<span class="lineNum"> 184 </span> : * Deinitialize the state.
|
||||
<span class="lineNum"> 185 </span> : */
|
||||
<span class="lineNum"> 186 </span> : void state_done(struct snapraid_state* state);
|
||||
<span class="lineNum"> 187 </span> :
|
||||
<span class="lineNum"> 188 </span> : /**
|
||||
<span class="lineNum"> 189 </span> : * Read the configuration file.
|
||||
<span class="lineNum"> 190 </span> : */
|
||||
<span class="lineNum"> 191 </span> : void state_config(struct snapraid_state* state, const char* path, const char* command, struct snapraid_option* opt, tommy_list* filterlist_disk);
|
||||
<span class="lineNum"> 192 </span> :
|
||||
<span class="lineNum"> 193 </span> : /**
|
||||
<span class="lineNum"> 194 </span> : * Read the state.
|
||||
<span class="lineNum"> 195 </span> : */
|
||||
<span class="lineNum"> 196 </span> : void state_read(struct snapraid_state* state);
|
||||
<span class="lineNum"> 197 </span> :
|
||||
<span class="lineNum"> 198 </span> : /**
|
||||
<span class="lineNum"> 199 </span> : * Write the new state.
|
||||
<span class="lineNum"> 200 </span> : */
|
||||
<span class="lineNum"> 201 </span> : void state_write(struct snapraid_state* state);
|
||||
<span class="lineNum"> 202 </span> :
|
||||
<span class="lineNum"> 203 </span> : /**
|
||||
<span class="lineNum"> 204 </span> : * Diff all the disks.
|
||||
<span class="lineNum"> 205 </span> : */
|
||||
<span class="lineNum"> 206 </span> : int state_diff(struct snapraid_state* state);
|
||||
<span class="lineNum"> 207 </span> :
|
||||
<span class="lineNum"> 208 </span> : /**
|
||||
<span class="lineNum"> 209 </span> : * Scan all the disks to update the state.
|
||||
<span class="lineNum"> 210 </span> : */
|
||||
<span class="lineNum"> 211 </span> : void state_scan(struct snapraid_state* state);
|
||||
<span class="lineNum"> 212 </span> :
|
||||
<span class="lineNum"> 213 </span> : /**
|
||||
<span class="lineNum"> 214 </span> : * Set the nanosecond timestamp of all files that have a zero value.
|
||||
<span class="lineNum"> 215 </span> : */
|
||||
<span class="lineNum"> 216 </span> : void state_nano(struct snapraid_state* state);
|
||||
<span class="lineNum"> 217 </span> :
|
||||
<span class="lineNum"> 218 </span> : /**
|
||||
<span class="lineNum"> 219 </span> : * Devices operations.
|
||||
<span class="lineNum"> 220 </span> : */
|
||||
<span class="lineNum"> 221 </span> : void state_device(struct snapraid_state* state, int operation);
|
||||
<span class="lineNum"> 222 </span> :
|
||||
<span class="lineNum"> 223 </span> : /**
|
||||
<span class="lineNum"> 224 </span> : * Sync the parity data.
|
||||
<span class="lineNum"> 225 </span> : */
|
||||
<span class="lineNum"> 226 </span> : int state_sync(struct snapraid_state* state, block_off_t blockstart, block_off_t blockcount);
|
||||
<span class="lineNum"> 227 </span> :
|
||||
<span class="lineNum"> 228 </span> : /**
|
||||
<span class="lineNum"> 229 </span> : * Check (and fixes) all the files and parity data.
|
||||
<span class="lineNum"> 230 </span> : * \param fix If we have to fix, after checking.
|
||||
<span class="lineNum"> 231 </span> : */
|
||||
<span class="lineNum"> 232 </span> : int state_check(struct snapraid_state* state, int fix, block_off_t blockstart, block_off_t blockcount);
|
||||
<span class="lineNum"> 233 </span> :
|
||||
<span class="lineNum"> 234 </span> : /**
|
||||
<span class="lineNum"> 235 </span> : * Dry the files.
|
||||
<span class="lineNum"> 236 </span> : */
|
||||
<span class="lineNum"> 237 </span> : void state_dry(struct snapraid_state* state, block_off_t blockstart, block_off_t blockcount);
|
||||
<span class="lineNum"> 238 </span> :
|
||||
<span class="lineNum"> 239 </span> : /**
|
||||
<span class="lineNum"> 240 </span> : * Rehash the files.
|
||||
<span class="lineNum"> 241 </span> : */
|
||||
<span class="lineNum"> 242 </span> : void state_rehash(struct snapraid_state* state);
|
||||
<span class="lineNum"> 243 </span> :
|
||||
<span class="lineNum"> 244 </span> : /**
|
||||
<span class="lineNum"> 245 </span> : * Scrub levels.
|
||||
<span class="lineNum"> 246 </span> : */
|
||||
<span class="lineNum"> 247 </span> : #define SCRUB_AUTO -1 /**< Automatic selection. */
|
||||
<span class="lineNum"> 248 </span> : #define SCRUB_BAD -2 /**< Scrub only the bad blocks. */
|
||||
<span class="lineNum"> 249 </span> : #define SCRUB_NEW -3 /**< Scub the new blocks. */
|
||||
<span class="lineNum"> 250 </span> : #define SCRUB_FULL -4 /**< Scrub everything. */
|
||||
<span class="lineNum"> 251 </span> : #define SCRUB_EVEN -5 /**< Even blocks. */
|
||||
<span class="lineNum"> 252 </span> :
|
||||
<span class="lineNum"> 253 </span> : /**
|
||||
<span class="lineNum"> 254 </span> : * Scrub the files.
|
||||
<span class="lineNum"> 255 </span> : */
|
||||
<span class="lineNum"> 256 </span> : int state_scrub(struct snapraid_state* state, int plan, int olderthan);
|
||||
<span class="lineNum"> 257 </span> :
|
||||
<span class="lineNum"> 258 </span> : /**
|
||||
<span class="lineNum"> 259 </span> : * Print the status.
|
||||
<span class="lineNum"> 260 </span> : */
|
||||
<span class="lineNum"> 261 </span> : int state_status(struct snapraid_state* state);
|
||||
<span class="lineNum"> 262 </span> :
|
||||
<span class="lineNum"> 263 </span> : /**
|
||||
<span class="lineNum"> 264 </span> : * Find duplicates.
|
||||
<span class="lineNum"> 265 </span> : */
|
||||
<span class="lineNum"> 266 </span> : void state_dup(struct snapraid_state* state);
|
||||
<span class="lineNum"> 267 </span> :
|
||||
<span class="lineNum"> 268 </span> : /**
|
||||
<span class="lineNum"> 269 </span> : * List content.
|
||||
<span class="lineNum"> 270 </span> : */
|
||||
<span class="lineNum"> 271 </span> : void state_list(struct snapraid_state* state);
|
||||
<span class="lineNum"> 272 </span> :
|
||||
<span class="lineNum"> 273 </span> : /**
|
||||
<span class="lineNum"> 274 </span> : * Create pool tree.
|
||||
<span class="lineNum"> 275 </span> : */
|
||||
<span class="lineNum"> 276 </span> : void state_pool(struct snapraid_state* state);
|
||||
<span class="lineNum"> 277 </span> :
|
||||
<span class="lineNum"> 278 </span> : /**
|
||||
<span class="lineNum"> 279 </span> : * Refresh the free space info.
|
||||
<span class="lineNum"> 280 </span> : *
|
||||
<span class="lineNum"> 281 </span> : * Note that it requires disks access.
|
||||
<span class="lineNum"> 282 </span> : */
|
||||
<span class="lineNum"> 283 </span> : void state_refresh(struct snapraid_state* state);
|
||||
<span class="lineNum"> 284 </span> :
|
||||
<span class="lineNum"> 285 </span> : /**
|
||||
<span class="lineNum"> 286 </span> : * Skip files, symlinks and dirs.
|
||||
<span class="lineNum"> 287 </span> : * Apply any skip access disk.
|
||||
<span class="lineNum"> 288 </span> : */
|
||||
<span class="lineNum"> 289 </span> : void state_skip(struct snapraid_state* state);
|
||||
<span class="lineNum"> 290 </span> :
|
||||
<span class="lineNum"> 291 </span> : /**
|
||||
<span class="lineNum"> 292 </span> : * Filter files, symlinks and dirs.
|
||||
<span class="lineNum"> 293 </span> : * Apply an additional filter to the list currently loaded.
|
||||
<span class="lineNum"> 294 </span> : */
|
||||
<span class="lineNum"> 295 </span> : void state_filter(struct snapraid_state* state, tommy_list* filterlist_file, tommy_list* filterlist_disk, int filter_missing, int filter_error);
|
||||
<span class="lineNum"> 296 </span> :
|
||||
<span class="lineNum"> 297 </span> : /**
|
||||
<span class="lineNum"> 298 </span> : * Begin the progress visualization.
|
||||
<span class="lineNum"> 299 </span> : */
|
||||
<span class="lineNum"> 300 </span> : int state_progress_begin(struct snapraid_state* state, block_off_t blockstart, block_off_t blockmax, block_off_t countmax);
|
||||
<span class="lineNum"> 301 </span> :
|
||||
<span class="lineNum"> 302 </span> : /**
|
||||
<span class="lineNum"> 303 </span> : * End the progress visualization.
|
||||
<span class="lineNum"> 304 </span> : */
|
||||
<span class="lineNum"> 305 </span> : void state_progress_end(struct snapraid_state* state, block_off_t countpos, block_off_t countmax, data_off_t countsize);
|
||||
<span class="lineNum"> 306 </span> :
|
||||
<span class="lineNum"> 307 </span> : /**
|
||||
<span class="lineNum"> 308 </span> : * Write the progress.
|
||||
<span class="lineNum"> 309 </span> : */
|
||||
<span class="lineNum"> 310 </span> : int state_progress(struct snapraid_state* state, block_off_t blockpos, block_off_t countpos, block_off_t countmax, data_off_t countsize);
|
||||
<span class="lineNum"> 311 </span> :
|
||||
<span class="lineNum"> 312 </span> : /**
|
||||
<span class="lineNum"> 313 </span> : * Stop temporarely the progress.
|
||||
<span class="lineNum"> 314 </span> : */
|
||||
<span class="lineNum"> 315 </span> : void state_progress_stop(struct snapraid_state* state);
|
||||
<span class="lineNum"> 316 </span> :
|
||||
<span class="lineNum"> 317 </span> : /**
|
||||
<span class="lineNum"> 318 </span> : * Restart the progress.
|
||||
<span class="lineNum"> 319 </span> : */
|
||||
<span class="lineNum"> 320 </span> : void state_progress_restart(struct snapraid_state* state);
|
||||
<span class="lineNum"> 321 </span> :
|
||||
<span class="lineNum"> 322 </span> : /**
|
||||
<a name="323"><span class="lineNum"> 323 </span> : * Set the usage time as wasted one not counted.</a>
|
||||
<span class="lineNum"> 324 </span> : */
|
||||
<span class="lineNum"> 325 </span><span class="lineCov"> 89 : static inline void state_usage_waste(struct snapraid_state* state)</span>
|
||||
<span class="lineNum"> 326 </span> : {
|
||||
<span class="lineNum"> 327 </span><span class="lineCov"> 89 : uint64_t now = tick();</span>
|
||||
<span class="lineNum"> 328 </span> :
|
||||
<span class="lineNum"> 329 </span><span class="lineCov"> 89 : state->tick_last = now;</span>
|
||||
<span class="lineNum"> 330 </span><span class="lineCov"> 89 : }</span>
|
||||
<span class="lineNum"> 331 </span> :
|
||||
<span class="lineNum"> 332 </span> : /**
|
||||
<a name="333"><span class="lineNum"> 333 </span> : * Set the usage time for CPU.</a>
|
||||
<span class="lineNum"> 334 </span> : */
|
||||
<span class="lineNum"> 335 </span><span class="lineCov"> 772778 : static inline void state_usage_cpu(struct snapraid_state* state)</span>
|
||||
<span class="lineNum"> 336 </span> : {
|
||||
<span class="lineNum"> 337 </span><span class="lineCov"> 772778 : uint64_t now = tick();</span>
|
||||
<span class="lineNum"> 338 </span><span class="lineCov"> 772778 : uint64_t delta = now - state->tick_last;</span>
|
||||
<span class="lineNum"> 339 </span> :
|
||||
<span class="lineNum"> 340 </span> : /* increment the time spent in computations */
|
||||
<span class="lineNum"> 341 </span><span class="lineCov"> 772778 : state->tick_cpu += delta;</span>
|
||||
<span class="lineNum"> 342 </span> :
|
||||
<span class="lineNum"> 343 </span><span class="lineCov"> 772778 : state->tick_last = now;</span>
|
||||
<span class="lineNum"> 344 </span><span class="lineCov"> 772778 : }</span>
|
||||
<span class="lineNum"> 345 </span> :
|
||||
<span class="lineNum"> 346 </span> : /**
|
||||
<a name="347"><span class="lineNum"> 347 </span> : * Set the usage time for data disk.</a>
|
||||
<span class="lineNum"> 348 </span> : */
|
||||
<span class="lineNum"> 349 </span><span class="lineCov"> 622545 : static inline void state_usage_disk(struct snapraid_state* state, struct snapraid_disk* disk)</span>
|
||||
<span class="lineNum"> 350 </span> : {
|
||||
<span class="lineNum"> 351 </span><span class="lineCov"> 622545 : uint64_t now = tick();</span>
|
||||
<span class="lineNum"> 352 </span><span class="lineCov"> 622545 : uint64_t delta = now - state->tick_last;</span>
|
||||
<span class="lineNum"> 353 </span> :
|
||||
<span class="lineNum"> 354 </span> : /* increment the time spent in the data disk */
|
||||
<span class="lineNum"> 355 </span><span class="lineCov"> 622545 : disk->tick += delta;</span>
|
||||
<span class="lineNum"> 356 </span><span class="lineCov"> 622545 : state->tick_io += delta;</span>
|
||||
<span class="lineNum"> 166 </span> : time_t progress_whole_start; /**< Initial start of the whole process. */
|
||||
<span class="lineNum"> 167 </span> : time_t progress_interruption; /**< Time of the start of the progress interruption. */
|
||||
<span class="lineNum"> 168 </span> : time_t progress_wasted; /**< Time wasted in interruptions. */
|
||||
<span class="lineNum"> 169 </span> :
|
||||
<span class="lineNum"> 170 </span> : time_t progress_time[PROGRESS_MAX]; /**< Last times of progress. */
|
||||
<span class="lineNum"> 171 </span> : block_off_t progress_pos[PROGRESS_MAX]; /**< Last positions of progress. */
|
||||
<span class="lineNum"> 172 </span> : data_off_t progress_size[PROGRESS_MAX]; /**< Last sizes of progress. */
|
||||
<span class="lineNum"> 173 </span> : uint64_t progress_tick_cpu[PROGRESS_MAX]; /**< Last cpu ticks of progress. */
|
||||
<span class="lineNum"> 174 </span> : uint64_t progress_tick_total[PROGRESS_MAX]; /**< Last total ticks of progress. */
|
||||
<span class="lineNum"> 175 </span> :
|
||||
<span class="lineNum"> 176 </span> : int progress_ptr; /**< Pointer to the next position to fill. Rolling over. */
|
||||
<span class="lineNum"> 177 </span> : int progress_tick; /**< Number of measures done. */
|
||||
<span class="lineNum"> 178 </span> :
|
||||
<span class="lineNum"> 179 </span> : int no_conf; /**< Automatically add missing info. Used to load content without a configuration file. */
|
||||
<span class="lineNum"> 180 </span> : };
|
||||
<span class="lineNum"> 181 </span> :
|
||||
<span class="lineNum"> 182 </span> : /**
|
||||
<span class="lineNum"> 183 </span> : * Initialize the state.
|
||||
<span class="lineNum"> 184 </span> : */
|
||||
<span class="lineNum"> 185 </span> : void state_init(struct snapraid_state* state);
|
||||
<span class="lineNum"> 186 </span> :
|
||||
<span class="lineNum"> 187 </span> : /**
|
||||
<span class="lineNum"> 188 </span> : * Deinitialize the state.
|
||||
<span class="lineNum"> 189 </span> : */
|
||||
<span class="lineNum"> 190 </span> : void state_done(struct snapraid_state* state);
|
||||
<span class="lineNum"> 191 </span> :
|
||||
<span class="lineNum"> 192 </span> : /**
|
||||
<span class="lineNum"> 193 </span> : * Read the configuration file.
|
||||
<span class="lineNum"> 194 </span> : */
|
||||
<span class="lineNum"> 195 </span> : void state_config(struct snapraid_state* state, const char* path, const char* command, struct snapraid_option* opt, tommy_list* filterlist_disk);
|
||||
<span class="lineNum"> 196 </span> :
|
||||
<span class="lineNum"> 197 </span> : /**
|
||||
<span class="lineNum"> 198 </span> : * Read the state.
|
||||
<span class="lineNum"> 199 </span> : */
|
||||
<span class="lineNum"> 200 </span> : void state_read(struct snapraid_state* state);
|
||||
<span class="lineNum"> 201 </span> :
|
||||
<span class="lineNum"> 202 </span> : /**
|
||||
<span class="lineNum"> 203 </span> : * Write the new state.
|
||||
<span class="lineNum"> 204 </span> : */
|
||||
<span class="lineNum"> 205 </span> : void state_write(struct snapraid_state* state);
|
||||
<span class="lineNum"> 206 </span> :
|
||||
<span class="lineNum"> 207 </span> : /**
|
||||
<span class="lineNum"> 208 </span> : * Diff all the disks.
|
||||
<span class="lineNum"> 209 </span> : */
|
||||
<span class="lineNum"> 210 </span> : int state_diff(struct snapraid_state* state);
|
||||
<span class="lineNum"> 211 </span> :
|
||||
<span class="lineNum"> 212 </span> : /**
|
||||
<span class="lineNum"> 213 </span> : * Scan all the disks to update the state.
|
||||
<span class="lineNum"> 214 </span> : */
|
||||
<span class="lineNum"> 215 </span> : void state_scan(struct snapraid_state* state);
|
||||
<span class="lineNum"> 216 </span> :
|
||||
<span class="lineNum"> 217 </span> : /**
|
||||
<span class="lineNum"> 218 </span> : * Set the nanosecond timestamp of all files that have a zero value.
|
||||
<span class="lineNum"> 219 </span> : */
|
||||
<span class="lineNum"> 220 </span> : void state_nano(struct snapraid_state* state);
|
||||
<span class="lineNum"> 221 </span> :
|
||||
<span class="lineNum"> 222 </span> : /**
|
||||
<span class="lineNum"> 223 </span> : * Devices operations.
|
||||
<span class="lineNum"> 224 </span> : */
|
||||
<span class="lineNum"> 225 </span> : void state_device(struct snapraid_state* state, int operation);
|
||||
<span class="lineNum"> 226 </span> :
|
||||
<span class="lineNum"> 227 </span> : /**
|
||||
<span class="lineNum"> 228 </span> : * Sync the parity data.
|
||||
<span class="lineNum"> 229 </span> : */
|
||||
<span class="lineNum"> 230 </span> : int state_sync(struct snapraid_state* state, block_off_t blockstart, block_off_t blockcount);
|
||||
<span class="lineNum"> 231 </span> :
|
||||
<span class="lineNum"> 232 </span> : /**
|
||||
<span class="lineNum"> 233 </span> : * Check (and fixes) all the files and parity data.
|
||||
<span class="lineNum"> 234 </span> : * \param fix If we have to fix, after checking.
|
||||
<span class="lineNum"> 235 </span> : */
|
||||
<span class="lineNum"> 236 </span> : int state_check(struct snapraid_state* state, int fix, block_off_t blockstart, block_off_t blockcount);
|
||||
<span class="lineNum"> 237 </span> :
|
||||
<span class="lineNum"> 238 </span> : /**
|
||||
<span class="lineNum"> 239 </span> : * Dry the files.
|
||||
<span class="lineNum"> 240 </span> : */
|
||||
<span class="lineNum"> 241 </span> : void state_dry(struct snapraid_state* state, block_off_t blockstart, block_off_t blockcount);
|
||||
<span class="lineNum"> 242 </span> :
|
||||
<span class="lineNum"> 243 </span> : /**
|
||||
<span class="lineNum"> 244 </span> : * Rehash the files.
|
||||
<span class="lineNum"> 245 </span> : */
|
||||
<span class="lineNum"> 246 </span> : void state_rehash(struct snapraid_state* state);
|
||||
<span class="lineNum"> 247 </span> :
|
||||
<span class="lineNum"> 248 </span> : /**
|
||||
<span class="lineNum"> 249 </span> : * Scrub levels.
|
||||
<span class="lineNum"> 250 </span> : */
|
||||
<span class="lineNum"> 251 </span> : #define SCRUB_AUTO -1 /**< Automatic selection. */
|
||||
<span class="lineNum"> 252 </span> : #define SCRUB_BAD -2 /**< Scrub only the bad blocks. */
|
||||
<span class="lineNum"> 253 </span> : #define SCRUB_NEW -3 /**< Scub the new blocks. */
|
||||
<span class="lineNum"> 254 </span> : #define SCRUB_FULL -4 /**< Scrub everything. */
|
||||
<span class="lineNum"> 255 </span> : #define SCRUB_EVEN -5 /**< Even blocks. */
|
||||
<span class="lineNum"> 256 </span> :
|
||||
<span class="lineNum"> 257 </span> : /**
|
||||
<span class="lineNum"> 258 </span> : * Scrub the files.
|
||||
<span class="lineNum"> 259 </span> : */
|
||||
<span class="lineNum"> 260 </span> : int state_scrub(struct snapraid_state* state, int plan, int olderthan);
|
||||
<span class="lineNum"> 261 </span> :
|
||||
<span class="lineNum"> 262 </span> : /**
|
||||
<span class="lineNum"> 263 </span> : * Print the status.
|
||||
<span class="lineNum"> 264 </span> : */
|
||||
<span class="lineNum"> 265 </span> : int state_status(struct snapraid_state* state);
|
||||
<span class="lineNum"> 266 </span> :
|
||||
<span class="lineNum"> 267 </span> : /**
|
||||
<span class="lineNum"> 268 </span> : * Find duplicates.
|
||||
<span class="lineNum"> 269 </span> : */
|
||||
<span class="lineNum"> 270 </span> : void state_dup(struct snapraid_state* state);
|
||||
<span class="lineNum"> 271 </span> :
|
||||
<span class="lineNum"> 272 </span> : /**
|
||||
<span class="lineNum"> 273 </span> : * List content.
|
||||
<span class="lineNum"> 274 </span> : */
|
||||
<span class="lineNum"> 275 </span> : void state_list(struct snapraid_state* state);
|
||||
<span class="lineNum"> 276 </span> :
|
||||
<span class="lineNum"> 277 </span> : /**
|
||||
<span class="lineNum"> 278 </span> : * Create pool tree.
|
||||
<span class="lineNum"> 279 </span> : */
|
||||
<span class="lineNum"> 280 </span> : void state_pool(struct snapraid_state* state);
|
||||
<span class="lineNum"> 281 </span> :
|
||||
<span class="lineNum"> 282 </span> : /**
|
||||
<span class="lineNum"> 283 </span> : * Refresh the free space info.
|
||||
<span class="lineNum"> 284 </span> : *
|
||||
<span class="lineNum"> 285 </span> : * Note that it requires disks access.
|
||||
<span class="lineNum"> 286 </span> : */
|
||||
<span class="lineNum"> 287 </span> : void state_refresh(struct snapraid_state* state);
|
||||
<span class="lineNum"> 288 </span> :
|
||||
<span class="lineNum"> 289 </span> : /**
|
||||
<span class="lineNum"> 290 </span> : * Skip files, symlinks and dirs.
|
||||
<span class="lineNum"> 291 </span> : * Apply any skip access disk.
|
||||
<span class="lineNum"> 292 </span> : */
|
||||
<span class="lineNum"> 293 </span> : void state_skip(struct snapraid_state* state);
|
||||
<span class="lineNum"> 294 </span> :
|
||||
<span class="lineNum"> 295 </span> : /**
|
||||
<span class="lineNum"> 296 </span> : * Filter files, symlinks and dirs.
|
||||
<span class="lineNum"> 297 </span> : * Apply an additional filter to the list currently loaded.
|
||||
<span class="lineNum"> 298 </span> : */
|
||||
<span class="lineNum"> 299 </span> : void state_filter(struct snapraid_state* state, tommy_list* filterlist_file, tommy_list* filterlist_disk, int filter_missing, int filter_error);
|
||||
<span class="lineNum"> 300 </span> :
|
||||
<span class="lineNum"> 301 </span> : /**
|
||||
<span class="lineNum"> 302 </span> : * Begin the progress visualization.
|
||||
<span class="lineNum"> 303 </span> : */
|
||||
<span class="lineNum"> 304 </span> : int state_progress_begin(struct snapraid_state* state, block_off_t blockstart, block_off_t blockmax, block_off_t countmax);
|
||||
<span class="lineNum"> 305 </span> :
|
||||
<span class="lineNum"> 306 </span> : /**
|
||||
<span class="lineNum"> 307 </span> : * End the progress visualization.
|
||||
<span class="lineNum"> 308 </span> : */
|
||||
<span class="lineNum"> 309 </span> : void state_progress_end(struct snapraid_state* state, block_off_t countpos, block_off_t countmax, data_off_t countsize);
|
||||
<span class="lineNum"> 310 </span> :
|
||||
<span class="lineNum"> 311 </span> : /**
|
||||
<span class="lineNum"> 312 </span> : * Write the progress.
|
||||
<span class="lineNum"> 313 </span> : */
|
||||
<span class="lineNum"> 314 </span> : int state_progress(struct snapraid_state* state, block_off_t blockpos, block_off_t countpos, block_off_t countmax, data_off_t countsize);
|
||||
<span class="lineNum"> 315 </span> :
|
||||
<span class="lineNum"> 316 </span> : /**
|
||||
<span class="lineNum"> 317 </span> : * Stop temporarily the progress.
|
||||
<span class="lineNum"> 318 </span> : */
|
||||
<span class="lineNum"> 319 </span> : void state_progress_stop(struct snapraid_state* state);
|
||||
<span class="lineNum"> 320 </span> :
|
||||
<span class="lineNum"> 321 </span> : /**
|
||||
<span class="lineNum"> 322 </span> : * Restart the progress.
|
||||
<span class="lineNum"> 323 </span> : */
|
||||
<span class="lineNum"> 324 </span> : void state_progress_restart(struct snapraid_state* state);
|
||||
<span class="lineNum"> 325 </span> :
|
||||
<span class="lineNum"> 326 </span> : /**
|
||||
<a name="327"><span class="lineNum"> 327 </span> : * Set the usage time as wasted one not counted.</a>
|
||||
<span class="lineNum"> 328 </span> : */
|
||||
<span class="lineNum"> 329 </span><span class="lineCov"> 97 : static inline void state_usage_waste(struct snapraid_state* state)</span>
|
||||
<span class="lineNum"> 330 </span> : {
|
||||
<span class="lineNum"> 331 </span><span class="lineCov"> 97 : uint64_t now = tick();</span>
|
||||
<span class="lineNum"> 332 </span> :
|
||||
<span class="lineNum"> 333 </span><span class="lineCov"> 97 : state->tick_last = now;</span>
|
||||
<span class="lineNum"> 334 </span><span class="lineCov"> 97 : }</span>
|
||||
<span class="lineNum"> 335 </span> :
|
||||
<span class="lineNum"> 336 </span> : /**
|
||||
<a name="337"><span class="lineNum"> 337 </span> : * Set the usage time for CPU.</a>
|
||||
<span class="lineNum"> 338 </span> : */
|
||||
<span class="lineNum"> 339 </span><span class="lineCov"> 833206 : static inline void state_usage_cpu(struct snapraid_state* state)</span>
|
||||
<span class="lineNum"> 340 </span> : {
|
||||
<span class="lineNum"> 341 </span><span class="lineCov"> 833206 : uint64_t now = tick();</span>
|
||||
<span class="lineNum"> 342 </span><span class="lineCov"> 833206 : uint64_t delta = now - state->tick_last;</span>
|
||||
<span class="lineNum"> 343 </span> :
|
||||
<span class="lineNum"> 344 </span> : /* increment the time spent in computations */
|
||||
<span class="lineNum"> 345 </span><span class="lineCov"> 833206 : state->tick_cpu += delta;</span>
|
||||
<span class="lineNum"> 346 </span> :
|
||||
<span class="lineNum"> 347 </span><span class="lineCov"> 833206 : state->tick_last = now;</span>
|
||||
<span class="lineNum"> 348 </span><span class="lineCov"> 833206 : }</span>
|
||||
<span class="lineNum"> 349 </span> :
|
||||
<span class="lineNum"> 350 </span> : /**
|
||||
<a name="351"><span class="lineNum"> 351 </span> : * Set the usage time for data disk.</a>
|
||||
<span class="lineNum"> 352 </span> : */
|
||||
<span class="lineNum"> 353 </span><span class="lineCov"> 673880 : static inline void state_usage_disk(struct snapraid_state* state, struct snapraid_disk* disk)</span>
|
||||
<span class="lineNum"> 354 </span> : {
|
||||
<span class="lineNum"> 355 </span><span class="lineCov"> 673880 : uint64_t now = tick();</span>
|
||||
<span class="lineNum"> 356 </span><span class="lineCov"> 673880 : uint64_t delta = now - state->tick_last;</span>
|
||||
<span class="lineNum"> 357 </span> :
|
||||
<span class="lineNum"> 358 </span><span class="lineCov"> 622545 : state->tick_last = now;</span>
|
||||
<span class="lineNum"> 359 </span><span class="lineCov"> 622545 : }</span>
|
||||
<span class="lineNum"> 360 </span> :
|
||||
<span class="lineNum"> 361 </span> : /**
|
||||
<a name="362"><span class="lineNum"> 362 </span> : * Set the usage time for parity disk.</a>
|
||||
<span class="lineNum"> 363 </span> : */
|
||||
<span class="lineNum"> 364 </span><span class="lineCov"> 653350 : static inline void state_usage_parity(struct snapraid_state* state, unsigned level)</span>
|
||||
<span class="lineNum"> 365 </span> : {
|
||||
<span class="lineNum"> 366 </span><span class="lineCov"> 653350 : uint64_t now = tick();</span>
|
||||
<span class="lineNum"> 367 </span><span class="lineCov"> 653350 : uint64_t delta = now - state->tick_last;</span>
|
||||
<span class="lineNum"> 368 </span> :
|
||||
<span class="lineNum"> 369 </span><span class="lineCov"> 653350 : assert(level < LEV_MAX);</span>
|
||||
<span class="lineNum"> 370 </span> :
|
||||
<span class="lineNum"> 371 </span> : /* increment the time spent in the parity disk */
|
||||
<span class="lineNum"> 372 </span><span class="lineCov"> 653350 : state->parity[level].tick += delta;</span>
|
||||
<span class="lineNum"> 373 </span><span class="lineCov"> 653350 : state->tick_io += delta;</span>
|
||||
<span class="lineNum"> 358 </span> : /* increment the time spent in the data disk */
|
||||
<span class="lineNum"> 359 </span><span class="lineCov"> 673880 : disk->tick += delta;</span>
|
||||
<span class="lineNum"> 360 </span><span class="lineCov"> 673880 : state->tick_io += delta;</span>
|
||||
<span class="lineNum"> 361 </span> :
|
||||
<span class="lineNum"> 362 </span><span class="lineCov"> 673880 : state->tick_last = now;</span>
|
||||
<span class="lineNum"> 363 </span><span class="lineCov"> 673880 : }</span>
|
||||
<span class="lineNum"> 364 </span> :
|
||||
<span class="lineNum"> 365 </span> : /**
|
||||
<a name="366"><span class="lineNum"> 366 </span> : * Set the usage time for parity disk.</a>
|
||||
<span class="lineNum"> 367 </span> : */
|
||||
<span class="lineNum"> 368 </span><span class="lineCov"> 706913 : static inline void state_usage_parity(struct snapraid_state* state, unsigned level)</span>
|
||||
<span class="lineNum"> 369 </span> : {
|
||||
<span class="lineNum"> 370 </span><span class="lineCov"> 706913 : uint64_t now = tick();</span>
|
||||
<span class="lineNum"> 371 </span><span class="lineCov"> 706913 : uint64_t delta = now - state->tick_last;</span>
|
||||
<span class="lineNum"> 372 </span> :
|
||||
<span class="lineNum"> 373 </span><span class="lineCov"> 706913 : assert(level < LEV_MAX);</span>
|
||||
<span class="lineNum"> 374 </span> :
|
||||
<span class="lineNum"> 375 </span><span class="lineCov"> 653350 : state->tick_last = now;</span>
|
||||
<span class="lineNum"> 376 </span><span class="lineCov"> 653350 : }</span>
|
||||
<span class="lineNum"> 377 </span> :
|
||||
<span class="lineNum"> 378 </span> : /**
|
||||
<span class="lineNum"> 379 </span> : * Print the stats of the usage time.
|
||||
<span class="lineNum"> 380 </span> : */
|
||||
<span class="lineNum"> 381 </span> : void state_usage_print(struct snapraid_state* state);
|
||||
<span class="lineNum"> 382 </span> :
|
||||
<span class="lineNum"> 383 </span> : /**
|
||||
<span class="lineNum"> 384 </span> : * Check the filesystem on all disks.
|
||||
<span class="lineNum"> 385 </span> : * On error it aborts.
|
||||
<span class="lineNum"> 386 </span> : */
|
||||
<span class="lineNum"> 387 </span> : void state_fscheck(struct snapraid_state* state, const char* ope);
|
||||
<span class="lineNum"> 388 </span> :
|
||||
<span class="lineNum"> 389 </span> : /****************************************************************************/
|
||||
<span class="lineNum"> 390 </span> : /* misc */
|
||||
<span class="lineNum"> 391 </span> :
|
||||
<span class="lineNum"> 392 </span> : /**
|
||||
<span class="lineNum"> 393 </span> : * Generate a dummy configuration file from a content file.
|
||||
<span class="lineNum"> 394 </span> : */
|
||||
<span class="lineNum"> 395 </span> : void generate_configuration(const char* content);
|
||||
<span class="lineNum"> 396 </span> :
|
||||
<span class="lineNum"> 397 </span> : #endif
|
||||
<span class="lineNum"> 398 </span> :
|
||||
<span class="lineNum"> 375 </span> : /* increment the time spent in the parity disk */
|
||||
<span class="lineNum"> 376 </span><span class="lineCov"> 706913 : state->parity[level].tick += delta;</span>
|
||||
<span class="lineNum"> 377 </span><span class="lineCov"> 706913 : state->tick_io += delta;</span>
|
||||
<span class="lineNum"> 378 </span> :
|
||||
<span class="lineNum"> 379 </span><span class="lineCov"> 706913 : state->tick_last = now;</span>
|
||||
<span class="lineNum"> 380 </span><span class="lineCov"> 706913 : }</span>
|
||||
<span class="lineNum"> 381 </span> :
|
||||
<span class="lineNum"> 382 </span> : /**
|
||||
<span class="lineNum"> 383 </span> : * Print the stats of the usage time.
|
||||
<span class="lineNum"> 384 </span> : */
|
||||
<span class="lineNum"> 385 </span> : void state_usage_print(struct snapraid_state* state);
|
||||
<span class="lineNum"> 386 </span> :
|
||||
<span class="lineNum"> 387 </span> : /**
|
||||
<span class="lineNum"> 388 </span> : * Check the file-system on all disks.
|
||||
<span class="lineNum"> 389 </span> : * On error it aborts.
|
||||
<span class="lineNum"> 390 </span> : */
|
||||
<span class="lineNum"> 391 </span> : void state_fscheck(struct snapraid_state* state, const char* ope);
|
||||
<span class="lineNum"> 392 </span> :
|
||||
<span class="lineNum"> 393 </span> : /****************************************************************************/
|
||||
<span class="lineNum"> 394 </span> : /* misc */
|
||||
<span class="lineNum"> 395 </span> :
|
||||
<span class="lineNum"> 396 </span> : /**
|
||||
<span class="lineNum"> 397 </span> : * Generate a dummy configuration file from a content file.
|
||||
<span class="lineNum"> 398 </span> : */
|
||||
<span class="lineNum"> 399 </span> : void generate_configuration(const char* content);
|
||||
<span class="lineNum"> 400 </span> :
|
||||
<span class="lineNum"> 401 </span> : #endif
|
||||
<span class="lineNum"> 402 </span> :
|
||||
</pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Date:</td>
|
||||
<td class="headerValue">2015-11-20</td>
|
||||
<td class="headerValue">2016-01-09</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntry">3</td>
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Date:</td>
|
||||
<td class="headerValue">2015-11-20</td>
|
||||
<td class="headerValue">2016-01-09</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntry">3</td>
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Date:</td>
|
||||
<td class="headerValue">2015-11-20</td>
|
||||
<td class="headerValue">2016-01-09</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntry">3</td>
|
||||
|
|
@ -159,9 +159,9 @@
|
|||
<span class="lineNum"> 97 </span><span class="lineCov"> 84 : log_tag("summary:parity_block_total:%s:%u\n", lev_config_name(l), state->parity[l].total_blocks);</span>
|
||||
<span class="lineNum"> 98 </span><span class="lineCov"> 84 : log_tag("summary:parity_block_free:%s:%u\n", lev_config_name(l), state->parity[l].free_blocks);</span>
|
||||
<span class="lineNum"> 99 </span><span class="lineCov"> 84 : if (state->parity[l].free_blocks < parity_block_free)</span>
|
||||
<span class="lineNum"> 100 </span><span class="lineCov"> 4 : parity_block_free = state->parity[l].free_blocks;</span>
|
||||
<span class="lineNum"> 100 </span><span class="lineCov"> 1 : parity_block_free = state->parity[l].free_blocks;</span>
|
||||
<span class="lineNum"> 101 </span><span class="lineCov"> 84 : if (state->parity[l].free_blocks != 0)</span>
|
||||
<span class="lineNum"> 102 </span><span class="lineCov"> 58 : free_not_zero = 1;</span>
|
||||
<span class="lineNum"> 102 </span><span class="lineCov"> 73 : free_not_zero = 1;</span>
|
||||
<span class="lineNum"> 103 </span> : }
|
||||
<span class="lineNum"> 104 </span><span class="lineCov"> 14 : log_tag("summary:parity_block_free_min:%u\n", parity_block_free);</span>
|
||||
<span class="lineNum"> 105 </span> :
|
||||
|
|
@ -195,50 +195,50 @@
|
|||
<span class="lineNum"> 133 </span> :
|
||||
<span class="lineNum"> 134 </span> : /* for each file in the disk */
|
||||
<span class="lineNum"> 135 </span><span class="lineCov"> 84 : node = disk->filelist;</span>
|
||||
<span class="lineNum"> 136 </span><span class="lineCov"> 95610 : while (node) {</span>
|
||||
<span class="lineNum"> 136 </span><span class="lineCov"> 95666 : while (node) {</span>
|
||||
<span class="lineNum"> 137 </span> : struct snapraid_file* file;
|
||||
<span class="lineNum"> 138 </span> :
|
||||
<span class="lineNum"> 139 </span><span class="lineCov"> 95442 : file = node->data;</span>
|
||||
<span class="lineNum"> 140 </span><span class="lineCov"> 95442 : node = node->next; /* next node */</span>
|
||||
<span class="lineNum"> 139 </span><span class="lineCov"> 95498 : file = node->data;</span>
|
||||
<span class="lineNum"> 140 </span><span class="lineCov"> 95498 : node = node->next; /* next node */</span>
|
||||
<span class="lineNum"> 141 </span> :
|
||||
<span class="lineNum"> 142 </span> : /* check fragmentation */
|
||||
<span class="lineNum"> 143 </span><span class="lineCov"> 95442 : if (file->blockmax != 0) {</span>
|
||||
<span class="lineNum"> 143 </span><span class="lineCov"> 95498 : if (file->blockmax != 0) {</span>
|
||||
<span class="lineNum"> 144 </span> : block_off_t prev_pos;
|
||||
<span class="lineNum"> 145 </span> : block_off_t last_pos;
|
||||
<span class="lineNum"> 146 </span> : int fragmented;
|
||||
<span class="lineNum"> 147 </span> :
|
||||
<span class="lineNum"> 148 </span><span class="lineCov"> 95304 : fragmented = 0;</span>
|
||||
<span class="lineNum"> 149 </span><span class="lineCov"> 95304 : prev_pos = fs_file2par_get(disk, file, 0);</span>
|
||||
<span class="lineNum"> 150 </span><span class="lineCov"> 234999 : for (j = 1; j < file->blockmax; ++j) {</span>
|
||||
<span class="lineNum"> 151 </span><span class="lineCov"> 139695 : block_off_t parity_pos = fs_file2par_get(disk, file, j);</span>
|
||||
<span class="lineNum"> 152 </span><span class="lineCov"> 139695 : if (prev_pos + 1 != parity_pos) {</span>
|
||||
<span class="lineNum"> 148 </span><span class="lineCov"> 95360 : fragmented = 0;</span>
|
||||
<span class="lineNum"> 149 </span><span class="lineCov"> 95360 : prev_pos = fs_file2par_get(disk, file, 0);</span>
|
||||
<span class="lineNum"> 150 </span><span class="lineCov"> 235447 : for (j = 1; j < file->blockmax; ++j) {</span>
|
||||
<span class="lineNum"> 151 </span><span class="lineCov"> 140087 : block_off_t parity_pos = fs_file2par_get(disk, file, j);</span>
|
||||
<span class="lineNum"> 152 </span><span class="lineCov"> 140087 : if (prev_pos + 1 != parity_pos) {</span>
|
||||
<span class="lineNum"> 153 </span><span class="lineCov"> 698 : fragmented = 1;</span>
|
||||
<span class="lineNum"> 154 </span><span class="lineCov"> 698 : ++extra_fragment;</span>
|
||||
<span class="lineNum"> 155 </span><span class="lineCov"> 698 : ++disk_extra_fragment;</span>
|
||||
<span class="lineNum"> 156 </span> : }
|
||||
<span class="lineNum"> 157 </span><span class="lineCov"> 139695 : prev_pos = parity_pos;</span>
|
||||
<span class="lineNum"> 157 </span><span class="lineCov"> 140087 : prev_pos = parity_pos;</span>
|
||||
<span class="lineNum"> 158 </span> : }
|
||||
<span class="lineNum"> 159 </span> :
|
||||
<span class="lineNum"> 160 </span> : /* keep track of latest block used */
|
||||
<span class="lineNum"> 161 </span><span class="lineCov"> 95304 : last_pos = fs_file2par_get(disk, file, file->blockmax - 1);</span>
|
||||
<span class="lineNum"> 162 </span><span class="lineCov"> 95304 : if (last_pos > disk_block_latest_used) {</span>
|
||||
<span class="lineNum"> 163 </span><span class="lineCov"> 92447 : disk_block_latest_used = last_pos;</span>
|
||||
<span class="lineNum"> 161 </span><span class="lineCov"> 95360 : last_pos = fs_file2par_get(disk, file, file->blockmax - 1);</span>
|
||||
<span class="lineNum"> 162 </span><span class="lineCov"> 95360 : if (last_pos > disk_block_latest_used) {</span>
|
||||
<span class="lineNum"> 163 </span><span class="lineCov"> 92502 : disk_block_latest_used = last_pos;</span>
|
||||
<span class="lineNum"> 164 </span> : }
|
||||
<span class="lineNum"> 165 </span> :
|
||||
<span class="lineNum"> 166 </span><span class="lineCov"> 95304 : if (fragmented) {</span>
|
||||
<span class="lineNum"> 166 </span><span class="lineCov"> 95360 : if (fragmented) {</span>
|
||||
<span class="lineNum"> 167 </span><span class="lineCov"> 582 : ++file_fragmented;</span>
|
||||
<span class="lineNum"> 168 </span><span class="lineCov"> 582 : ++disk_file_fragmented;</span>
|
||||
<span class="lineNum"> 169 </span> : }
|
||||
<span class="lineNum"> 170 </span> :
|
||||
<span class="lineNum"> 171 </span><span class="lineCov"> 95304 : disk_block_count += file->blockmax;</span>
|
||||
<span class="lineNum"> 171 </span><span class="lineCov"> 95360 : disk_block_count += file->blockmax;</span>
|
||||
<span class="lineNum"> 172 </span> : }
|
||||
<span class="lineNum"> 173 </span> :
|
||||
<span class="lineNum"> 174 </span> : /* count files */
|
||||
<span class="lineNum"> 175 </span><span class="lineCov"> 95442 : ++file_count;</span>
|
||||
<span class="lineNum"> 176 </span><span class="lineCov"> 95442 : ++disk_file_count;</span>
|
||||
<span class="lineNum"> 177 </span><span class="lineCov"> 95442 : file_size += file->size;</span>
|
||||
<span class="lineNum"> 178 </span><span class="lineCov"> 95442 : file_block_count += file->blockmax;</span>
|
||||
<span class="lineNum"> 179 </span><span class="lineCov"> 95442 : disk_file_size += file->size;</span>
|
||||
<span class="lineNum"> 175 </span><span class="lineCov"> 95498 : ++file_count;</span>
|
||||
<span class="lineNum"> 176 </span><span class="lineCov"> 95498 : ++disk_file_count;</span>
|
||||
<span class="lineNum"> 177 </span><span class="lineCov"> 95498 : file_size += file->size;</span>
|
||||
<span class="lineNum"> 178 </span><span class="lineCov"> 95498 : file_block_count += file->blockmax;</span>
|
||||
<span class="lineNum"> 179 </span><span class="lineCov"> 95498 : disk_file_size += file->size;</span>
|
||||
<span class="lineNum"> 180 </span> : }
|
||||
<span class="lineNum"> 181 </span> :
|
||||
<span class="lineNum"> 182 </span><span class="lineCov"> 84 : if (disk->free_blocks != 0)</span>
|
||||
|
|
@ -253,9 +253,9 @@
|
|||
<span class="lineNum"> 191 </span> : /* the wasted space is the space that we have to leave */
|
||||
<span class="lineNum"> 192 </span> : /* free on the data disk, when the parity is filled up */
|
||||
<span class="lineNum"> 193 </span><span class="lineCov"> 84 : if (disk_block_max_by_space < disk_block_max_by_parity) {</span>
|
||||
<span class="lineNum"> 194 </span><span class="lineCov"> 50 : disk_block_max = disk_block_max_by_space;</span>
|
||||
<span class="lineNum"> 194 </span><span class="lineCov"> 65 : disk_block_max = disk_block_max_by_space;</span>
|
||||
<span class="lineNum"> 195 </span> : } else {
|
||||
<span class="lineNum"> 196 </span><span class="lineCov"> 34 : disk_block_max = disk_block_max_by_parity;</span>
|
||||
<span class="lineNum"> 196 </span><span class="lineCov"> 19 : disk_block_max = disk_block_max_by_parity;</span>
|
||||
<span class="lineNum"> 197 </span> : }
|
||||
<span class="lineNum"> 198 </span> :
|
||||
<span class="lineNum"> 199 </span> : /* wasted space is the difference of the two maximum size */
|
||||
|
|
@ -264,7 +264,7 @@
|
|||
<span class="lineNum"> 202 </span><span class="lineCov"> 84 : wasted *= state->block_size;</span>
|
||||
<span class="lineNum"> 203 </span> :
|
||||
<span class="lineNum"> 204 </span><span class="lineCov"> 84 : if (wasted > 0)</span>
|
||||
<span class="lineNum"> 205 </span><span class="lineCov"> 24 : all_wasted += wasted;</span>
|
||||
<span class="lineNum"> 205 </span><span class="lineCov"> 6 : all_wasted += wasted;</span>
|
||||
<span class="lineNum"> 206 </span><span class="lineCov"> 84 : file_block_free += disk_block_max - disk_block_count;</span>
|
||||
<span class="lineNum"> 207 </span> :
|
||||
<span class="lineNum"> 208 </span><span class="lineCov"> 84 : printf("%8u", disk_file_count);</span>
|
||||
|
|
@ -338,57 +338,57 @@
|
|||
<span class="lineNum"> 276 </span><span class="lineCov"> 14 : unsynced_blocks = 0;</span>
|
||||
<span class="lineNum"> 277 </span><span class="lineCov"> 14 : unscrubbed_blocks = 0;</span>
|
||||
<span class="lineNum"> 278 </span><span class="lineCov"> 14 : log_tag("block_count:%u\n", blockmax);</span>
|
||||
<span class="lineNum"> 279 </span><span class="lineCov"> 39620 : for (i = 0; i < blockmax; ++i) {</span>
|
||||
<span class="lineNum"> 279 </span><span class="lineCov"> 39702 : for (i = 0; i < blockmax; ++i) {</span>
|
||||
<span class="lineNum"> 280 </span> : int one_invalid;
|
||||
<span class="lineNum"> 281 </span> : int one_valid;
|
||||
<span class="lineNum"> 282 </span> :
|
||||
<span class="lineNum"> 283 </span><span class="lineCov"> 39606 : snapraid_info info = info_get(&state->infoarr, i);</span>
|
||||
<span class="lineNum"> 283 </span><span class="lineCov"> 39688 : snapraid_info info = info_get(&state->infoarr, i);</span>
|
||||
<span class="lineNum"> 284 </span> :
|
||||
<span class="lineNum"> 285 </span> : /* for each disk */
|
||||
<span class="lineNum"> 286 </span><span class="lineCov"> 39606 : one_invalid = 0;</span>
|
||||
<span class="lineNum"> 287 </span><span class="lineCov"> 39606 : one_valid = 0;</span>
|
||||
<span class="lineNum"> 288 </span><span class="lineCov"> 277242 : for (node_disk = state->disklist; node_disk != 0; node_disk = node_disk->next) {</span>
|
||||
<span class="lineNum"> 289 </span><span class="lineCov"> 237636 : struct snapraid_disk* disk = node_disk->data;</span>
|
||||
<span class="lineNum"> 290 </span><span class="lineCov"> 237636 : struct snapraid_block* block = fs_par2block_get(disk, i);</span>
|
||||
<span class="lineNum"> 286 </span><span class="lineCov"> 39688 : one_invalid = 0;</span>
|
||||
<span class="lineNum"> 287 </span><span class="lineCov"> 39688 : one_valid = 0;</span>
|
||||
<span class="lineNum"> 288 </span><span class="lineCov"> 277816 : for (node_disk = state->disklist; node_disk != 0; node_disk = node_disk->next) {</span>
|
||||
<span class="lineNum"> 289 </span><span class="lineCov"> 238128 : struct snapraid_disk* disk = node_disk->data;</span>
|
||||
<span class="lineNum"> 290 </span><span class="lineCov"> 238128 : struct snapraid_block* block = fs_par2block_get(disk, i);</span>
|
||||
<span class="lineNum"> 291 </span> :
|
||||
<span class="lineNum"> 292 </span><span class="lineCov"> 237636 : if (block_has_file(block))</span>
|
||||
<span class="lineNum"> 293 </span><span class="lineCov"> 234999 : one_valid = 1;</span>
|
||||
<span class="lineNum"> 294 </span><span class="lineCov"> 237636 : if (block_has_invalid_parity(block))</span>
|
||||
<span class="lineNum"> 292 </span><span class="lineCov"> 238128 : if (block_has_file(block))</span>
|
||||
<span class="lineNum"> 293 </span><span class="lineCov"> 235447 : one_valid = 1;</span>
|
||||
<span class="lineNum"> 294 </span><span class="lineCov"> 238128 : if (block_has_invalid_parity(block))</span>
|
||||
<span class="lineNum"> 295 </span><span class="lineNoCov"> 0 : one_invalid = 1;</span>
|
||||
<span class="lineNum"> 296 </span> : }
|
||||
<span class="lineNum"> 297 </span> :
|
||||
<span class="lineNum"> 298 </span> : /* if both valid and invalid, we need to update */
|
||||
<span class="lineNum"> 299 </span><span class="lineCov"> 39606 : if (one_invalid && one_valid) {</span>
|
||||
<span class="lineNum"> 299 </span><span class="lineCov"> 39688 : if (one_invalid && one_valid) {</span>
|
||||
<span class="lineNum"> 300 </span><span class="lineNoCov"> 0 : ++unsynced_blocks;</span>
|
||||
<span class="lineNum"> 301 </span> : }
|
||||
<span class="lineNum"> 302 </span> :
|
||||
<span class="lineNum"> 303 </span> : /* skip unused blocks */
|
||||
<span class="lineNum"> 304 </span><span class="lineCov"> 39606 : if (info != 0) {</span>
|
||||
<span class="lineNum"> 304 </span><span class="lineCov"> 39688 : if (info != 0) {</span>
|
||||
<span class="lineNum"> 305 </span> : time_t scrub_time;
|
||||
<span class="lineNum"> 306 </span> :
|
||||
<span class="lineNum"> 307 </span><span class="lineCov"> 39606 : if (info_get_bad(info)) {</span>
|
||||
<span class="lineNum"> 308 </span><span class="lineCov"> 1802 : if (bad == 0)</span>
|
||||
<span class="lineNum"> 307 </span><span class="lineCov"> 39688 : if (info_get_bad(info)) {</span>
|
||||
<span class="lineNum"> 308 </span><span class="lineCov"> 1771 : if (bad == 0)</span>
|
||||
<span class="lineNum"> 309 </span><span class="lineCov"> 2 : bad_first = i;</span>
|
||||
<span class="lineNum"> 310 </span><span class="lineCov"> 1802 : bad_last = i;</span>
|
||||
<span class="lineNum"> 311 </span><span class="lineCov"> 1802 : ++bad;</span>
|
||||
<span class="lineNum"> 310 </span><span class="lineCov"> 1771 : bad_last = i;</span>
|
||||
<span class="lineNum"> 311 </span><span class="lineCov"> 1771 : ++bad;</span>
|
||||
<span class="lineNum"> 312 </span> : }
|
||||
<span class="lineNum"> 313 </span> :
|
||||
<span class="lineNum"> 314 </span><span class="lineCov"> 39606 : if (info_get_rehash(info))</span>
|
||||
<span class="lineNum"> 315 </span><span class="lineCov"> 4599 : ++rehash;</span>
|
||||
<span class="lineNum"> 314 </span><span class="lineCov"> 39688 : if (info_get_rehash(info))</span>
|
||||
<span class="lineNum"> 315 </span><span class="lineCov"> 4603 : ++rehash;</span>
|
||||
<span class="lineNum"> 316 </span> :
|
||||
<span class="lineNum"> 317 </span><span class="lineCov"> 39606 : scrub_time = info_get_time(info);</span>
|
||||
<span class="lineNum"> 317 </span><span class="lineCov"> 39688 : scrub_time = info_get_time(info);</span>
|
||||
<span class="lineNum"> 318 </span> :
|
||||
<span class="lineNum"> 319 </span><span class="lineCov"> 39606 : if (info_get_justsynced(info)) {</span>
|
||||
<span class="lineNum"> 320 </span><span class="lineCov"> 20364 : ++unscrubbed_blocks;</span>
|
||||
<span class="lineNum"> 319 </span><span class="lineCov"> 39688 : if (info_get_justsynced(info)) {</span>
|
||||
<span class="lineNum"> 320 </span><span class="lineCov"> 20419 : ++unscrubbed_blocks;</span>
|
||||
<span class="lineNum"> 321 </span> :
|
||||
<span class="lineNum"> 322 </span> : /* mark the time as not scrubbed */
|
||||
<span class="lineNum"> 323 </span><span class="lineCov"> 20364 : scrub_time |= TIME_NEW;</span>
|
||||
<span class="lineNum"> 323 </span><span class="lineCov"> 20419 : scrub_time |= TIME_NEW;</span>
|
||||
<span class="lineNum"> 324 </span> : }
|
||||
<span class="lineNum"> 325 </span> :
|
||||
<span class="lineNum"> 326 </span><span class="lineCov"> 39606 : timemap[count++] = scrub_time;</span>
|
||||
<span class="lineNum"> 326 </span><span class="lineCov"> 39688 : timemap[count++] = scrub_time;</span>
|
||||
<span class="lineNum"> 327 </span> : }
|
||||
<span class="lineNum"> 328 </span> :
|
||||
<span class="lineNum"> 329 </span><span class="lineCov"> 39606 : if (state->opt.gui) {</span>
|
||||
<span class="lineNum"> 329 </span><span class="lineCov"> 39688 : if (state->opt.gui) {</span>
|
||||
<span class="lineNum"> 330 </span><span class="lineNoCov"> 0 : if (info != 0)</span>
|
||||
<span class="lineNum"> 331 </span><span class="lineNoCov"> 0 : log_tag("block:%u:%" PRIu64 ":%s:%s:%s:%s\n", i, (uint64_t)info_get_time(info), one_valid ? "used" : "", one_invalid ? "unsynced" : "", info_get_bad(info) ? "bad" : "", info_get_rehash(info) ? "rehash" : "");</span>
|
||||
<span class="lineNum"> 332 </span> : else
|
||||
|
|
@ -414,16 +414,16 @@
|
|||
<span class="lineNum"> 352 </span> : /* output the info map */
|
||||
<span class="lineNum"> 353 </span><span class="lineCov"> 8 : i = 0;</span>
|
||||
<span class="lineNum"> 354 </span><span class="lineCov"> 8 : log_tag("info_count:%u\n", count);</span>
|
||||
<span class="lineNum"> 355 </span><span class="lineCov"> 41 : while (i < count) {</span>
|
||||
<span class="lineNum"> 356 </span><span class="lineCov"> 25 : unsigned j = i + 1;</span>
|
||||
<span class="lineNum"> 357 </span><span class="lineCov"> 39631 : while (j < count && timemap[i] == timemap[j])</span>
|
||||
<span class="lineNum"> 358 </span><span class="lineCov"> 39581 : ++j;</span>
|
||||
<span class="lineNum"> 359 </span><span class="lineCov"> 25 : if ((timemap[i] & TIME_NEW) == 0) {</span>
|
||||
<span class="lineNum"> 360 </span><span class="lineCov"> 9 : log_tag("info_time:%" PRIu64 ":%u:scrubbed\n", (uint64_t)timemap[i], j - i);</span>
|
||||
<span class="lineNum"> 355 </span><span class="lineCov"> 39 : while (i < count) {</span>
|
||||
<span class="lineNum"> 356 </span><span class="lineCov"> 23 : unsigned j = i + 1;</span>
|
||||
<span class="lineNum"> 357 </span><span class="lineCov"> 39711 : while (j < count && timemap[i] == timemap[j])</span>
|
||||
<span class="lineNum"> 358 </span><span class="lineCov"> 39665 : ++j;</span>
|
||||
<span class="lineNum"> 359 </span><span class="lineCov"> 23 : if ((timemap[i] & TIME_NEW) == 0) {</span>
|
||||
<span class="lineNum"> 360 </span><span class="lineCov"> 8 : log_tag("info_time:%" PRIu64 ":%u:scrubbed\n", (uint64_t)timemap[i], j - i);</span>
|
||||
<span class="lineNum"> 361 </span> : } else {
|
||||
<span class="lineNum"> 362 </span><span class="lineCov"> 16 : log_tag("info_time:%" PRIu64 ":%u:new\n", (uint64_t)(timemap[i] & ~TIME_NEW), j - i);</span>
|
||||
<span class="lineNum"> 362 </span><span class="lineCov"> 15 : log_tag("info_time:%" PRIu64 ":%u:new\n", (uint64_t)(timemap[i] & ~TIME_NEW), j - i);</span>
|
||||
<span class="lineNum"> 363 </span> : }
|
||||
<span class="lineNum"> 364 </span><span class="lineCov"> 25 : i = j;</span>
|
||||
<span class="lineNum"> 364 </span><span class="lineCov"> 23 : i = j;</span>
|
||||
<span class="lineNum"> 365 </span> : }
|
||||
<span class="lineNum"> 366 </span> :
|
||||
<span class="lineNum"> 367 </span><span class="lineCov"> 8 : oldest = timemap[0];</span>
|
||||
|
|
@ -444,12 +444,12 @@
|
|||
<span class="lineNum"> 382 </span> :
|
||||
<span class="lineNum"> 383 </span><span class="lineCov"> 560 : step_scrubbed = 0;</span>
|
||||
<span class="lineNum"> 384 </span><span class="lineCov"> 560 : step_new = 0;</span>
|
||||
<span class="lineNum"> 385 </span><span class="lineCov"> 40726 : while (barpos < count && timemap[barpos] <= limit) {</span>
|
||||
<span class="lineNum"> 386 </span><span class="lineCov"> 39606 : if ((timemap[barpos] & TIME_NEW) != 0)</span>
|
||||
<span class="lineNum"> 387 </span><span class="lineCov"> 20364 : ++step_new;</span>
|
||||
<span class="lineNum"> 385 </span><span class="lineCov"> 40808 : while (barpos < count && timemap[barpos] <= limit) {</span>
|
||||
<span class="lineNum"> 386 </span><span class="lineCov"> 39688 : if ((timemap[barpos] & TIME_NEW) != 0)</span>
|
||||
<span class="lineNum"> 387 </span><span class="lineCov"> 20419 : ++step_new;</span>
|
||||
<span class="lineNum"> 388 </span> : else
|
||||
<span class="lineNum"> 389 </span><span class="lineCov"> 19242 : ++step_scrubbed;</span>
|
||||
<span class="lineNum"> 390 </span><span class="lineCov"> 39606 : ++barpos;</span>
|
||||
<span class="lineNum"> 389 </span><span class="lineCov"> 19269 : ++step_scrubbed;</span>
|
||||
<span class="lineNum"> 390 </span><span class="lineCov"> 39688 : ++barpos;</span>
|
||||
<span class="lineNum"> 391 </span> : }
|
||||
<span class="lineNum"> 392 </span> :
|
||||
<span class="lineNum"> 393 </span><span class="lineCov"> 560 : if (step_new + step_scrubbed > barmax)</span>
|
||||
|
|
@ -478,20 +478,20 @@
|
|||
<span class="lineNum"> 416 </span><span class="lineCov"> 8400 : unsigned scrubbed = bar_scrubbed[x];</span>
|
||||
<span class="lineNum"> 417 </span> :
|
||||
<span class="lineNum"> 418 </span><span class="lineCov"> 8400 : if (both > pivot_upper) {</span>
|
||||
<span class="lineNum"> 419 </span><span class="lineCov"> 168 : if (scrubbed > pivot_lower)</span>
|
||||
<span class="lineNum"> 420 </span><span class="lineCov"> 74 : printf("*");</span>
|
||||
<span class="lineNum"> 419 </span><span class="lineCov"> 171 : if (scrubbed > pivot_lower)</span>
|
||||
<span class="lineNum"> 420 </span><span class="lineCov"> 75 : printf("*");</span>
|
||||
<span class="lineNum"> 421 </span> : else
|
||||
<span class="lineNum"> 422 </span><span class="lineCov"> 94 : printf("o");</span>
|
||||
<span class="lineNum"> 423 </span><span class="lineCov"> 8232 : } else if (both > pivot_lower) {</span>
|
||||
<span class="lineNum"> 424 </span><span class="lineCov"> 25 : if (scrubbed == both)</span>
|
||||
<span class="lineNum"> 425 </span><span class="lineCov"> 9 : printf("*");</span>
|
||||
<span class="lineNum"> 422 </span><span class="lineCov"> 96 : printf("o");</span>
|
||||
<span class="lineNum"> 423 </span><span class="lineCov"> 8229 : } else if (both > pivot_lower) {</span>
|
||||
<span class="lineNum"> 424 </span><span class="lineCov"> 23 : if (scrubbed == both)</span>
|
||||
<span class="lineNum"> 425 </span><span class="lineCov"> 8 : printf("*");</span>
|
||||
<span class="lineNum"> 426 </span> : else
|
||||
<span class="lineNum"> 427 </span><span class="lineCov"> 16 : printf("o");</span>
|
||||
<span class="lineNum"> 427 </span><span class="lineCov"> 15 : printf("o");</span>
|
||||
<span class="lineNum"> 428 </span> : } else {
|
||||
<span class="lineNum"> 429 </span><span class="lineCov"> 8207 : if (y == GRAPH_ROW - 1)</span>
|
||||
<span class="lineNum"> 430 </span><span class="lineCov"> 535 : printf("_");</span>
|
||||
<span class="lineNum"> 429 </span><span class="lineCov"> 8206 : if (y == GRAPH_ROW - 1)</span>
|
||||
<span class="lineNum"> 430 </span><span class="lineCov"> 537 : printf("_");</span>
|
||||
<span class="lineNum"> 431 </span> : else
|
||||
<span class="lineNum"> 432 </span><span class="lineCov"> 7672 : printf(" ");</span>
|
||||
<span class="lineNum"> 432 </span><span class="lineCov"> 7669 : printf(" ");</span>
|
||||
<span class="lineNum"> 433 </span> : }
|
||||
<span class="lineNum"> 434 </span> : }
|
||||
<span class="lineNum"> 435 </span><span class="lineCov"> 120 : printf("\n");</span>
|
||||
|
|
@ -536,19 +536,19 @@
|
|||
<span class="lineNum"> 474 </span> :
|
||||
<span class="lineNum"> 475 </span> : /* print some of the errors */
|
||||
<span class="lineNum"> 476 </span><span class="lineCov"> 2 : bad_print = 0;</span>
|
||||
<span class="lineNum"> 477 </span><span class="lineCov"> 609 : for (i = 0; i < blockmax; ++i) {</span>
|
||||
<span class="lineNum"> 478 </span><span class="lineCov"> 609 : snapraid_info info = info_get(&state->infoarr, i);</span>
|
||||
<span class="lineNum"> 477 </span><span class="lineCov"> 709 : for (i = 0; i < blockmax; ++i) {</span>
|
||||
<span class="lineNum"> 478 </span><span class="lineCov"> 709 : snapraid_info info = info_get(&state->infoarr, i);</span>
|
||||
<span class="lineNum"> 479 </span> :
|
||||
<span class="lineNum"> 480 </span> : /* skip unused blocks */
|
||||
<span class="lineNum"> 481 </span><span class="lineCov"> 609 : if (info == 0)</span>
|
||||
<span class="lineNum"> 481 </span><span class="lineCov"> 709 : if (info == 0)</span>
|
||||
<span class="lineNum"> 482 </span><span class="lineNoCov"> 0 : continue;</span>
|
||||
<span class="lineNum"> 483 </span> :
|
||||
<span class="lineNum"> 484 </span><span class="lineCov"> 609 : if (info_get_bad(info)) {</span>
|
||||
<span class="lineNum"> 484 </span><span class="lineCov"> 709 : if (info_get_bad(info)) {</span>
|
||||
<span class="lineNum"> 485 </span><span class="lineCov"> 202 : printf(" %u", i);</span>
|
||||
<span class="lineNum"> 486 </span><span class="lineCov"> 202 : ++bad_print;</span>
|
||||
<span class="lineNum"> 487 </span> : }
|
||||
<span class="lineNum"> 488 </span> :
|
||||
<span class="lineNum"> 489 </span><span class="lineCov"> 609 : if (bad_print > 100) {</span>
|
||||
<span class="lineNum"> 489 </span><span class="lineCov"> 709 : if (bad_print > 100) {</span>
|
||||
<span class="lineNum"> 490 </span><span class="lineCov"> 2 : printf(" and %u more...", bad - bad_print);</span>
|
||||
<span class="lineNum"> 491 </span><span class="lineCov"> 2 : break;</span>
|
||||
<span class="lineNum"> 492 </span> : }
|
||||
|
|
|
|||
|
|
@ -31,18 +31,18 @@
|
|||
<td class="headerValue">lcov.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntry">261</td>
|
||||
<td class="headerCovTableEntry">257</td>
|
||||
<td class="headerCovTableEntry">280</td>
|
||||
<td class="headerCovTableEntryHi">93.2 %</td>
|
||||
<td class="headerCovTableEntryHi">91.8 %</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Date:</td>
|
||||
<td class="headerValue">2015-11-20</td>
|
||||
<td class="headerValue">2016-01-09</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntry">27</td>
|
||||
<td class="headerCovTableEntry">28</td>
|
||||
<td class="headerCovTableEntry">28</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntryHi">96.4 %</td>
|
||||
</tr>
|
||||
<tr><td><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
|
|
@ -61,116 +61,116 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="stream.c.gcov.html#622">swrite</a></td>
|
||||
<td class="coverFnHi">129597634</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="stream.c.gcov.html#659">sputb32</a></td>
|
||||
<td class="coverFnHi">62339359</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="stream.c.gcov.html#680">sputb64</a></td>
|
||||
<td class="coverFnHi">34173479</td>
|
||||
<td class="coverFnHi">20661703</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="stream.c.gcov.html#514">sgetb32</a></td>
|
||||
<td class="coverFnHi">18710390</td>
|
||||
<td class="coverFnHi">18259411</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="stream.c.gcov.html#373">sread</a></td>
|
||||
<td class="coverFnHi">12342909</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="stream.c.gcov.html#713">sputbs</a></td>
|
||||
<td class="coverFnHi">12306366</td>
|
||||
<td class="coverFnHi">12515245</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="stream.c.gcov.html#550">sgetb64</a></td>
|
||||
<td class="coverFnHi">10465937</td>
|
||||
<td class="coverFnHi">10605158</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="stream.c.gcov.html#659">sputb32</a></td>
|
||||
<td class="coverFnHi">9119259</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="stream.c.gcov.html#680">sputb64</a></td>
|
||||
<td class="coverFnHi">5293948</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="stream.c.gcov.html#601">sgetbs</a></td>
|
||||
<td class="coverFnHi">3732790</td>
|
||||
<td class="coverFnHi">3782241</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="stream.c.gcov.html#713">sputbs</a></td>
|
||||
<td class="coverFnHi">1884788</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="stream.c.gcov.html#191">sfill</a></td>
|
||||
<td class="coverFnHi">606496</td>
|
||||
<td class="coverFnHi">607118</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="stream.c.gcov.html#328">sgetc_uncached</a></td>
|
||||
<td class="coverFnHi">298585</td>
|
||||
<td class="coverFnHi">298684</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="stream.c.gcov.html#266">sflush</a></td>
|
||||
<td class="coverFnHi">52590</td>
|
||||
<td class="coverFnHi">39024</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="stream.c.gcov.html#336">sgettok</a></td>
|
||||
<td class="coverFnHi">7623</td>
|
||||
<td class="coverFnHi">7892</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="stream.c.gcov.html#404">sgetline</a></td>
|
||||
<td class="coverFnHi">5069</td>
|
||||
<td class="coverFnHi">5251</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="stream.c.gcov.html#466">sgetlasttok</a></td>
|
||||
<td class="coverFnHi">5035</td>
|
||||
<td class="coverFnHi">5217</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="stream.c.gcov.html#142">sclose</a></td>
|
||||
<td class="coverFnHi">2575</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="stream.c.gcov.html#318">scrc</a></td>
|
||||
<td class="coverFnHi">2333</td>
|
||||
<td class="coverFnHi">1903</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="stream.c.gcov.html#27">sopen_read</a></td>
|
||||
<td class="coverFnHi">1701</td>
|
||||
<td class="coverFnHi">1794</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="stream.c.gcov.html#318">scrc</a></td>
|
||||
<td class="coverFnHi">1650</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="stream.c.gcov.html#228">sdeplete</a></td>
|
||||
<td class="coverFnHi">1042</td>
|
||||
<td class="coverFnHi">1119</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="stream.c.gcov.html#98">sopen_multi_file</a></td>
|
||||
<td class="coverFnHi">1041</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="stream.c.gcov.html#323">scrc_stream</a></td>
|
||||
<td class="coverFnHi">929</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="stream.c.gcov.html#701">sputble32</a></td>
|
||||
<td class="coverFnHi">929</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="stream.c.gcov.html#72">sopen_multi_write</a></td>
|
||||
<td class="coverFnHi">928</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="stream.c.gcov.html#130">sopen_write</a></td>
|
||||
<td class="coverFnHi">913</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="stream.c.gcov.html#727">ssync</a></td>
|
||||
<td class="coverFnHi">912</td>
|
||||
<td class="coverFnHi">1118</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="stream.c.gcov.html#586">sgetble32</a></td>
|
||||
<td class="coverFnHi">362</td>
|
||||
<td class="coverFnHi">370</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="stream.c.gcov.html#485">sgetu32</a></td>
|
||||
<td class="coverFnHi">247</td>
|
||||
<td class="coverFnHi">255</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="stream.c.gcov.html#176">shandle</a></td>
|
||||
<td class="coverFnHi">235</td>
|
||||
<td class="coverFnHi">243</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="stream.c.gcov.html#323">scrc_stream</a></td>
|
||||
<td class="coverFnHi">161</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="stream.c.gcov.html#72">sopen_multi_write</a></td>
|
||||
<td class="coverFnHi">161</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="stream.c.gcov.html#701">sputble32</a></td>
|
||||
<td class="coverFnHi">161</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="stream.c.gcov.html#727">ssync</a></td>
|
||||
<td class="coverFnHi">145</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="stream.c.gcov.html#313">stell</a></td>
|
||||
<td class="coverFnHi">1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="stream.c.gcov.html#130">sopen_write</a></td>
|
||||
<td class="coverFnLo">0</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
</center>
|
||||
|
|
|
|||
|
|
@ -31,18 +31,18 @@
|
|||
<td class="headerValue">lcov.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntry">261</td>
|
||||
<td class="headerCovTableEntry">257</td>
|
||||
<td class="headerCovTableEntry">280</td>
|
||||
<td class="headerCovTableEntryHi">93.2 %</td>
|
||||
<td class="headerCovTableEntryHi">91.8 %</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Date:</td>
|
||||
<td class="headerValue">2015-11-20</td>
|
||||
<td class="headerValue">2016-01-09</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntry">27</td>
|
||||
<td class="headerCovTableEntry">28</td>
|
||||
<td class="headerCovTableEntry">28</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntryHi">96.4 %</td>
|
||||
</tr>
|
||||
<tr><td><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
|
|
@ -61,107 +61,107 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="stream.c.gcov.html#142">sclose</a></td>
|
||||
<td class="coverFnHi">2575</td>
|
||||
<td class="coverFnHi">1903</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="stream.c.gcov.html#318">scrc</a></td>
|
||||
<td class="coverFnHi">2333</td>
|
||||
<td class="coverFnHi">1650</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="stream.c.gcov.html#323">scrc_stream</a></td>
|
||||
<td class="coverFnHi">929</td>
|
||||
<td class="coverFnHi">161</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="stream.c.gcov.html#228">sdeplete</a></td>
|
||||
<td class="coverFnHi">1042</td>
|
||||
<td class="coverFnHi">1119</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="stream.c.gcov.html#191">sfill</a></td>
|
||||
<td class="coverFnHi">606496</td>
|
||||
<td class="coverFnHi">607118</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="stream.c.gcov.html#266">sflush</a></td>
|
||||
<td class="coverFnHi">52590</td>
|
||||
<td class="coverFnHi">39024</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="stream.c.gcov.html#514">sgetb32</a></td>
|
||||
<td class="coverFnHi">18710390</td>
|
||||
<td class="coverFnHi">18259411</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="stream.c.gcov.html#550">sgetb64</a></td>
|
||||
<td class="coverFnHi">10465937</td>
|
||||
<td class="coverFnHi">10605158</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="stream.c.gcov.html#586">sgetble32</a></td>
|
||||
<td class="coverFnHi">362</td>
|
||||
<td class="coverFnHi">370</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="stream.c.gcov.html#601">sgetbs</a></td>
|
||||
<td class="coverFnHi">3732790</td>
|
||||
<td class="coverFnHi">3782241</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="stream.c.gcov.html#328">sgetc_uncached</a></td>
|
||||
<td class="coverFnHi">298585</td>
|
||||
<td class="coverFnHi">298684</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="stream.c.gcov.html#466">sgetlasttok</a></td>
|
||||
<td class="coverFnHi">5035</td>
|
||||
<td class="coverFnHi">5217</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="stream.c.gcov.html#404">sgetline</a></td>
|
||||
<td class="coverFnHi">5069</td>
|
||||
<td class="coverFnHi">5251</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="stream.c.gcov.html#336">sgettok</a></td>
|
||||
<td class="coverFnHi">7623</td>
|
||||
<td class="coverFnHi">7892</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="stream.c.gcov.html#485">sgetu32</a></td>
|
||||
<td class="coverFnHi">247</td>
|
||||
<td class="coverFnHi">255</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="stream.c.gcov.html#176">shandle</a></td>
|
||||
<td class="coverFnHi">235</td>
|
||||
<td class="coverFnHi">243</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="stream.c.gcov.html#98">sopen_multi_file</a></td>
|
||||
<td class="coverFnHi">1041</td>
|
||||
<td class="coverFnHi">1118</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="stream.c.gcov.html#72">sopen_multi_write</a></td>
|
||||
<td class="coverFnHi">928</td>
|
||||
<td class="coverFnHi">161</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="stream.c.gcov.html#27">sopen_read</a></td>
|
||||
<td class="coverFnHi">1701</td>
|
||||
<td class="coverFnHi">1794</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="stream.c.gcov.html#130">sopen_write</a></td>
|
||||
<td class="coverFnHi">913</td>
|
||||
<td class="coverFnLo">0</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="stream.c.gcov.html#659">sputb32</a></td>
|
||||
<td class="coverFnHi">62339359</td>
|
||||
<td class="coverFnHi">9119259</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="stream.c.gcov.html#680">sputb64</a></td>
|
||||
<td class="coverFnHi">34173479</td>
|
||||
<td class="coverFnHi">5293948</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="stream.c.gcov.html#701">sputble32</a></td>
|
||||
<td class="coverFnHi">929</td>
|
||||
<td class="coverFnHi">161</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="stream.c.gcov.html#713">sputbs</a></td>
|
||||
<td class="coverFnHi">12306366</td>
|
||||
<td class="coverFnHi">1884788</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="stream.c.gcov.html#373">sread</a></td>
|
||||
<td class="coverFnHi">12342909</td>
|
||||
<td class="coverFnHi">12515245</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="stream.c.gcov.html#727">ssync</a></td>
|
||||
<td class="coverFnHi">912</td>
|
||||
<td class="coverFnHi">145</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="stream.c.gcov.html#313">stell</a></td>
|
||||
|
|
@ -169,7 +169,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="stream.c.gcov.html#622">swrite</a></td>
|
||||
<td class="coverFnHi">129597634</td>
|
||||
<td class="coverFnHi">20661703</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
|
|
|
|||
|
|
@ -31,18 +31,18 @@
|
|||
<td class="headerValue">lcov.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntry">261</td>
|
||||
<td class="headerCovTableEntry">257</td>
|
||||
<td class="headerCovTableEntry">280</td>
|
||||
<td class="headerCovTableEntryHi">93.2 %</td>
|
||||
<td class="headerCovTableEntryHi">91.8 %</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Date:</td>
|
||||
<td class="headerValue">2015-11-20</td>
|
||||
<td class="headerValue">2016-01-09</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntry">27</td>
|
||||
<td class="headerCovTableEntry">28</td>
|
||||
<td class="headerCovTableEntry">28</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
<td class="headerCovTableEntryHi">96.4 %</td>
|
||||
</tr>
|
||||
<tr><td><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
|
|
@ -88,19 +88,19 @@
|
|||
<span class="lineNum"> 26 </span> :
|
||||
<a name="27"><span class="lineNum"> 27 </span> : unsigned STREAM_SIZE = 1024 * 64;</a>
|
||||
<span class="lineNum"> 28 </span> :
|
||||
<span class="lineNum"> 29 </span><span class="lineCov"> 1701 : STREAM* sopen_read(const char* file)</span>
|
||||
<span class="lineNum"> 29 </span><span class="lineCov"> 1794 : STREAM* sopen_read(const char* file)</span>
|
||||
<span class="lineNum"> 30 </span> : {
|
||||
<span class="lineNum"> 31 </span> : #if HAVE_POSIX_FADVISE
|
||||
<span class="lineNum"> 32 </span> : int ret;
|
||||
<span class="lineNum"> 33 </span> : #endif
|
||||
<span class="lineNum"> 34 </span><span class="lineCov"> 1701 : STREAM* s = malloc_nofail(sizeof(STREAM));</span>
|
||||
<span class="lineNum"> 34 </span><span class="lineCov"> 1794 : STREAM* s = malloc_nofail(sizeof(STREAM));</span>
|
||||
<span class="lineNum"> 35 </span> :
|
||||
<span class="lineNum"> 36 </span><span class="lineCov"> 1701 : s->handle_size = 1;</span>
|
||||
<span class="lineNum"> 37 </span><span class="lineCov"> 1701 : s->handle = malloc_nofail(sizeof(struct stream_handle));</span>
|
||||
<span class="lineNum"> 36 </span><span class="lineCov"> 1794 : s->handle_size = 1;</span>
|
||||
<span class="lineNum"> 37 </span><span class="lineCov"> 1794 : s->handle = malloc_nofail(sizeof(struct stream_handle));</span>
|
||||
<span class="lineNum"> 38 </span> :
|
||||
<span class="lineNum"> 39 </span><span class="lineCov"> 1700 : pathcpy(s->handle[0].path, sizeof(s->handle[0].path), file);</span>
|
||||
<span class="lineNum"> 40 </span><span class="lineCov"> 1701 : s->handle[0].f = open(file, O_RDONLY | O_BINARY | O_SEQUENTIAL);</span>
|
||||
<span class="lineNum"> 41 </span><span class="lineCov"> 1700 : if (s->handle[0].f == -1) {</span>
|
||||
<span class="lineNum"> 39 </span><span class="lineCov"> 1794 : pathcpy(s->handle[0].path, sizeof(s->handle[0].path), file);</span>
|
||||
<span class="lineNum"> 40 </span><span class="lineCov"> 1794 : s->handle[0].f = open(file, O_RDONLY | O_BINARY | O_SEQUENTIAL);</span>
|
||||
<span class="lineNum"> 41 </span><span class="lineCov"> 1794 : if (s->handle[0].f == -1) {</span>
|
||||
<span class="lineNum"> 42 </span><span class="lineCov"> 50 : free(s->handle);</span>
|
||||
<span class="lineNum"> 43 </span><span class="lineCov"> 50 : free(s);</span>
|
||||
<span class="lineNum"> 44 </span><span class="lineCov"> 50 : return 0;</span>
|
||||
|
|
@ -108,8 +108,8 @@
|
|||
<span class="lineNum"> 46 </span> :
|
||||
<span class="lineNum"> 47 </span> : #if HAVE_POSIX_FADVISE
|
||||
<span class="lineNum"> 48 </span> : /* advise sequential access */
|
||||
<span class="lineNum"> 49 </span><span class="lineCov"> 1650 : ret = posix_fadvise(s->handle[0].f, 0, 0, POSIX_FADV_SEQUENTIAL);</span>
|
||||
<span class="lineNum"> 50 </span><span class="lineCov"> 1644 : if (ret != 0) {</span>
|
||||
<span class="lineNum"> 49 </span><span class="lineCov"> 1744 : ret = posix_fadvise(s->handle[0].f, 0, 0, POSIX_FADV_SEQUENTIAL);</span>
|
||||
<span class="lineNum"> 50 </span><span class="lineCov"> 1744 : if (ret != 0) {</span>
|
||||
<span class="lineNum"> 51 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 52 </span> : close(s->handle[0].f);
|
||||
<span class="lineNum"> 53 </span> : free(s->handle);
|
||||
|
|
@ -119,57 +119,57 @@
|
|||
<span class="lineNum"> 57 </span> : }
|
||||
<span class="lineNum"> 58 </span> : #endif
|
||||
<span class="lineNum"> 59 </span> :
|
||||
<span class="lineNum"> 60 </span><span class="lineCov"> 1644 : s->buffer = malloc_nofail_test(STREAM_SIZE);</span>
|
||||
<span class="lineNum"> 61 </span><span class="lineCov"> 1650 : s->pos = s->buffer;</span>
|
||||
<span class="lineNum"> 62 </span><span class="lineCov"> 1650 : s->end = s->buffer;</span>
|
||||
<span class="lineNum"> 63 </span><span class="lineCov"> 1650 : s->state = STREAM_STATE_READ;</span>
|
||||
<span class="lineNum"> 64 </span><span class="lineCov"> 1650 : s->state_index = 0;</span>
|
||||
<span class="lineNum"> 65 </span><span class="lineCov"> 1650 : s->offset = 0;</span>
|
||||
<span class="lineNum"> 66 </span><span class="lineCov"> 1650 : s->offset_uncached = 0;</span>
|
||||
<span class="lineNum"> 67 </span><span class="lineCov"> 1650 : s->crc = 0;</span>
|
||||
<span class="lineNum"> 68 </span><span class="lineCov"> 1650 : s->crc_uncached = 0;</span>
|
||||
<span class="lineNum"> 69 </span><span class="lineCov"> 1650 : s->crc_stream = CRC_IV;</span>
|
||||
<span class="lineNum"> 60 </span><span class="lineCov"> 1744 : s->buffer = malloc_nofail_test(STREAM_SIZE);</span>
|
||||
<span class="lineNum"> 61 </span><span class="lineCov"> 1744 : s->pos = s->buffer;</span>
|
||||
<span class="lineNum"> 62 </span><span class="lineCov"> 1744 : s->end = s->buffer;</span>
|
||||
<span class="lineNum"> 63 </span><span class="lineCov"> 1744 : s->state = STREAM_STATE_READ;</span>
|
||||
<span class="lineNum"> 64 </span><span class="lineCov"> 1744 : s->state_index = 0;</span>
|
||||
<span class="lineNum"> 65 </span><span class="lineCov"> 1744 : s->offset = 0;</span>
|
||||
<span class="lineNum"> 66 </span><span class="lineCov"> 1744 : s->offset_uncached = 0;</span>
|
||||
<span class="lineNum"> 67 </span><span class="lineCov"> 1744 : s->crc = 0;</span>
|
||||
<span class="lineNum"> 68 </span><span class="lineCov"> 1744 : s->crc_uncached = 0;</span>
|
||||
<span class="lineNum"> 69 </span><span class="lineCov"> 1744 : s->crc_stream = CRC_IV;</span>
|
||||
<span class="lineNum"> 70 </span> :
|
||||
<span class="lineNum"> 71 </span><span class="lineCov"> 1650 : return s;</span>
|
||||
<span class="lineNum"> 71 </span><span class="lineCov"> 1744 : return s;</span>
|
||||
<a name="72"><span class="lineNum"> 72 </span> : }</a>
|
||||
<span class="lineNum"> 73 </span> :
|
||||
<span class="lineNum"> 74 </span><span class="lineCov"> 928 : STREAM* sopen_multi_write(unsigned count)</span>
|
||||
<span class="lineNum"> 74 </span><span class="lineCov"> 161 : STREAM* sopen_multi_write(unsigned count)</span>
|
||||
<span class="lineNum"> 75 </span> : {
|
||||
<span class="lineNum"> 76 </span> : unsigned i;
|
||||
<span class="lineNum"> 77 </span> :
|
||||
<span class="lineNum"> 78 </span><span class="lineCov"> 928 : STREAM* s = malloc_nofail(sizeof(STREAM));</span>
|
||||
<span class="lineNum"> 78 </span><span class="lineCov"> 161 : STREAM* s = malloc_nofail(sizeof(STREAM));</span>
|
||||
<span class="lineNum"> 79 </span> :
|
||||
<span class="lineNum"> 80 </span><span class="lineCov"> 929 : s->handle_size = count;</span>
|
||||
<span class="lineNum"> 81 </span><span class="lineCov"> 929 : s->handle = malloc_nofail(count * sizeof(struct stream_handle));</span>
|
||||
<span class="lineNum"> 80 </span><span class="lineCov"> 161 : s->handle_size = count;</span>
|
||||
<span class="lineNum"> 81 </span><span class="lineCov"> 161 : s->handle = malloc_nofail(count * sizeof(struct stream_handle));</span>
|
||||
<span class="lineNum"> 82 </span> :
|
||||
<span class="lineNum"> 83 </span><span class="lineCov"> 1968 : for (i = 0; i < count; ++i)</span>
|
||||
<span class="lineNum"> 84 </span><span class="lineCov"> 1040 : s->handle[i].f = -1;</span>
|
||||
<span class="lineNum"> 83 </span><span class="lineCov"> 1279 : for (i = 0; i < count; ++i)</span>
|
||||
<span class="lineNum"> 84 </span><span class="lineCov"> 1118 : s->handle[i].f = -1;</span>
|
||||
<span class="lineNum"> 85 </span> :
|
||||
<span class="lineNum"> 86 </span><span class="lineCov"> 928 : s->buffer = malloc_nofail_test(STREAM_SIZE);</span>
|
||||
<span class="lineNum"> 87 </span><span class="lineCov"> 929 : s->pos = s->buffer;</span>
|
||||
<span class="lineNum"> 88 </span><span class="lineCov"> 929 : s->end = s->buffer + STREAM_SIZE;</span>
|
||||
<span class="lineNum"> 89 </span><span class="lineCov"> 929 : s->state = STREAM_STATE_WRITE;</span>
|
||||
<span class="lineNum"> 90 </span><span class="lineCov"> 929 : s->state_index = 0;</span>
|
||||
<span class="lineNum"> 91 </span><span class="lineCov"> 929 : s->offset = 0;</span>
|
||||
<span class="lineNum"> 92 </span><span class="lineCov"> 929 : s->offset_uncached = 0;</span>
|
||||
<span class="lineNum"> 93 </span><span class="lineCov"> 929 : s->crc = 0;</span>
|
||||
<span class="lineNum"> 94 </span><span class="lineCov"> 929 : s->crc_uncached = 0;</span>
|
||||
<span class="lineNum"> 95 </span><span class="lineCov"> 929 : s->crc_stream = CRC_IV;</span>
|
||||
<span class="lineNum"> 86 </span><span class="lineCov"> 161 : s->buffer = malloc_nofail_test(STREAM_SIZE);</span>
|
||||
<span class="lineNum"> 87 </span><span class="lineCov"> 161 : s->pos = s->buffer;</span>
|
||||
<span class="lineNum"> 88 </span><span class="lineCov"> 161 : s->end = s->buffer + STREAM_SIZE;</span>
|
||||
<span class="lineNum"> 89 </span><span class="lineCov"> 161 : s->state = STREAM_STATE_WRITE;</span>
|
||||
<span class="lineNum"> 90 </span><span class="lineCov"> 161 : s->state_index = 0;</span>
|
||||
<span class="lineNum"> 91 </span><span class="lineCov"> 161 : s->offset = 0;</span>
|
||||
<span class="lineNum"> 92 </span><span class="lineCov"> 161 : s->offset_uncached = 0;</span>
|
||||
<span class="lineNum"> 93 </span><span class="lineCov"> 161 : s->crc = 0;</span>
|
||||
<span class="lineNum"> 94 </span><span class="lineCov"> 161 : s->crc_uncached = 0;</span>
|
||||
<span class="lineNum"> 95 </span><span class="lineCov"> 161 : s->crc_stream = CRC_IV;</span>
|
||||
<span class="lineNum"> 96 </span> :
|
||||
<span class="lineNum"> 97 </span><span class="lineCov"> 929 : return s;</span>
|
||||
<span class="lineNum"> 97 </span><span class="lineCov"> 161 : return s;</span>
|
||||
<a name="98"><span class="lineNum"> 98 </span> : }</a>
|
||||
<span class="lineNum"> 99 </span> :
|
||||
<span class="lineNum"> 100 </span><span class="lineCov"> 1041 : int sopen_multi_file(STREAM* s, unsigned i, const char* file)</span>
|
||||
<span class="lineNum"> 100 </span><span class="lineCov"> 1118 : int sopen_multi_file(STREAM* s, unsigned i, const char* file)</span>
|
||||
<span class="lineNum"> 101 </span> : {
|
||||
<span class="lineNum"> 102 </span> : #if HAVE_POSIX_FADVISE
|
||||
<span class="lineNum"> 103 </span> : int ret;
|
||||
<span class="lineNum"> 104 </span> : #endif
|
||||
<span class="lineNum"> 105 </span> : int f;
|
||||
<span class="lineNum"> 106 </span> :
|
||||
<span class="lineNum"> 107 </span><span class="lineCov"> 1041 : pathcpy(s->handle[i].path, sizeof(s->handle[i].path), file);</span>
|
||||
<span class="lineNum"> 107 </span><span class="lineCov"> 1118 : pathcpy(s->handle[i].path, sizeof(s->handle[i].path), file);</span>
|
||||
<span class="lineNum"> 108 </span> :
|
||||
<span class="lineNum"> 109 </span><span class="lineCov"> 1041 : f = open(file, O_WRONLY | O_CREAT | O_TRUNC | O_BINARY | O_SEQUENTIAL, 0600);</span>
|
||||
<span class="lineNum"> 110 </span><span class="lineCov"> 1041 : if (f == -1) {</span>
|
||||
<span class="lineNum"> 109 </span><span class="lineCov"> 1118 : f = open(file, O_WRONLY | O_CREAT | O_TRUNC | O_BINARY | O_SEQUENTIAL, 0600);</span>
|
||||
<span class="lineNum"> 110 </span><span class="lineCov"> 1118 : if (f == -1) {</span>
|
||||
<span class="lineNum"> 111 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 112 </span> : return -1;
|
||||
<span class="lineNum"> 113 </span> : /* LCOV_EXCL_STOP */
|
||||
|
|
@ -177,8 +177,8 @@
|
|||
<span class="lineNum"> 115 </span> :
|
||||
<span class="lineNum"> 116 </span> : #if HAVE_POSIX_FADVISE
|
||||
<span class="lineNum"> 117 </span> : /* advise sequential access */
|
||||
<span class="lineNum"> 118 </span><span class="lineCov"> 1041 : ret = posix_fadvise(f, 0, 0, POSIX_FADV_SEQUENTIAL);</span>
|
||||
<span class="lineNum"> 119 </span><span class="lineCov"> 1041 : if (ret != 0) {</span>
|
||||
<span class="lineNum"> 118 </span><span class="lineCov"> 1118 : ret = posix_fadvise(f, 0, 0, POSIX_FADV_SEQUENTIAL);</span>
|
||||
<span class="lineNum"> 119 </span><span class="lineCov"> 1118 : if (ret != 0) {</span>
|
||||
<span class="lineNum"> 120 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 121 </span> : close(f);
|
||||
<span class="lineNum"> 122 </span> : return -1;
|
||||
|
|
@ -186,167 +186,167 @@
|
|||
<span class="lineNum"> 124 </span> : }
|
||||
<span class="lineNum"> 125 </span> : #endif
|
||||
<span class="lineNum"> 126 </span> :
|
||||
<span class="lineNum"> 127 </span><span class="lineCov"> 1041 : s->handle[i].f = f;</span>
|
||||
<span class="lineNum"> 127 </span><span class="lineCov"> 1118 : s->handle[i].f = f;</span>
|
||||
<span class="lineNum"> 128 </span> :
|
||||
<span class="lineNum"> 129 </span><span class="lineCov"> 1041 : return 0;</span>
|
||||
<span class="lineNum"> 129 </span><span class="lineCov"> 1118 : return 0;</span>
|
||||
<a name="130"><span class="lineNum"> 130 </span> : }</a>
|
||||
<span class="lineNum"> 131 </span> :
|
||||
<span class="lineNum"> 132 </span><span class="lineCov"> 913 : STREAM* sopen_write(const char* file)</span>
|
||||
<span class="lineNum"> 132 </span><span class="lineNoCov"> 0 : STREAM* sopen_write(const char* file)</span>
|
||||
<span class="lineNum"> 133 </span> : {
|
||||
<span class="lineNum"> 134 </span><span class="lineCov"> 913 : STREAM* s = sopen_multi_write(1);</span>
|
||||
<span class="lineNum"> 134 </span><span class="lineNoCov"> 0 : STREAM* s = sopen_multi_write(1);</span>
|
||||
<span class="lineNum"> 135 </span> :
|
||||
<span class="lineNum"> 136 </span><span class="lineCov"> 913 : if (sopen_multi_file(s, 0, file) != 0) {</span>
|
||||
<span class="lineNum"> 136 </span><span class="lineNoCov"> 0 : if (sopen_multi_file(s, 0, file) != 0) {</span>
|
||||
<span class="lineNum"> 137 </span><span class="lineNoCov"> 0 : sclose(s);</span>
|
||||
<span class="lineNum"> 138 </span><span class="lineNoCov"> 0 : return 0;</span>
|
||||
<span class="lineNum"> 139 </span> : }
|
||||
<span class="lineNum"> 140 </span> :
|
||||
<span class="lineNum"> 141 </span><span class="lineCov"> 913 : return s;</span>
|
||||
<span class="lineNum"> 141 </span><span class="lineNoCov"> 0 : return s;</span>
|
||||
<a name="142"><span class="lineNum"> 142 </span> : }</a>
|
||||
<span class="lineNum"> 143 </span> :
|
||||
<span class="lineNum"> 144 </span><span class="lineCov"> 2575 : int sclose(STREAM* s)</span>
|
||||
<span class="lineNum"> 144 </span><span class="lineCov"> 1903 : int sclose(STREAM* s)</span>
|
||||
<span class="lineNum"> 145 </span> : {
|
||||
<span class="lineNum"> 146 </span><span class="lineCov"> 2575 : int fail = 0;</span>
|
||||
<span class="lineNum"> 146 </span><span class="lineCov"> 1903 : int fail = 0;</span>
|
||||
<span class="lineNum"> 147 </span> : unsigned i;
|
||||
<span class="lineNum"> 148 </span> :
|
||||
<span class="lineNum"> 149 </span><span class="lineCov"> 2575 : if (s->state == STREAM_STATE_WRITE) {</span>
|
||||
<span class="lineNum"> 150 </span><span class="lineCov"> 927 : if (sflush(s) != 0) {</span>
|
||||
<span class="lineNum"> 149 </span><span class="lineCov"> 1903 : if (s->state == STREAM_STATE_WRITE) {</span>
|
||||
<span class="lineNum"> 150 </span><span class="lineCov"> 161 : if (sflush(s) != 0) {</span>
|
||||
<span class="lineNum"> 151 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 152 </span> : fail = 1;
|
||||
<span class="lineNum"> 153 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 154 </span> : }
|
||||
<span class="lineNum"> 155 </span> : }
|
||||
<span class="lineNum"> 156 </span> :
|
||||
<span class="lineNum"> 157 </span><span class="lineCov"> 5266 : for (i = 0; i < s->handle_size; ++i) {</span>
|
||||
<span class="lineNum"> 158 </span><span class="lineCov"> 2688 : if (close(s->handle[i].f) != 0) {</span>
|
||||
<span class="lineNum"> 157 </span><span class="lineCov"> 4763 : for (i = 0; i < s->handle_size; ++i) {</span>
|
||||
<span class="lineNum"> 158 </span><span class="lineCov"> 2860 : if (close(s->handle[i].f) != 0) {</span>
|
||||
<span class="lineNum"> 159 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 160 </span> : fail = 1;
|
||||
<span class="lineNum"> 161 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 162 </span> : }
|
||||
<span class="lineNum"> 163 </span> : }
|
||||
<span class="lineNum"> 164 </span> :
|
||||
<span class="lineNum"> 165 </span><span class="lineCov"> 2578 : free(s->handle);</span>
|
||||
<span class="lineNum"> 166 </span><span class="lineCov"> 2578 : free(s->buffer);</span>
|
||||
<span class="lineNum"> 167 </span><span class="lineCov"> 2578 : free(s);</span>
|
||||
<span class="lineNum"> 165 </span><span class="lineCov"> 1903 : free(s->handle);</span>
|
||||
<span class="lineNum"> 166 </span><span class="lineCov"> 1903 : free(s->buffer);</span>
|
||||
<span class="lineNum"> 167 </span><span class="lineCov"> 1903 : free(s);</span>
|
||||
<span class="lineNum"> 168 </span> :
|
||||
<span class="lineNum"> 169 </span><span class="lineCov"> 2578 : if (fail) {</span>
|
||||
<span class="lineNum"> 169 </span><span class="lineCov"> 1903 : if (fail) {</span>
|
||||
<span class="lineNum"> 170 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 171 </span> : return -1;
|
||||
<span class="lineNum"> 172 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 173 </span> : }
|
||||
<span class="lineNum"> 174 </span> :
|
||||
<span class="lineNum"> 175 </span><span class="lineCov"> 2578 : return 0;</span>
|
||||
<span class="lineNum"> 175 </span><span class="lineCov"> 1903 : return 0;</span>
|
||||
<a name="176"><span class="lineNum"> 176 </span> : }</a>
|
||||
<span class="lineNum"> 177 </span> :
|
||||
<span class="lineNum"> 178 </span><span class="lineCov"> 235 : int shandle(STREAM* s)</span>
|
||||
<span class="lineNum"> 178 </span><span class="lineCov"> 243 : int shandle(STREAM* s)</span>
|
||||
<span class="lineNum"> 179 </span> : {
|
||||
<span class="lineNum"> 180 </span><span class="lineCov"> 235 : if (!s->handle_size) {</span>
|
||||
<span class="lineNum"> 180 </span><span class="lineCov"> 243 : if (!s->handle_size) {</span>
|
||||
<span class="lineNum"> 181 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 182 </span> : return -1;
|
||||
<span class="lineNum"> 183 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 184 </span> : }
|
||||
<span class="lineNum"> 185 </span> :
|
||||
<span class="lineNum"> 186 </span><span class="lineCov"> 235 : return s->handle[0].f;</span>
|
||||
<span class="lineNum"> 186 </span><span class="lineCov"> 243 : return s->handle[0].f;</span>
|
||||
<span class="lineNum"> 187 </span> : }
|
||||
<span class="lineNum"> 188 </span> :
|
||||
<span class="lineNum"> 189 </span> : /**
|
||||
<span class="lineNum"> 190 </span> : * Fill the read stream buffer.
|
||||
<a name="191"><span class="lineNum"> 191 </span> : * \return 0 if at least on char is read, or EOF on error.</a>
|
||||
<span class="lineNum"> 192 </span> : */
|
||||
<span class="lineNum"> 193 </span><span class="lineCov"> 606496 : static int sfill(STREAM* s)</span>
|
||||
<span class="lineNum"> 193 </span><span class="lineCov"> 607118 : static int sfill(STREAM* s)</span>
|
||||
<span class="lineNum"> 194 </span> : {
|
||||
<span class="lineNum"> 195 </span> : ssize_t ret;
|
||||
<span class="lineNum"> 196 </span> :
|
||||
<span class="lineNum"> 197 </span><span class="lineCov"> 606496 : if (s->state != STREAM_STATE_READ) {</span>
|
||||
<span class="lineNum"> 197 </span><span class="lineCov"> 607118 : if (s->state != STREAM_STATE_READ) {</span>
|
||||
<span class="lineNum"> 198 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 199 </span> : return EOF;
|
||||
<span class="lineNum"> 200 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 201 </span> : }
|
||||
<span class="lineNum"> 202 </span> :
|
||||
<span class="lineNum"> 203 </span><span class="lineCov"> 605512 : ret = read(s->handle[0].f, s->buffer, STREAM_SIZE);</span>
|
||||
<span class="lineNum"> 203 </span><span class="lineCov"> 606102 : ret = read(s->handle[0].f, s->buffer, STREAM_SIZE);</span>
|
||||
<span class="lineNum"> 204 </span> :
|
||||
<span class="lineNum"> 205 </span><span class="lineCov"> 605512 : if (ret < 0) {</span>
|
||||
<span class="lineNum"> 205 </span><span class="lineCov"> 606102 : if (ret < 0) {</span>
|
||||
<span class="lineNum"> 206 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 207 </span> : s->state = STREAM_STATE_ERROR;
|
||||
<span class="lineNum"> 208 </span> : return EOF;
|
||||
<span class="lineNum"> 209 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 210 </span> : }
|
||||
<span class="lineNum"> 211 </span><span class="lineCov"> 605512 : if (ret == 0) {</span>
|
||||
<span class="lineNum"> 212 </span><span class="lineCov"> 1522 : s->state = STREAM_STATE_EOF;</span>
|
||||
<span class="lineNum"> 213 </span><span class="lineCov"> 1522 : return EOF;</span>
|
||||
<span class="lineNum"> 211 </span><span class="lineCov"> 606102 : if (ret == 0) {</span>
|
||||
<span class="lineNum"> 212 </span><span class="lineCov"> 1615 : s->state = STREAM_STATE_EOF;</span>
|
||||
<span class="lineNum"> 213 </span><span class="lineCov"> 1615 : return EOF;</span>
|
||||
<span class="lineNum"> 214 </span> : }
|
||||
<span class="lineNum"> 215 </span> :
|
||||
<span class="lineNum"> 216 </span> : /* update the crc */
|
||||
<span class="lineNum"> 217 </span><span class="lineCov"> 603990 : s->crc_uncached = s->crc;</span>
|
||||
<span class="lineNum"> 218 </span><span class="lineCov"> 603990 : s->crc = crc32c(s->crc, s->buffer, ret);</span>
|
||||
<span class="lineNum"> 217 </span><span class="lineCov"> 604487 : s->crc_uncached = s->crc;</span>
|
||||
<span class="lineNum"> 218 </span><span class="lineCov"> 604487 : s->crc = crc32c(s->crc, s->buffer, ret);</span>
|
||||
<span class="lineNum"> 219 </span> :
|
||||
<span class="lineNum"> 220 </span> : /* update the offset */
|
||||
<span class="lineNum"> 221 </span><span class="lineCov"> 603990 : s->offset_uncached = s->offset;</span>
|
||||
<span class="lineNum"> 222 </span><span class="lineCov"> 603990 : s->offset += ret;</span>
|
||||
<span class="lineNum"> 221 </span><span class="lineCov"> 604487 : s->offset_uncached = s->offset;</span>
|
||||
<span class="lineNum"> 222 </span><span class="lineCov"> 604487 : s->offset += ret;</span>
|
||||
<span class="lineNum"> 223 </span> :
|
||||
<span class="lineNum"> 224 </span><span class="lineCov"> 603990 : s->pos = s->buffer;</span>
|
||||
<span class="lineNum"> 225 </span><span class="lineCov"> 603990 : s->end = s->buffer + ret;</span>
|
||||
<span class="lineNum"> 224 </span><span class="lineCov"> 604487 : s->pos = s->buffer;</span>
|
||||
<span class="lineNum"> 225 </span><span class="lineCov"> 604487 : s->end = s->buffer + ret;</span>
|
||||
<span class="lineNum"> 226 </span> :
|
||||
<span class="lineNum"> 227 </span><span class="lineCov"> 603990 : return 0;</span>
|
||||
<span class="lineNum"> 227 </span><span class="lineCov"> 604487 : return 0;</span>
|
||||
<a name="228"><span class="lineNum"> 228 </span> : }</a>
|
||||
<span class="lineNum"> 229 </span> :
|
||||
<span class="lineNum"> 230 </span><span class="lineCov"> 1042 : int sdeplete(STREAM* s, unsigned char* last)</span>
|
||||
<span class="lineNum"> 230 </span><span class="lineCov"> 1119 : int sdeplete(STREAM* s, unsigned char* last)</span>
|
||||
<span class="lineNum"> 231 </span> : {
|
||||
<span class="lineNum"> 232 </span> : /* last four bytes */
|
||||
<span class="lineNum"> 233 </span><span class="lineCov"> 1042 : last[0] = 0;</span>
|
||||
<span class="lineNum"> 234 </span><span class="lineCov"> 1042 : last[1] = 0;</span>
|
||||
<span class="lineNum"> 235 </span><span class="lineCov"> 1042 : last[2] = 0;</span>
|
||||
<span class="lineNum"> 236 </span><span class="lineCov"> 1042 : last[3] = 0;</span>
|
||||
<span class="lineNum"> 233 </span><span class="lineCov"> 1119 : last[0] = 0;</span>
|
||||
<span class="lineNum"> 234 </span><span class="lineCov"> 1119 : last[1] = 0;</span>
|
||||
<span class="lineNum"> 235 </span><span class="lineCov"> 1119 : last[2] = 0;</span>
|
||||
<span class="lineNum"> 236 </span><span class="lineCov"> 1119 : last[3] = 0;</span>
|
||||
<span class="lineNum"> 237 </span> :
|
||||
<span class="lineNum"> 238 </span> : while (1) {
|
||||
<span class="lineNum"> 239 </span> : /* increase the position up to 4 bytes before the end */
|
||||
<span class="lineNum"> 240 </span><span class="lineCov"> 307911 : if (s->pos + 4 <= s->end)</span>
|
||||
<span class="lineNum"> 241 </span><span class="lineCov"> 148134 : s->pos = s->end - 4;</span>
|
||||
<span class="lineNum"> 240 </span><span class="lineCov"> 308434 : if (s->pos + 4 <= s->end)</span>
|
||||
<span class="lineNum"> 241 </span><span class="lineCov"> 148580 : s->pos = s->end - 4;</span>
|
||||
<span class="lineNum"> 242 </span> :
|
||||
<span class="lineNum"> 243 </span> : /* insert the last 4 bytes */
|
||||
<span class="lineNum"> 244 </span><span class="lineCov"> 1468126 : while (s->pos < s->end) {</span>
|
||||
<span class="lineNum"> 245 </span><span class="lineCov"> 852304 : last[0] = last[1];</span>
|
||||
<span class="lineNum"> 246 </span><span class="lineCov"> 852304 : last[1] = last[2];</span>
|
||||
<span class="lineNum"> 247 </span><span class="lineCov"> 852304 : last[2] = last[3];</span>
|
||||
<span class="lineNum"> 248 </span><span class="lineCov"> 852304 : last[3] = *s->pos++;</span>
|
||||
<span class="lineNum"> 244 </span><span class="lineCov"> 1470956 : while (s->pos < s->end) {</span>
|
||||
<span class="lineNum"> 245 </span><span class="lineCov"> 854088 : last[0] = last[1];</span>
|
||||
<span class="lineNum"> 246 </span><span class="lineCov"> 854088 : last[1] = last[2];</span>
|
||||
<span class="lineNum"> 247 </span><span class="lineCov"> 854088 : last[2] = last[3];</span>
|
||||
<span class="lineNum"> 248 </span><span class="lineCov"> 854088 : last[3] = *s->pos++;</span>
|
||||
<span class="lineNum"> 249 </span> : }
|
||||
<span class="lineNum"> 250 </span> :
|
||||
<span class="lineNum"> 251 </span> : /* fill again the buffer until the end of the file */
|
||||
<span class="lineNum"> 252 </span><span class="lineCov"> 307911 : if (sfill(s) != 0) {</span>
|
||||
<span class="lineNum"> 252 </span><span class="lineCov"> 308434 : if (sfill(s) != 0) {</span>
|
||||
<span class="lineNum"> 253 </span> : /* on error fail */
|
||||
<span class="lineNum"> 254 </span><span class="lineCov"> 1042 : if (serror(s)) {</span>
|
||||
<span class="lineNum"> 254 </span><span class="lineCov"> 1119 : if (serror(s)) {</span>
|
||||
<span class="lineNum"> 255 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 256 </span> : return EOF;
|
||||
<span class="lineNum"> 257 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 258 </span> : }
|
||||
<span class="lineNum"> 259 </span> :
|
||||
<span class="lineNum"> 260 </span> : /* on EOF terminate */
|
||||
<span class="lineNum"> 261 </span><span class="lineCov"> 1042 : break;</span>
|
||||
<span class="lineNum"> 261 </span><span class="lineCov"> 1119 : break;</span>
|
||||
<span class="lineNum"> 262 </span> : }
|
||||
<span class="lineNum"> 263 </span><span class="lineCov"> 306869 : }</span>
|
||||
<span class="lineNum"> 263 </span><span class="lineCov"> 307315 : }</span>
|
||||
<span class="lineNum"> 264 </span> :
|
||||
<span class="lineNum"> 265 </span><span class="lineCov"> 1042 : return 0;</span>
|
||||
<span class="lineNum"> 265 </span><span class="lineCov"> 1119 : return 0;</span>
|
||||
<a name="266"><span class="lineNum"> 266 </span> : }</a>
|
||||
<span class="lineNum"> 267 </span> :
|
||||
<span class="lineNum"> 268 </span><span class="lineCov"> 52590 : int sflush(STREAM* s)</span>
|
||||
<span class="lineNum"> 268 </span><span class="lineCov"> 39024 : int sflush(STREAM* s)</span>
|
||||
<span class="lineNum"> 269 </span> : {
|
||||
<span class="lineNum"> 270 </span> : ssize_t ret;
|
||||
<span class="lineNum"> 271 </span> : ssize_t size;
|
||||
<span class="lineNum"> 272 </span> : unsigned i;
|
||||
<span class="lineNum"> 273 </span> :
|
||||
<span class="lineNum"> 274 </span><span class="lineCov"> 52590 : if (s->state != STREAM_STATE_WRITE) {</span>
|
||||
<span class="lineNum"> 274 </span><span class="lineCov"> 39024 : if (s->state != STREAM_STATE_WRITE) {</span>
|
||||
<span class="lineNum"> 275 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 276 </span> : return EOF;
|
||||
<span class="lineNum"> 277 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 278 </span> : }
|
||||
<span class="lineNum"> 279 </span> :
|
||||
<span class="lineNum"> 280 </span><span class="lineCov"> 52590 : size = s->pos - s->buffer;</span>
|
||||
<span class="lineNum"> 281 </span><span class="lineCov"> 52590 : if (!size)</span>
|
||||
<span class="lineNum"> 282 </span><span class="lineCov"> 909 : return 0;</span>
|
||||
<span class="lineNum"> 280 </span><span class="lineCov"> 39024 : size = s->pos - s->buffer;</span>
|
||||
<span class="lineNum"> 281 </span><span class="lineCov"> 39024 : if (!size)</span>
|
||||
<span class="lineNum"> 282 </span><span class="lineCov"> 145 : return 0;</span>
|
||||
<span class="lineNum"> 283 </span> :
|
||||
<span class="lineNum"> 284 </span><span class="lineCov"> 359449 : for (i = 0; i < s->handle_size; ++i) {</span>
|
||||
<span class="lineNum"> 285 </span><span class="lineCov"> 307768 : ret = write(s->handle[i].f, s->buffer, size);</span>
|
||||
<span class="lineNum"> 284 </span><span class="lineCov"> 347171 : for (i = 0; i < s->handle_size; ++i) {</span>
|
||||
<span class="lineNum"> 285 </span><span class="lineCov"> 308292 : ret = write(s->handle[i].f, s->buffer, size);</span>
|
||||
<span class="lineNum"> 286 </span> :
|
||||
<span class="lineNum"> 287 </span><span class="lineCov"> 307768 : if (ret != size) {</span>
|
||||
<span class="lineNum"> 287 </span><span class="lineCov"> 308292 : if (ret != size) {</span>
|
||||
<span class="lineNum"> 288 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 289 </span> : s->state = STREAM_STATE_ERROR;
|
||||
<span class="lineNum"> 290 </span> : s->state_index = i;
|
||||
|
|
@ -362,16 +362,16 @@
|
|||
<span class="lineNum"> 300 </span> : * to be able to detect memory errors on the buffer,
|
||||
<span class="lineNum"> 301 </span> : * happening during the write.
|
||||
<span class="lineNum"> 302 </span> : */
|
||||
<span class="lineNum"> 303 </span><span class="lineCov"> 51681 : s->crc = crc32c(s->crc, s->buffer, size);</span>
|
||||
<span class="lineNum"> 304 </span><span class="lineCov"> 51680 : s->crc_uncached = s->crc;</span>
|
||||
<span class="lineNum"> 303 </span><span class="lineCov"> 38879 : s->crc = crc32c(s->crc, s->buffer, size);</span>
|
||||
<span class="lineNum"> 304 </span><span class="lineCov"> 38879 : s->crc_uncached = s->crc;</span>
|
||||
<span class="lineNum"> 305 </span> :
|
||||
<span class="lineNum"> 306 </span> : /* update the offset */
|
||||
<span class="lineNum"> 307 </span><span class="lineCov"> 51680 : s->offset += size;</span>
|
||||
<span class="lineNum"> 308 </span><span class="lineCov"> 51680 : s->offset_uncached = s->offset;</span>
|
||||
<span class="lineNum"> 307 </span><span class="lineCov"> 38879 : s->offset += size;</span>
|
||||
<span class="lineNum"> 308 </span><span class="lineCov"> 38879 : s->offset_uncached = s->offset;</span>
|
||||
<span class="lineNum"> 309 </span> :
|
||||
<span class="lineNum"> 310 </span><span class="lineCov"> 51680 : s->pos = s->buffer;</span>
|
||||
<span class="lineNum"> 310 </span><span class="lineCov"> 38879 : s->pos = s->buffer;</span>
|
||||
<span class="lineNum"> 311 </span> :
|
||||
<span class="lineNum"> 312 </span><span class="lineCov"> 51680 : return 0;</span>
|
||||
<span class="lineNum"> 312 </span><span class="lineCov"> 38879 : return 0;</span>
|
||||
<a name="313"><span class="lineNum"> 313 </span> : }</a>
|
||||
<span class="lineNum"> 314 </span> :
|
||||
<span class="lineNum"> 315 </span><span class="lineCov"> 1 : int64_t stell(STREAM* s)</span>
|
||||
|
|
@ -379,100 +379,100 @@
|
|||
<span class="lineNum"> 317 </span><span class="lineCov"> 1 : return s->offset_uncached + (s->pos - s->buffer);</span>
|
||||
<a name="318"><span class="lineNum"> 318 </span> : }</a>
|
||||
<span class="lineNum"> 319 </span> :
|
||||
<span class="lineNum"> 320 </span><span class="lineCov"> 2333 : uint32_t scrc(STREAM*s)</span>
|
||||
<span class="lineNum"> 320 </span><span class="lineCov"> 1650 : uint32_t scrc(STREAM*s)</span>
|
||||
<span class="lineNum"> 321 </span> : {
|
||||
<span class="lineNum"> 322 </span><span class="lineCov"> 2333 : return crc32c(s->crc_uncached, s->buffer, s->pos - s->buffer);</span>
|
||||
<span class="lineNum"> 322 </span><span class="lineCov"> 1650 : return crc32c(s->crc_uncached, s->buffer, s->pos - s->buffer);</span>
|
||||
<a name="323"><span class="lineNum"> 323 </span> : }</a>
|
||||
<span class="lineNum"> 324 </span> :
|
||||
<span class="lineNum"> 325 </span><span class="lineCov"> 929 : uint32_t scrc_stream(STREAM*s)</span>
|
||||
<span class="lineNum"> 325 </span><span class="lineCov"> 161 : uint32_t scrc_stream(STREAM*s)</span>
|
||||
<span class="lineNum"> 326 </span> : {
|
||||
<span class="lineNum"> 327 </span><span class="lineCov"> 929 : return s->crc_stream ^ CRC_IV;</span>
|
||||
<span class="lineNum"> 327 </span><span class="lineCov"> 161 : return s->crc_stream ^ CRC_IV;</span>
|
||||
<a name="328"><span class="lineNum"> 328 </span> : }</a>
|
||||
<span class="lineNum"> 329 </span> :
|
||||
<span class="lineNum"> 330 </span><span class="lineCov"> 298585 : int sgetc_uncached(STREAM* s)</span>
|
||||
<span class="lineNum"> 330 </span><span class="lineCov"> 298684 : int sgetc_uncached(STREAM* s)</span>
|
||||
<span class="lineNum"> 331 </span> : {
|
||||
<span class="lineNum"> 332 </span> : /* if at the end of the buffer, fill it */
|
||||
<span class="lineNum"> 333 </span><span class="lineCov"> 298585 : if (s->pos == s->end && sfill(s) != 0)</span>
|
||||
<span class="lineNum"> 334 </span><span class="lineCov"> 1464 : return EOF;</span>
|
||||
<span class="lineNum"> 335 </span><span class="lineCov"> 297121 : return *s->pos++;</span>
|
||||
<span class="lineNum"> 333 </span><span class="lineCov"> 298684 : if (s->pos == s->end && sfill(s) != 0)</span>
|
||||
<span class="lineNum"> 334 </span><span class="lineCov"> 1512 : return EOF;</span>
|
||||
<span class="lineNum"> 335 </span><span class="lineCov"> 297172 : return *s->pos++;</span>
|
||||
<a name="336"><span class="lineNum"> 336 </span> : }</a>
|
||||
<span class="lineNum"> 337 </span> :
|
||||
<span class="lineNum"> 338 </span><span class="lineCov"> 7623 : int sgettok(STREAM* f, char* str, int size)</span>
|
||||
<span class="lineNum"> 338 </span><span class="lineCov"> 7892 : int sgettok(STREAM* f, char* str, int size)</span>
|
||||
<span class="lineNum"> 339 </span> : {
|
||||
<span class="lineNum"> 340 </span><span class="lineCov"> 7623 : char* i = str;</span>
|
||||
<span class="lineNum"> 341 </span><span class="lineCov"> 7623 : char* send = str + size;</span>
|
||||
<span class="lineNum"> 340 </span><span class="lineCov"> 7892 : char* i = str;</span>
|
||||
<span class="lineNum"> 341 </span><span class="lineCov"> 7892 : char* send = str + size;</span>
|
||||
<span class="lineNum"> 342 </span> : int c;
|
||||
<span class="lineNum"> 343 </span> :
|
||||
<span class="lineNum"> 344 </span> : while (1) {
|
||||
<span class="lineNum"> 345 </span><span class="lineCov"> 50866 : c = sgetc(f);</span>
|
||||
<span class="lineNum"> 346 </span><span class="lineCov"> 50866 : if (c == EOF) {</span>
|
||||
<span class="lineNum"> 347 </span><span class="lineCov"> 246 : break;</span>
|
||||
<span class="lineNum"> 345 </span><span class="lineCov"> 52707 : c = sgetc(f);</span>
|
||||
<span class="lineNum"> 346 </span><span class="lineCov"> 52707 : if (c == EOF) {</span>
|
||||
<span class="lineNum"> 347 </span><span class="lineCov"> 254 : break;</span>
|
||||
<span class="lineNum"> 348 </span> : }
|
||||
<span class="lineNum"> 349 </span><span class="lineCov"> 50620 : if (c == ' ' || c == '\t') {</span>
|
||||
<span class="lineNum"> 350 </span><span class="lineCov"> 7131 : sungetc(c, f);</span>
|
||||
<span class="lineNum"> 351 </span><span class="lineCov"> 7131 : break;</span>
|
||||
<span class="lineNum"> 349 </span><span class="lineCov"> 52453 : if (c == ' ' || c == '\t') {</span>
|
||||
<span class="lineNum"> 350 </span><span class="lineCov"> 7383 : sungetc(c, f);</span>
|
||||
<span class="lineNum"> 351 </span><span class="lineCov"> 7383 : break;</span>
|
||||
<span class="lineNum"> 352 </span> : }
|
||||
<span class="lineNum"> 353 </span><span class="lineCov"> 43489 : if (c == '\n') {</span>
|
||||
<span class="lineNum"> 353 </span><span class="lineCov"> 45070 : if (c == '\n') {</span>
|
||||
<span class="lineNum"> 354 </span> : /* remove ending carrige return to support the Windows CR+LF format */
|
||||
<span class="lineNum"> 355 </span><span class="lineCov"> 246 : if (i != str && i[-1] == '\r')</span>
|
||||
<span class="lineNum"> 355 </span><span class="lineCov"> 255 : if (i != str && i[-1] == '\r')</span>
|
||||
<span class="lineNum"> 356 </span><span class="lineNoCov"> 0 : --i;</span>
|
||||
<span class="lineNum"> 357 </span><span class="lineCov"> 246 : sungetc(c, f);</span>
|
||||
<span class="lineNum"> 358 </span><span class="lineCov"> 246 : break;</span>
|
||||
<span class="lineNum"> 357 </span><span class="lineCov"> 255 : sungetc(c, f);</span>
|
||||
<span class="lineNum"> 358 </span><span class="lineCov"> 255 : break;</span>
|
||||
<span class="lineNum"> 359 </span> : }
|
||||
<span class="lineNum"> 360 </span> :
|
||||
<span class="lineNum"> 361 </span><span class="lineCov"> 43243 : *i++ = c;</span>
|
||||
<span class="lineNum"> 361 </span><span class="lineCov"> 44815 : *i++ = c;</span>
|
||||
<span class="lineNum"> 362 </span> :
|
||||
<span class="lineNum"> 363 </span><span class="lineCov"> 43243 : if (i == send) {</span>
|
||||
<span class="lineNum"> 363 </span><span class="lineCov"> 44815 : if (i == send) {</span>
|
||||
<span class="lineNum"> 364 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 365 </span> : return -1;
|
||||
<span class="lineNum"> 366 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 367 </span> : }
|
||||
<span class="lineNum"> 368 </span><span class="lineCov"> 43243 : }</span>
|
||||
<span class="lineNum"> 368 </span><span class="lineCov"> 44815 : }</span>
|
||||
<span class="lineNum"> 369 </span> :
|
||||
<span class="lineNum"> 370 </span><span class="lineCov"> 7623 : *i = 0;</span>
|
||||
<span class="lineNum"> 370 </span><span class="lineCov"> 7892 : *i = 0;</span>
|
||||
<span class="lineNum"> 371 </span> :
|
||||
<span class="lineNum"> 372 </span><span class="lineCov"> 7623 : return i - str;</span>
|
||||
<span class="lineNum"> 372 </span><span class="lineCov"> 7892 : return i - str;</span>
|
||||
<a name="373"><span class="lineNum"> 373 </span> : }</a>
|
||||
<span class="lineNum"> 374 </span> :
|
||||
<span class="lineNum"> 375 </span><span class="lineCov"> 12342909 : int sread(STREAM* f, void* void_data, unsigned size)</span>
|
||||
<span class="lineNum"> 375 </span><span class="lineCov"> 12515245 : int sread(STREAM* f, void* void_data, unsigned size)</span>
|
||||
<span class="lineNum"> 376 </span> : {
|
||||
<span class="lineNum"> 377 </span><span class="lineCov"> 12342909 : unsigned char* data = void_data;</span>
|
||||
<span class="lineNum"> 377 </span><span class="lineCov"> 12515245 : unsigned char* data = void_data;</span>
|
||||
<span class="lineNum"> 378 </span> :
|
||||
<span class="lineNum"> 379 </span> : /* if there is enough space in memory */
|
||||
<span class="lineNum"> 380 </span><span class="lineCov"> 12342909 : if (sptrlookup(f, size)) {</span>
|
||||
<span class="lineNum"> 380 </span><span class="lineCov"> 12515245 : if (sptrlookup(f, size)) {</span>
|
||||
<span class="lineNum"> 381 </span> : /* optimized version with all the data in memory */
|
||||
<span class="lineNum"> 382 </span><span class="lineCov"> 12316849 : unsigned char* pos = sptrget(f);</span>
|
||||
<span class="lineNum"> 382 </span><span class="lineCov"> 12489054 : unsigned char* pos = sptrget(f);</span>
|
||||
<span class="lineNum"> 383 </span> :
|
||||
<span class="lineNum"> 384 </span> : /* copy it */
|
||||
<span class="lineNum"> 385 </span><span class="lineCov"> 209697747 : while (size--)</span>
|
||||
<span class="lineNum"> 386 </span><span class="lineCov"> 185064049 : *data++ = *pos++;</span>
|
||||
<span class="lineNum"> 385 </span><span class="lineCov"> 212622570 : while (size--)</span>
|
||||
<span class="lineNum"> 386 </span><span class="lineCov"> 187644462 : *data++ = *pos++;</span>
|
||||
<span class="lineNum"> 387 </span> :
|
||||
<span class="lineNum"> 388 </span><span class="lineCov"> 12316849 : sptrset(f, pos);</span>
|
||||
<span class="lineNum"> 388 </span><span class="lineCov"> 12489054 : sptrset(f, pos);</span>
|
||||
<span class="lineNum"> 389 </span> : } else {
|
||||
<span class="lineNum"> 390 </span> : /* standard version using sgetc() */
|
||||
<span class="lineNum"> 391 </span><span class="lineCov"> 1373859 : while (size--) {</span>
|
||||
<span class="lineNum"> 392 </span><span class="lineCov"> 1321739 : int c = sgetc(f);</span>
|
||||
<span class="lineNum"> 393 </span><span class="lineCov"> 1321739 : if (c == EOF) {</span>
|
||||
<span class="lineNum"> 391 </span><span class="lineCov"> 1376682 : while (size--) {</span>
|
||||
<span class="lineNum"> 392 </span><span class="lineCov"> 1324300 : int c = sgetc(f);</span>
|
||||
<span class="lineNum"> 393 </span><span class="lineCov"> 1324300 : if (c == EOF) {</span>
|
||||
<span class="lineNum"> 394 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 395 </span> : return -1;
|
||||
<span class="lineNum"> 396 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 397 </span> : }
|
||||
<span class="lineNum"> 398 </span> :
|
||||
<span class="lineNum"> 399 </span><span class="lineCov"> 1321739 : *data++ = c;</span>
|
||||
<span class="lineNum"> 399 </span><span class="lineCov"> 1324300 : *data++ = c;</span>
|
||||
<span class="lineNum"> 400 </span> : }
|
||||
<span class="lineNum"> 401 </span> : }
|
||||
<span class="lineNum"> 402 </span> :
|
||||
<span class="lineNum"> 403 </span><span class="lineCov"> 12342909 : return 0;</span>
|
||||
<span class="lineNum"> 403 </span><span class="lineCov"> 12515245 : return 0;</span>
|
||||
<a name="404"><span class="lineNum"> 404 </span> : }</a>
|
||||
<span class="lineNum"> 405 </span> :
|
||||
<span class="lineNum"> 406 </span><span class="lineCov"> 5069 : int sgetline(STREAM* f, char* str, int size)</span>
|
||||
<span class="lineNum"> 406 </span><span class="lineCov"> 5251 : int sgetline(STREAM* f, char* str, int size)</span>
|
||||
<span class="lineNum"> 407 </span> : {
|
||||
<span class="lineNum"> 408 </span><span class="lineCov"> 5069 : char* i = str;</span>
|
||||
<span class="lineNum"> 409 </span><span class="lineCov"> 5069 : char* send = str + size;</span>
|
||||
<span class="lineNum"> 408 </span><span class="lineCov"> 5251 : char* i = str;</span>
|
||||
<span class="lineNum"> 409 </span><span class="lineCov"> 5251 : char* send = str + size;</span>
|
||||
<span class="lineNum"> 410 </span> : int c;
|
||||
<span class="lineNum"> 411 </span> :
|
||||
<span class="lineNum"> 412 </span> : /* if there is enough data in memory */
|
||||
<span class="lineNum"> 413 </span><span class="lineCov"> 5069 : if (sptrlookup(f, size)) {</span>
|
||||
<span class="lineNum"> 413 </span><span class="lineCov"> 5251 : if (sptrlookup(f, size)) {</span>
|
||||
<span class="lineNum"> 414 </span> : /* optimized version with all the data in memory */
|
||||
<span class="lineNum"> 415 </span><span class="lineNoCov"> 0 : unsigned char* pos = sptrget(f);</span>
|
||||
<span class="lineNum"> 416 </span> :
|
||||
|
|
@ -498,75 +498,75 @@
|
|||
<span class="lineNum"> 436 </span><span class="lineNoCov"> 0 : sptrset(f, pos);</span>
|
||||
<span class="lineNum"> 437 </span> : } else {
|
||||
<span class="lineNum"> 438 </span> : while (1) {
|
||||
<span class="lineNum"> 439 </span><span class="lineCov"> 68948 : c = sgetc(f);</span>
|
||||
<span class="lineNum"> 440 </span><span class="lineCov"> 68948 : if (c == EOF) {</span>
|
||||
<span class="lineNum"> 439 </span><span class="lineCov"> 71440 : c = sgetc(f);</span>
|
||||
<span class="lineNum"> 440 </span><span class="lineCov"> 71440 : if (c == EOF) {</span>
|
||||
<span class="lineNum"> 441 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 442 </span> : break;
|
||||
<span class="lineNum"> 443 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 444 </span> : }
|
||||
<span class="lineNum"> 445 </span><span class="lineCov"> 68948 : if (c == '\n') {</span>
|
||||
<span class="lineNum"> 445 </span><span class="lineCov"> 71440 : if (c == '\n') {</span>
|
||||
<span class="lineNum"> 446 </span> : /* remove ending carrige return to support the Windows CR+LF format */
|
||||
<span class="lineNum"> 447 </span><span class="lineCov"> 5069 : if (i != str && i[-1] == '\r')</span>
|
||||
<span class="lineNum"> 447 </span><span class="lineCov"> 5251 : if (i != str && i[-1] == '\r')</span>
|
||||
<span class="lineNum"> 448 </span><span class="lineNoCov"> 0 : --i;</span>
|
||||
<span class="lineNum"> 449 </span><span class="lineCov"> 5069 : sungetc(c, f);</span>
|
||||
<span class="lineNum"> 450 </span><span class="lineCov"> 5069 : break;</span>
|
||||
<span class="lineNum"> 449 </span><span class="lineCov"> 5251 : sungetc(c, f);</span>
|
||||
<span class="lineNum"> 450 </span><span class="lineCov"> 5251 : break;</span>
|
||||
<span class="lineNum"> 451 </span> : }
|
||||
<span class="lineNum"> 452 </span> :
|
||||
<span class="lineNum"> 453 </span><span class="lineCov"> 63879 : *i++ = c;</span>
|
||||
<span class="lineNum"> 453 </span><span class="lineCov"> 66189 : *i++ = c;</span>
|
||||
<span class="lineNum"> 454 </span> :
|
||||
<span class="lineNum"> 455 </span><span class="lineCov"> 63879 : if (i == send) {</span>
|
||||
<span class="lineNum"> 455 </span><span class="lineCov"> 66189 : if (i == send) {</span>
|
||||
<span class="lineNum"> 456 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 457 </span> : return -1;
|
||||
<span class="lineNum"> 458 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 459 </span> : }
|
||||
<span class="lineNum"> 460 </span><span class="lineCov"> 63879 : }</span>
|
||||
<span class="lineNum"> 460 </span><span class="lineCov"> 66189 : }</span>
|
||||
<span class="lineNum"> 461 </span> : }
|
||||
<span class="lineNum"> 462 </span> :
|
||||
<span class="lineNum"> 463 </span><span class="lineCov"> 5069 : *i = 0;</span>
|
||||
<span class="lineNum"> 463 </span><span class="lineCov"> 5251 : *i = 0;</span>
|
||||
<span class="lineNum"> 464 </span> :
|
||||
<span class="lineNum"> 465 </span><span class="lineCov"> 5069 : return i - str;</span>
|
||||
<span class="lineNum"> 465 </span><span class="lineCov"> 5251 : return i - str;</span>
|
||||
<a name="466"><span class="lineNum"> 466 </span> : }</a>
|
||||
<span class="lineNum"> 467 </span> :
|
||||
<span class="lineNum"> 468 </span><span class="lineCov"> 5035 : int sgetlasttok(STREAM* f, char* str, int size)</span>
|
||||
<span class="lineNum"> 468 </span><span class="lineCov"> 5217 : int sgetlasttok(STREAM* f, char* str, int size)</span>
|
||||
<span class="lineNum"> 469 </span> : {
|
||||
<span class="lineNum"> 470 </span> : int ret;
|
||||
<span class="lineNum"> 471 </span> :
|
||||
<span class="lineNum"> 472 </span><span class="lineCov"> 5035 : ret = sgetline(f, str, size);</span>
|
||||
<span class="lineNum"> 473 </span><span class="lineCov"> 5035 : if (ret < 0) {</span>
|
||||
<span class="lineNum"> 472 </span><span class="lineCov"> 5217 : ret = sgetline(f, str, size);</span>
|
||||
<span class="lineNum"> 473 </span><span class="lineCov"> 5217 : if (ret < 0) {</span>
|
||||
<span class="lineNum"> 474 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 475 </span> : return ret;
|
||||
<span class="lineNum"> 476 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 477 </span> : }
|
||||
<span class="lineNum"> 478 </span> :
|
||||
<span class="lineNum"> 479 </span><span class="lineCov"> 10070 : while (ret > 0 && (str[ret - 1] == ' ' || str[ret - 1] == '\t'))</span>
|
||||
<span class="lineNum"> 479 </span><span class="lineCov"> 10434 : while (ret > 0 && (str[ret - 1] == ' ' || str[ret - 1] == '\t'))</span>
|
||||
<span class="lineNum"> 480 </span><span class="lineNoCov"> 0 : --ret;</span>
|
||||
<span class="lineNum"> 481 </span> :
|
||||
<span class="lineNum"> 482 </span><span class="lineCov"> 5035 : str[ret] = 0;</span>
|
||||
<span class="lineNum"> 482 </span><span class="lineCov"> 5217 : str[ret] = 0;</span>
|
||||
<span class="lineNum"> 483 </span> :
|
||||
<span class="lineNum"> 484 </span><span class="lineCov"> 5035 : return ret;</span>
|
||||
<span class="lineNum"> 484 </span><span class="lineCov"> 5217 : return ret;</span>
|
||||
<a name="485"><span class="lineNum"> 485 </span> : }</a>
|
||||
<span class="lineNum"> 486 </span> :
|
||||
<span class="lineNum"> 487 </span><span class="lineCov"> 247 : int sgetu32(STREAM* f, uint32_t* value)</span>
|
||||
<span class="lineNum"> 487 </span><span class="lineCov"> 255 : int sgetu32(STREAM* f, uint32_t* value)</span>
|
||||
<span class="lineNum"> 488 </span> : {
|
||||
<span class="lineNum"> 489 </span> : int c;
|
||||
<span class="lineNum"> 490 </span> :
|
||||
<span class="lineNum"> 491 </span><span class="lineCov"> 247 : c = sgetc(f);</span>
|
||||
<span class="lineNum"> 492 </span><span class="lineCov"> 247 : if (c >= '0' && c <= '9') {</span>
|
||||
<span class="lineNum"> 491 </span><span class="lineCov"> 255 : c = sgetc(f);</span>
|
||||
<span class="lineNum"> 492 </span><span class="lineCov"> 255 : if (c >= '0' && c <= '9') {</span>
|
||||
<span class="lineNum"> 493 </span> : uint32_t v;
|
||||
<span class="lineNum"> 494 </span> :
|
||||
<span class="lineNum"> 495 </span><span class="lineCov"> 247 : v = c - '0';</span>
|
||||
<span class="lineNum"> 495 </span><span class="lineCov"> 255 : v = c - '0';</span>
|
||||
<span class="lineNum"> 496 </span> :
|
||||
<span class="lineNum"> 497 </span><span class="lineCov"> 247 : c = sgetc(f);</span>
|
||||
<span class="lineNum"> 498 </span><span class="lineCov"> 494 : while (c >= '0' && c <= '9') {</span>
|
||||
<span class="lineNum"> 497 </span><span class="lineCov"> 255 : c = sgetc(f);</span>
|
||||
<span class="lineNum"> 498 </span><span class="lineCov"> 510 : while (c >= '0' && c <= '9') {</span>
|
||||
<span class="lineNum"> 499 </span><span class="lineNoCov"> 0 : v *= 10;</span>
|
||||
<span class="lineNum"> 500 </span><span class="lineNoCov"> 0 : v += c - '0';</span>
|
||||
<span class="lineNum"> 501 </span><span class="lineNoCov"> 0 : c = sgetc(f);</span>
|
||||
<span class="lineNum"> 502 </span> : }
|
||||
<span class="lineNum"> 503 </span> :
|
||||
<span class="lineNum"> 504 </span><span class="lineCov"> 247 : *value = v;</span>
|
||||
<span class="lineNum"> 504 </span><span class="lineCov"> 255 : *value = v;</span>
|
||||
<span class="lineNum"> 505 </span> :
|
||||
<span class="lineNum"> 506 </span><span class="lineCov"> 247 : sungetc(c, f);</span>
|
||||
<span class="lineNum"> 507 </span><span class="lineCov"> 247 : return 0;</span>
|
||||
<span class="lineNum"> 506 </span><span class="lineCov"> 255 : sungetc(c, f);</span>
|
||||
<span class="lineNum"> 507 </span><span class="lineCov"> 255 : return 0;</span>
|
||||
<span class="lineNum"> 508 </span> : } else {
|
||||
<span class="lineNum"> 509 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 510 </span> : /* nothing read */
|
||||
|
|
@ -575,122 +575,122 @@
|
|||
<span class="lineNum"> 513 </span> : }
|
||||
<a name="514"><span class="lineNum"> 514 </span> : }</a>
|
||||
<span class="lineNum"> 515 </span> :
|
||||
<span class="lineNum"> 516 </span><span class="lineCov"> 18710390 : int sgetb32(STREAM* f, uint32_t* value)</span>
|
||||
<span class="lineNum"> 516 </span><span class="lineCov"> 18259411 : int sgetb32(STREAM* f, uint32_t* value)</span>
|
||||
<span class="lineNum"> 517 </span> : {
|
||||
<span class="lineNum"> 518 </span> : uint32_t v;
|
||||
<span class="lineNum"> 519 </span> : unsigned char b;
|
||||
<span class="lineNum"> 520 </span> : unsigned char s;
|
||||
<span class="lineNum"> 521 </span> : int c;
|
||||
<span class="lineNum"> 522 </span> :
|
||||
<span class="lineNum"> 523 </span><span class="lineCov"> 18710390 : v = 0;</span>
|
||||
<span class="lineNum"> 524 </span><span class="lineCov"> 18710390 : s = 0;</span>
|
||||
<span class="lineNum"> 523 </span><span class="lineCov"> 18259411 : v = 0;</span>
|
||||
<span class="lineNum"> 524 </span><span class="lineCov"> 18259411 : s = 0;</span>
|
||||
<span class="lineNum"> 525 </span> : loop:
|
||||
<span class="lineNum"> 526 </span><span class="lineCov"> 35314985 : c = sgetc(f);</span>
|
||||
<span class="lineNum"> 527 </span><span class="lineCov"> 35314985 : if (c == EOF) {</span>
|
||||
<span class="lineNum"> 526 </span><span class="lineCov"> 35244347 : c = sgetc(f);</span>
|
||||
<span class="lineNum"> 527 </span><span class="lineCov"> 35244347 : if (c == EOF) {</span>
|
||||
<span class="lineNum"> 528 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 529 </span> : return -1;
|
||||
<span class="lineNum"> 530 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 531 </span> : }
|
||||
<span class="lineNum"> 532 </span> :
|
||||
<span class="lineNum"> 533 </span><span class="lineCov"> 35314985 : b = (unsigned char)c;</span>
|
||||
<span class="lineNum"> 534 </span><span class="lineCov"> 35314985 : if ((b & 0x80) == 0) {</span>
|
||||
<span class="lineNum"> 535 </span><span class="lineCov"> 16604595 : v |= (uint32_t)b << s;</span>
|
||||
<span class="lineNum"> 536 </span><span class="lineCov"> 16604595 : s += 7;</span>
|
||||
<span class="lineNum"> 537 </span><span class="lineCov"> 16604595 : if (s >= 32) {</span>
|
||||
<span class="lineNum"> 533 </span><span class="lineCov"> 35244347 : b = (unsigned char)c;</span>
|
||||
<span class="lineNum"> 534 </span><span class="lineCov"> 35244347 : if ((b & 0x80) == 0) {</span>
|
||||
<span class="lineNum"> 535 </span><span class="lineCov"> 16984936 : v |= (uint32_t)b << s;</span>
|
||||
<span class="lineNum"> 536 </span><span class="lineCov"> 16984936 : s += 7;</span>
|
||||
<span class="lineNum"> 537 </span><span class="lineCov"> 16984936 : if (s >= 32) {</span>
|
||||
<span class="lineNum"> 538 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 539 </span> : return -1;
|
||||
<span class="lineNum"> 540 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 541 </span> : }
|
||||
<span class="lineNum"> 542 </span><span class="lineCov"> 16604595 : goto loop;</span>
|
||||
<span class="lineNum"> 542 </span><span class="lineCov"> 16984936 : goto loop;</span>
|
||||
<span class="lineNum"> 543 </span> : }
|
||||
<span class="lineNum"> 544 </span> :
|
||||
<span class="lineNum"> 545 </span><span class="lineCov"> 18710390 : v |= (uint32_t)(b & 0x7f) << s;</span>
|
||||
<span class="lineNum"> 545 </span><span class="lineCov"> 18259411 : v |= (uint32_t)(b & 0x7f) << s;</span>
|
||||
<span class="lineNum"> 546 </span> :
|
||||
<span class="lineNum"> 547 </span><span class="lineCov"> 18710390 : *value = v;</span>
|
||||
<span class="lineNum"> 547 </span><span class="lineCov"> 18259411 : *value = v;</span>
|
||||
<span class="lineNum"> 548 </span> :
|
||||
<span class="lineNum"> 549 </span><span class="lineCov"> 18710390 : return 0;</span>
|
||||
<span class="lineNum"> 549 </span><span class="lineCov"> 18259411 : return 0;</span>
|
||||
<a name="550"><span class="lineNum"> 550 </span> : }</a>
|
||||
<span class="lineNum"> 551 </span> :
|
||||
<span class="lineNum"> 552 </span><span class="lineCov"> 10465937 : int sgetb64(STREAM* f, uint64_t* value)</span>
|
||||
<span class="lineNum"> 552 </span><span class="lineCov"> 10605158 : int sgetb64(STREAM* f, uint64_t* value)</span>
|
||||
<span class="lineNum"> 553 </span> : {
|
||||
<span class="lineNum"> 554 </span> : uint64_t v;
|
||||
<span class="lineNum"> 555 </span> : unsigned char b;
|
||||
<span class="lineNum"> 556 </span> : unsigned char s;
|
||||
<span class="lineNum"> 557 </span> : int c;
|
||||
<span class="lineNum"> 558 </span> :
|
||||
<span class="lineNum"> 559 </span><span class="lineCov"> 10465937 : v = 0;</span>
|
||||
<span class="lineNum"> 560 </span><span class="lineCov"> 10465937 : s = 0;</span>
|
||||
<span class="lineNum"> 559 </span><span class="lineCov"> 10605158 : v = 0;</span>
|
||||
<span class="lineNum"> 560 </span><span class="lineCov"> 10605158 : s = 0;</span>
|
||||
<span class="lineNum"> 561 </span> : loop:
|
||||
<span class="lineNum"> 562 </span><span class="lineCov"> 38271575 : c = sgetc(f);</span>
|
||||
<span class="lineNum"> 563 </span><span class="lineCov"> 38271575 : if (c == EOF) {</span>
|
||||
<span class="lineNum"> 562 </span><span class="lineCov"> 38780587 : c = sgetc(f);</span>
|
||||
<span class="lineNum"> 563 </span><span class="lineCov"> 38780587 : if (c == EOF) {</span>
|
||||
<span class="lineNum"> 564 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 565 </span> : return -1;
|
||||
<span class="lineNum"> 566 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 567 </span> : }
|
||||
<span class="lineNum"> 568 </span> :
|
||||
<span class="lineNum"> 569 </span><span class="lineCov"> 38271575 : b = (unsigned char)c;</span>
|
||||
<span class="lineNum"> 570 </span><span class="lineCov"> 38271575 : if ((b & 0x80) == 0) {</span>
|
||||
<span class="lineNum"> 571 </span><span class="lineCov"> 27805638 : v |= (uint64_t)b << s;</span>
|
||||
<span class="lineNum"> 572 </span><span class="lineCov"> 27805638 : s += 7;</span>
|
||||
<span class="lineNum"> 573 </span><span class="lineCov"> 27805638 : if (s >= 64) {</span>
|
||||
<span class="lineNum"> 569 </span><span class="lineCov"> 38780587 : b = (unsigned char)c;</span>
|
||||
<span class="lineNum"> 570 </span><span class="lineCov"> 38780587 : if ((b & 0x80) == 0) {</span>
|
||||
<span class="lineNum"> 571 </span><span class="lineCov"> 28175429 : v |= (uint64_t)b << s;</span>
|
||||
<span class="lineNum"> 572 </span><span class="lineCov"> 28175429 : s += 7;</span>
|
||||
<span class="lineNum"> 573 </span><span class="lineCov"> 28175429 : if (s >= 64) {</span>
|
||||
<span class="lineNum"> 574 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 575 </span> : return -1;
|
||||
<span class="lineNum"> 576 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 577 </span> : }
|
||||
<span class="lineNum"> 578 </span><span class="lineCov"> 27805638 : goto loop;</span>
|
||||
<span class="lineNum"> 578 </span><span class="lineCov"> 28175429 : goto loop;</span>
|
||||
<span class="lineNum"> 579 </span> : }
|
||||
<span class="lineNum"> 580 </span> :
|
||||
<span class="lineNum"> 581 </span><span class="lineCov"> 10465937 : v |= (uint64_t)(b & 0x7f) << s;</span>
|
||||
<span class="lineNum"> 581 </span><span class="lineCov"> 10605158 : v |= (uint64_t)(b & 0x7f) << s;</span>
|
||||
<span class="lineNum"> 582 </span> :
|
||||
<span class="lineNum"> 583 </span><span class="lineCov"> 10465937 : *value = v;</span>
|
||||
<span class="lineNum"> 583 </span><span class="lineCov"> 10605158 : *value = v;</span>
|
||||
<span class="lineNum"> 584 </span> :
|
||||
<span class="lineNum"> 585 </span><span class="lineCov"> 10465937 : return 0;</span>
|
||||
<span class="lineNum"> 585 </span><span class="lineCov"> 10605158 : return 0;</span>
|
||||
<a name="586"><span class="lineNum"> 586 </span> : }</a>
|
||||
<span class="lineNum"> 587 </span> :
|
||||
<span class="lineNum"> 588 </span><span class="lineCov"> 362 : int sgetble32(STREAM* f, uint32_t* value)</span>
|
||||
<span class="lineNum"> 588 </span><span class="lineCov"> 370 : int sgetble32(STREAM* f, uint32_t* value)</span>
|
||||
<span class="lineNum"> 589 </span> : {
|
||||
<span class="lineNum"> 590 </span> : unsigned char buf[4];
|
||||
<span class="lineNum"> 591 </span> :
|
||||
<span class="lineNum"> 592 </span><span class="lineCov"> 362 : if (sread(f, buf, 4) != 0) {</span>
|
||||
<span class="lineNum"> 592 </span><span class="lineCov"> 370 : if (sread(f, buf, 4) != 0) {</span>
|
||||
<span class="lineNum"> 593 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 594 </span> : return -1;
|
||||
<span class="lineNum"> 595 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 596 </span> : }
|
||||
<span class="lineNum"> 597 </span> :
|
||||
<span class="lineNum"> 598 </span><span class="lineCov"> 362 : *value = buf[0] | (uint32_t)buf[1] << 8 | (uint32_t)buf[2] << 16 | (uint32_t)buf[3] << 24;</span>
|
||||
<span class="lineNum"> 598 </span><span class="lineCov"> 370 : *value = buf[0] | (uint32_t)buf[1] << 8 | (uint32_t)buf[2] << 16 | (uint32_t)buf[3] << 24;</span>
|
||||
<span class="lineNum"> 599 </span> :
|
||||
<span class="lineNum"> 600 </span><span class="lineCov"> 362 : return 0;</span>
|
||||
<span class="lineNum"> 600 </span><span class="lineCov"> 370 : return 0;</span>
|
||||
<a name="601"><span class="lineNum"> 601 </span> : }</a>
|
||||
<span class="lineNum"> 602 </span> :
|
||||
<span class="lineNum"> 603 </span><span class="lineCov"> 3732790 : int sgetbs(STREAM* f, char* str, int size)</span>
|
||||
<span class="lineNum"> 603 </span><span class="lineCov"> 3782241 : int sgetbs(STREAM* f, char* str, int size)</span>
|
||||
<span class="lineNum"> 604 </span> : {
|
||||
<span class="lineNum"> 605 </span> : uint32_t len;
|
||||
<span class="lineNum"> 606 </span> :
|
||||
<span class="lineNum"> 607 </span><span class="lineCov"> 3732790 : if (sgetb32(f, &len) < 0) {</span>
|
||||
<span class="lineNum"> 607 </span><span class="lineCov"> 3782241 : if (sgetb32(f, &len) < 0) {</span>
|
||||
<span class="lineNum"> 608 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 609 </span> : return -1;
|
||||
<span class="lineNum"> 610 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 611 </span> : }
|
||||
<span class="lineNum"> 612 </span> :
|
||||
<span class="lineNum"> 613 </span><span class="lineCov"> 3732790 : if (len + 1 > (uint32_t)size) {</span>
|
||||
<span class="lineNum"> 613 </span><span class="lineCov"> 3782241 : if (len + 1 > (uint32_t)size) {</span>
|
||||
<span class="lineNum"> 614 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 615 </span> : return -1;
|
||||
<span class="lineNum"> 616 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 617 </span> : }
|
||||
<span class="lineNum"> 618 </span> :
|
||||
<span class="lineNum"> 619 </span><span class="lineCov"> 3732790 : str[len] = 0;</span>
|
||||
<span class="lineNum"> 619 </span><span class="lineCov"> 3782240 : str[len] = 0;</span>
|
||||
<span class="lineNum"> 620 </span> :
|
||||
<span class="lineNum"> 621 </span><span class="lineCov"> 3732790 : return sread(f, str, (int)len);</span>
|
||||
<span class="lineNum"> 621 </span><span class="lineCov"> 3782240 : return sread(f, str, (int)len);</span>
|
||||
<a name="622"><span class="lineNum"> 622 </span> : }</a>
|
||||
<span class="lineNum"> 623 </span> :
|
||||
<span class="lineNum"> 624 </span><span class="lineCov"> 129597634 : int swrite(const void* void_data, unsigned size, STREAM* f)</span>
|
||||
<span class="lineNum"> 624 </span><span class="lineCov"> 20661703 : int swrite(const void* void_data, unsigned size, STREAM* f)</span>
|
||||
<span class="lineNum"> 625 </span> : {
|
||||
<span class="lineNum"> 626 </span><span class="lineCov"> 129597634 : const unsigned char* data = void_data;</span>
|
||||
<span class="lineNum"> 626 </span><span class="lineCov"> 20661703 : const unsigned char* data = void_data;</span>
|
||||
<span class="lineNum"> 627 </span> :
|
||||
<span class="lineNum"> 628 </span> : /* if there is enough space in memory */
|
||||
<span class="lineNum"> 629 </span><span class="lineCov"> 129597634 : if (sptrlookup(f, size)) {</span>
|
||||
<span class="lineNum"> 629 </span><span class="lineCov"> 20661703 : if (sptrlookup(f, size)) {</span>
|
||||
<span class="lineNum"> 630 </span> : /* optimized version with all the data in memory */
|
||||
<span class="lineNum"> 631 </span><span class="lineCov"> 128366511 : unsigned char* pos = sptrget(f);</span>
|
||||
<span class="lineNum"> 631 </span><span class="lineCov"> 20655549 : unsigned char* pos = sptrget(f);</span>
|
||||
<span class="lineNum"> 632 </span> :
|
||||
<span class="lineNum"> 633 </span> : /**
|
||||
<span class="lineNum"> 634 </span> : * Update the crc *before* writing the data in the buffer
|
||||
|
|
@ -699,17 +699,17 @@
|
|||
<span class="lineNum"> 637 </span> : * to be able to detect memory errors on the buffer,
|
||||
<span class="lineNum"> 638 </span> : * happening before we write it on the file.
|
||||
<span class="lineNum"> 639 </span> : */
|
||||
<span class="lineNum"> 640 </span><span class="lineCov"> 127220529 : f->crc_stream = crc32c_plain(f->crc_stream, data, size);</span>
|
||||
<span class="lineNum"> 640 </span><span class="lineCov"> 20655549 : f->crc_stream = crc32c_plain(f->crc_stream, data, size);</span>
|
||||
<span class="lineNum"> 641 </span> :
|
||||
<span class="lineNum"> 642 </span> : /* copy it */
|
||||
<span class="lineNum"> 643 </span><span class="lineCov"> 984312399 : while (size--)</span>
|
||||
<span class="lineNum"> 644 </span><span class="lineCov"> 729779043 : *pos++ = *data++;</span>
|
||||
<span class="lineNum"> 643 </span><span class="lineCov"> 172057609 : while (size--)</span>
|
||||
<span class="lineNum"> 644 </span><span class="lineCov"> 130746511 : *pos++ = *data++;</span>
|
||||
<span class="lineNum"> 645 </span> :
|
||||
<span class="lineNum"> 646 </span><span class="lineCov"> 127266678 : sptrset(f, pos);</span>
|
||||
<span class="lineNum"> 646 </span><span class="lineCov"> 20655549 : sptrset(f, pos);</span>
|
||||
<span class="lineNum"> 647 </span> : } else {
|
||||
<span class="lineNum"> 648 </span> : /* standard version using sputc() */
|
||||
<span class="lineNum"> 649 </span><span class="lineCov"> 352837 : while (size--) {</span>
|
||||
<span class="lineNum"> 650 </span><span class="lineCov"> 318158 : if (sputc(*data++, f) != 0) {</span>
|
||||
<span class="lineNum"> 649 </span><span class="lineCov"> 201458 : while (size--) {</span>
|
||||
<span class="lineNum"> 650 </span><span class="lineCov"> 189150 : if (sputc(*data++, f) != 0) {</span>
|
||||
<span class="lineNum"> 651 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 652 </span> : return -1;
|
||||
<span class="lineNum"> 653 </span> : /* LCOV_EXCL_STOP */
|
||||
|
|
@ -717,83 +717,83 @@
|
|||
<span class="lineNum"> 655 </span> : }
|
||||
<span class="lineNum"> 656 </span> : }
|
||||
<span class="lineNum"> 657 </span> :
|
||||
<span class="lineNum"> 658 </span><span class="lineCov"> 129224881 : return 0;</span>
|
||||
<span class="lineNum"> 658 </span><span class="lineCov"> 20661703 : return 0;</span>
|
||||
<a name="659"><span class="lineNum"> 659 </span> : }</a>
|
||||
<span class="lineNum"> 660 </span> :
|
||||
<span class="lineNum"> 661 </span><span class="lineCov"> 62339359 : int sputb32(uint32_t value, STREAM* s)</span>
|
||||
<span class="lineNum"> 661 </span><span class="lineCov"> 9119259 : int sputb32(uint32_t value, STREAM* s)</span>
|
||||
<span class="lineNum"> 662 </span> : {
|
||||
<span class="lineNum"> 663 </span> : unsigned char b;
|
||||
<span class="lineNum"> 664 </span> : unsigned char buf[16];
|
||||
<span class="lineNum"> 665 </span> : unsigned i;
|
||||
<span class="lineNum"> 666 </span> :
|
||||
<span class="lineNum"> 667 </span><span class="lineCov"> 62339359 : i = 0;</span>
|
||||
<span class="lineNum"> 667 </span><span class="lineCov"> 9119259 : i = 0;</span>
|
||||
<span class="lineNum"> 668 </span> : loop:
|
||||
<span class="lineNum"> 669 </span><span class="lineCov"> 117525500 : b = value & 0x7f;</span>
|
||||
<span class="lineNum"> 670 </span><span class="lineCov"> 117525500 : value >>= 7;</span>
|
||||
<span class="lineNum"> 669 </span><span class="lineCov"> 17637493 : b = value & 0x7f;</span>
|
||||
<span class="lineNum"> 670 </span><span class="lineCov"> 17637493 : value >>= 7;</span>
|
||||
<span class="lineNum"> 671 </span> :
|
||||
<span class="lineNum"> 672 </span><span class="lineCov"> 117525500 : if (value) {</span>
|
||||
<span class="lineNum"> 673 </span><span class="lineCov"> 55186141 : buf[i++] = b;</span>
|
||||
<span class="lineNum"> 674 </span><span class="lineCov"> 55186141 : goto loop;</span>
|
||||
<span class="lineNum"> 672 </span><span class="lineCov"> 17637493 : if (value) {</span>
|
||||
<span class="lineNum"> 673 </span><span class="lineCov"> 8518234 : buf[i++] = b;</span>
|
||||
<span class="lineNum"> 674 </span><span class="lineCov"> 8518234 : goto loop;</span>
|
||||
<span class="lineNum"> 675 </span> : }
|
||||
<span class="lineNum"> 676 </span> :
|
||||
<span class="lineNum"> 677 </span><span class="lineCov"> 62339359 : buf[i++] = b | 0x80;</span>
|
||||
<span class="lineNum"> 677 </span><span class="lineCov"> 9119259 : buf[i++] = b | 0x80;</span>
|
||||
<span class="lineNum"> 678 </span> :
|
||||
<span class="lineNum"> 679 </span><span class="lineCov"> 62339359 : return swrite(buf, i, s);</span>
|
||||
<span class="lineNum"> 679 </span><span class="lineCov"> 9119259 : return swrite(buf, i, s);</span>
|
||||
<a name="680"><span class="lineNum"> 680 </span> : }</a>
|
||||
<span class="lineNum"> 681 </span> :
|
||||
<span class="lineNum"> 682 </span><span class="lineCov"> 34173479 : int sputb64(uint64_t value, STREAM* s)</span>
|
||||
<span class="lineNum"> 682 </span><span class="lineCov"> 5293948 : int sputb64(uint64_t value, STREAM* s)</span>
|
||||
<span class="lineNum"> 683 </span> : {
|
||||
<span class="lineNum"> 684 </span> : unsigned char b;
|
||||
<span class="lineNum"> 685 </span> : unsigned char buf[16];
|
||||
<span class="lineNum"> 686 </span> : unsigned i;
|
||||
<span class="lineNum"> 687 </span> :
|
||||
<span class="lineNum"> 688 </span><span class="lineCov"> 34173479 : i = 0;</span>
|
||||
<span class="lineNum"> 688 </span><span class="lineCov"> 5293948 : i = 0;</span>
|
||||
<span class="lineNum"> 689 </span> : loop:
|
||||
<span class="lineNum"> 690 </span><span class="lineCov"> 124705929 : b = value & 0x7f;</span>
|
||||
<span class="lineNum"> 691 </span><span class="lineCov"> 124705929 : value >>= 7;</span>
|
||||
<span class="lineNum"> 690 </span><span class="lineCov"> 19354594 : b = value & 0x7f;</span>
|
||||
<span class="lineNum"> 691 </span><span class="lineCov"> 19354594 : value >>= 7;</span>
|
||||
<span class="lineNum"> 692 </span> :
|
||||
<span class="lineNum"> 693 </span><span class="lineCov"> 124705929 : if (value) {</span>
|
||||
<span class="lineNum"> 694 </span><span class="lineCov"> 90532450 : buf[i++] = b;</span>
|
||||
<span class="lineNum"> 695 </span><span class="lineCov"> 90532450 : goto loop;</span>
|
||||
<span class="lineNum"> 693 </span><span class="lineCov"> 19354594 : if (value) {</span>
|
||||
<span class="lineNum"> 694 </span><span class="lineCov"> 14060646 : buf[i++] = b;</span>
|
||||
<span class="lineNum"> 695 </span><span class="lineCov"> 14060646 : goto loop;</span>
|
||||
<span class="lineNum"> 696 </span> : }
|
||||
<span class="lineNum"> 697 </span> :
|
||||
<span class="lineNum"> 698 </span><span class="lineCov"> 34173479 : buf[i++] = b | 0x80;</span>
|
||||
<span class="lineNum"> 698 </span><span class="lineCov"> 5293948 : buf[i++] = b | 0x80;</span>
|
||||
<span class="lineNum"> 699 </span> :
|
||||
<span class="lineNum"> 700 </span><span class="lineCov"> 34173479 : return swrite(buf, i, s);</span>
|
||||
<span class="lineNum"> 700 </span><span class="lineCov"> 5293948 : return swrite(buf, i, s);</span>
|
||||
<a name="701"><span class="lineNum"> 701 </span> : }</a>
|
||||
<span class="lineNum"> 702 </span> :
|
||||
<span class="lineNum"> 703 </span><span class="lineCov"> 929 : int sputble32(uint32_t value, STREAM* s)</span>
|
||||
<span class="lineNum"> 703 </span><span class="lineCov"> 161 : int sputble32(uint32_t value, STREAM* s)</span>
|
||||
<span class="lineNum"> 704 </span> : {
|
||||
<span class="lineNum"> 705 </span> : unsigned char buf[4];
|
||||
<span class="lineNum"> 706 </span> :
|
||||
<span class="lineNum"> 707 </span><span class="lineCov"> 929 : buf[0] = value & 0xFF;</span>
|
||||
<span class="lineNum"> 708 </span><span class="lineCov"> 929 : buf[1] = (value >> 8) & 0xFF;</span>
|
||||
<span class="lineNum"> 709 </span><span class="lineCov"> 929 : buf[2] = (value >> 16) & 0xFF;</span>
|
||||
<span class="lineNum"> 710 </span><span class="lineCov"> 929 : buf[3] = (value >> 24) & 0xFF;</span>
|
||||
<span class="lineNum"> 707 </span><span class="lineCov"> 161 : buf[0] = value & 0xFF;</span>
|
||||
<span class="lineNum"> 708 </span><span class="lineCov"> 161 : buf[1] = (value >> 8) & 0xFF;</span>
|
||||
<span class="lineNum"> 709 </span><span class="lineCov"> 161 : buf[2] = (value >> 16) & 0xFF;</span>
|
||||
<span class="lineNum"> 710 </span><span class="lineCov"> 161 : buf[3] = (value >> 24) & 0xFF;</span>
|
||||
<span class="lineNum"> 711 </span> :
|
||||
<span class="lineNum"> 712 </span><span class="lineCov"> 929 : return swrite(buf, 4, s);</span>
|
||||
<span class="lineNum"> 712 </span><span class="lineCov"> 161 : return swrite(buf, 4, s);</span>
|
||||
<a name="713"><span class="lineNum"> 713 </span> : }</a>
|
||||
<span class="lineNum"> 714 </span> :
|
||||
<span class="lineNum"> 715 </span><span class="lineCov"> 12306366 : int sputbs(const char* str, STREAM* f)</span>
|
||||
<span class="lineNum"> 715 </span><span class="lineCov"> 1884788 : int sputbs(const char* str, STREAM* f)</span>
|
||||
<span class="lineNum"> 716 </span> : {
|
||||
<span class="lineNum"> 717 </span><span class="lineCov"> 12306366 : size_t len = strlen(str);</span>
|
||||
<span class="lineNum"> 717 </span><span class="lineCov"> 1884788 : size_t len = strlen(str);</span>
|
||||
<span class="lineNum"> 718 </span> :
|
||||
<span class="lineNum"> 719 </span><span class="lineCov"> 12306366 : if (sputb32(len, f) != 0) {</span>
|
||||
<span class="lineNum"> 719 </span><span class="lineCov"> 1884788 : if (sputb32(len, f) != 0) {</span>
|
||||
<span class="lineNum"> 720 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 721 </span> : return -1;
|
||||
<span class="lineNum"> 722 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 723 </span> : }
|
||||
<span class="lineNum"> 724 </span> :
|
||||
<span class="lineNum"> 725 </span><span class="lineCov"> 12287997 : return swrite(str, len, f);</span>
|
||||
<span class="lineNum"> 725 </span><span class="lineCov"> 1884788 : return swrite(str, len, f);</span>
|
||||
<span class="lineNum"> 726 </span> : }
|
||||
<a name="727"><span class="lineNum"> 727 </span> : </a>
|
||||
<span class="lineNum"> 728 </span> : #if HAVE_FSYNC
|
||||
<span class="lineNum"> 729 </span><span class="lineCov"> 912 : int ssync(STREAM* s)</span>
|
||||
<span class="lineNum"> 729 </span><span class="lineCov"> 145 : int ssync(STREAM* s)</span>
|
||||
<span class="lineNum"> 730 </span> : {
|
||||
<span class="lineNum"> 731 </span> : unsigned i;
|
||||
<span class="lineNum"> 732 </span> :
|
||||
<span class="lineNum"> 733 </span><span class="lineCov"> 1824 : for (i = 0; i < s->handle_size; ++i) {</span>
|
||||
<span class="lineNum"> 734 </span><span class="lineCov"> 913 : if (fsync(s->handle[i].f) != 0) {</span>
|
||||
<span class="lineNum"> 733 </span><span class="lineCov"> 1135 : for (i = 0; i < s->handle_size; ++i) {</span>
|
||||
<span class="lineNum"> 734 </span><span class="lineCov"> 990 : if (fsync(s->handle[i].f) != 0) {</span>
|
||||
<span class="lineNum"> 735 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 736 </span> : s->state = STREAM_STATE_ERROR;
|
||||
<span class="lineNum"> 737 </span> : s->state_index = i;
|
||||
|
|
@ -802,7 +802,7 @@
|
|||
<span class="lineNum"> 740 </span> : }
|
||||
<span class="lineNum"> 741 </span> : }
|
||||
<span class="lineNum"> 742 </span> :
|
||||
<span class="lineNum"> 743 </span><span class="lineCov"> 911 : return 0;</span>
|
||||
<span class="lineNum"> 743 </span><span class="lineCov"> 145 : return 0;</span>
|
||||
<span class="lineNum"> 744 </span> : }
|
||||
<span class="lineNum"> 745 </span> : #endif
|
||||
<span class="lineNum"> 746 </span> :
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Date:</td>
|
||||
<td class="headerValue">2015-11-20</td>
|
||||
<td class="headerValue">2016-01-09</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntry">10</td>
|
||||
|
|
@ -60,40 +60,40 @@
|
|||
<td width="20%" class="tableHead">Hit count <span class="tableHeadSort"><img src="../glass.png" width=10 height=14 alt="Sort by hit count" title="Sort by hit count" border=0></span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="stream.h.gcov.html#160">sptrlookup</a></td>
|
||||
<td class="coverFnHi">140471390</td>
|
||||
<td class="coverFn"><a href="stream.h.gcov.html#230">sgetc</a></td>
|
||||
<td class="coverFnHi">82747474</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="stream.h.gcov.html#168">sptrget</a></td>
|
||||
<td class="coverFnHi">140020205</td>
|
||||
<td class="coverFn"><a href="stream.h.gcov.html#160">sptrlookup</a></td>
|
||||
<td class="coverFnHi">33182199</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="stream.h.gcov.html#176">sptrset</a></td>
|
||||
<td class="coverFnHi">138951723</td>
|
||||
<td class="coverFnHi">33144603</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="stream.h.gcov.html#230">sgetc</a></td>
|
||||
<td class="coverFnHi">82206359</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="stream.h.gcov.html#184">serror</a></td>
|
||||
<td class="coverFnHi">24784868</td>
|
||||
<td class="coverFn"><a href="stream.h.gcov.html#168">sptrget</a></td>
|
||||
<td class="coverFnHi">33144603</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="stream.h.gcov.html#346">sputc</a></td>
|
||||
<td class="coverFnHi">23611223</td>
|
||||
<td class="coverFnHi">3794625</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="stream.h.gcov.html#184">serror</a></td>
|
||||
<td class="coverFnHi">3632818</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="stream.h.gcov.html#241">sungetc</a></td>
|
||||
<td class="coverFnHi">32166</td>
|
||||
<td class="coverFnHi">33308</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="stream.h.gcov.html#271">sgetspace</a></td>
|
||||
<td class="coverFnHi">19238</td>
|
||||
<td class="coverFnHi">19921</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="stream.h.gcov.html#256">sgeteol</a></td>
|
||||
<td class="coverFnHi">5807</td>
|
||||
<td class="coverFnHi">6014</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="stream.h.gcov.html#192">seof</a></td>
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Date:</td>
|
||||
<td class="headerValue">2015-11-20</td>
|
||||
<td class="headerValue">2016-01-09</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntry">10</td>
|
||||
|
|
@ -65,7 +65,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="stream.h.gcov.html#184">serror</a></td>
|
||||
<td class="coverFnHi">24784868</td>
|
||||
<td class="coverFnHi">3632818</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="stream.h.gcov.html#208">serrorfile</a></td>
|
||||
|
|
@ -73,35 +73,35 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="stream.h.gcov.html#230">sgetc</a></td>
|
||||
<td class="coverFnHi">82206359</td>
|
||||
<td class="coverFnHi">82747474</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="stream.h.gcov.html#256">sgeteol</a></td>
|
||||
<td class="coverFnHi">5807</td>
|
||||
<td class="coverFnHi">6014</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="stream.h.gcov.html#271">sgetspace</a></td>
|
||||
<td class="coverFnHi">19238</td>
|
||||
<td class="coverFnHi">19921</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="stream.h.gcov.html#168">sptrget</a></td>
|
||||
<td class="coverFnHi">140020205</td>
|
||||
<td class="coverFnHi">33144603</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="stream.h.gcov.html#160">sptrlookup</a></td>
|
||||
<td class="coverFnHi">140471390</td>
|
||||
<td class="coverFnHi">33182199</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="stream.h.gcov.html#176">sptrset</a></td>
|
||||
<td class="coverFnHi">138951723</td>
|
||||
<td class="coverFnHi">33144603</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="stream.h.gcov.html#346">sputc</a></td>
|
||||
<td class="coverFnHi">23611223</td>
|
||||
<td class="coverFnHi">3794625</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="stream.h.gcov.html#241">sungetc</a></td>
|
||||
<td class="coverFnHi">32166</td>
|
||||
<td class="coverFnHi">33308</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Date:</td>
|
||||
<td class="headerValue">2015-11-20</td>
|
||||
<td class="headerValue">2016-01-09</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntry">10</td>
|
||||
|
|
@ -94,8 +94,8 @@
|
|||
<span class="lineNum"> 32 </span> :
|
||||
<span class="lineNum"> 33 </span> : #define STREAM_STATE_READ 0 /**< The stream is in a normal state of read. */
|
||||
<span class="lineNum"> 34 </span> : #define STREAM_STATE_WRITE 1 /**< The stream is in a normal state of write. */
|
||||
<span class="lineNum"> 35 </span> : #define STREAM_STATE_ERROR -1 /**< An error was encoutered. */
|
||||
<span class="lineNum"> 36 </span> : #define STREAM_STATE_EOF 2 /**< The end of file was encoutered. */
|
||||
<span class="lineNum"> 35 </span> : #define STREAM_STATE_ERROR -1 /**< An error was encountered. */
|
||||
<span class="lineNum"> 36 </span> : #define STREAM_STATE_EOF 2 /**< The end of file was encountered. */
|
||||
<span class="lineNum"> 37 </span> :
|
||||
<span class="lineNum"> 38 </span> : struct stream_handle {
|
||||
<span class="lineNum"> 39 </span> : int f; /**< Handle of the file. */
|
||||
|
|
@ -221,33 +221,33 @@
|
|||
<span class="lineNum"> 159 </span> : /**
|
||||
<a name="160"><span class="lineNum"> 160 </span> : * Check if the buffer has enough data loaded.</a>
|
||||
<span class="lineNum"> 161 </span> : */
|
||||
<span class="lineNum"> 162 </span><span class="lineCov"> 140471390 : static inline int sptrlookup(STREAM* s, int size)</span>
|
||||
<span class="lineNum"> 162 </span><span class="lineCov"> 33182199 : static inline int sptrlookup(STREAM* s, int size)</span>
|
||||
<span class="lineNum"> 163 </span> : {
|
||||
<span class="lineNum"> 164 </span><span class="lineCov"> 140471390 : return s->pos + size <= s->end;</span>
|
||||
<span class="lineNum"> 164 </span><span class="lineCov"> 33182199 : return s->pos + size <= s->end;</span>
|
||||
<span class="lineNum"> 165 </span> : }
|
||||
<span class="lineNum"> 166 </span> :
|
||||
<span class="lineNum"> 167 </span> : /**
|
||||
<a name="168"><span class="lineNum"> 168 </span> : * Get the current stream ptr.</a>
|
||||
<span class="lineNum"> 169 </span> : */
|
||||
<span class="lineNum"> 170 </span><span class="lineCov"> 140020205 : static inline unsigned char* sptrget(STREAM* s)</span>
|
||||
<span class="lineNum"> 170 </span><span class="lineCov"> 33144603 : static inline unsigned char* sptrget(STREAM* s)</span>
|
||||
<span class="lineNum"> 171 </span> : {
|
||||
<span class="lineNum"> 172 </span><span class="lineCov"> 140020205 : return s->pos;</span>
|
||||
<span class="lineNum"> 172 </span><span class="lineCov"> 33144603 : return s->pos;</span>
|
||||
<span class="lineNum"> 173 </span> : }
|
||||
<span class="lineNum"> 174 </span> :
|
||||
<span class="lineNum"> 175 </span> : /**
|
||||
<a name="176"><span class="lineNum"> 176 </span> : * Set the current stream ptr.</a>
|
||||
<span class="lineNum"> 177 </span> : */
|
||||
<span class="lineNum"> 178 </span><span class="lineCov"> 138951723 : static inline void sptrset(STREAM* s, unsigned char* ptr)</span>
|
||||
<span class="lineNum"> 178 </span><span class="lineCov"> 33144603 : static inline void sptrset(STREAM* s, unsigned char* ptr)</span>
|
||||
<span class="lineNum"> 179 </span> : {
|
||||
<span class="lineNum"> 180 </span><span class="lineCov"> 138951723 : s->pos = ptr;</span>
|
||||
<span class="lineNum"> 181 </span><span class="lineCov"> 138951723 : }</span>
|
||||
<span class="lineNum"> 180 </span><span class="lineCov"> 33144603 : s->pos = ptr;</span>
|
||||
<span class="lineNum"> 181 </span><span class="lineCov"> 33144603 : }</span>
|
||||
<span class="lineNum"> 182 </span> :
|
||||
<span class="lineNum"> 183 </span> : /**
|
||||
<a name="184"><span class="lineNum"> 184 </span> : * Check the error status. Like ferror().</a>
|
||||
<span class="lineNum"> 185 </span> : */
|
||||
<span class="lineNum"> 186 </span><span class="lineCov"> 24784868 : static inline int serror(STREAM* s)</span>
|
||||
<span class="lineNum"> 186 </span><span class="lineCov"> 3632818 : static inline int serror(STREAM* s)</span>
|
||||
<span class="lineNum"> 187 </span> : {
|
||||
<span class="lineNum"> 188 </span><span class="lineCov"> 24784868 : return s->state == STREAM_STATE_ERROR;</span>
|
||||
<span class="lineNum"> 188 </span><span class="lineCov"> 3632818 : return s->state == STREAM_STATE_ERROR;</span>
|
||||
<span class="lineNum"> 189 </span> : }
|
||||
<span class="lineNum"> 190 </span> :
|
||||
<span class="lineNum"> 191 </span> : /**
|
||||
|
|
@ -291,22 +291,22 @@
|
|||
<span class="lineNum"> 229 </span> : /**
|
||||
<a name="230"><span class="lineNum"> 230 </span> : * Read a char. Like fgetc().</a>
|
||||
<span class="lineNum"> 231 </span> : */
|
||||
<span class="lineNum"> 232 </span><span class="lineCov"> 82206359 : static inline int sgetc(STREAM* s)</span>
|
||||
<span class="lineNum"> 232 </span><span class="lineCov"> 82747474 : static inline int sgetc(STREAM* s)</span>
|
||||
<span class="lineNum"> 233 </span> : {
|
||||
<span class="lineNum"> 234 </span><span class="lineCov"> 82206359 : if (tommy_unlikely(s->pos == s->end))</span>
|
||||
<span class="lineNum"> 235 </span><span class="lineCov"> 298585 : return sgetc_uncached(s);</span>
|
||||
<span class="lineNum"> 236 </span><span class="lineCov"> 81907774 : return *s->pos++;</span>
|
||||
<span class="lineNum"> 234 </span><span class="lineCov"> 82747474 : if (tommy_unlikely(s->pos == s->end))</span>
|
||||
<span class="lineNum"> 235 </span><span class="lineCov"> 298684 : return sgetc_uncached(s);</span>
|
||||
<span class="lineNum"> 236 </span><span class="lineCov"> 82448790 : return *s->pos++;</span>
|
||||
<span class="lineNum"> 237 </span> : }
|
||||
<span class="lineNum"> 238 </span> :
|
||||
<span class="lineNum"> 239 </span> : /**
|
||||
<span class="lineNum"> 240 </span> : * Unread a char.
|
||||
<a name="241"><span class="lineNum"> 241 </span> : * Like ungetc() but you have to unget the same char read.</a>
|
||||
<span class="lineNum"> 242 </span> : */
|
||||
<span class="lineNum"> 243 </span><span class="lineCov"> 32166 : static inline void sungetc(int c, STREAM* s)</span>
|
||||
<span class="lineNum"> 243 </span><span class="lineCov"> 33308 : static inline void sungetc(int c, STREAM* s)</span>
|
||||
<span class="lineNum"> 244 </span> : {
|
||||
<span class="lineNum"> 245 </span><span class="lineCov"> 32166 : if (c != EOF)</span>
|
||||
<span class="lineNum"> 246 </span><span class="lineCov"> 31428 : --s->pos;</span>
|
||||
<span class="lineNum"> 247 </span><span class="lineCov"> 32166 : }</span>
|
||||
<span class="lineNum"> 245 </span><span class="lineCov"> 33308 : if (c != EOF)</span>
|
||||
<span class="lineNum"> 246 </span><span class="lineCov"> 32546 : --s->pos;</span>
|
||||
<span class="lineNum"> 247 </span><span class="lineCov"> 33308 : }</span>
|
||||
<span class="lineNum"> 248 </span> :
|
||||
<span class="lineNum"> 249 </span> : /**
|
||||
<span class="lineNum"> 250 </span> : * Read a fixed amount of chars.
|
||||
|
|
@ -317,34 +317,34 @@
|
|||
<span class="lineNum"> 255 </span> : /**
|
||||
<a name="256"><span class="lineNum"> 256 </span> : * Get a char from a stream, ignoring one '\r'.</a>
|
||||
<span class="lineNum"> 257 </span> : */
|
||||
<span class="lineNum"> 258 </span><span class="lineCov"> 5807 : static inline int sgeteol(STREAM* f)</span>
|
||||
<span class="lineNum"> 258 </span><span class="lineCov"> 6014 : static inline int sgeteol(STREAM* f)</span>
|
||||
<span class="lineNum"> 259 </span> : {
|
||||
<span class="lineNum"> 260 </span> : int c;
|
||||
<span class="lineNum"> 261 </span> :
|
||||
<span class="lineNum"> 262 </span><span class="lineCov"> 5807 : c = sgetc(f);</span>
|
||||
<span class="lineNum"> 263 </span><span class="lineCov"> 5807 : if (c == '\r')</span>
|
||||
<span class="lineNum"> 262 </span><span class="lineCov"> 6014 : c = sgetc(f);</span>
|
||||
<span class="lineNum"> 263 </span><span class="lineCov"> 6014 : if (c == '\r')</span>
|
||||
<span class="lineNum"> 264 </span><span class="lineNoCov"> 0 : c = sgetc(f);</span>
|
||||
<span class="lineNum"> 265 </span> :
|
||||
<span class="lineNum"> 266 </span><span class="lineCov"> 5807 : return c;</span>
|
||||
<span class="lineNum"> 266 </span><span class="lineCov"> 6014 : return c;</span>
|
||||
<span class="lineNum"> 267 </span> : }
|
||||
<span class="lineNum"> 268 </span> :
|
||||
<span class="lineNum"> 269 </span> : /**
|
||||
<span class="lineNum"> 270 </span> : * Read all the spaces and tabs.
|
||||
<a name="271"><span class="lineNum"> 271 </span> : * Return the number of spaces and tabs read.</a>
|
||||
<span class="lineNum"> 272 </span> : */
|
||||
<span class="lineNum"> 273 </span><span class="lineCov"> 19238 : static inline int sgetspace(STREAM* f)</span>
|
||||
<span class="lineNum"> 273 </span><span class="lineCov"> 19921 : static inline int sgetspace(STREAM* f)</span>
|
||||
<span class="lineNum"> 274 </span> : {
|
||||
<span class="lineNum"> 275 </span><span class="lineCov"> 19238 : int count = 0;</span>
|
||||
<span class="lineNum"> 275 </span><span class="lineCov"> 19921 : int count = 0;</span>
|
||||
<span class="lineNum"> 276 </span> : int c;
|
||||
<span class="lineNum"> 277 </span> :
|
||||
<span class="lineNum"> 278 </span><span class="lineCov"> 19238 : c = sgetc(f);</span>
|
||||
<span class="lineNum"> 279 </span><span class="lineCov"> 45607 : while (c == ' ' || c == '\t') {</span>
|
||||
<span class="lineNum"> 280 </span><span class="lineCov"> 7131 : ++count;</span>
|
||||
<span class="lineNum"> 281 </span><span class="lineCov"> 7131 : c = sgetc(f);</span>
|
||||
<span class="lineNum"> 278 </span><span class="lineCov"> 19921 : c = sgetc(f);</span>
|
||||
<span class="lineNum"> 279 </span><span class="lineCov"> 47225 : while (c == ' ' || c == '\t') {</span>
|
||||
<span class="lineNum"> 280 </span><span class="lineCov"> 7383 : ++count;</span>
|
||||
<span class="lineNum"> 281 </span><span class="lineCov"> 7383 : c = sgetc(f);</span>
|
||||
<span class="lineNum"> 282 </span> : }
|
||||
<span class="lineNum"> 283 </span> :
|
||||
<span class="lineNum"> 284 </span><span class="lineCov"> 19238 : sungetc(c, f);</span>
|
||||
<span class="lineNum"> 285 </span><span class="lineCov"> 19238 : return count;</span>
|
||||
<span class="lineNum"> 284 </span><span class="lineCov"> 19921 : sungetc(c, f);</span>
|
||||
<span class="lineNum"> 285 </span><span class="lineCov"> 19921 : return count;</span>
|
||||
<span class="lineNum"> 286 </span> : }
|
||||
<span class="lineNum"> 287 </span> :
|
||||
<span class="lineNum"> 288 </span> : /**
|
||||
|
|
@ -407,10 +407,10 @@
|
|||
<span class="lineNum"> 345 </span> : * Write a char. Like fputc().
|
||||
<a name="346"><span class="lineNum"> 346 </span> : * Return 0 on success or -1 on error.</a>
|
||||
<span class="lineNum"> 347 </span> : */
|
||||
<span class="lineNum"> 348 </span><span class="lineCov"> 23611223 : static inline int sputc(int c, STREAM* s)</span>
|
||||
<span class="lineNum"> 348 </span><span class="lineCov"> 3794625 : static inline int sputc(int c, STREAM* s)</span>
|
||||
<span class="lineNum"> 349 </span> : {
|
||||
<span class="lineNum"> 350 </span><span class="lineCov"> 23611223 : if (s->pos == s->end) {</span>
|
||||
<span class="lineNum"> 351 </span><span class="lineCov"> 49838 : if (sflush(s) != 0)</span>
|
||||
<span class="lineNum"> 350 </span><span class="lineCov"> 3794625 : if (s->pos == s->end) {</span>
|
||||
<span class="lineNum"> 351 </span><span class="lineCov"> 38573 : if (sflush(s) != 0)</span>
|
||||
<span class="lineNum"> 352 </span><span class="lineNoCov"> 0 : return -1;</span>
|
||||
<span class="lineNum"> 353 </span> : }
|
||||
<span class="lineNum"> 354 </span> :
|
||||
|
|
@ -421,11 +421,11 @@
|
|||
<span class="lineNum"> 359 </span> : * to be able to detect memory errors on the buffer,
|
||||
<span class="lineNum"> 360 </span> : * happening before we write it on the file.
|
||||
<span class="lineNum"> 361 </span> : */
|
||||
<span class="lineNum"> 362 </span><span class="lineCov"> 23611224 : s->crc_stream = crc32c_plain_char(s->crc_stream, c);</span>
|
||||
<span class="lineNum"> 362 </span><span class="lineCov"> 3794625 : s->crc_stream = crc32c_plain_char(s->crc_stream, c);</span>
|
||||
<span class="lineNum"> 363 </span> :
|
||||
<span class="lineNum"> 364 </span><span class="lineCov"> 23809904 : *s->pos++ = c;</span>
|
||||
<span class="lineNum"> 364 </span><span class="lineCov"> 3794625 : *s->pos++ = c;</span>
|
||||
<span class="lineNum"> 365 </span> :
|
||||
<span class="lineNum"> 366 </span><span class="lineCov"> 23809904 : return 0;</span>
|
||||
<span class="lineNum"> 366 </span><span class="lineCov"> 3794625 : return 0;</span>
|
||||
<span class="lineNum"> 367 </span> : }
|
||||
<span class="lineNum"> 368 </span> :
|
||||
<span class="lineNum"> 369 </span> : /**
|
||||
|
|
|
|||
|
|
@ -31,18 +31,18 @@
|
|||
<td class="headerValue">lcov.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntry">232</td>
|
||||
<td class="headerCovTableEntry">293</td>
|
||||
<td class="headerCovTableEntryMed">79.2 %</td>
|
||||
<td class="headerCovTableEntry">240</td>
|
||||
<td class="headerCovTableEntry">301</td>
|
||||
<td class="headerCovTableEntryMed">79.7 %</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Date:</td>
|
||||
<td class="headerValue">2015-11-20</td>
|
||||
<td class="headerValue">2016-01-09</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntry">29</td>
|
||||
<td class="headerCovTableEntry">31</td>
|
||||
<td class="headerCovTableEntryHi">93.5 %</td>
|
||||
<td class="headerCovTableEntry">30</td>
|
||||
<td class="headerCovTableEntry">32</td>
|
||||
<td class="headerCovTableEntryHi">93.8 %</td>
|
||||
</tr>
|
||||
<tr><td><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
|
|
@ -60,88 +60,92 @@
|
|||
<td width="20%" class="tableHead">Hit count <span class="tableHeadSort"><img src="../glass.png" width=10 height=14 alt="Sort by hit count" title="Sort by hit count" border=0></span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#465">pathcmp</a></td>
|
||||
<td class="coverFnHi">50336221</td>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#470">pathcmp</a></td>
|
||||
<td class="coverFnHi">51328958</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#422">pathprint</a></td>
|
||||
<td class="coverFnHi">50030363</td>
|
||||
<td class="coverFnHi">50908928</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#657">malloc_nofail</a></td>
|
||||
<td class="coverFnHi">13871886</td>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#628">malloc_counter_inc</a></td>
|
||||
<td class="coverFnHi">19792624</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#688">malloc_nofail</a></td>
|
||||
<td class="coverFnHi">14067108</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#350">pathcpy</a></td>
|
||||
<td class="coverFnHi">6858601</td>
|
||||
<td class="coverFnHi">6956056</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#706">strdup_nofail</a></td>
|
||||
<td class="coverFnHi">5663011</td>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#737">strdup_nofail</a></td>
|
||||
<td class="coverFnHi">5715940</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#116">log_tag</a></td>
|
||||
<td class="coverFnHi">4041705</td>
|
||||
<td class="coverFnHi">4058806</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#290">esc</a></td>
|
||||
<td class="coverFnHi">3592843</td>
|
||||
<td class="coverFnHi">3612178</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#485">mkancestor</a></td>
|
||||
<td class="coverFnHi">792978</td>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#490">mkancestor</a></td>
|
||||
<td class="coverFnHi">793073</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#77">log_error</a></td>
|
||||
<td class="coverFnHi">614592</td>
|
||||
<td class="coverFnHi">615188</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#169">msg_info</a></td>
|
||||
<td class="coverFnHi">295863</td>
|
||||
<td class="coverFnHi">295974</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#231">msg_verbose</a></td>
|
||||
<td class="coverFnHi">126936</td>
|
||||
<td class="coverFnHi">127002</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#549">fmtime</a></td>
|
||||
<td class="coverFnHi">117937</td>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#554">fmtime</a></td>
|
||||
<td class="coverFnHi">119629</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#408">pathexport</a></td>
|
||||
<td class="coverFnHi">17569</td>
|
||||
<td class="coverFnHi">17583</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#99">log_expected</a></td>
|
||||
<td class="coverFnHi">11751</td>
|
||||
<td class="coverFnHi">11440</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#683">calloc_nofail</a></td>
|
||||
<td class="coverFnHi">9283</td>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#714">calloc_nofail</a></td>
|
||||
<td class="coverFnHi">9576</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#394">pathimport</a></td>
|
||||
<td class="coverFnHi">8852</td>
|
||||
<td class="coverFnHi">9180</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#439">pathslash</a></td>
|
||||
<td class="coverFnHi">7319</td>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#444">pathslash</a></td>
|
||||
<td class="coverFnHi">7469</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#188">msg_progress</a></td>
|
||||
<td class="coverFnHi">3911</td>
|
||||
<td class="coverFnHi">4145</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#133">log_flush</a></td>
|
||||
<td class="coverFnHi">1108</td>
|
||||
<td class="coverFnHi">1148</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#212">msg_bar</a></td>
|
||||
<td class="coverFnHi">952</td>
|
||||
<td class="coverFnHi">945</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#55">log_fatal</a></td>
|
||||
<td class="coverFnHi">804</td>
|
||||
<td class="coverFnHi">822</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#379">pathcatc</a></td>
|
||||
|
|
@ -149,30 +153,30 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#145">msg_status</a></td>
|
||||
<td class="coverFnHi">569</td>
|
||||
<td class="coverFnHi">577</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#603">malloc_counter</a></td>
|
||||
<td class="coverFnHi">444</td>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#615">malloc_counter_get</a></td>
|
||||
<td class="coverFnHi">460</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#255">msg_flush</a></td>
|
||||
<td class="coverFnHi">440</td>
|
||||
<td class="coverFnHi">442</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#364">pathcat</a></td>
|
||||
<td class="coverFnHi">248</td>
|
||||
<td class="coverFnHi">256</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#456">pathcut</a></td>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#461">pathcut</a></td>
|
||||
<td class="coverFnHi">30</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#754">smartctl_attribute</a></td>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#785">smartctl_attribute</a></td>
|
||||
<td class="coverFnHi">25</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#828">smartctl_flush</a></td>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#859">smartctl_flush</a></td>
|
||||
<td class="coverFnHi">12</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
|
@ -180,7 +184,7 @@
|
|||
<td class="coverFnLo">0</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#737">smatch</a></td>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#768">smatch</a></td>
|
||||
<td class="coverFnLo">0</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
|
|||
|
|
@ -31,18 +31,18 @@
|
|||
<td class="headerValue">lcov.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntry">232</td>
|
||||
<td class="headerCovTableEntry">293</td>
|
||||
<td class="headerCovTableEntryMed">79.2 %</td>
|
||||
<td class="headerCovTableEntry">240</td>
|
||||
<td class="headerCovTableEntry">301</td>
|
||||
<td class="headerCovTableEntryMed">79.7 %</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Date:</td>
|
||||
<td class="headerValue">2015-11-20</td>
|
||||
<td class="headerValue">2016-01-09</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntry">29</td>
|
||||
<td class="headerCovTableEntry">31</td>
|
||||
<td class="headerCovTableEntryHi">93.5 %</td>
|
||||
<td class="headerCovTableEntry">30</td>
|
||||
<td class="headerCovTableEntry">32</td>
|
||||
<td class="headerCovTableEntryHi">93.8 %</td>
|
||||
</tr>
|
||||
<tr><td><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
|
|
@ -60,128 +60,132 @@
|
|||
<td width="20%" class="tableHead">Hit count <span class="tableHeadSort"><a href="support.c.func-sort-c.html"><img src="../updown.png" width=10 height=14 alt="Sort by hit count" title="Sort by hit count" border=0></a></span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#683">calloc_nofail</a></td>
|
||||
<td class="coverFnHi">9283</td>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#714">calloc_nofail</a></td>
|
||||
<td class="coverFnHi">9576</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#290">esc</a></td>
|
||||
<td class="coverFnHi">3592843</td>
|
||||
<td class="coverFnHi">3612178</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#549">fmtime</a></td>
|
||||
<td class="coverFnHi">117937</td>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#554">fmtime</a></td>
|
||||
<td class="coverFnHi">119629</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#77">log_error</a></td>
|
||||
<td class="coverFnHi">614592</td>
|
||||
<td class="coverFnHi">615188</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#99">log_expected</a></td>
|
||||
<td class="coverFnHi">11751</td>
|
||||
<td class="coverFnHi">11440</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#55">log_fatal</a></td>
|
||||
<td class="coverFnHi">804</td>
|
||||
<td class="coverFnHi">822</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#133">log_flush</a></td>
|
||||
<td class="coverFnHi">1108</td>
|
||||
<td class="coverFnHi">1148</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#116">log_tag</a></td>
|
||||
<td class="coverFnHi">4041705</td>
|
||||
<td class="coverFnHi">4058806</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#603">malloc_counter</a></td>
|
||||
<td class="coverFnHi">444</td>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#615">malloc_counter_get</a></td>
|
||||
<td class="coverFnHi">460</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#657">malloc_nofail</a></td>
|
||||
<td class="coverFnHi">13871886</td>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#628">malloc_counter_inc</a></td>
|
||||
<td class="coverFnHi">19792624</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#485">mkancestor</a></td>
|
||||
<td class="coverFnHi">792978</td>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#688">malloc_nofail</a></td>
|
||||
<td class="coverFnHi">14067108</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#490">mkancestor</a></td>
|
||||
<td class="coverFnHi">793073</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#212">msg_bar</a></td>
|
||||
<td class="coverFnHi">952</td>
|
||||
<td class="coverFnHi">945</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#255">msg_flush</a></td>
|
||||
<td class="coverFnHi">440</td>
|
||||
<td class="coverFnHi">442</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#169">msg_info</a></td>
|
||||
<td class="coverFnHi">295863</td>
|
||||
<td class="coverFnHi">295974</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#188">msg_progress</a></td>
|
||||
<td class="coverFnHi">3911</td>
|
||||
<td class="coverFnHi">4145</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#145">msg_status</a></td>
|
||||
<td class="coverFnHi">569</td>
|
||||
<td class="coverFnHi">577</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#231">msg_verbose</a></td>
|
||||
<td class="coverFnHi">126936</td>
|
||||
<td class="coverFnHi">127002</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#364">pathcat</a></td>
|
||||
<td class="coverFnHi">248</td>
|
||||
<td class="coverFnHi">256</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#379">pathcatc</a></td>
|
||||
<td class="coverFnHi">788</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#465">pathcmp</a></td>
|
||||
<td class="coverFnHi">50336221</td>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#470">pathcmp</a></td>
|
||||
<td class="coverFnHi">51328958</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#350">pathcpy</a></td>
|
||||
<td class="coverFnHi">6858601</td>
|
||||
<td class="coverFnHi">6956056</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#456">pathcut</a></td>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#461">pathcut</a></td>
|
||||
<td class="coverFnHi">30</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#408">pathexport</a></td>
|
||||
<td class="coverFnHi">17569</td>
|
||||
<td class="coverFnHi">17583</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#394">pathimport</a></td>
|
||||
<td class="coverFnHi">8852</td>
|
||||
<td class="coverFnHi">9180</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#422">pathprint</a></td>
|
||||
<td class="coverFnHi">50030363</td>
|
||||
<td class="coverFnHi">50908928</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#439">pathslash</a></td>
|
||||
<td class="coverFnHi">7319</td>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#444">pathslash</a></td>
|
||||
<td class="coverFnHi">7469</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#334">polish</a></td>
|
||||
<td class="coverFnLo">0</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#754">smartctl_attribute</a></td>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#785">smartctl_attribute</a></td>
|
||||
<td class="coverFnHi">25</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#828">smartctl_flush</a></td>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#859">smartctl_flush</a></td>
|
||||
<td class="coverFnHi">12</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#737">smatch</a></td>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#768">smatch</a></td>
|
||||
<td class="coverFnLo">0</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#706">strdup_nofail</a></td>
|
||||
<td class="coverFnHi">5663011</td>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#737">strdup_nofail</a></td>
|
||||
<td class="coverFnHi">5715940</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
|
|
@ -37,7 +37,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Date:</td>
|
||||
<td class="headerValue">2015-11-20</td>
|
||||
<td class="headerValue">2016-01-09</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntry">4</td>
|
||||
|
|
@ -61,15 +61,15 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="sync.c.gcov.html#405">block_is_enabled</a></td>
|
||||
<td class="coverFnHi">733118</td>
|
||||
<td class="coverFnHi">772244</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="sync.c.gcov.html#1215">state_sync</a></td>
|
||||
<td class="coverFnHi">72</td>
|
||||
<td class="coverFnHi">80</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="sync.c.gcov.html#437">state_sync_process</a></td>
|
||||
<td class="coverFnHi">68</td>
|
||||
<td class="coverFnHi">76</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="sync.c.gcov.html#28">state_hash_process</a></td>
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Date:</td>
|
||||
<td class="headerValue">2015-11-20</td>
|
||||
<td class="headerValue">2016-01-09</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntry">4</td>
|
||||
|
|
@ -61,7 +61,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="sync.c.gcov.html#405">block_is_enabled</a></td>
|
||||
<td class="coverFnHi">733118</td>
|
||||
<td class="coverFnHi">772244</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="sync.c.gcov.html#28">state_hash_process</a></td>
|
||||
|
|
@ -69,11 +69,11 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="sync.c.gcov.html#1215">state_sync</a></td>
|
||||
<td class="coverFnHi">72</td>
|
||||
<td class="coverFnHi">80</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="sync.c.gcov.html#437">state_sync_process</a></td>
|
||||
<td class="coverFnHi">68</td>
|
||||
<td class="coverFnHi">76</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
|
|
@ -31,18 +31,18 @@
|
|||
<td class="headerValue">lcov.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntry">229</td>
|
||||
<td class="headerCovTableEntry">289</td>
|
||||
<td class="headerCovTableEntryMed">79.2 %</td>
|
||||
<td class="headerCovTableEntry">255</td>
|
||||
<td class="headerCovTableEntry">332</td>
|
||||
<td class="headerCovTableEntryMed">76.8 %</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Date:</td>
|
||||
<td class="headerValue">2015-11-20</td>
|
||||
<td class="headerValue">2016-01-09</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntry">21</td>
|
||||
<td class="headerCovTableEntry">23</td>
|
||||
<td class="headerCovTableEntryHi">91.3 %</td>
|
||||
<td class="headerCovTableEntry">25</td>
|
||||
<td class="headerCovTableEntryHi">92.0 %</td>
|
||||
</tr>
|
||||
<tr><td><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
|
|
@ -60,87 +60,95 @@
|
|||
<td width="20%" class="tableHead">Hit count <span class="tableHeadSort"><img src="../glass.png" width=10 height=14 alt="Sort by hit count" title="Sort by hit count" border=0></span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="unix.c.gcov.html#263">tick</a></td>
|
||||
<td class="coverFnHi">2049010</td>
|
||||
<td class="coverFn"><a href="unix.c.gcov.html#359">tick</a></td>
|
||||
<td class="coverFnHi">2214352</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="unix.c.gcov.html#29">open_noatime</a></td>
|
||||
<td class="coverFnHi">1640600</td>
|
||||
<td class="coverFnHi">1661733</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="unix.c.gcov.html#124">filephy</a></td>
|
||||
<td class="coverFn"><a href="unix.c.gcov.html#202">filephy</a></td>
|
||||
<td class="coverFnHi">11432</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="unix.c.gcov.html#74">devuuid</a></td>
|
||||
<td class="coverFnHi">2279</td>
|
||||
<td class="coverFn"><a href="unix.c.gcov.html#296">fsinfo</a></td>
|
||||
<td class="coverFnHi">2415</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="unix.c.gcov.html#200">fsinfo</a></td>
|
||||
<td class="coverFnHi">2175</td>
|
||||
<td class="coverFn"><a href="unix.c.gcov.html#180">devuuid</a></td>
|
||||
<td class="coverFnHi">2404</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="unix.c.gcov.html#305">randomize</a></td>
|
||||
<td class="coverFnHi">263</td>
|
||||
<td class="coverFn"><a href="unix.c.gcov.html#83">devuuid_dev</a></td>
|
||||
<td class="coverFnHi">2404</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="unix.c.gcov.html#1004">os_init</a></td>
|
||||
<td class="coverFnHi">252</td>
|
||||
<td class="coverFn"><a href="unix.c.gcov.html#401">randomize</a></td>
|
||||
<td class="coverFnHi">271</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="unix.c.gcov.html#1009">os_done</a></td>
|
||||
<td class="coverFnHi">230</td>
|
||||
<td class="coverFn"><a href="unix.c.gcov.html#1100">os_init</a></td>
|
||||
<td class="coverFnHi">260</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="unix.c.gcov.html#400">devresolve</a></td>
|
||||
<td class="coverFn"><a href="unix.c.gcov.html#1115">os_done</a></td>
|
||||
<td class="coverFnHi">238</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="unix.c.gcov.html#496">devresolve</a></td>
|
||||
<td class="coverFnHi">97</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="unix.c.gcov.html#331">devread</a></td>
|
||||
<td class="coverFn"><a href="unix.c.gcov.html#427">devread</a></td>
|
||||
<td class="coverFnHi">86</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="unix.c.gcov.html#458">devtree</a></td>
|
||||
<td class="coverFn"><a href="unix.c.gcov.html#554">devtree</a></td>
|
||||
<td class="coverFnHi">72</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="unix.c.gcov.html#295">tick_ms</a></td>
|
||||
<td class="coverFn"><a href="unix.c.gcov.html#391">tick_ms</a></td>
|
||||
<td class="coverFnHi">36</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="unix.c.gcov.html#855">thread_smart</a></td>
|
||||
<td class="coverFn"><a href="unix.c.gcov.html#719">devsmart</a></td>
|
||||
<td class="coverFnHi">25</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="unix.c.gcov.html#623">devsmart</a></td>
|
||||
<td class="coverFnHi">25</td>
|
||||
<td class="coverFn"><a href="unix.c.gcov.html#951">thread_smart</a></td>
|
||||
<td class="coverFnHi">22</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="unix.c.gcov.html#829">thread_spindown</a></td>
|
||||
<td class="coverFn"><a href="unix.c.gcov.html#925">thread_spindown</a></td>
|
||||
<td class="coverFnHi">12</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="unix.c.gcov.html#685">devdown</a></td>
|
||||
<td class="coverFn"><a href="unix.c.gcov.html#781">devdown</a></td>
|
||||
<td class="coverFnHi">12</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="unix.c.gcov.html#753">devup</a></td>
|
||||
<td class="coverFn"><a href="unix.c.gcov.html#849">devup</a></td>
|
||||
<td class="coverFnHi">12</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="unix.c.gcov.html#783">thread_spinup</a></td>
|
||||
<td class="coverFn"><a href="unix.c.gcov.html#879">thread_spinup</a></td>
|
||||
<td class="coverFnHi">12</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="unix.c.gcov.html#918">devquery</a></td>
|
||||
<td class="coverFn"><a href="unix.c.gcov.html#1014">devquery</a></td>
|
||||
<td class="coverFnHi">4</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="unix.c.gcov.html#868">device_thread</a></td>
|
||||
<td class="coverFn"><a href="unix.c.gcov.html#964">device_thread</a></td>
|
||||
<td class="coverFnHi">3</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="unix.c.gcov.html#546">devscan</a></td>
|
||||
<td class="coverFn"><a href="unix.c.gcov.html#642">devscan</a></td>
|
||||
<td class="coverFnHi">1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="unix.c.gcov.html#150">devuuid_blkid</a></td>
|
||||
<td class="coverFnHi">1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
|
|
|||
|
|
@ -31,18 +31,18 @@
|
|||
<td class="headerValue">lcov.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntry">229</td>
|
||||
<td class="headerCovTableEntry">289</td>
|
||||
<td class="headerCovTableEntryMed">79.2 %</td>
|
||||
<td class="headerCovTableEntry">255</td>
|
||||
<td class="headerCovTableEntry">332</td>
|
||||
<td class="headerCovTableEntryMed">76.8 %</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Date:</td>
|
||||
<td class="headerValue">2015-11-20</td>
|
||||
<td class="headerValue">2016-01-09</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntry">21</td>
|
||||
<td class="headerCovTableEntry">23</td>
|
||||
<td class="headerCovTableEntryHi">91.3 %</td>
|
||||
<td class="headerCovTableEntry">25</td>
|
||||
<td class="headerCovTableEntryHi">92.0 %</td>
|
||||
</tr>
|
||||
<tr><td><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
|
|
@ -60,95 +60,103 @@
|
|||
<td width="20%" class="tableHead">Hit count <span class="tableHeadSort"><a href="unix.c.func-sort-c.html"><img src="../updown.png" width=10 height=14 alt="Sort by hit count" title="Sort by hit count" border=0></a></span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="unix.c.gcov.html#685">devdown</a></td>
|
||||
<td class="coverFn"><a href="unix.c.gcov.html#781">devdown</a></td>
|
||||
<td class="coverFnHi">12</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="unix.c.gcov.html#868">device_thread</a></td>
|
||||
<td class="coverFn"><a href="unix.c.gcov.html#964">device_thread</a></td>
|
||||
<td class="coverFnHi">3</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="unix.c.gcov.html#918">devquery</a></td>
|
||||
<td class="coverFn"><a href="unix.c.gcov.html#1014">devquery</a></td>
|
||||
<td class="coverFnHi">4</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="unix.c.gcov.html#331">devread</a></td>
|
||||
<td class="coverFn"><a href="unix.c.gcov.html#427">devread</a></td>
|
||||
<td class="coverFnHi">86</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="unix.c.gcov.html#400">devresolve</a></td>
|
||||
<td class="coverFn"><a href="unix.c.gcov.html#496">devresolve</a></td>
|
||||
<td class="coverFnHi">97</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="unix.c.gcov.html#546">devscan</a></td>
|
||||
<td class="coverFn"><a href="unix.c.gcov.html#642">devscan</a></td>
|
||||
<td class="coverFnHi">1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="unix.c.gcov.html#623">devsmart</a></td>
|
||||
<td class="coverFn"><a href="unix.c.gcov.html#719">devsmart</a></td>
|
||||
<td class="coverFnHi">25</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="unix.c.gcov.html#458">devtree</a></td>
|
||||
<td class="coverFn"><a href="unix.c.gcov.html#554">devtree</a></td>
|
||||
<td class="coverFnHi">72</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="unix.c.gcov.html#753">devup</a></td>
|
||||
<td class="coverFn"><a href="unix.c.gcov.html#849">devup</a></td>
|
||||
<td class="coverFnHi">12</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="unix.c.gcov.html#74">devuuid</a></td>
|
||||
<td class="coverFnHi">2279</td>
|
||||
<td class="coverFn"><a href="unix.c.gcov.html#180">devuuid</a></td>
|
||||
<td class="coverFnHi">2404</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="unix.c.gcov.html#150">devuuid_blkid</a></td>
|
||||
<td class="coverFnHi">1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="unix.c.gcov.html#83">devuuid_dev</a></td>
|
||||
<td class="coverFnHi">2404</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="unix.c.gcov.html#43">dirent_hidden</a></td>
|
||||
<td class="coverFnLo">0</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="unix.c.gcov.html#124">filephy</a></td>
|
||||
<td class="coverFn"><a href="unix.c.gcov.html#202">filephy</a></td>
|
||||
<td class="coverFnHi">11432</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="unix.c.gcov.html#200">fsinfo</a></td>
|
||||
<td class="coverFnHi">2175</td>
|
||||
<td class="coverFn"><a href="unix.c.gcov.html#296">fsinfo</a></td>
|
||||
<td class="coverFnHi">2415</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="unix.c.gcov.html#29">open_noatime</a></td>
|
||||
<td class="coverFnHi">1640600</td>
|
||||
<td class="coverFnHi">1661733</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="unix.c.gcov.html#1009">os_done</a></td>
|
||||
<td class="coverFnHi">230</td>
|
||||
<td class="coverFn"><a href="unix.c.gcov.html#1115">os_done</a></td>
|
||||
<td class="coverFnHi">238</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="unix.c.gcov.html#1004">os_init</a></td>
|
||||
<td class="coverFnHi">252</td>
|
||||
<td class="coverFn"><a href="unix.c.gcov.html#1100">os_init</a></td>
|
||||
<td class="coverFnHi">260</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="unix.c.gcov.html#305">randomize</a></td>
|
||||
<td class="coverFnHi">263</td>
|
||||
<td class="coverFn"><a href="unix.c.gcov.html#401">randomize</a></td>
|
||||
<td class="coverFnHi">271</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="unix.c.gcov.html#48">stat_desc</a></td>
|
||||
<td class="coverFnLo">0</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="unix.c.gcov.html#855">thread_smart</a></td>
|
||||
<td class="coverFnHi">25</td>
|
||||
<td class="coverFn"><a href="unix.c.gcov.html#951">thread_smart</a></td>
|
||||
<td class="coverFnHi">22</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="unix.c.gcov.html#829">thread_spindown</a></td>
|
||||
<td class="coverFn"><a href="unix.c.gcov.html#925">thread_spindown</a></td>
|
||||
<td class="coverFnHi">12</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="unix.c.gcov.html#783">thread_spinup</a></td>
|
||||
<td class="coverFn"><a href="unix.c.gcov.html#879">thread_spinup</a></td>
|
||||
<td class="coverFnHi">12</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="unix.c.gcov.html#263">tick</a></td>
|
||||
<td class="coverFnHi">2049010</td>
|
||||
<td class="coverFn"><a href="unix.c.gcov.html#359">tick</a></td>
|
||||
<td class="coverFnHi">2214352</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="unix.c.gcov.html#295">tick_ms</a></td>
|
||||
<td class="coverFn"><a href="unix.c.gcov.html#391">tick_ms</a></td>
|
||||
<td class="coverFnHi">36</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
|
|
@ -37,7 +37,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Date:</td>
|
||||
<td class="headerValue">2015-11-20</td>
|
||||
<td class="headerValue">2016-01-09</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntry">14</td>
|
||||
|
|
@ -61,55 +61,55 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="util.c.gcov.html#399">util_rotl32</a></td>
|
||||
<td class="coverFnHi">924861211</td>
|
||||
<td class="coverFnHi">796761149</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="util.c.gcov.html#404">util_rotl64</a></td>
|
||||
<td class="coverFnHi">461015664</td>
|
||||
<td class="coverFnHi">511410252</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="util.c.gcov.html#447">memhash</a></td>
|
||||
<td class="coverFnHi">5724756</td>
|
||||
<td class="coverFnHi">5791413</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="util.c.gcov.html#367">crc32c_x86</a></td>
|
||||
<td class="coverFnHi">659527</td>
|
||||
<td class="coverFnHi">646616</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="util.c.gcov.html#478">memdiff</a></td>
|
||||
<td class="coverFnHi">25190</td>
|
||||
<td class="coverFnHi">25329</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="util.c.gcov.html#58">malloc_nofail_test</a></td>
|
||||
<td class="coverFnHi">2580</td>
|
||||
<td class="coverFnHi">1905</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="util.c.gcov.html#69">mtest_vector</a></td>
|
||||
<td class="coverFnHi">2580</td>
|
||||
<td class="coverFnHi">1905</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="util.c.gcov.html#355">crc32c_gen</a></td>
|
||||
<td class="coverFnHi">353</td>
|
||||
<td class="coverFnHi">369</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="util.c.gcov.html#381">crc32c_init</a></td>
|
||||
<td class="coverFnHi">268</td>
|
||||
<td class="coverFnHi">276</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="util.c.gcov.html#501">lock_lock</a></td>
|
||||
<td class="coverFnHi">243</td>
|
||||
<td class="coverFnHi">251</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="util.c.gcov.html#525">lock_unlock</a></td>
|
||||
<td class="coverFnHi">223</td>
|
||||
<td class="coverFnHi">231</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="util.c.gcov.html#42">malloc_nofail_vector_align</a></td>
|
||||
<td class="coverFnHi">201</td>
|
||||
<td class="coverFnHi">209</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="util.c.gcov.html#26">malloc_nofail_align</a></td>
|
||||
<td class="coverFnHi">83</td>
|
||||
<td class="coverFnHi">91</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="util.c.gcov.html#465">hash_config_name</a></td>
|
||||
|
|
|
|||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue