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
9aa518ab88
commit
4db5a06233
159 changed files with 5847 additions and 5839 deletions
|
|
@ -73,15 +73,15 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="check.c.gcov.html#68">blockcmp</a></td>
|
||||
<td class="coverFnHi">472820</td>
|
||||
<td class="coverFnHi">473403</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="check.c.gcov.html#160">repair_step</a></td>
|
||||
<td class="coverFnHi">252162</td>
|
||||
<td class="coverFnHi">252742</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="check.c.gcov.html#97">is_hash_matching</a></td>
|
||||
<td class="coverFnHi">214237</td>
|
||||
<td class="coverFnHi">214689</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="check.c.gcov.html#1910">state_check</a></td>
|
||||
|
|
|
|||
|
|
@ -65,7 +65,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="check.c.gcov.html#68">blockcmp</a></td>
|
||||
<td class="coverFnHi">472820</td>
|
||||
<td class="coverFnHi">473403</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="check.c.gcov.html#595">file_post</a></td>
|
||||
|
|
@ -73,7 +73,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="check.c.gcov.html#97">is_hash_matching</a></td>
|
||||
<td class="coverFnHi">214237</td>
|
||||
<td class="coverFnHi">214689</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="check.c.gcov.html#140">is_parity_matching</a></td>
|
||||
|
|
@ -85,7 +85,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="check.c.gcov.html#160">repair_step</a></td>
|
||||
<td class="coverFnHi">252162</td>
|
||||
<td class="coverFnHi">252742</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="check.c.gcov.html#1910">state_check</a></td>
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
|
|
@ -60,12 +60,12 @@
|
|||
<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="dry.c.gcov.html#40">dry_data_reader</a></td>
|
||||
<td class="coverFnHi">42603</td>
|
||||
<td class="coverFn"><a href="dry.c.gcov.html#139">dry_parity_reader</a></td>
|
||||
<td class="coverFnHi">42604</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dry.c.gcov.html#139">dry_parity_reader</a></td>
|
||||
<td class="coverFnHi">42602</td>
|
||||
<td class="coverFn"><a href="dry.c.gcov.html#40">dry_data_reader</a></td>
|
||||
<td class="coverFnHi">42590</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dry.c.gcov.html#32">block_is_enabled</a></td>
|
||||
|
|
|
|||
|
|
@ -65,11 +65,11 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dry.c.gcov.html#40">dry_data_reader</a></td>
|
||||
<td class="coverFnHi">42603</td>
|
||||
<td class="coverFnHi">42590</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dry.c.gcov.html#139">dry_parity_reader</a></td>
|
||||
<td class="coverFnHi">42602</td>
|
||||
<td class="coverFnHi">42604</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="dry.c.gcov.html#391">state_dry</a></td>
|
||||
|
|
|
|||
|
|
@ -101,30 +101,30 @@
|
|||
<span class="lineNum"> 39 </span><span class="lineCov"> 7102 : return 1;</span>
|
||||
<a name="40"><span class="lineNum"> 40 </span> : }</a>
|
||||
<span class="lineNum"> 41 </span> :
|
||||
<span class="lineNum"> 42 </span><span class="lineCov"> 42603 : static void dry_data_reader(struct snapraid_worker* worker, struct snapraid_task* task)</span>
|
||||
<span class="lineNum"> 42 </span><span class="lineCov"> 42590 : static void dry_data_reader(struct snapraid_worker* worker, struct snapraid_task* task)</span>
|
||||
<span class="lineNum"> 43 </span> : {
|
||||
<span class="lineNum"> 44 </span><span class="lineCov"> 42603 : struct snapraid_io* io = worker->io;</span>
|
||||
<span class="lineNum"> 45 </span><span class="lineCov"> 42603 : struct snapraid_state* state = io->state;</span>
|
||||
<span class="lineNum"> 46 </span><span class="lineCov"> 42603 : struct snapraid_handle* handle = worker->handle;</span>
|
||||
<span class="lineNum"> 47 </span><span class="lineCov"> 42603 : struct snapraid_disk* disk = handle->disk;</span>
|
||||
<span class="lineNum"> 48 </span><span class="lineCov"> 42603 : block_off_t blockcur = task->position;</span>
|
||||
<span class="lineNum"> 49 </span><span class="lineCov"> 42603 : unsigned char* buffer = task->buffer;</span>
|
||||
<span class="lineNum"> 44 </span><span class="lineCov"> 42590 : struct snapraid_io* io = worker->io;</span>
|
||||
<span class="lineNum"> 45 </span><span class="lineCov"> 42590 : struct snapraid_state* state = io->state;</span>
|
||||
<span class="lineNum"> 46 </span><span class="lineCov"> 42590 : struct snapraid_handle* handle = worker->handle;</span>
|
||||
<span class="lineNum"> 47 </span><span class="lineCov"> 42590 : struct snapraid_disk* disk = handle->disk;</span>
|
||||
<span class="lineNum"> 48 </span><span class="lineCov"> 42590 : block_off_t blockcur = task->position;</span>
|
||||
<span class="lineNum"> 49 </span><span class="lineCov"> 42590 : unsigned char* buffer = task->buffer;</span>
|
||||
<span class="lineNum"> 50 </span> : int ret;
|
||||
<span class="lineNum"> 51 </span> : char esc_buffer[ESC_MAX];
|
||||
<span class="lineNum"> 52 </span> :
|
||||
<span class="lineNum"> 53 </span> : /* if the disk position is not used */
|
||||
<span class="lineNum"> 54 </span><span class="lineCov"> 42603 : if (!disk) {</span>
|
||||
<span class="lineNum"> 54 </span><span class="lineCov"> 42590 : if (!disk) {</span>
|
||||
<span class="lineNum"> 55 </span> : /* use an empty block */
|
||||
<span class="lineNum"> 56 </span><span class="lineCov"> 4687 : memset(buffer, 0, state->block_size);</span>
|
||||
<span class="lineNum"> 57 </span><span class="lineCov"> 4687 : task->state = TASK_STATE_DONE;</span>
|
||||
<span class="lineNum"> 58 </span><span class="lineCov"> 9918 : return;</span>
|
||||
<span class="lineNum"> 56 </span><span class="lineCov"> 4686 : memset(buffer, 0, state->block_size);</span>
|
||||
<span class="lineNum"> 57 </span><span class="lineCov"> 4686 : task->state = TASK_STATE_DONE;</span>
|
||||
<span class="lineNum"> 58 </span><span class="lineCov"> 9916 : return;</span>
|
||||
<span class="lineNum"> 59 </span> : }
|
||||
<span class="lineNum"> 60 </span> :
|
||||
<span class="lineNum"> 61 </span> : /* get the block */
|
||||
<span class="lineNum"> 62 </span><span class="lineCov"> 37916 : task->block = fs_par2block_find(disk, blockcur);</span>
|
||||
<span class="lineNum"> 62 </span><span class="lineCov"> 37904 : task->block = fs_par2block_find(disk, blockcur);</span>
|
||||
<span class="lineNum"> 63 </span> :
|
||||
<span class="lineNum"> 64 </span> : /* if the block is not used */
|
||||
<span class="lineNum"> 65 </span><span class="lineCov"> 37888 : if (!block_has_file(task->block)) {</span>
|
||||
<span class="lineNum"> 65 </span><span class="lineCov"> 37878 : if (!block_has_file(task->block)) {</span>
|
||||
<span class="lineNum"> 66 </span> : /* use an empty block */
|
||||
<span class="lineNum"> 67 </span><span class="lineCov"> 544 : memset(buffer, 0, state->block_size);</span>
|
||||
<span class="lineNum"> 68 </span><span class="lineCov"> 544 : task->state = TASK_STATE_DONE;</span>
|
||||
|
|
@ -132,13 +132,13 @@
|
|||
<span class="lineNum"> 70 </span> : }
|
||||
<span class="lineNum"> 71 </span> :
|
||||
<span class="lineNum"> 72 </span> : /* get the file of this block */
|
||||
<span class="lineNum"> 73 </span><span class="lineCov"> 37334 : task->file = fs_par2file_get(disk, blockcur, &task->file_pos);</span>
|
||||
<span class="lineNum"> 73 </span><span class="lineCov"> 37320 : task->file = fs_par2file_get(disk, blockcur, &task->file_pos);</span>
|
||||
<span class="lineNum"> 74 </span> :
|
||||
<span class="lineNum"> 75 </span> : /* if the file is different than the current one, close it */
|
||||
<span class="lineNum"> 76 </span><span class="lineCov"> 37352 : if (handle->file != 0 && handle->file != task->file) {</span>
|
||||
<span class="lineNum"> 76 </span><span class="lineCov"> 37335 : if (handle->file != 0 && handle->file != task->file) {</span>
|
||||
<span class="lineNum"> 77 </span> : /* keep a pointer at the file we are going to close for error reporting */
|
||||
<span class="lineNum"> 78 </span><span class="lineCov"> 15083 : struct snapraid_file* report = handle->file;</span>
|
||||
<span class="lineNum"> 79 </span><span class="lineCov"> 15083 : ret = handle_close(handle);</span>
|
||||
<span class="lineNum"> 78 </span><span class="lineCov"> 15082 : struct snapraid_file* report = handle->file;</span>
|
||||
<span class="lineNum"> 79 </span><span class="lineCov"> 15082 : ret = handle_close(handle);</span>
|
||||
<span class="lineNum"> 80 </span><span class="lineCov"> 15071 : if (ret == -1) {</span>
|
||||
<span class="lineNum"> 81 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 82 </span> : /* This one is really an unexpected error, because we are only reading */
|
||||
|
|
@ -162,8 +162,8 @@
|
|||
<span class="lineNum"> 100 </span> : }
|
||||
<span class="lineNum"> 101 </span> : }
|
||||
<span class="lineNum"> 102 </span> :
|
||||
<span class="lineNum"> 103 </span><span class="lineCov"> 37340 : ret = handle_open(handle, task->file, state->file_mode, log_error, 0);</span>
|
||||
<span class="lineNum"> 104 </span><span class="lineCov"> 37368 : if (ret == -1) {</span>
|
||||
<span class="lineNum"> 103 </span><span class="lineCov"> 37324 : ret = handle_open(handle, task->file, state->file_mode, log_error, 0);</span>
|
||||
<span class="lineNum"> 104 </span><span class="lineCov"> 37350 : if (ret == -1) {</span>
|
||||
<span class="lineNum"> 105 </span><span class="lineNoCov"> 0 : if (errno == EIO) {</span>
|
||||
<span class="lineNum"> 106 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 107 </span> : log_tag("error:%u:%s:%s: Open EIO error. %s\n", blockcur, disk->name, esc_tag(task->file->sub, esc_buffer), strerror(errno));
|
||||
|
|
@ -180,8 +180,8 @@
|
|||
<span class="lineNum"> 118 </span><span class="lineNoCov"> 0 : return;</span>
|
||||
<span class="lineNum"> 119 </span> : }
|
||||
<span class="lineNum"> 120 </span> :
|
||||
<span class="lineNum"> 121 </span><span class="lineCov"> 37368 : task->read_size = handle_read(handle, task->file_pos, buffer, state->block_size, log_error, 0);</span>
|
||||
<span class="lineNum"> 122 </span><span class="lineCov"> 37295 : if (task->read_size == -1) {</span>
|
||||
<span class="lineNum"> 121 </span><span class="lineCov"> 37350 : task->read_size = handle_read(handle, task->file_pos, buffer, state->block_size, log_error, 0);</span>
|
||||
<span class="lineNum"> 122 </span><span class="lineCov"> 37281 : if (task->read_size == -1) {</span>
|
||||
<span class="lineNum"> 123 </span><span class="lineNoCov"> 0 : if (errno == EIO) {</span>
|
||||
<span class="lineNum"> 124 </span><span class="lineNoCov"> 0 : log_tag("error:%u:%s:%s: Read EIO error at position %u. %s\n", blockcur, disk->name, esc_tag(task->file->sub, esc_buffer), task->file_pos, strerror(errno));</span>
|
||||
<span class="lineNum"> 125 </span><span class="lineNoCov"> 0 : log_error("Input/Output error in file '%s' at position '%u'\n", handle->path, task->file_pos);</span>
|
||||
|
|
@ -195,24 +195,24 @@
|
|||
<span class="lineNum"> 133 </span> : }
|
||||
<span class="lineNum"> 134 </span> :
|
||||
<span class="lineNum"> 135 </span> : /* store the path of the opened file */
|
||||
<span class="lineNum"> 136 </span><span class="lineCov"> 37295 : pathcpy(task->path, sizeof(task->path), handle->path);</span>
|
||||
<span class="lineNum"> 136 </span><span class="lineCov"> 37281 : pathcpy(task->path, sizeof(task->path), handle->path);</span>
|
||||
<span class="lineNum"> 137 </span> :
|
||||
<span class="lineNum"> 138 </span><span class="lineCov"> 37327 : task->state = TASK_STATE_DONE;</span>
|
||||
<span class="lineNum"> 138 </span><span class="lineCov"> 37299 : task->state = TASK_STATE_DONE;</span>
|
||||
<a name="139"><span class="lineNum"> 139 </span> : }</a>
|
||||
<span class="lineNum"> 140 </span> :
|
||||
<span class="lineNum"> 141 </span><span class="lineCov"> 42602 : static void dry_parity_reader(struct snapraid_worker* worker, struct snapraid_task* task)</span>
|
||||
<span class="lineNum"> 141 </span><span class="lineCov"> 42604 : static void dry_parity_reader(struct snapraid_worker* worker, struct snapraid_task* task)</span>
|
||||
<span class="lineNum"> 142 </span> : {
|
||||
<span class="lineNum"> 143 </span><span class="lineCov"> 42602 : struct snapraid_io* io = worker->io;</span>
|
||||
<span class="lineNum"> 144 </span><span class="lineCov"> 42602 : struct snapraid_state* state = io->state;</span>
|
||||
<span class="lineNum"> 145 </span><span class="lineCov"> 42602 : struct snapraid_parity_handle* parity_handle = worker->parity_handle;</span>
|
||||
<span class="lineNum"> 146 </span><span class="lineCov"> 42602 : unsigned level = parity_handle->level;</span>
|
||||
<span class="lineNum"> 147 </span><span class="lineCov"> 42602 : block_off_t blockcur = task->position;</span>
|
||||
<span class="lineNum"> 148 </span><span class="lineCov"> 42602 : unsigned char* buffer = task->buffer;</span>
|
||||
<span class="lineNum"> 143 </span><span class="lineCov"> 42604 : struct snapraid_io* io = worker->io;</span>
|
||||
<span class="lineNum"> 144 </span><span class="lineCov"> 42604 : struct snapraid_state* state = io->state;</span>
|
||||
<span class="lineNum"> 145 </span><span class="lineCov"> 42604 : struct snapraid_parity_handle* parity_handle = worker->parity_handle;</span>
|
||||
<span class="lineNum"> 146 </span><span class="lineCov"> 42604 : unsigned level = parity_handle->level;</span>
|
||||
<span class="lineNum"> 147 </span><span class="lineCov"> 42604 : block_off_t blockcur = task->position;</span>
|
||||
<span class="lineNum"> 148 </span><span class="lineCov"> 42604 : unsigned char* buffer = task->buffer;</span>
|
||||
<span class="lineNum"> 149 </span> : int ret;
|
||||
<span class="lineNum"> 150 </span> :
|
||||
<span class="lineNum"> 151 </span> : /* read the parity */
|
||||
<span class="lineNum"> 152 </span><span class="lineCov"> 42602 : ret = parity_read(parity_handle, blockcur, buffer, state->block_size, log_error);</span>
|
||||
<span class="lineNum"> 153 </span><span class="lineCov"> 42572 : if (ret == -1) {</span>
|
||||
<span class="lineNum"> 152 </span><span class="lineCov"> 42604 : ret = parity_read(parity_handle, blockcur, buffer, state->block_size, log_error);</span>
|
||||
<span class="lineNum"> 153 </span><span class="lineCov"> 42568 : if (ret == -1) {</span>
|
||||
<span class="lineNum"> 154 </span><span class="lineNoCov"> 0 : if (errno == EIO) {</span>
|
||||
<span class="lineNum"> 155 </span><span class="lineNoCov"> 0 : log_tag("parity_error:%u:%s: Read EIO error. %s\n", blockcur, lev_config_name(level), strerror(errno));</span>
|
||||
<span class="lineNum"> 156 </span><span class="lineNoCov"> 0 : log_error("Input/Output error in parity '%s' at position '%u'\n", lev_config_name(level), blockcur);</span>
|
||||
|
|
@ -225,7 +225,7 @@
|
|||
<span class="lineNum"> 163 </span><span class="lineNoCov"> 0 : return;</span>
|
||||
<span class="lineNum"> 164 </span> : }
|
||||
<span class="lineNum"> 165 </span> :
|
||||
<span class="lineNum"> 166 </span><span class="lineCov"> 42572 : task->state = TASK_STATE_DONE;</span>
|
||||
<span class="lineNum"> 166 </span><span class="lineCov"> 42568 : task->state = TASK_STATE_DONE;</span>
|
||||
<a name="167"><span class="lineNum"> 167 </span> : }</a>
|
||||
<span class="lineNum"> 168 </span> :
|
||||
<span class="lineNum"> 169 </span><span class="lineCov"> 2 : static int state_dry_process(struct snapraid_state* state, struct snapraid_parity_handle* parity_handle, block_off_t blockstart, block_off_t blockmax)</span>
|
||||
|
|
|
|||
|
|
@ -61,71 +61,71 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#1098">extent_parity_inside_compare_unlock</a></td>
|
||||
<td class="coverFnHi">114112918</td>
|
||||
<td class="coverFnHi">113816358</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#803">fs_lock</a></td>
|
||||
<td class="coverFnHi">53196997</td>
|
||||
<td class="coverFnHi">53194369</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#812">fs_unlock</a></td>
|
||||
<td class="coverFnHi">53196517</td>
|
||||
<td class="coverFnHi">53193869</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#659">extent_file_compare</a></td>
|
||||
<td class="coverFnHi">45010276</td>
|
||||
<td class="coverFnHi">45007856</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#1366">fs_file2block_get</a></td>
|
||||
<td class="coverFnHi">44947073</td>
|
||||
<td class="coverFnHi">44945080</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#646">extent_parity_compare</a></td>
|
||||
<td class="coverFnHi">44514357</td>
|
||||
<td class="coverFnHi">44511012</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#1116">fs_par2extent_get_unlock</a></td>
|
||||
<td class="coverFnHi">39144190</td>
|
||||
<td class="coverFnHi">39142093</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#1196">fs_par2file_find</a></td>
|
||||
<td class="coverFnHi">39037624</td>
|
||||
<td class="coverFnHi">39035232</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#1378">fs_par2block_find</a></td>
|
||||
<td class="coverFnHi">27313808</td>
|
||||
<td class="coverFnHi">27312315</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#1148">extent_file_inside_compare_unlock</a></td>
|
||||
<td class="coverFnHi">21311558</td>
|
||||
<td class="coverFnHi">21314053</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#170">filter_apply</a></td>
|
||||
<td class="coverFnHi">12457480</td>
|
||||
<td class="coverFnHi">12456124</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#1171">fs_file2extent_get_unlock</a></td>
|
||||
<td class="coverFnHi">10336534</td>
|
||||
<td class="coverFnHi">10336325</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#1238">fs_allocate</a></td>
|
||||
<td class="coverFnHi">9176132</td>
|
||||
<td class="coverFnHi">9175619</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#477">file_block_size</a></td>
|
||||
<td class="coverFnHi">6823546</td>
|
||||
<td class="coverFnHi">6823060</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#957">extent_file_check_foreach_unlock</a></td>
|
||||
<td class="coverFnHi">6584521</td>
|
||||
<td class="coverFnHi">6584437</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#907">extent_parity_check_foreach_unlock</a></td>
|
||||
<td class="coverFnHi">6584521</td>
|
||||
<td class="coverFnHi">6584437</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#195">filter_recurse</a></td>
|
||||
<td class="coverFnHi">6236835</td>
|
||||
<td class="coverFnHi">6236157</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#493">file_block_is_last</a></td>
|
||||
|
|
@ -133,55 +133,55 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#1219">fs_file2par_find</a></td>
|
||||
<td class="coverFnHi">4869430</td>
|
||||
<td class="coverFnHi">4869535</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#615">extent_alloc</a></td>
|
||||
<td class="coverFnHi">3735733</td>
|
||||
<td class="coverFnHi">3735492</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#364">file_alloc</a></td>
|
||||
<td class="coverFnHi">3691405</td>
|
||||
<td class="coverFnHi">3691209</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#641">extent_free</a></td>
|
||||
<td class="coverFnHi">3564894</td>
|
||||
<td class="coverFnHi">3564805</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#415">file_free</a></td>
|
||||
<td class="coverFnHi">3543810</td>
|
||||
<td class="coverFnHi">3543765</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#229">filter_element</a></td>
|
||||
<td class="coverFnHi">3332962</td>
|
||||
<td class="coverFnHi">3332623</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#278">filter_path</a></td>
|
||||
<td class="coverFnHi">3329865</td>
|
||||
<td class="coverFnHi">3329526</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#339">filter_content</a></td>
|
||||
<td class="coverFnHi">3173426</td>
|
||||
<td class="coverFnHi">3173124</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#508">file_inode_compare_to_arg</a></td>
|
||||
<td class="coverFnHi">987121</td>
|
||||
<td class="coverFnHi">987050</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#1409">time_compare</a></td>
|
||||
<td class="coverFnHi">683554</td>
|
||||
<td class="coverFnHi">684987</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#1438">fmt_term</a></td>
|
||||
<td class="coverFnHi">355785</td>
|
||||
<td class="coverFnHi">356004</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#532">file_path_compare</a></td>
|
||||
<td class="coverFnHi">189479</td>
|
||||
<td class="coverFnHi">189434</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#151">filter_type</a></td>
|
||||
<td class="coverFnHi">125137</td>
|
||||
<td class="coverFnHi">125245</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#677">link_alloc</a></td>
|
||||
|
|
@ -193,43 +193,43 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#1287">fs_deallocate</a></td>
|
||||
<td class="coverFnHi">106256</td>
|
||||
<td class="coverFnHi">106126</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#552">file_path_compare_to_arg</a></td>
|
||||
<td class="coverFnHi">97502</td>
|
||||
<td class="coverFnHi">97552</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#293">filter_existence</a></td>
|
||||
<td class="coverFnHi">80691</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#540">file_physical_compare</a></td>
|
||||
<td class="coverFnHi">63430</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#876">extent_disk_size_compare_unlock</a></td>
|
||||
<td class="coverFnHi">50477</td>
|
||||
<td class="coverFnHi">50483</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#466">file_name</a></td>
|
||||
<td class="coverFnHi">47958</td>
|
||||
<td class="coverFnHi">47954</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#318">filter_correctness</a></td>
|
||||
<td class="coverFnHi">38646</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#540">file_physical_compare</a></td>
|
||||
<td class="coverFnHi">35166</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#696">link_name_compare_to_arg</a></td>
|
||||
<td class="coverFnHi">33727</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#593">file_namestamp_compare</a></td>
|
||||
<td class="coverFnHi">23979</td>
|
||||
<td class="coverFnHi">23977</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#560">file_name_compare</a></td>
|
||||
<td class="coverFnHi">23979</td>
|
||||
<td class="coverFnHi">23977</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#570">file_stamp_compare</a></td>
|
||||
|
|
|
|||
|
|
@ -89,7 +89,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#615">extent_alloc</a></td>
|
||||
<td class="coverFnHi">3735733</td>
|
||||
<td class="coverFnHi">3735492</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#828">extent_disk_empty_compare_unlock</a></td>
|
||||
|
|
@ -97,39 +97,39 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#876">extent_disk_size_compare_unlock</a></td>
|
||||
<td class="coverFnHi">50477</td>
|
||||
<td class="coverFnHi">50483</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#957">extent_file_check_foreach_unlock</a></td>
|
||||
<td class="coverFnHi">6584521</td>
|
||||
<td class="coverFnHi">6584437</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#659">extent_file_compare</a></td>
|
||||
<td class="coverFnHi">45010276</td>
|
||||
<td class="coverFnHi">45007856</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#1148">extent_file_inside_compare_unlock</a></td>
|
||||
<td class="coverFnHi">21311558</td>
|
||||
<td class="coverFnHi">21314053</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#641">extent_free</a></td>
|
||||
<td class="coverFnHi">3564894</td>
|
||||
<td class="coverFnHi">3564805</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#907">extent_parity_check_foreach_unlock</a></td>
|
||||
<td class="coverFnHi">6584521</td>
|
||||
<td class="coverFnHi">6584437</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#646">extent_parity_compare</a></td>
|
||||
<td class="coverFnHi">44514357</td>
|
||||
<td class="coverFnHi">44511012</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#1098">extent_parity_inside_compare_unlock</a></td>
|
||||
<td class="coverFnHi">114112918</td>
|
||||
<td class="coverFnHi">113816358</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#364">file_alloc</a></td>
|
||||
<td class="coverFnHi">3691405</td>
|
||||
<td class="coverFnHi">3691209</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#493">file_block_is_last</a></td>
|
||||
|
|
@ -137,7 +137,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#477">file_block_size</a></td>
|
||||
<td class="coverFnHi">6823546</td>
|
||||
<td class="coverFnHi">6823060</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#430">file_copy</a></td>
|
||||
|
|
@ -149,7 +149,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#415">file_free</a></td>
|
||||
<td class="coverFnHi">3543810</td>
|
||||
<td class="coverFnHi">3543765</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#520">file_inode_compare</a></td>
|
||||
|
|
@ -157,27 +157,27 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#508">file_inode_compare_to_arg</a></td>
|
||||
<td class="coverFnHi">987121</td>
|
||||
<td class="coverFnHi">987050</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#466">file_name</a></td>
|
||||
<td class="coverFnHi">47958</td>
|
||||
<td class="coverFnHi">47954</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#560">file_name_compare</a></td>
|
||||
<td class="coverFnHi">23979</td>
|
||||
<td class="coverFnHi">23977</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#593">file_namestamp_compare</a></td>
|
||||
<td class="coverFnHi">23979</td>
|
||||
<td class="coverFnHi">23977</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#532">file_path_compare</a></td>
|
||||
<td class="coverFnHi">189479</td>
|
||||
<td class="coverFnHi">189434</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#552">file_path_compare_to_arg</a></td>
|
||||
<td class="coverFnHi">97502</td>
|
||||
<td class="coverFnHi">97552</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#604">file_pathstamp_compare</a></td>
|
||||
|
|
@ -185,7 +185,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#540">file_physical_compare</a></td>
|
||||
<td class="coverFnHi">35166</td>
|
||||
<td class="coverFnHi">63430</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#424">file_rename</a></td>
|
||||
|
|
@ -205,11 +205,11 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#170">filter_apply</a></td>
|
||||
<td class="coverFnHi">12457480</td>
|
||||
<td class="coverFnHi">12456124</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#339">filter_content</a></td>
|
||||
<td class="coverFnHi">3173426</td>
|
||||
<td class="coverFnHi">3173124</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#318">filter_correctness</a></td>
|
||||
|
|
@ -217,7 +217,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#229">filter_element</a></td>
|
||||
<td class="coverFnHi">3332962</td>
|
||||
<td class="coverFnHi">3332623</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#288">filter_emptydir</a></td>
|
||||
|
|
@ -233,11 +233,11 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#278">filter_path</a></td>
|
||||
<td class="coverFnHi">3329865</td>
|
||||
<td class="coverFnHi">3329526</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#195">filter_recurse</a></td>
|
||||
<td class="coverFnHi">6236835</td>
|
||||
<td class="coverFnHi">6236157</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#283">filter_subdir</a></td>
|
||||
|
|
@ -245,7 +245,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#151">filter_type</a></td>
|
||||
<td class="coverFnHi">125137</td>
|
||||
<td class="coverFnHi">125245</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#1429">fmt_poll</a></td>
|
||||
|
|
@ -253,11 +253,11 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#1438">fmt_term</a></td>
|
||||
<td class="coverFnHi">355785</td>
|
||||
<td class="coverFnHi">356004</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#1238">fs_allocate</a></td>
|
||||
<td class="coverFnHi">9176132</td>
|
||||
<td class="coverFnHi">9175619</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#1066">fs_check</a></td>
|
||||
|
|
@ -265,19 +265,19 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#1287">fs_deallocate</a></td>
|
||||
<td class="coverFnHi">106256</td>
|
||||
<td class="coverFnHi">106126</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#1366">fs_file2block_get</a></td>
|
||||
<td class="coverFnHi">44947073</td>
|
||||
<td class="coverFnHi">44945080</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#1171">fs_file2extent_get_unlock</a></td>
|
||||
<td class="coverFnHi">10336534</td>
|
||||
<td class="coverFnHi">10336325</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#1219">fs_file2par_find</a></td>
|
||||
<td class="coverFnHi">4869430</td>
|
||||
<td class="coverFnHi">4869535</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#841">fs_is_empty</a></td>
|
||||
|
|
@ -285,19 +285,19 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#803">fs_lock</a></td>
|
||||
<td class="coverFnHi">53196997</td>
|
||||
<td class="coverFnHi">53194369</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#1378">fs_par2block_find</a></td>
|
||||
<td class="coverFnHi">27313808</td>
|
||||
<td class="coverFnHi">27312315</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#1116">fs_par2extent_get_unlock</a></td>
|
||||
<td class="coverFnHi">39144190</td>
|
||||
<td class="coverFnHi">39142093</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#1196">fs_par2file_find</a></td>
|
||||
<td class="coverFnHi">39037624</td>
|
||||
<td class="coverFnHi">39035232</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#889">fs_size</a></td>
|
||||
|
|
@ -305,7 +305,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#812">fs_unlock</a></td>
|
||||
<td class="coverFnHi">53196517</td>
|
||||
<td class="coverFnHi">53193869</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#677">link_alloc</a></td>
|
||||
|
|
@ -333,7 +333,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.c.gcov.html#1409">time_compare</a></td>
|
||||
<td class="coverFnHi">683554</td>
|
||||
<td class="coverFnHi">684987</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
|
|
@ -61,99 +61,99 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#637">block_sizeof</a></td>
|
||||
<td class="coverFnHi">58067981</td>
|
||||
<td class="coverFnHi">58065323</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#772">file_block</a></td>
|
||||
<td class="coverFnHi">54353544</td>
|
||||
<td class="coverFnHi">54351240</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#648">block_state_get</a></td>
|
||||
<td class="coverFnHi">52305148</td>
|
||||
<td class="coverFnHi">52304798</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#727">file_flag_has</a></td>
|
||||
<td class="coverFnHi">34094875</td>
|
||||
<td class="coverFnHi">34094547</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#659">block_state_set</a></td>
|
||||
<td class="coverFnHi">19119503</td>
|
||||
<td class="coverFnHi">19117787</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#694">block_has_file</a></td>
|
||||
<td class="coverFnHi">14591698</td>
|
||||
<td class="coverFnHi">14590544</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#707">block_has_invalid_parity</a></td>
|
||||
<td class="coverFnHi">12320608</td>
|
||||
<td class="coverFnHi">12320061</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#1027">fs_par2file_get</a></td>
|
||||
<td class="coverFnHi">11724320</td>
|
||||
<td class="coverFnHi">11723736</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#621">hash_invalid_set</a></td>
|
||||
<td class="coverFnHi">9234981</td>
|
||||
<td class="coverFnHi">9234472</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#847">file_stamp_hash</a></td>
|
||||
<td class="coverFnHi">6275777</td>
|
||||
<td class="coverFnHi">6275914</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#732">file_flag_set</a></td>
|
||||
<td class="coverFnHi">5299884</td>
|
||||
<td class="coverFnHi">5301349</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#1193">info_get</a></td>
|
||||
<td class="coverFnHi">5093871</td>
|
||||
<td class="coverFnHi">5098374</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#818">file_inode_hash</a></td>
|
||||
<td class="coverFnHi">5047944</td>
|
||||
<td class="coverFnHi">5047846</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#1051">fs_file2par_get</a></td>
|
||||
<td class="coverFnHi">4755275</td>
|
||||
<td class="coverFnHi">4755380</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#839">file_path_hash</a></td>
|
||||
<td class="coverFnHi">3886220</td>
|
||||
<td class="coverFnHi">3886074</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#510">filter_hidden</a></td>
|
||||
<td class="coverFnHi">3173426</td>
|
||||
<td class="coverFnHi">3173124</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#682">block_has_past_hash</a></td>
|
||||
<td class="coverFnHi">2543126</td>
|
||||
<td class="coverFnHi">2542743</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#669">block_has_updated_hash</a></td>
|
||||
<td class="coverFnHi">2216978</td>
|
||||
<td class="coverFnHi">2217692</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#1148">info_get_rehash</a></td>
|
||||
<td class="coverFnHi">2042164</td>
|
||||
<td class="coverFnHi">2046653</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#1182">info_set</a></td>
|
||||
<td class="coverFnHi">1698035</td>
|
||||
<td class="coverFnHi">1697965</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#1130">info_get_time</a></td>
|
||||
<td class="coverFnHi">878516</td>
|
||||
<td class="coverFnHi">883104</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#589">hash_is_zero</a></td>
|
||||
<td class="coverFnHi">759899</td>
|
||||
<td class="coverFnHi">760617</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#567">hash_is_invalid</a></td>
|
||||
<td class="coverFnHi">758437</td>
|
||||
<td class="coverFnHi">759156</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#1139">info_get_bad</a></td>
|
||||
<td class="coverFnHi">347310</td>
|
||||
<td class="coverFnHi">351943</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#720">block_has_file_and_valid_parity</a></td>
|
||||
|
|
@ -165,7 +165,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#1111">info_make</a></td>
|
||||
<td class="coverFnHi">183427</td>
|
||||
<td class="coverFnHi">194583</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#921">link_name_hash</a></td>
|
||||
|
|
@ -181,11 +181,11 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#1157">info_get_justsynced</a></td>
|
||||
<td class="coverFnHi">63947</td>
|
||||
<td class="coverFnHi">68535</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#609">hash_is_unique</a></td>
|
||||
<td class="coverFnHi">44326</td>
|
||||
<td class="coverFnHi">44219</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#877">link_flag_set</a></td>
|
||||
|
|
@ -193,7 +193,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#737">file_flag_clear</a></td>
|
||||
<td class="coverFnHi">16752</td>
|
||||
<td class="coverFnHi">16739</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#1075">fs_par2block_get</a></td>
|
||||
|
|
|
|||
|
|
@ -61,7 +61,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#694">block_has_file</a></td>
|
||||
<td class="coverFnHi">14591698</td>
|
||||
<td class="coverFnHi">14590544</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#720">block_has_file_and_valid_parity</a></td>
|
||||
|
|
@ -69,27 +69,27 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#707">block_has_invalid_parity</a></td>
|
||||
<td class="coverFnHi">12320608</td>
|
||||
<td class="coverFnHi">12320061</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#682">block_has_past_hash</a></td>
|
||||
<td class="coverFnHi">2543126</td>
|
||||
<td class="coverFnHi">2542743</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#669">block_has_updated_hash</a></td>
|
||||
<td class="coverFnHi">2216978</td>
|
||||
<td class="coverFnHi">2217692</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#637">block_sizeof</a></td>
|
||||
<td class="coverFnHi">58067981</td>
|
||||
<td class="coverFnHi">58065323</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#648">block_state_get</a></td>
|
||||
<td class="coverFnHi">52305148</td>
|
||||
<td class="coverFnHi">52304798</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#659">block_state_set</a></td>
|
||||
<td class="coverFnHi">19119503</td>
|
||||
<td class="coverFnHi">19117787</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#926">dir_flag_has</a></td>
|
||||
|
|
@ -105,39 +105,39 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#772">file_block</a></td>
|
||||
<td class="coverFnHi">54353544</td>
|
||||
<td class="coverFnHi">54351240</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#737">file_flag_clear</a></td>
|
||||
<td class="coverFnHi">16752</td>
|
||||
<td class="coverFnHi">16739</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#727">file_flag_has</a></td>
|
||||
<td class="coverFnHi">34094875</td>
|
||||
<td class="coverFnHi">34094547</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#732">file_flag_set</a></td>
|
||||
<td class="coverFnHi">5299884</td>
|
||||
<td class="coverFnHi">5301349</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#818">file_inode_hash</a></td>
|
||||
<td class="coverFnHi">5047944</td>
|
||||
<td class="coverFnHi">5047846</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#839">file_path_hash</a></td>
|
||||
<td class="coverFnHi">3886220</td>
|
||||
<td class="coverFnHi">3886074</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#847">file_stamp_hash</a></td>
|
||||
<td class="coverFnHi">6275777</td>
|
||||
<td class="coverFnHi">6275914</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#510">filter_hidden</a></td>
|
||||
<td class="coverFnHi">3173426</td>
|
||||
<td class="coverFnHi">3173124</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#1051">fs_file2par_get</a></td>
|
||||
<td class="coverFnHi">4755275</td>
|
||||
<td class="coverFnHi">4755380</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#1075">fs_par2block_get</a></td>
|
||||
|
|
@ -145,23 +145,23 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#1027">fs_par2file_get</a></td>
|
||||
<td class="coverFnHi">11724320</td>
|
||||
<td class="coverFnHi">11723736</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#621">hash_invalid_set</a></td>
|
||||
<td class="coverFnHi">9234981</td>
|
||||
<td class="coverFnHi">9234472</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#567">hash_is_invalid</a></td>
|
||||
<td class="coverFnHi">758437</td>
|
||||
<td class="coverFnHi">759156</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#609">hash_is_unique</a></td>
|
||||
<td class="coverFnHi">44326</td>
|
||||
<td class="coverFnHi">44219</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#589">hash_is_zero</a></td>
|
||||
<td class="coverFnHi">759899</td>
|
||||
<td class="coverFnHi">760617</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#629">hash_zero_set</a></td>
|
||||
|
|
@ -169,31 +169,31 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#1193">info_get</a></td>
|
||||
<td class="coverFnHi">5093871</td>
|
||||
<td class="coverFnHi">5098374</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#1139">info_get_bad</a></td>
|
||||
<td class="coverFnHi">347310</td>
|
||||
<td class="coverFnHi">351943</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#1157">info_get_justsynced</a></td>
|
||||
<td class="coverFnHi">63947</td>
|
||||
<td class="coverFnHi">68535</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#1148">info_get_rehash</a></td>
|
||||
<td class="coverFnHi">2042164</td>
|
||||
<td class="coverFnHi">2046653</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#1130">info_get_time</a></td>
|
||||
<td class="coverFnHi">878516</td>
|
||||
<td class="coverFnHi">883104</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#1111">info_make</a></td>
|
||||
<td class="coverFnHi">183427</td>
|
||||
<td class="coverFnHi">194583</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#1182">info_set</a></td>
|
||||
<td class="coverFnHi">1698035</td>
|
||||
<td class="coverFnHi">1697965</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="elem.h.gcov.html#1165">info_set_bad</a></td>
|
||||
|
|
|
|||
|
|
@ -571,13 +571,13 @@
|
|||
<span class="lineNum"> 509 </span> : * Filter hidden files.
|
||||
<a name="510"><span class="lineNum"> 510 </span> : * Return !=0 if it matches and it should be excluded.</a>
|
||||
<span class="lineNum"> 511 </span> : */
|
||||
<span class="lineNum"> 512 </span><span class="lineCov"> 3173426 : static inline int filter_hidden(int enable, struct dirent* dd)</span>
|
||||
<span class="lineNum"> 512 </span><span class="lineCov"> 3173124 : static inline int filter_hidden(int enable, struct dirent* dd)</span>
|
||||
<span class="lineNum"> 513 </span> : {
|
||||
<span class="lineNum"> 514 </span><span class="lineCov"> 3173426 : if (enable && dirent_hidden(dd)) {</span>
|
||||
<span class="lineNum"> 514 </span><span class="lineCov"> 3173124 : if (enable && dirent_hidden(dd)) {</span>
|
||||
<span class="lineNum"> 515 </span><span class="lineNoCov"> 0 : return 1; /* filter out */</span>
|
||||
<span class="lineNum"> 516 </span> : }
|
||||
<span class="lineNum"> 517 </span> :
|
||||
<span class="lineNum"> 518 </span><span class="lineCov"> 3173426 : return 0;</span>
|
||||
<span class="lineNum"> 518 </span><span class="lineCov"> 3173124 : return 0;</span>
|
||||
<span class="lineNum"> 519 </span> : }
|
||||
<span class="lineNum"> 520 </span> :
|
||||
<span class="lineNum"> 521 </span> : /**
|
||||
|
|
@ -628,17 +628,17 @@
|
|||
<span class="lineNum"> 566 </span> : *
|
||||
<a name="567"><span class="lineNum"> 567 </span> : * If working with reduced hash lengths, this function always return 0.</a>
|
||||
<span class="lineNum"> 568 </span> : */
|
||||
<span class="lineNum"> 569 </span><span class="lineCov"> 758437 : static inline int hash_is_invalid(const unsigned char* hash)</span>
|
||||
<span class="lineNum"> 569 </span><span class="lineCov"> 759156 : static inline int hash_is_invalid(const unsigned char* hash)</span>
|
||||
<span class="lineNum"> 570 </span> : {
|
||||
<span class="lineNum"> 571 </span> : int i;
|
||||
<span class="lineNum"> 572 </span> :
|
||||
<span class="lineNum"> 573 </span> : /* if the hash is reduced, we cannot grant that it's a specific kind of hash */
|
||||
<span class="lineNum"> 574 </span><span class="lineCov"> 758437 : if (BLOCK_HASH_SIZE != HASH_MAX)</span>
|
||||
<span class="lineNum"> 574 </span><span class="lineCov"> 759156 : if (BLOCK_HASH_SIZE != HASH_MAX)</span>
|
||||
<span class="lineNum"> 575 </span><span class="lineNoCov"> 0 : return 0;</span>
|
||||
<span class="lineNum"> 576 </span> :
|
||||
<span class="lineNum"> 577 </span><span class="lineCov"> 1178475 : for (i = 0; i < BLOCK_HASH_SIZE; ++i)</span>
|
||||
<span class="lineNum"> 578 </span><span class="lineCov"> 1152411 : if (hash[i] != 0x00)</span>
|
||||
<span class="lineNum"> 579 </span><span class="lineCov"> 732373 : return 0;</span>
|
||||
<span class="lineNum"> 577 </span><span class="lineCov"> 1179374 : for (i = 0; i < BLOCK_HASH_SIZE; ++i)</span>
|
||||
<span class="lineNum"> 578 </span><span class="lineCov"> 1153310 : if (hash[i] != 0x00)</span>
|
||||
<span class="lineNum"> 579 </span><span class="lineCov"> 733092 : return 0;</span>
|
||||
<span class="lineNum"> 580 </span> :
|
||||
<span class="lineNum"> 581 </span><span class="lineCov"> 26064 : return 1;</span>
|
||||
<span class="lineNum"> 582 </span> : }
|
||||
|
|
@ -650,19 +650,19 @@
|
|||
<span class="lineNum"> 588 </span> : *
|
||||
<a name="589"><span class="lineNum"> 589 </span> : * If working with reduced hash lengths, this function always return 0.</a>
|
||||
<span class="lineNum"> 590 </span> : */
|
||||
<span class="lineNum"> 591 </span><span class="lineCov"> 759899 : static inline int hash_is_zero(const unsigned char* hash)</span>
|
||||
<span class="lineNum"> 591 </span><span class="lineCov"> 760617 : static inline int hash_is_zero(const unsigned char* hash)</span>
|
||||
<span class="lineNum"> 592 </span> : {
|
||||
<span class="lineNum"> 593 </span> : int i;
|
||||
<span class="lineNum"> 594 </span> :
|
||||
<span class="lineNum"> 595 </span> : /* if the hash is reduced, we cannot grant that it's a specific kind of hash */
|
||||
<span class="lineNum"> 596 </span><span class="lineCov"> 759899 : if (BLOCK_HASH_SIZE != HASH_MAX)</span>
|
||||
<span class="lineNum"> 596 </span><span class="lineCov"> 760617 : if (BLOCK_HASH_SIZE != HASH_MAX)</span>
|
||||
<span class="lineNum"> 597 </span><span class="lineNoCov"> 0 : return 0;</span>
|
||||
<span class="lineNum"> 598 </span> :
|
||||
<span class="lineNum"> 599 </span><span class="lineCov"> 994501 : for (i = 0; i < BLOCK_HASH_SIZE; ++i)</span>
|
||||
<span class="lineNum"> 600 </span><span class="lineCov"> 980032 : if (hash[i] != 0xFF)</span>
|
||||
<span class="lineNum"> 601 </span><span class="lineCov"> 745430 : return 0;</span>
|
||||
<span class="lineNum"> 599 </span><span class="lineCov"> 994968 : for (i = 0; i < BLOCK_HASH_SIZE; ++i)</span>
|
||||
<span class="lineNum"> 600 </span><span class="lineCov"> 980500 : if (hash[i] != 0xFF)</span>
|
||||
<span class="lineNum"> 601 </span><span class="lineCov"> 746149 : return 0;</span>
|
||||
<span class="lineNum"> 602 </span> :
|
||||
<span class="lineNum"> 603 </span><span class="lineCov"> 14469 : return 1;</span>
|
||||
<span class="lineNum"> 603 </span><span class="lineCov"> 14468 : return 1;</span>
|
||||
<span class="lineNum"> 604 </span> : }
|
||||
<span class="lineNum"> 605 </span> :
|
||||
<span class="lineNum"> 606 </span> : /**
|
||||
|
|
@ -670,22 +670,22 @@
|
|||
<span class="lineNum"> 608 </span> : *
|
||||
<a name="609"><span class="lineNum"> 609 </span> : * If working with reduced hash lengths, this function always return 0.</a>
|
||||
<span class="lineNum"> 610 </span> : */
|
||||
<span class="lineNum"> 611 </span><span class="lineCov"> 44326 : static inline int hash_is_unique(const unsigned char* hash)</span>
|
||||
<span class="lineNum"> 611 </span><span class="lineCov"> 44219 : static inline int hash_is_unique(const unsigned char* hash)</span>
|
||||
<span class="lineNum"> 612 </span> : {
|
||||
<span class="lineNum"> 613 </span> : /* if the hash is reduced, we cannot grant that it's a specific kind of hash */
|
||||
<span class="lineNum"> 614 </span><span class="lineCov"> 44326 : if (BLOCK_HASH_SIZE != HASH_MAX)</span>
|
||||
<span class="lineNum"> 614 </span><span class="lineCov"> 44219 : if (BLOCK_HASH_SIZE != HASH_MAX)</span>
|
||||
<span class="lineNum"> 615 </span><span class="lineNoCov"> 0 : return 0;</span>
|
||||
<span class="lineNum"> 616 </span> :
|
||||
<span class="lineNum"> 617 </span><span class="lineCov"> 44326 : return !hash_is_zero(hash) && !hash_is_invalid(hash);</span>
|
||||
<span class="lineNum"> 617 </span><span class="lineCov"> 44219 : return !hash_is_zero(hash) && !hash_is_invalid(hash);</span>
|
||||
<span class="lineNum"> 618 </span> : }
|
||||
<span class="lineNum"> 619 </span> :
|
||||
<span class="lineNum"> 620 </span> : /**
|
||||
<a name="621"><span class="lineNum"> 621 </span> : * Set the hash to the special INVALID value.</a>
|
||||
<span class="lineNum"> 622 </span> : */
|
||||
<span class="lineNum"> 623 </span><span class="lineCov"> 9234981 : static inline void hash_invalid_set(unsigned char* hash)</span>
|
||||
<span class="lineNum"> 623 </span><span class="lineCov"> 9234472 : static inline void hash_invalid_set(unsigned char* hash)</span>
|
||||
<span class="lineNum"> 624 </span> : {
|
||||
<span class="lineNum"> 625 </span><span class="lineCov"> 9234981 : memset(hash, 0x00, BLOCK_HASH_SIZE);</span>
|
||||
<span class="lineNum"> 626 </span><span class="lineCov"> 9234981 : }</span>
|
||||
<span class="lineNum"> 625 </span><span class="lineCov"> 9234472 : memset(hash, 0x00, BLOCK_HASH_SIZE);</span>
|
||||
<span class="lineNum"> 626 </span><span class="lineCov"> 9234472 : }</span>
|
||||
<span class="lineNum"> 627 </span> :
|
||||
<span class="lineNum"> 628 </span> : /**
|
||||
<a name="629"><span class="lineNum"> 629 </span> : * Set the hash to the special ZERO value.</a>
|
||||
|
|
@ -698,9 +698,9 @@
|
|||
<span class="lineNum"> 636 </span> : /**
|
||||
<a name="637"><span class="lineNum"> 637 </span> : * Allocated space for block.</a>
|
||||
<span class="lineNum"> 638 </span> : */
|
||||
<span class="lineNum"> 639 </span><span class="lineCov"> 58067981 : static inline size_t block_sizeof(void)</span>
|
||||
<span class="lineNum"> 639 </span><span class="lineCov"> 58065323 : static inline size_t block_sizeof(void)</span>
|
||||
<span class="lineNum"> 640 </span> : {
|
||||
<span class="lineNum"> 641 </span><span class="lineCov"> 58067981 : return 1 + BLOCK_HASH_SIZE;</span>
|
||||
<span class="lineNum"> 641 </span><span class="lineCov"> 58065323 : return 1 + BLOCK_HASH_SIZE;</span>
|
||||
<span class="lineNum"> 642 </span> : }
|
||||
<span class="lineNum"> 643 </span> :
|
||||
<span class="lineNum"> 644 </span> : /**
|
||||
|
|
@ -709,32 +709,32 @@
|
|||
<span class="lineNum"> 647 </span> : * For this function, it's allowed to pass a NULL block
|
||||
<a name="648"><span class="lineNum"> 648 </span> : * pointer than results in the BLOCK_STATE_EMPTY state.</a>
|
||||
<span class="lineNum"> 649 </span> : */
|
||||
<span class="lineNum"> 650 </span><span class="lineCov"> 52305148 : static inline unsigned block_state_get(const struct snapraid_block* block)</span>
|
||||
<span class="lineNum"> 650 </span><span class="lineCov"> 52304798 : static inline unsigned block_state_get(const struct snapraid_block* block)</span>
|
||||
<span class="lineNum"> 651 </span> : {
|
||||
<span class="lineNum"> 652 </span><span class="lineCov"> 52305148 : if (block == BLOCK_NULL)</span>
|
||||
<span class="lineNum"> 653 </span><span class="lineCov"> 1721828 : return BLOCK_STATE_EMPTY;</span>
|
||||
<span class="lineNum"> 652 </span><span class="lineCov"> 52304798 : if (block == BLOCK_NULL)</span>
|
||||
<span class="lineNum"> 653 </span><span class="lineCov"> 1721706 : return BLOCK_STATE_EMPTY;</span>
|
||||
<span class="lineNum"> 654 </span> :
|
||||
<span class="lineNum"> 655 </span><span class="lineCov"> 50583320 : return block->state;</span>
|
||||
<span class="lineNum"> 655 </span><span class="lineCov"> 50583092 : return block->state;</span>
|
||||
<span class="lineNum"> 656 </span> : }
|
||||
<span class="lineNum"> 657 </span> :
|
||||
<span class="lineNum"> 658 </span> : /**
|
||||
<a name="659"><span class="lineNum"> 659 </span> : * Set the state of the block.</a>
|
||||
<span class="lineNum"> 660 </span> : */
|
||||
<span class="lineNum"> 661 </span><span class="lineCov"> 19119503 : static inline void block_state_set(struct snapraid_block* block, unsigned state)</span>
|
||||
<span class="lineNum"> 661 </span><span class="lineCov"> 19117787 : static inline void block_state_set(struct snapraid_block* block, unsigned state)</span>
|
||||
<span class="lineNum"> 662 </span> : {
|
||||
<span class="lineNum"> 663 </span><span class="lineCov"> 19119503 : block->state = state;</span>
|
||||
<span class="lineNum"> 664 </span><span class="lineCov"> 19119503 : }</span>
|
||||
<span class="lineNum"> 663 </span><span class="lineCov"> 19117787 : block->state = state;</span>
|
||||
<span class="lineNum"> 664 </span><span class="lineCov"> 19117787 : }</span>
|
||||
<span class="lineNum"> 665 </span> :
|
||||
<span class="lineNum"> 666 </span> : /**
|
||||
<span class="lineNum"> 667 </span> : * Check if the specified block has an updated hash.
|
||||
<span class="lineNum"> 668 </span> : *
|
||||
<a name="669"><span class="lineNum"> 669 </span> : * Note that EMPTY / CHG / DELETED return 0.</a>
|
||||
<span class="lineNum"> 670 </span> : */
|
||||
<span class="lineNum"> 671 </span><span class="lineCov"> 2216978 : static inline int block_has_updated_hash(const struct snapraid_block* block)</span>
|
||||
<span class="lineNum"> 671 </span><span class="lineCov"> 2217692 : static inline int block_has_updated_hash(const struct snapraid_block* block)</span>
|
||||
<span class="lineNum"> 672 </span> : {
|
||||
<span class="lineNum"> 673 </span><span class="lineCov"> 2216978 : unsigned state = block_state_get(block);</span>
|
||||
<span class="lineNum"> 673 </span><span class="lineCov"> 2217692 : unsigned state = block_state_get(block);</span>
|
||||
<span class="lineNum"> 674 </span> :
|
||||
<span class="lineNum"> 675 </span><span class="lineCov"> 2216978 : return state == BLOCK_STATE_BLK || state == BLOCK_STATE_REP;</span>
|
||||
<span class="lineNum"> 675 </span><span class="lineCov"> 2217692 : return state == BLOCK_STATE_BLK || state == BLOCK_STATE_REP;</span>
|
||||
<span class="lineNum"> 676 </span> : }
|
||||
<span class="lineNum"> 677 </span> :
|
||||
<span class="lineNum"> 678 </span> : /**
|
||||
|
|
@ -743,11 +743,11 @@
|
|||
<span class="lineNum"> 681 </span> : *
|
||||
<a name="682"><span class="lineNum"> 682 </span> : * Note that EMPTY / BLK / REP return 0.</a>
|
||||
<span class="lineNum"> 683 </span> : */
|
||||
<span class="lineNum"> 684 </span><span class="lineCov"> 2543126 : static inline int block_has_past_hash(const struct snapraid_block* block)</span>
|
||||
<span class="lineNum"> 684 </span><span class="lineCov"> 2542743 : static inline int block_has_past_hash(const struct snapraid_block* block)</span>
|
||||
<span class="lineNum"> 685 </span> : {
|
||||
<span class="lineNum"> 686 </span><span class="lineCov"> 2543126 : unsigned state = block_state_get(block);</span>
|
||||
<span class="lineNum"> 686 </span><span class="lineCov"> 2542743 : unsigned state = block_state_get(block);</span>
|
||||
<span class="lineNum"> 687 </span> :
|
||||
<span class="lineNum"> 688 </span><span class="lineCov"> 2543126 : return state == BLOCK_STATE_CHG || state == BLOCK_STATE_DELETED;</span>
|
||||
<span class="lineNum"> 688 </span><span class="lineCov"> 2542743 : return state == BLOCK_STATE_CHG || state == BLOCK_STATE_DELETED;</span>
|
||||
<span class="lineNum"> 689 </span> : }
|
||||
<span class="lineNum"> 690 </span> :
|
||||
<span class="lineNum"> 691 </span> : /**
|
||||
|
|
@ -755,12 +755,12 @@
|
|||
<span class="lineNum"> 693 </span> : *
|
||||
<a name="694"><span class="lineNum"> 694 </span> : * Note that EMPTY / DELETED return 0.</a>
|
||||
<span class="lineNum"> 695 </span> : */
|
||||
<span class="lineNum"> 696 </span><span class="lineCov"> 14591698 : static inline int block_has_file(const struct snapraid_block* block)</span>
|
||||
<span class="lineNum"> 696 </span><span class="lineCov"> 14590544 : static inline int block_has_file(const struct snapraid_block* block)</span>
|
||||
<span class="lineNum"> 697 </span> : {
|
||||
<span class="lineNum"> 698 </span><span class="lineCov"> 14591698 : unsigned state = block_state_get(block);</span>
|
||||
<span class="lineNum"> 698 </span><span class="lineCov"> 14590544 : unsigned state = block_state_get(block);</span>
|
||||
<span class="lineNum"> 699 </span> :
|
||||
<span class="lineNum"> 700 </span><span class="lineCov"> 14591866 : return state == BLOCK_STATE_BLK</span>
|
||||
<span class="lineNum"> 701 </span><span class="lineCov"> 14591866 : || state == BLOCK_STATE_CHG || state == BLOCK_STATE_REP;</span>
|
||||
<span class="lineNum"> 700 </span><span class="lineCov"> 14590800 : return state == BLOCK_STATE_BLK</span>
|
||||
<span class="lineNum"> 701 </span><span class="lineCov"> 14590800 : || state == BLOCK_STATE_CHG || state == BLOCK_STATE_REP;</span>
|
||||
<span class="lineNum"> 702 </span> : }
|
||||
<span class="lineNum"> 703 </span> :
|
||||
<span class="lineNum"> 704 </span> : /**
|
||||
|
|
@ -768,12 +768,12 @@
|
|||
<span class="lineNum"> 706 </span> : *
|
||||
<a name="707"><span class="lineNum"> 707 </span> : * Note that EMPTY / BLK return 0.</a>
|
||||
<span class="lineNum"> 708 </span> : */
|
||||
<span class="lineNum"> 709 </span><span class="lineCov"> 12320608 : static inline int block_has_invalid_parity(const struct snapraid_block* block)</span>
|
||||
<span class="lineNum"> 709 </span><span class="lineCov"> 12320061 : static inline int block_has_invalid_parity(const struct snapraid_block* block)</span>
|
||||
<span class="lineNum"> 710 </span> : {
|
||||
<span class="lineNum"> 711 </span><span class="lineCov"> 12320608 : unsigned state = block_state_get(block);</span>
|
||||
<span class="lineNum"> 711 </span><span class="lineCov"> 12320061 : unsigned state = block_state_get(block);</span>
|
||||
<span class="lineNum"> 712 </span> :
|
||||
<span class="lineNum"> 713 </span><span class="lineCov"> 12320608 : return state == BLOCK_STATE_DELETED</span>
|
||||
<span class="lineNum"> 714 </span><span class="lineCov"> 12320608 : || state == BLOCK_STATE_CHG || state == BLOCK_STATE_REP;</span>
|
||||
<span class="lineNum"> 713 </span><span class="lineCov"> 12320061 : return state == BLOCK_STATE_DELETED</span>
|
||||
<span class="lineNum"> 714 </span><span class="lineCov"> 12320061 : || state == BLOCK_STATE_CHG || state == BLOCK_STATE_REP;</span>
|
||||
<span class="lineNum"> 715 </span> : }
|
||||
<span class="lineNum"> 716 </span> :
|
||||
<span class="lineNum"> 717 </span> : /**
|
||||
|
|
@ -788,20 +788,20 @@
|
|||
<span class="lineNum"> 726 </span><span class="lineCov"> 220959 : return state == BLOCK_STATE_BLK;</span>
|
||||
<a name="727"><span class="lineNum"> 727 </span> : }</a>
|
||||
<span class="lineNum"> 728 </span> :
|
||||
<span class="lineNum"> 729 </span><span class="lineCov"> 34094875 : static inline int file_flag_has(const struct snapraid_file* file, unsigned mask)</span>
|
||||
<span class="lineNum"> 729 </span><span class="lineCov"> 34094547 : static inline int file_flag_has(const struct snapraid_file* file, unsigned mask)</span>
|
||||
<span class="lineNum"> 730 </span> : {
|
||||
<span class="lineNum"> 731 </span><span class="lineCov"> 34094875 : return (file->flag & mask) == mask;</span>
|
||||
<span class="lineNum"> 731 </span><span class="lineCov"> 34094547 : return (file->flag & mask) == mask;</span>
|
||||
<a name="732"><span class="lineNum"> 732 </span> : }</a>
|
||||
<span class="lineNum"> 733 </span> :
|
||||
<span class="lineNum"> 734 </span><span class="lineCov"> 5299884 : static inline void file_flag_set(struct snapraid_file* file, unsigned mask)</span>
|
||||
<span class="lineNum"> 734 </span><span class="lineCov"> 5301349 : static inline void file_flag_set(struct snapraid_file* file, unsigned mask)</span>
|
||||
<span class="lineNum"> 735 </span> : {
|
||||
<span class="lineNum"> 736 </span><span class="lineCov"> 5299884 : file->flag |= mask;</span>
|
||||
<a name="737"><span class="lineNum"> 737 </span><span class="lineCov"> 5299884 : }</span></a>
|
||||
<span class="lineNum"> 736 </span><span class="lineCov"> 5301349 : file->flag |= mask;</span>
|
||||
<a name="737"><span class="lineNum"> 737 </span><span class="lineCov"> 5301349 : }</span></a>
|
||||
<span class="lineNum"> 738 </span> :
|
||||
<span class="lineNum"> 739 </span><span class="lineCov"> 16752 : static inline void file_flag_clear(struct snapraid_file* file, unsigned mask)</span>
|
||||
<span class="lineNum"> 739 </span><span class="lineCov"> 16739 : static inline void file_flag_clear(struct snapraid_file* file, unsigned mask)</span>
|
||||
<span class="lineNum"> 740 </span> : {
|
||||
<span class="lineNum"> 741 </span><span class="lineCov"> 16752 : file->flag &= ~mask;</span>
|
||||
<span class="lineNum"> 742 </span><span class="lineCov"> 16752 : }</span>
|
||||
<span class="lineNum"> 741 </span><span class="lineCov"> 16739 : file->flag &= ~mask;</span>
|
||||
<span class="lineNum"> 742 </span><span class="lineCov"> 16739 : }</span>
|
||||
<span class="lineNum"> 743 </span> :
|
||||
<span class="lineNum"> 744 </span> : /**
|
||||
<span class="lineNum"> 745 </span> : * Allocate a file.
|
||||
|
|
@ -833,11 +833,11 @@
|
|||
<span class="lineNum"> 771 </span> : *
|
||||
<a name="772"><span class="lineNum"> 772 </span> : * Note that the block size if a runtime value.</a>
|
||||
<span class="lineNum"> 773 </span> : */
|
||||
<span class="lineNum"> 774 </span><span class="lineCov"> 54353544 : static inline struct snapraid_block* file_block(struct snapraid_file* file, size_t pos)</span>
|
||||
<span class="lineNum"> 774 </span><span class="lineCov"> 54351240 : static inline struct snapraid_block* file_block(struct snapraid_file* file, size_t pos)</span>
|
||||
<span class="lineNum"> 775 </span> : {
|
||||
<span class="lineNum"> 776 </span><span class="lineCov"> 54353544 : unsigned char* ptr = (unsigned char*)file->blockvec;</span>
|
||||
<span class="lineNum"> 776 </span><span class="lineCov"> 54351240 : unsigned char* ptr = (unsigned char*)file->blockvec;</span>
|
||||
<span class="lineNum"> 777 </span> :
|
||||
<span class="lineNum"> 778 </span><span class="lineCov"> 54353544 : return (struct snapraid_block*)(ptr + pos * block_sizeof());</span>
|
||||
<span class="lineNum"> 778 </span><span class="lineCov"> 54351240 : return (struct snapraid_block*)(ptr + pos * block_sizeof());</span>
|
||||
<span class="lineNum"> 779 </span> : }
|
||||
<span class="lineNum"> 780 </span> :
|
||||
<span class="lineNum"> 781 </span> : /**
|
||||
|
|
@ -879,9 +879,9 @@
|
|||
<span class="lineNum"> 817 </span> : /**
|
||||
<a name="818"><span class="lineNum"> 818 </span> : * Compute the hash of a file inode.</a>
|
||||
<span class="lineNum"> 819 </span> : */
|
||||
<span class="lineNum"> 820 </span><span class="lineCov"> 5047944 : static inline tommy_uint32_t file_inode_hash(uint64_t inode)</span>
|
||||
<span class="lineNum"> 820 </span><span class="lineCov"> 5047846 : static inline tommy_uint32_t file_inode_hash(uint64_t inode)</span>
|
||||
<span class="lineNum"> 821 </span> : {
|
||||
<span class="lineNum"> 822 </span><span class="lineCov"> 5047944 : return (tommy_uint32_t)tommy_inthash_u64(inode);</span>
|
||||
<span class="lineNum"> 822 </span><span class="lineCov"> 5047846 : return (tommy_uint32_t)tommy_inthash_u64(inode);</span>
|
||||
<span class="lineNum"> 823 </span> : }
|
||||
<span class="lineNum"> 824 </span> :
|
||||
<span class="lineNum"> 825 </span> : /**
|
||||
|
|
@ -900,17 +900,17 @@
|
|||
<span class="lineNum"> 838 </span> : /**
|
||||
<a name="839"><span class="lineNum"> 839 </span> : * Compute the hash of a file path.</a>
|
||||
<span class="lineNum"> 840 </span> : */
|
||||
<span class="lineNum"> 841 </span><span class="lineCov"> 3886220 : static inline tommy_uint32_t file_path_hash(const char* sub)</span>
|
||||
<span class="lineNum"> 841 </span><span class="lineCov"> 3886074 : static inline tommy_uint32_t file_path_hash(const char* sub)</span>
|
||||
<span class="lineNum"> 842 </span> : {
|
||||
<span class="lineNum"> 843 </span><span class="lineCov"> 3886220 : return tommy_hash_u32(0, sub, strlen(sub));</span>
|
||||
<span class="lineNum"> 843 </span><span class="lineCov"> 3886074 : return tommy_hash_u32(0, sub, strlen(sub));</span>
|
||||
<span class="lineNum"> 844 </span> : }
|
||||
<span class="lineNum"> 845 </span> :
|
||||
<span class="lineNum"> 846 </span> : /**
|
||||
<a name="847"><span class="lineNum"> 847 </span> : * Compute the hash of a file stamp.</a>
|
||||
<span class="lineNum"> 848 </span> : */
|
||||
<span class="lineNum"> 849 </span><span class="lineCov"> 6275777 : static inline tommy_uint32_t file_stamp_hash(data_off_t size, int64_t mtime_sec, int mtime_nsec)</span>
|
||||
<span class="lineNum"> 849 </span><span class="lineCov"> 6275914 : static inline tommy_uint32_t file_stamp_hash(data_off_t size, int64_t mtime_sec, int mtime_nsec)</span>
|
||||
<span class="lineNum"> 850 </span> : {
|
||||
<span class="lineNum"> 851 </span><span class="lineCov"> 6275777 : return tommy_inthash_u32((tommy_uint32_t)size ^ tommy_inthash_u32(mtime_sec ^ tommy_inthash_u32(mtime_nsec)));</span>
|
||||
<span class="lineNum"> 851 </span><span class="lineCov"> 6275914 : return tommy_inthash_u32((tommy_uint32_t)size ^ tommy_inthash_u32(mtime_sec ^ tommy_inthash_u32(mtime_nsec)));</span>
|
||||
<span class="lineNum"> 852 </span> : }
|
||||
<span class="lineNum"> 853 </span> :
|
||||
<span class="lineNum"> 854 </span> : /**
|
||||
|
|
@ -1088,19 +1088,19 @@
|
|||
<span class="lineNum"> 1026 </span> : /**
|
||||
<a name="1027"><span class="lineNum"> 1027 </span> : * Get the file position from the parity position.</a>
|
||||
<span class="lineNum"> 1028 </span> : */
|
||||
<span class="lineNum"> 1029 </span><span class="lineCov"> 11724320 : static inline struct snapraid_file* fs_par2file_get(struct snapraid_disk* disk, block_off_t parity_pos, block_off_t* file_pos)</span>
|
||||
<span class="lineNum"> 1029 </span><span class="lineCov"> 11723736 : static inline struct snapraid_file* fs_par2file_get(struct snapraid_disk* disk, block_off_t parity_pos, block_off_t* file_pos)</span>
|
||||
<span class="lineNum"> 1030 </span> : {
|
||||
<span class="lineNum"> 1031 </span> : struct snapraid_file* ret;
|
||||
<span class="lineNum"> 1032 </span> :
|
||||
<span class="lineNum"> 1033 </span><span class="lineCov"> 11724320 : ret = fs_par2file_find(disk, parity_pos, file_pos);</span>
|
||||
<span class="lineNum"> 1034 </span><span class="lineCov"> 11724505 : if (ret == 0) {</span>
|
||||
<span class="lineNum"> 1033 </span><span class="lineCov"> 11723736 : ret = fs_par2file_find(disk, parity_pos, file_pos);</span>
|
||||
<span class="lineNum"> 1034 </span><span class="lineCov"> 11723887 : if (ret == 0) {</span>
|
||||
<span class="lineNum"> 1035 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 1036 </span> : log_fatal("Internal inconsistency when deresolving parity to file at position '%u' in disk '%s'\n", parity_pos, disk->name);
|
||||
<span class="lineNum"> 1037 </span> : os_abort();
|
||||
<span class="lineNum"> 1038 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 1039 </span> : }
|
||||
<span class="lineNum"> 1040 </span> :
|
||||
<span class="lineNum"> 1041 </span><span class="lineCov"> 11724505 : return ret;</span>
|
||||
<span class="lineNum"> 1041 </span><span class="lineCov"> 11723887 : return ret;</span>
|
||||
<span class="lineNum"> 1042 </span> : }
|
||||
<span class="lineNum"> 1043 </span> :
|
||||
<span class="lineNum"> 1044 </span> : /**
|
||||
|
|
@ -1112,19 +1112,19 @@
|
|||
<span class="lineNum"> 1050 </span> : /**
|
||||
<a name="1051"><span class="lineNum"> 1051 </span> : * Get the parity position from the file position.</a>
|
||||
<span class="lineNum"> 1052 </span> : */
|
||||
<span class="lineNum"> 1053 </span><span class="lineCov"> 4755275 : static inline block_off_t fs_file2par_get(struct snapraid_disk* disk, struct snapraid_file* file, block_off_t file_pos)</span>
|
||||
<span class="lineNum"> 1053 </span><span class="lineCov"> 4755380 : static inline block_off_t fs_file2par_get(struct snapraid_disk* disk, struct snapraid_file* file, block_off_t file_pos)</span>
|
||||
<span class="lineNum"> 1054 </span> : {
|
||||
<span class="lineNum"> 1055 </span> : block_off_t ret;
|
||||
<span class="lineNum"> 1056 </span> :
|
||||
<span class="lineNum"> 1057 </span><span class="lineCov"> 4755275 : ret = fs_file2par_find(disk, file, file_pos);</span>
|
||||
<span class="lineNum"> 1058 </span><span class="lineCov"> 4755275 : if (ret == POS_NULL) {</span>
|
||||
<span class="lineNum"> 1057 </span><span class="lineCov"> 4755380 : ret = fs_file2par_find(disk, file, file_pos);</span>
|
||||
<span class="lineNum"> 1058 </span><span class="lineCov"> 4755380 : if (ret == POS_NULL) {</span>
|
||||
<span class="lineNum"> 1059 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 1060 </span> : log_fatal("Internal inconsistency when resolving file '%s' at position '%u/%u' in disk '%s'\n", file->sub, file_pos, file->blockmax, disk->name);
|
||||
<span class="lineNum"> 1061 </span> : os_abort();
|
||||
<span class="lineNum"> 1062 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 1063 </span> : }
|
||||
<span class="lineNum"> 1064 </span> :
|
||||
<span class="lineNum"> 1065 </span><span class="lineCov"> 4755275 : return ret;</span>
|
||||
<span class="lineNum"> 1065 </span><span class="lineCov"> 4755380 : return ret;</span>
|
||||
<span class="lineNum"> 1066 </span> : }
|
||||
<span class="lineNum"> 1067 </span> :
|
||||
<span class="lineNum"> 1068 </span> : /**
|
||||
|
|
@ -1172,18 +1172,18 @@
|
|||
<span class="lineNum"> 1110 </span> : /**
|
||||
<a name="1111"><span class="lineNum"> 1111 </span> : * Make an info.</a>
|
||||
<span class="lineNum"> 1112 </span> : */
|
||||
<span class="lineNum"> 1113 </span><span class="lineCov"> 183427 : static inline snapraid_info info_make(time_t last_access, int error, int rehash, int justsynced)</span>
|
||||
<span class="lineNum"> 1113 </span><span class="lineCov"> 194583 : static inline snapraid_info info_make(time_t last_access, int error, int rehash, int justsynced)</span>
|
||||
<span class="lineNum"> 1114 </span> : {
|
||||
<span class="lineNum"> 1115 </span> : /* clear the lowest bits as reserved for other information */
|
||||
<span class="lineNum"> 1116 </span><span class="lineCov"> 183427 : snapraid_info info = last_access & ~INFO_MASK;</span>
|
||||
<span class="lineNum"> 1116 </span><span class="lineCov"> 194583 : snapraid_info info = last_access & ~INFO_MASK;</span>
|
||||
<span class="lineNum"> 1117 </span> :
|
||||
<span class="lineNum"> 1118 </span><span class="lineCov"> 183427 : if (error != 0)</span>
|
||||
<span class="lineNum"> 1119 </span><span class="lineCov"> 5308 : info |= 0x1;</span>
|
||||
<span class="lineNum"> 1120 </span><span class="lineCov"> 183427 : if (rehash != 0)</span>
|
||||
<span class="lineNum"> 1121 </span><span class="lineCov"> 14181 : info |= 0x2;</span>
|
||||
<span class="lineNum"> 1122 </span><span class="lineCov"> 183427 : if (justsynced != 0)</span>
|
||||
<span class="lineNum"> 1123 </span><span class="lineCov"> 131834 : info |= 0x4;</span>
|
||||
<span class="lineNum"> 1124 </span><span class="lineCov"> 183427 : return info;</span>
|
||||
<span class="lineNum"> 1118 </span><span class="lineCov"> 194583 : if (error != 0)</span>
|
||||
<span class="lineNum"> 1119 </span><span class="lineCov"> 5380 : info |= 0x1;</span>
|
||||
<span class="lineNum"> 1120 </span><span class="lineCov"> 194583 : if (rehash != 0)</span>
|
||||
<span class="lineNum"> 1121 </span><span class="lineCov"> 14426 : info |= 0x2;</span>
|
||||
<span class="lineNum"> 1122 </span><span class="lineCov"> 194583 : if (justsynced != 0)</span>
|
||||
<span class="lineNum"> 1123 </span><span class="lineCov"> 142978 : info |= 0x4;</span>
|
||||
<span class="lineNum"> 1124 </span><span class="lineCov"> 194583 : return info;</span>
|
||||
<span class="lineNum"> 1125 </span> : }
|
||||
<span class="lineNum"> 1126 </span> :
|
||||
<span class="lineNum"> 1127 </span> : /**
|
||||
|
|
@ -1191,36 +1191,36 @@
|
|||
<span class="lineNum"> 1129 </span> : * This is the last time when the block was know to be correct.
|
||||
<a name="1130"><span class="lineNum"> 1130 </span> : * The "scrubbed" info tells if the time is referreing at the latest sync or scrub.</a>
|
||||
<span class="lineNum"> 1131 </span> : */
|
||||
<span class="lineNum"> 1132 </span><span class="lineCov"> 878516 : static inline time_t info_get_time(snapraid_info info)</span>
|
||||
<span class="lineNum"> 1132 </span><span class="lineCov"> 883104 : static inline time_t info_get_time(snapraid_info info)</span>
|
||||
<span class="lineNum"> 1133 </span> : {
|
||||
<span class="lineNum"> 1134 </span><span class="lineCov"> 878516 : return info & ~INFO_MASK;</span>
|
||||
<span class="lineNum"> 1134 </span><span class="lineCov"> 883104 : return info & ~INFO_MASK;</span>
|
||||
<span class="lineNum"> 1135 </span> : }
|
||||
<span class="lineNum"> 1136 </span> :
|
||||
<span class="lineNum"> 1137 </span> : /**
|
||||
<span class="lineNum"> 1138 </span> : * Extract the error information.
|
||||
<a name="1139"><span class="lineNum"> 1139 </span> : * Report if the block address had some problem.</a>
|
||||
<span class="lineNum"> 1140 </span> : */
|
||||
<span class="lineNum"> 1141 </span><span class="lineCov"> 347310 : static inline int info_get_bad(snapraid_info info)</span>
|
||||
<span class="lineNum"> 1141 </span><span class="lineCov"> 351943 : static inline int info_get_bad(snapraid_info info)</span>
|
||||
<span class="lineNum"> 1142 </span> : {
|
||||
<span class="lineNum"> 1143 </span><span class="lineCov"> 347310 : return (info & 0x1) != 0;</span>
|
||||
<span class="lineNum"> 1143 </span><span class="lineCov"> 351943 : return (info & 0x1) != 0;</span>
|
||||
<span class="lineNum"> 1144 </span> : }
|
||||
<span class="lineNum"> 1145 </span> :
|
||||
<span class="lineNum"> 1146 </span> : /**
|
||||
<span class="lineNum"> 1147 </span> : * Extract the rehash information.
|
||||
<a name="1148"><span class="lineNum"> 1148 </span> : * Report if the block address is using the old hash and needs to be rehashed.</a>
|
||||
<span class="lineNum"> 1149 </span> : */
|
||||
<span class="lineNum"> 1150 </span><span class="lineCov"> 2042164 : static inline int info_get_rehash(snapraid_info info)</span>
|
||||
<span class="lineNum"> 1150 </span><span class="lineCov"> 2046653 : static inline int info_get_rehash(snapraid_info info)</span>
|
||||
<span class="lineNum"> 1151 </span> : {
|
||||
<span class="lineNum"> 1152 </span><span class="lineCov"> 2042164 : return (info & 0x2) != 0;</span>
|
||||
<span class="lineNum"> 1152 </span><span class="lineCov"> 2046653 : return (info & 0x2) != 0;</span>
|
||||
<span class="lineNum"> 1153 </span> : }
|
||||
<span class="lineNum"> 1154 </span> :
|
||||
<span class="lineNum"> 1155 </span> : /**
|
||||
<span class="lineNum"> 1156 </span> : * Extract the scrubbed information.
|
||||
<a name="1157"><span class="lineNum"> 1157 </span> : * Report if the block address was never scrubbed.</a>
|
||||
<span class="lineNum"> 1158 </span> : */
|
||||
<span class="lineNum"> 1159 </span><span class="lineCov"> 63947 : static inline int info_get_justsynced(snapraid_info info)</span>
|
||||
<span class="lineNum"> 1159 </span><span class="lineCov"> 68535 : static inline int info_get_justsynced(snapraid_info info)</span>
|
||||
<span class="lineNum"> 1160 </span> : {
|
||||
<span class="lineNum"> 1161 </span><span class="lineCov"> 63947 : return (info & 0x4) != 0;</span>
|
||||
<span class="lineNum"> 1161 </span><span class="lineCov"> 68535 : return (info & 0x4) != 0;</span>
|
||||
<span class="lineNum"> 1162 </span> : }
|
||||
<span class="lineNum"> 1163 </span> :
|
||||
<span class="lineNum"> 1164 </span> : /**
|
||||
|
|
@ -1243,27 +1243,27 @@
|
|||
<span class="lineNum"> 1181 </span> : * Set the info at the specified position.
|
||||
<a name="1182"><span class="lineNum"> 1182 </span> : * The position is allocated if not yet done.</a>
|
||||
<span class="lineNum"> 1183 </span> : */
|
||||
<span class="lineNum"> 1184 </span><span class="lineCov"> 1698035 : static inline void info_set(tommy_arrayblkof* array, block_off_t pos, snapraid_info info)</span>
|
||||
<span class="lineNum"> 1184 </span><span class="lineCov"> 1697965 : static inline void info_set(tommy_arrayblkof* array, block_off_t pos, snapraid_info info)</span>
|
||||
<span class="lineNum"> 1185 </span> : {
|
||||
<span class="lineNum"> 1186 </span><span class="lineCov"> 1698035 : tommy_arrayblkof_grow(array, pos + 1);</span>
|
||||
<span class="lineNum"> 1186 </span><span class="lineCov"> 1697965 : tommy_arrayblkof_grow(array, pos + 1);</span>
|
||||
<span class="lineNum"> 1187 </span> :
|
||||
<span class="lineNum"> 1188 </span><span class="lineCov"> 1698035 : memcpy(tommy_arrayblkof_ref(array, pos), &info, sizeof(snapraid_info));</span>
|
||||
<span class="lineNum"> 1189 </span><span class="lineCov"> 1698035 : }</span>
|
||||
<span class="lineNum"> 1188 </span><span class="lineCov"> 1697965 : memcpy(tommy_arrayblkof_ref(array, pos), &info, sizeof(snapraid_info));</span>
|
||||
<span class="lineNum"> 1189 </span><span class="lineCov"> 1697965 : }</span>
|
||||
<span class="lineNum"> 1190 </span> :
|
||||
<span class="lineNum"> 1191 </span> : /**
|
||||
<span class="lineNum"> 1192 </span> : * Get the info at the specified position.
|
||||
<a name="1193"><span class="lineNum"> 1193 </span> : * For not allocated position, 0 is returned.</a>
|
||||
<span class="lineNum"> 1194 </span> : */
|
||||
<span class="lineNum"> 1195 </span><span class="lineCov"> 5093871 : static inline snapraid_info info_get(tommy_arrayblkof* array, block_off_t pos)</span>
|
||||
<span class="lineNum"> 1195 </span><span class="lineCov"> 5098374 : static inline snapraid_info info_get(tommy_arrayblkof* array, block_off_t pos)</span>
|
||||
<span class="lineNum"> 1196 </span> : {
|
||||
<span class="lineNum"> 1197 </span> : snapraid_info info;
|
||||
<span class="lineNum"> 1198 </span> :
|
||||
<span class="lineNum"> 1199 </span><span class="lineCov"> 5093871 : if (pos >= tommy_arrayblkof_size(array))</span>
|
||||
<span class="lineNum"> 1199 </span><span class="lineCov"> 5098374 : if (pos >= tommy_arrayblkof_size(array))</span>
|
||||
<span class="lineNum"> 1200 </span><span class="lineCov"> 262643 : return 0;</span>
|
||||
<span class="lineNum"> 1201 </span> :
|
||||
<span class="lineNum"> 1202 </span><span class="lineCov"> 4831228 : memcpy(&info, tommy_arrayblkof_ref(array, pos), sizeof(snapraid_info));</span>
|
||||
<span class="lineNum"> 1202 </span><span class="lineCov"> 4835731 : memcpy(&info, tommy_arrayblkof_ref(array, pos), sizeof(snapraid_info));</span>
|
||||
<span class="lineNum"> 1203 </span> :
|
||||
<span class="lineNum"> 1204 </span><span class="lineCov"> 4831228 : return info;</span>
|
||||
<span class="lineNum"> 1204 </span><span class="lineCov"> 4835731 : return info;</span>
|
||||
<span class="lineNum"> 1205 </span> : }
|
||||
<span class="lineNum"> 1206 </span> :
|
||||
<span class="lineNum"> 1207 </span> : /**
|
||||
|
|
|
|||
|
|
@ -61,31 +61,31 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="handle.c.gcov.html#235">handle_read</a></td>
|
||||
<td class="coverFnHi">5856976</td>
|
||||
<td class="coverFnHi">5855349</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="handle.c.gcov.html#207">handle_close</a></td>
|
||||
<td class="coverFnHi">4647242</td>
|
||||
<td class="coverFnHi">4647511</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="handle.c.gcov.html#142">handle_open</a></td>
|
||||
<td class="coverFnHi">2186381</td>
|
||||
<td class="coverFnHi">2185867</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="handle.c.gcov.html#25">handle_create</a></td>
|
||||
<td class="coverFnHi">771297</td>
|
||||
<td class="coverFnHi">771311</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="handle.c.gcov.html#294">handle_write</a></td>
|
||||
<td class="coverFnHi">288368</td>
|
||||
<td class="coverFnHi">288562</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="handle.c.gcov.html#329">handle_utime</a></td>
|
||||
<td class="coverFnHi">119415</td>
|
||||
<td class="coverFnHi">119431</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="handle.c.gcov.html#120">handle_truncate</a></td>
|
||||
<td class="coverFnHi">3236</td>
|
||||
<td class="coverFnHi">3222</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="handle.c.gcov.html#349">handle_mapping</a></td>
|
||||
|
|
|
|||
|
|
@ -61,11 +61,11 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="handle.c.gcov.html#207">handle_close</a></td>
|
||||
<td class="coverFnHi">4647242</td>
|
||||
<td class="coverFnHi">4647511</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="handle.c.gcov.html#25">handle_create</a></td>
|
||||
<td class="coverFnHi">771297</td>
|
||||
<td class="coverFnHi">771311</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="handle.c.gcov.html#349">handle_mapping</a></td>
|
||||
|
|
@ -73,23 +73,23 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="handle.c.gcov.html#142">handle_open</a></td>
|
||||
<td class="coverFnHi">2186381</td>
|
||||
<td class="coverFnHi">2185867</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="handle.c.gcov.html#235">handle_read</a></td>
|
||||
<td class="coverFnHi">5856976</td>
|
||||
<td class="coverFnHi">5855349</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="handle.c.gcov.html#120">handle_truncate</a></td>
|
||||
<td class="coverFnHi">3236</td>
|
||||
<td class="coverFnHi">3222</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="handle.c.gcov.html#329">handle_utime</a></td>
|
||||
<td class="coverFnHi">119415</td>
|
||||
<td class="coverFnHi">119431</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="handle.c.gcov.html#294">handle_write</a></td>
|
||||
<td class="coverFnHi">288368</td>
|
||||
<td class="coverFnHi">288562</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
|
|
|
|||
|
|
@ -86,64 +86,64 @@
|
|||
<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"> 771297 : int handle_create(struct snapraid_handle* handle, struct snapraid_file* file, int mode)</span>
|
||||
<span class="lineNum"> 27 </span><span class="lineCov"> 771311 : 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"> 771297 : if (handle->file == file && handle->f != -1) {</span>
|
||||
<span class="lineNum"> 33 </span><span class="lineCov"> 771311 : 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"> 771297 : advise_init(&handle->advise, mode);</span>
|
||||
<span class="lineNum"> 38 </span><span class="lineCov"> 771297 : pathprint(handle->path, sizeof(handle->path), "%s%s", handle->disk->dir, file->sub);</span>
|
||||
<span class="lineNum"> 37 </span><span class="lineCov"> 771311 : advise_init(&handle->advise, mode);</span>
|
||||
<span class="lineNum"> 38 </span><span class="lineCov"> 771311 : pathprint(handle->path, sizeof(handle->path), "%s%s", handle->disk->dir, file->sub);</span>
|
||||
<span class="lineNum"> 39 </span> :
|
||||
<span class="lineNum"> 40 </span><span class="lineCov"> 771297 : ret = mkancestor(handle->path);</span>
|
||||
<span class="lineNum"> 41 </span><span class="lineCov"> 771297 : if (ret != 0) {</span>
|
||||
<span class="lineNum"> 40 </span><span class="lineCov"> 771311 : ret = mkancestor(handle->path);</span>
|
||||
<span class="lineNum"> 41 </span><span class="lineCov"> 771311 : if (ret != 0) {</span>
|
||||
<span class="lineNum"> 42 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 43 </span> : return -1;
|
||||
<span class="lineNum"> 44 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 45 </span> : }
|
||||
<span class="lineNum"> 46 </span> :
|
||||
<span class="lineNum"> 47 </span> : /* initial values, changed later if required */
|
||||
<span class="lineNum"> 48 </span><span class="lineCov"> 771297 : handle->created = 0;</span>
|
||||
<span class="lineNum"> 48 </span><span class="lineCov"> 771311 : handle->created = 0;</span>
|
||||
<span class="lineNum"> 49 </span> :
|
||||
<span class="lineNum"> 50 </span> : /* flags for opening */
|
||||
<span class="lineNum"> 51 </span> : /* O_BINARY: open as binary file (Windows only) */
|
||||
<span class="lineNum"> 52 </span> : /* O_NOFOLLOW: do not follow links to ensure to open the real file */
|
||||
<span class="lineNum"> 53 </span><span class="lineCov"> 771297 : flags = O_BINARY | O_NOFOLLOW | advise_flags(&handle->advise);</span>
|
||||
<span class="lineNum"> 53 </span><span class="lineCov"> 771311 : flags = O_BINARY | O_NOFOLLOW | advise_flags(&handle->advise);</span>
|
||||
<span class="lineNum"> 54 </span> :
|
||||
<span class="lineNum"> 55 </span> : /* open for read write */
|
||||
<span class="lineNum"> 56 </span><span class="lineCov"> 771297 : handle->f = open(handle->path, flags | O_RDWR);</span>
|
||||
<span class="lineNum"> 56 </span><span class="lineCov"> 771311 : handle->f = open(handle->path, flags | O_RDWR);</span>
|
||||
<span class="lineNum"> 57 </span> :
|
||||
<span class="lineNum"> 58 </span> : /* if failed for missing write permission */
|
||||
<span class="lineNum"> 59 </span><span class="lineCov"> 771297 : if (handle->f == -1 && (errno == EACCES || errno == EROFS)) {</span>
|
||||
<span class="lineNum"> 59 </span><span class="lineCov"> 771311 : if (handle->f == -1 && (errno == EACCES || errno == EROFS)) {</span>
|
||||
<span class="lineNum"> 60 </span> : /* open for real-only */
|
||||
<span class="lineNum"> 61 </span><span class="lineNoCov"> 0 : handle->f = open(handle->path, flags | O_RDONLY);</span>
|
||||
<span class="lineNum"> 62 </span> : }
|
||||
<span class="lineNum"> 63 </span> :
|
||||
<span class="lineNum"> 64 </span> : /* if failed for missing file */
|
||||
<span class="lineNum"> 65 </span><span class="lineCov"> 771297 : if (handle->f == -1 && errno == ENOENT) {</span>
|
||||
<span class="lineNum"> 65 </span><span class="lineCov"> 771311 : if (handle->f == -1 && errno == ENOENT) {</span>
|
||||
<span class="lineNum"> 66 </span> : char path_from[PATH_MAX];
|
||||
<span class="lineNum"> 67 </span> :
|
||||
<span class="lineNum"> 68 </span> : /* check if exists a .unrecoverable copy, and rename to the real one */
|
||||
<span class="lineNum"> 69 </span><span class="lineCov"> 176226 : pathprint(path_from, sizeof(path_from), "%s.unrecoverable", handle->path);</span>
|
||||
<span class="lineNum"> 69 </span><span class="lineCov"> 176417 : pathprint(path_from, sizeof(path_from), "%s.unrecoverable", handle->path);</span>
|
||||
<span class="lineNum"> 70 </span> :
|
||||
<span class="lineNum"> 71 </span><span class="lineCov"> 176226 : if (rename(path_from, handle->path) == 0) {</span>
|
||||
<span class="lineNum"> 71 </span><span class="lineCov"> 176417 : if (rename(path_from, handle->path) == 0) {</span>
|
||||
<span class="lineNum"> 72 </span> : /* open for read write */
|
||||
<span class="lineNum"> 73 </span><span class="lineCov"> 63228 : handle->f = open(handle->path, flags | O_RDWR);</span>
|
||||
<span class="lineNum"> 73 </span><span class="lineCov"> 63282 : handle->f = open(handle->path, flags | O_RDWR);</span>
|
||||
<span class="lineNum"> 74 </span> : } else {
|
||||
<span class="lineNum"> 75 </span> : /* create it */
|
||||
<span class="lineNum"> 76 </span><span class="lineCov"> 112998 : handle->f = open(handle->path, flags | O_RDWR | O_CREAT, 0600);</span>
|
||||
<span class="lineNum"> 77 </span><span class="lineCov"> 112998 : if (handle->f != -1) {</span>
|
||||
<span class="lineNum"> 76 </span><span class="lineCov"> 113135 : handle->f = open(handle->path, flags | O_RDWR | O_CREAT, 0600);</span>
|
||||
<span class="lineNum"> 77 </span><span class="lineCov"> 113135 : if (handle->f != -1) {</span>
|
||||
<span class="lineNum"> 78 </span> : /* mark it as created if really done */
|
||||
<span class="lineNum"> 79 </span><span class="lineCov"> 112998 : handle->created = 1;</span>
|
||||
<span class="lineNum"> 79 </span><span class="lineCov"> 113135 : handle->created = 1;</span>
|
||||
<span class="lineNum"> 80 </span> : }
|
||||
<span class="lineNum"> 81 </span> : }
|
||||
<span class="lineNum"> 82 </span> : }
|
||||
<span class="lineNum"> 83 </span> :
|
||||
<span class="lineNum"> 84 </span><span class="lineCov"> 771297 : if (handle->f == -1) {</span>
|
||||
<span class="lineNum"> 84 </span><span class="lineCov"> 771311 : if (handle->f == -1) {</span>
|
||||
<span class="lineNum"> 85 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 86 </span> : /* invalidate for error */
|
||||
<span class="lineNum"> 87 </span> : handle->file = 0;
|
||||
|
|
@ -156,11 +156,11 @@
|
|||
<span class="lineNum"> 94 </span> : }
|
||||
<span class="lineNum"> 95 </span> :
|
||||
<span class="lineNum"> 96 </span> : /* just opened */
|
||||
<span class="lineNum"> 97 </span><span class="lineCov"> 771297 : handle->file = file;</span>
|
||||
<span class="lineNum"> 97 </span><span class="lineCov"> 771311 : handle->file = file;</span>
|
||||
<span class="lineNum"> 98 </span> :
|
||||
<span class="lineNum"> 99 </span> : /* get the stat info */
|
||||
<span class="lineNum"> 100 </span><span class="lineCov"> 771297 : ret = fstat(handle->f, &handle->st);</span>
|
||||
<span class="lineNum"> 101 </span><span class="lineCov"> 771297 : if (ret != 0) {</span>
|
||||
<span class="lineNum"> 100 </span><span class="lineCov"> 771311 : ret = fstat(handle->f, &handle->st);</span>
|
||||
<span class="lineNum"> 101 </span><span class="lineCov"> 771311 : if (ret != 0) {</span>
|
||||
<span class="lineNum"> 102 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 103 </span> : log_fatal("Error accessing file '%s'. %s.\n", handle->path, strerror(errno));
|
||||
<span class="lineNum"> 104 </span> : return -1;
|
||||
|
|
@ -168,25 +168,25 @@
|
|||
<span class="lineNum"> 106 </span> : }
|
||||
<span class="lineNum"> 107 </span> :
|
||||
<span class="lineNum"> 108 </span> : /* get the size of the existing data */
|
||||
<span class="lineNum"> 109 </span><span class="lineCov"> 771297 : handle->valid_size = handle->st.st_size;</span>
|
||||
<span class="lineNum"> 109 </span><span class="lineCov"> 771311 : handle->valid_size = handle->st.st_size;</span>
|
||||
<span class="lineNum"> 110 </span> :
|
||||
<span class="lineNum"> 111 </span><span class="lineCov"> 771297 : ret = advise_open(&handle->advise, handle->f);</span>
|
||||
<span class="lineNum"> 112 </span><span class="lineCov"> 771297 : if (ret != 0) {</span>
|
||||
<span class="lineNum"> 111 </span><span class="lineCov"> 771311 : ret = advise_open(&handle->advise, handle->f);</span>
|
||||
<span class="lineNum"> 112 </span><span class="lineCov"> 771311 : if (ret != 0) {</span>
|
||||
<span class="lineNum"> 113 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 114 </span> : log_fatal("Error advising file '%s'. %s.\n", handle->path, strerror(errno));
|
||||
<span class="lineNum"> 115 </span> : return -1;
|
||||
<span class="lineNum"> 116 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 117 </span> : }
|
||||
<span class="lineNum"> 118 </span> :
|
||||
<span class="lineNum"> 119 </span><span class="lineCov"> 771297 : return 0;</span>
|
||||
<span class="lineNum"> 119 </span><span class="lineCov"> 771311 : return 0;</span>
|
||||
<a name="120"><span class="lineNum"> 120 </span> : }</a>
|
||||
<span class="lineNum"> 121 </span> :
|
||||
<span class="lineNum"> 122 </span><span class="lineCov"> 3236 : int handle_truncate(struct snapraid_handle* handle, struct snapraid_file* file)</span>
|
||||
<span class="lineNum"> 122 </span><span class="lineCov"> 3222 : int handle_truncate(struct snapraid_handle* handle, struct snapraid_file* file)</span>
|
||||
<span class="lineNum"> 123 </span> : {
|
||||
<span class="lineNum"> 124 </span> : int ret;
|
||||
<span class="lineNum"> 125 </span> :
|
||||
<span class="lineNum"> 126 </span><span class="lineCov"> 3236 : ret = ftruncate(handle->f, file->size);</span>
|
||||
<span class="lineNum"> 127 </span><span class="lineCov"> 3236 : if (ret != 0) {</span>
|
||||
<span class="lineNum"> 126 </span><span class="lineCov"> 3222 : ret = ftruncate(handle->f, file->size);</span>
|
||||
<span class="lineNum"> 127 </span><span class="lineCov"> 3222 : if (ret != 0) {</span>
|
||||
<span class="lineNum"> 128 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 129 </span> : if (errno == EACCES) {
|
||||
<span class="lineNum"> 130 </span> : log_fatal("Failed to truncate file '%s' for missing write permission.\n", handle->path);
|
||||
|
|
@ -198,56 +198,56 @@
|
|||
<span class="lineNum"> 136 </span> : }
|
||||
<span class="lineNum"> 137 </span> :
|
||||
<span class="lineNum"> 138 </span> : /* adjust the size to the truncated size */
|
||||
<span class="lineNum"> 139 </span><span class="lineCov"> 3236 : handle->valid_size = file->size;</span>
|
||||
<span class="lineNum"> 139 </span><span class="lineCov"> 3222 : handle->valid_size = file->size;</span>
|
||||
<span class="lineNum"> 140 </span> :
|
||||
<span class="lineNum"> 141 </span><span class="lineCov"> 3236 : return 0;</span>
|
||||
<span class="lineNum"> 141 </span><span class="lineCov"> 3222 : return 0;</span>
|
||||
<a name="142"><span class="lineNum"> 142 </span> : }</a>
|
||||
<span class="lineNum"> 143 </span> :
|
||||
<span class="lineNum"> 144 </span><span class="lineCov"> 2186381 : int handle_open(struct snapraid_handle* handle, struct snapraid_file* file, int mode, fptr* out, fptr* out_missing)</span>
|
||||
<span class="lineNum"> 144 </span><span class="lineCov"> 2185867 : int handle_open(struct snapraid_handle* handle, struct snapraid_file* file, int mode, fptr* out, fptr* out_missing)</span>
|
||||
<span class="lineNum"> 145 </span> : {
|
||||
<span class="lineNum"> 146 </span> : int ret;
|
||||
<span class="lineNum"> 147 </span> : int flags;
|
||||
<span class="lineNum"> 148 </span> :
|
||||
<span class="lineNum"> 149 </span><span class="lineCov"> 2186381 : if (!out_missing)</span>
|
||||
<span class="lineNum"> 150 </span><span class="lineCov"> 2186033 : out_missing = out;</span>
|
||||
<span class="lineNum"> 149 </span><span class="lineCov"> 2185867 : if (!out_missing)</span>
|
||||
<span class="lineNum"> 150 </span><span class="lineCov"> 2185464 : out_missing = out;</span>
|
||||
<span class="lineNum"> 151 </span> :
|
||||
<span class="lineNum"> 152 </span> : /* if already opened, nothing to do */
|
||||
<span class="lineNum"> 153 </span><span class="lineCov"> 2186381 : if (handle->file == file && handle->file != 0 && handle->f != -1) {</span>
|
||||
<span class="lineNum"> 154 </span><span class="lineCov"> 468716 : return 0;</span>
|
||||
<span class="lineNum"> 153 </span><span class="lineCov"> 2185867 : if (handle->file == file && handle->file != 0 && handle->f != -1) {</span>
|
||||
<span class="lineNum"> 154 </span><span class="lineCov"> 468345 : return 0;</span>
|
||||
<span class="lineNum"> 155 </span> : }
|
||||
<span class="lineNum"> 156 </span> :
|
||||
<span class="lineNum"> 157 </span><span class="lineCov"> 1717665 : advise_init(&handle->advise, mode);</span>
|
||||
<span class="lineNum"> 158 </span><span class="lineCov"> 1717888 : pathprint(handle->path, sizeof(handle->path), "%s%s", handle->disk->dir, file->sub);</span>
|
||||
<span class="lineNum"> 157 </span><span class="lineCov"> 1717522 : advise_init(&handle->advise, mode);</span>
|
||||
<span class="lineNum"> 158 </span><span class="lineCov"> 1717676 : pathprint(handle->path, sizeof(handle->path), "%s%s", handle->disk->dir, file->sub);</span>
|
||||
<span class="lineNum"> 159 </span> :
|
||||
<span class="lineNum"> 160 </span> : /* for sure not created */
|
||||
<span class="lineNum"> 161 </span><span class="lineCov"> 1718027 : handle->created = 0;</span>
|
||||
<span class="lineNum"> 161 </span><span class="lineCov"> 1717807 : handle->created = 0;</span>
|
||||
<span class="lineNum"> 162 </span> :
|
||||
<span class="lineNum"> 163 </span> : /* flags for opening */
|
||||
<span class="lineNum"> 164 </span> : /* O_BINARY: open as binary file (Windows only) */
|
||||
<span class="lineNum"> 165 </span> : /* O_NOFOLLOW: do not follow links to ensure to open the real file */
|
||||
<span class="lineNum"> 166 </span><span class="lineCov"> 1718027 : flags = O_BINARY | O_NOFOLLOW | advise_flags(&handle->advise);</span>
|
||||
<span class="lineNum"> 166 </span><span class="lineCov"> 1717807 : flags = O_BINARY | O_NOFOLLOW | advise_flags(&handle->advise);</span>
|
||||
<span class="lineNum"> 167 </span> :
|
||||
<span class="lineNum"> 168 </span> : /* open for read */
|
||||
<span class="lineNum"> 169 </span><span class="lineCov"> 1717978 : handle->f = open_noatime(handle->path, flags | O_RDONLY);</span>
|
||||
<span class="lineNum"> 170 </span><span class="lineCov"> 1718011 : if (handle->f == -1) {</span>
|
||||
<span class="lineNum"> 169 </span><span class="lineCov"> 1717764 : handle->f = open_noatime(handle->path, flags | O_RDONLY);</span>
|
||||
<span class="lineNum"> 170 </span><span class="lineCov"> 1717748 : if (handle->f == -1) {</span>
|
||||
<span class="lineNum"> 171 </span> : /* invalidate for error */
|
||||
<span class="lineNum"> 172 </span><span class="lineCov"> 78453 : handle->file = 0;</span>
|
||||
<span class="lineNum"> 173 </span><span class="lineCov"> 78453 : handle->f = -1;</span>
|
||||
<span class="lineNum"> 174 </span><span class="lineCov"> 78453 : handle->valid_size = 0;</span>
|
||||
<span class="lineNum"> 172 </span><span class="lineCov"> 78757 : handle->file = 0;</span>
|
||||
<span class="lineNum"> 173 </span><span class="lineCov"> 78757 : handle->f = -1;</span>
|
||||
<span class="lineNum"> 174 </span><span class="lineCov"> 78757 : handle->valid_size = 0;</span>
|
||||
<span class="lineNum"> 175 </span> :
|
||||
<span class="lineNum"> 176 </span><span class="lineCov"> 78453 : if (errno == ENOENT)</span>
|
||||
<span class="lineNum"> 177 </span><span class="lineCov"> 78441 : out_missing("Missing file '%s'.\n", handle->path);</span>
|
||||
<span class="lineNum"> 176 </span><span class="lineCov"> 78757 : if (errno == ENOENT)</span>
|
||||
<span class="lineNum"> 177 </span><span class="lineCov"> 78745 : out_missing("Missing file '%s'.\n", handle->path);</span>
|
||||
<span class="lineNum"> 178 </span> : else
|
||||
<span class="lineNum"> 179 </span><span class="lineCov"> 12 : out("Error opening file '%s'. %s.\n", handle->path, strerror(errno));</span>
|
||||
<span class="lineNum"> 180 </span><span class="lineCov"> 78453 : return -1;</span>
|
||||
<span class="lineNum"> 180 </span><span class="lineCov"> 78757 : return -1;</span>
|
||||
<span class="lineNum"> 181 </span> : }
|
||||
<span class="lineNum"> 182 </span> :
|
||||
<span class="lineNum"> 183 </span> : /* just opened */
|
||||
<span class="lineNum"> 184 </span><span class="lineCov"> 1639558 : handle->file = file;</span>
|
||||
<span class="lineNum"> 184 </span><span class="lineCov"> 1638991 : handle->file = file;</span>
|
||||
<span class="lineNum"> 185 </span> :
|
||||
<span class="lineNum"> 186 </span> : /* get the stat info */
|
||||
<span class="lineNum"> 187 </span><span class="lineCov"> 1639558 : ret = fstat(handle->f, &handle->st);</span>
|
||||
<span class="lineNum"> 188 </span><span class="lineCov"> 1639532 : if (ret != 0) {</span>
|
||||
<span class="lineNum"> 187 </span><span class="lineCov"> 1638991 : ret = fstat(handle->f, &handle->st);</span>
|
||||
<span class="lineNum"> 188 </span><span class="lineCov"> 1639031 : if (ret != 0) {</span>
|
||||
<span class="lineNum"> 189 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 190 </span> : out("Error accessing file '%s'. %s.\n", handle->path, strerror(errno));
|
||||
<span class="lineNum"> 191 </span> : return -1;
|
||||
|
|
@ -255,27 +255,27 @@
|
|||
<span class="lineNum"> 193 </span> : }
|
||||
<span class="lineNum"> 194 </span> :
|
||||
<span class="lineNum"> 195 </span> : /* get the size of the existing data */
|
||||
<span class="lineNum"> 196 </span><span class="lineCov"> 1639532 : handle->valid_size = handle->st.st_size;</span>
|
||||
<span class="lineNum"> 196 </span><span class="lineCov"> 1639031 : handle->valid_size = handle->st.st_size;</span>
|
||||
<span class="lineNum"> 197 </span> :
|
||||
<span class="lineNum"> 198 </span><span class="lineCov"> 1639532 : ret = advise_open(&handle->advise, handle->f);</span>
|
||||
<span class="lineNum"> 199 </span><span class="lineCov"> 1639561 : if (ret != 0) {</span>
|
||||
<span class="lineNum"> 198 </span><span class="lineCov"> 1639031 : ret = advise_open(&handle->advise, handle->f);</span>
|
||||
<span class="lineNum"> 199 </span><span class="lineCov"> 1639026 : if (ret != 0) {</span>
|
||||
<span class="lineNum"> 200 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 201 </span> : out("Error advising file '%s'. %s.\n", handle->path, strerror(errno));
|
||||
<span class="lineNum"> 202 </span> : return -1;
|
||||
<span class="lineNum"> 203 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 204 </span> : }
|
||||
<span class="lineNum"> 205 </span> :
|
||||
<span class="lineNum"> 206 </span><span class="lineCov"> 1639561 : return 0;</span>
|
||||
<span class="lineNum"> 206 </span><span class="lineCov"> 1639026 : return 0;</span>
|
||||
<a name="207"><span class="lineNum"> 207 </span> : }</a>
|
||||
<span class="lineNum"> 208 </span> :
|
||||
<span class="lineNum"> 209 </span><span class="lineCov"> 4647242 : int handle_close(struct snapraid_handle* handle)</span>
|
||||
<span class="lineNum"> 209 </span><span class="lineCov"> 4647511 : int handle_close(struct snapraid_handle* handle)</span>
|
||||
<span class="lineNum"> 210 </span> : {
|
||||
<span class="lineNum"> 211 </span> : int ret;
|
||||
<span class="lineNum"> 212 </span> :
|
||||
<span class="lineNum"> 213 </span> : /* close if open */
|
||||
<span class="lineNum"> 214 </span><span class="lineCov"> 4647242 : if (handle->f != -1) {</span>
|
||||
<span class="lineNum"> 215 </span><span class="lineCov"> 2410862 : ret = close(handle->f);</span>
|
||||
<span class="lineNum"> 216 </span><span class="lineCov"> 2410894 : if (ret != 0) {</span>
|
||||
<span class="lineNum"> 214 </span><span class="lineCov"> 4647511 : if (handle->f != -1) {</span>
|
||||
<span class="lineNum"> 215 </span><span class="lineCov"> 2410343 : ret = close(handle->f);</span>
|
||||
<span class="lineNum"> 216 </span><span class="lineCov"> 2410377 : if (ret != 0) {</span>
|
||||
<span class="lineNum"> 217 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 218 </span> : log_fatal("Error closing file '%s'. %s.\n", handle->file->sub, strerror(errno));
|
||||
<span class="lineNum"> 219 </span> :
|
||||
|
|
@ -289,14 +289,14 @@
|
|||
<span class="lineNum"> 227 </span> : }
|
||||
<span class="lineNum"> 228 </span> :
|
||||
<span class="lineNum"> 229 </span> : /* reset the descriptor */
|
||||
<span class="lineNum"> 230 </span><span class="lineCov"> 4647274 : handle->file = 0;</span>
|
||||
<span class="lineNum"> 231 </span><span class="lineCov"> 4647274 : handle->f = -1;</span>
|
||||
<span class="lineNum"> 232 </span><span class="lineCov"> 4647274 : handle->valid_size = 0;</span>
|
||||
<span class="lineNum"> 230 </span><span class="lineCov"> 4647545 : handle->file = 0;</span>
|
||||
<span class="lineNum"> 231 </span><span class="lineCov"> 4647545 : handle->f = -1;</span>
|
||||
<span class="lineNum"> 232 </span><span class="lineCov"> 4647545 : handle->valid_size = 0;</span>
|
||||
<span class="lineNum"> 233 </span> :
|
||||
<span class="lineNum"> 234 </span><span class="lineCov"> 4647274 : return 0;</span>
|
||||
<span class="lineNum"> 234 </span><span class="lineCov"> 4647545 : return 0;</span>
|
||||
<a name="235"><span class="lineNum"> 235 </span> : }</a>
|
||||
<span class="lineNum"> 236 </span> :
|
||||
<span class="lineNum"> 237 </span><span class="lineCov"> 5856976 : 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"> 237 </span><span class="lineCov"> 5855349 : 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"> 238 </span> : {
|
||||
<span class="lineNum"> 239 </span> : ssize_t read_ret;
|
||||
<span class="lineNum"> 240 </span> : data_off_t offset;
|
||||
|
|
@ -304,70 +304,70 @@
|
|||
<span class="lineNum"> 242 </span> : unsigned count;
|
||||
<span class="lineNum"> 243 </span> : int ret;
|
||||
<span class="lineNum"> 244 </span> :
|
||||
<span class="lineNum"> 245 </span><span class="lineCov"> 5856976 : offset = file_pos * (data_off_t)block_size;</span>
|
||||
<span class="lineNum"> 245 </span><span class="lineCov"> 5855349 : offset = file_pos * (data_off_t)block_size;</span>
|
||||
<span class="lineNum"> 246 </span> :
|
||||
<span class="lineNum"> 247 </span><span class="lineCov"> 5856976 : if (!out_missing)</span>
|
||||
<span class="lineNum"> 248 </span><span class="lineCov"> 5844038 : out_missing = out;</span>
|
||||
<span class="lineNum"> 247 </span><span class="lineCov"> 5855349 : if (!out_missing)</span>
|
||||
<span class="lineNum"> 248 </span><span class="lineCov"> 5842393 : out_missing = out;</span>
|
||||
<span class="lineNum"> 249 </span> :
|
||||
<span class="lineNum"> 250 </span> : /* check if we are going to read only not initialized data */
|
||||
<span class="lineNum"> 251 </span><span class="lineCov"> 5856976 : if (offset >= handle->valid_size) {</span>
|
||||
<span class="lineNum"> 251 </span><span class="lineCov"> 5855349 : if (offset >= handle->valid_size) {</span>
|
||||
<span class="lineNum"> 252 </span> : /* if the file is missing, it's at 0 size, or it's rebuilt while reading */
|
||||
<span class="lineNum"> 253 </span><span class="lineCov"> 433024 : if (offset == handle->valid_size || handle->valid_size == 0)</span>
|
||||
<span class="lineNum"> 254 </span><span class="lineCov"> 431748 : out_missing("Reading data from missing file '%s' at offset %" PRIu64 ".\n", handle->path, offset);</span>
|
||||
<span class="lineNum"> 253 </span><span class="lineCov"> 433464 : if (offset == handle->valid_size || handle->valid_size == 0)</span>
|
||||
<span class="lineNum"> 254 </span><span class="lineCov"> 432215 : out_missing("Reading data from missing file '%s' at offset %" PRIu64 ".\n", handle->path, offset);</span>
|
||||
<span class="lineNum"> 255 </span> : else
|
||||
<span class="lineNum"> 256 </span><span class="lineCov"> 1276 : out("Reading missing data from file '%s' at offset %" PRIu64 ".\n", handle->path, offset);</span>
|
||||
<span class="lineNum"> 257 </span><span class="lineCov"> 433024 : return -1;</span>
|
||||
<span class="lineNum"> 256 </span><span class="lineCov"> 1249 : out("Reading missing data from file '%s' at offset %" PRIu64 ".\n", handle->path, offset);</span>
|
||||
<span class="lineNum"> 257 </span><span class="lineCov"> 433464 : return -1;</span>
|
||||
<span class="lineNum"> 258 </span> : }
|
||||
<span class="lineNum"> 259 </span> :
|
||||
<span class="lineNum"> 260 </span><span class="lineCov"> 5423952 : read_size = file_block_size(handle->file, file_pos, block_size);</span>
|
||||
<span class="lineNum"> 260 </span><span class="lineCov"> 5421885 : read_size = file_block_size(handle->file, file_pos, block_size);</span>
|
||||
<span class="lineNum"> 261 </span> :
|
||||
<span class="lineNum"> 262 </span><span class="lineCov"> 5423917 : count = 0;</span>
|
||||
<span class="lineNum"> 262 </span><span class="lineCov"> 5421858 : count = 0;</span>
|
||||
<span class="lineNum"> 263 </span> : do {
|
||||
<span class="lineNum"> 264 </span> : /* read the full block to support O_DIRECT */
|
||||
<span class="lineNum"> 265 </span><span class="lineCov"> 5432696 : read_ret = pread(handle->f, block_buffer + count, block_size - count, offset + count);</span>
|
||||
<span class="lineNum"> 266 </span><span class="lineCov"> 5432323 : if (read_ret < 0) {</span>
|
||||
<span class="lineNum"> 265 </span><span class="lineCov"> 5430464 : read_ret = pread(handle->f, block_buffer + count, block_size - count, offset + count);</span>
|
||||
<span class="lineNum"> 266 </span><span class="lineCov"> 5430098 : if (read_ret < 0) {</span>
|
||||
<span class="lineNum"> 267 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 268 </span> : out("Error reading file '%s' at offset %" PRIu64 " for size %u. %s.\n", handle->path, offset + count, block_size - count, strerror(errno));
|
||||
<span class="lineNum"> 269 </span> : return -1;
|
||||
<span class="lineNum"> 270 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 271 </span> : }
|
||||
<span class="lineNum"> 272 </span><span class="lineCov"> 5432323 : if (read_ret == 0) {</span>
|
||||
<span class="lineNum"> 273 </span><span class="lineCov"> 8940 : out("Unexpected end of file '%s' at offset %" PRIu64 ". %s.\n", handle->path, offset, strerror(errno));</span>
|
||||
<span class="lineNum"> 274 </span><span class="lineCov"> 8940 : return -1;</span>
|
||||
<span class="lineNum"> 272 </span><span class="lineCov"> 5430098 : if (read_ret == 0) {</span>
|
||||
<span class="lineNum"> 273 </span><span class="lineCov"> 8705 : out("Unexpected end of file '%s' at offset %" PRIu64 ". %s.\n", handle->path, offset, strerror(errno));</span>
|
||||
<span class="lineNum"> 274 </span><span class="lineCov"> 8705 : return -1;</span>
|
||||
<span class="lineNum"> 275 </span> : }
|
||||
<span class="lineNum"> 276 </span> :
|
||||
<span class="lineNum"> 277 </span><span class="lineCov"> 5423383 : count += read_ret;</span>
|
||||
<span class="lineNum"> 278 </span><span class="lineCov"> 5423383 : } while (count < read_size);</span>
|
||||
<span class="lineNum"> 277 </span><span class="lineCov"> 5421393 : count += read_ret;</span>
|
||||
<span class="lineNum"> 278 </span><span class="lineCov"> 5421393 : } while (count < read_size);</span>
|
||||
<span class="lineNum"> 279 </span> :
|
||||
<span class="lineNum"> 280 </span> : /* pad with 0 */
|
||||
<span class="lineNum"> 281 </span><span class="lineCov"> 5414604 : if (read_size < block_size) {</span>
|
||||
<span class="lineNum"> 282 </span><span class="lineCov"> 2188899 : memset(block_buffer + read_size, 0, block_size - read_size);</span>
|
||||
<span class="lineNum"> 281 </span><span class="lineCov"> 5412787 : if (read_size < block_size) {</span>
|
||||
<span class="lineNum"> 282 </span><span class="lineCov"> 2188487 : memset(block_buffer + read_size, 0, block_size - read_size);</span>
|
||||
<span class="lineNum"> 283 </span> : }
|
||||
<span class="lineNum"> 284 </span> :
|
||||
<span class="lineNum"> 285 </span><span class="lineCov"> 5414604 : ret = advise_read(&handle->advise, handle->f, offset, block_size);</span>
|
||||
<span class="lineNum"> 286 </span><span class="lineCov"> 5414548 : if (ret != 0) {</span>
|
||||
<span class="lineNum"> 285 </span><span class="lineCov"> 5412787 : ret = advise_read(&handle->advise, handle->f, offset, block_size);</span>
|
||||
<span class="lineNum"> 286 </span><span class="lineCov"> 5412784 : if (ret != 0) {</span>
|
||||
<span class="lineNum"> 287 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 288 </span> : out("Error advising file '%s'. %s.\n", handle->path, strerror(errno));
|
||||
<span class="lineNum"> 289 </span> : return -1;
|
||||
<span class="lineNum"> 290 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 291 </span> : }
|
||||
<span class="lineNum"> 292 </span> :
|
||||
<span class="lineNum"> 293 </span><span class="lineCov"> 5414548 : return read_size;</span>
|
||||
<span class="lineNum"> 293 </span><span class="lineCov"> 5412784 : return read_size;</span>
|
||||
<a name="294"><span class="lineNum"> 294 </span> : }</a>
|
||||
<span class="lineNum"> 295 </span> :
|
||||
<span class="lineNum"> 296 </span><span class="lineCov"> 288368 : int handle_write(struct snapraid_handle* handle, block_off_t file_pos, unsigned char* block_buffer, unsigned block_size)</span>
|
||||
<span class="lineNum"> 296 </span><span class="lineCov"> 288562 : int handle_write(struct snapraid_handle* handle, block_off_t file_pos, unsigned char* block_buffer, unsigned block_size)</span>
|
||||
<span class="lineNum"> 297 </span> : {
|
||||
<span class="lineNum"> 298 </span> : ssize_t write_ret;
|
||||
<span class="lineNum"> 299 </span> : data_off_t offset;
|
||||
<span class="lineNum"> 300 </span> : unsigned write_size;
|
||||
<span class="lineNum"> 301 </span> : int ret;
|
||||
<span class="lineNum"> 302 </span> :
|
||||
<span class="lineNum"> 303 </span><span class="lineCov"> 288368 : offset = file_pos * (data_off_t)block_size;</span>
|
||||
<span class="lineNum"> 303 </span><span class="lineCov"> 288562 : offset = file_pos * (data_off_t)block_size;</span>
|
||||
<span class="lineNum"> 304 </span> :
|
||||
<span class="lineNum"> 305 </span><span class="lineCov"> 288368 : write_size = file_block_size(handle->file, file_pos, block_size);</span>
|
||||
<span class="lineNum"> 305 </span><span class="lineCov"> 288562 : write_size = file_block_size(handle->file, file_pos, block_size);</span>
|
||||
<span class="lineNum"> 306 </span> :
|
||||
<span class="lineNum"> 307 </span><span class="lineCov"> 288368 : write_ret = pwrite(handle->f, block_buffer, write_size, offset);</span>
|
||||
<span class="lineNum"> 308 </span><span class="lineCov"> 288368 : if (write_ret != (ssize_t)write_size) { /* conversion is safe because block_size is always small */</span>
|
||||
<span class="lineNum"> 307 </span><span class="lineCov"> 288562 : write_ret = pwrite(handle->f, block_buffer, write_size, offset);</span>
|
||||
<span class="lineNum"> 308 </span><span class="lineCov"> 288562 : if (write_ret != (ssize_t)write_size) { /* conversion is safe because block_size is always small */</span>
|
||||
<span class="lineNum"> 309 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 310 </span> : log_fatal("Error writing file '%s'. %s.\n", handle->path, strerror(errno));
|
||||
<span class="lineNum"> 311 </span> : return -1;
|
||||
|
|
@ -375,39 +375,39 @@
|
|||
<span class="lineNum"> 313 </span> : }
|
||||
<span class="lineNum"> 314 </span> :
|
||||
<span class="lineNum"> 315 </span> : /* adjust the size of the valid data */
|
||||
<span class="lineNum"> 316 </span><span class="lineCov"> 288368 : if (handle->valid_size < offset + write_size) {</span>
|
||||
<span class="lineNum"> 317 </span><span class="lineCov"> 282259 : handle->valid_size = offset + write_size;</span>
|
||||
<span class="lineNum"> 316 </span><span class="lineCov"> 288562 : if (handle->valid_size < offset + write_size) {</span>
|
||||
<span class="lineNum"> 317 </span><span class="lineCov"> 282510 : handle->valid_size = offset + write_size;</span>
|
||||
<span class="lineNum"> 318 </span> : }
|
||||
<span class="lineNum"> 319 </span> :
|
||||
<span class="lineNum"> 320 </span><span class="lineCov"> 288368 : ret = advise_write(&handle->advise, handle->f, offset, block_size);</span>
|
||||
<span class="lineNum"> 321 </span><span class="lineCov"> 288368 : if (ret != 0) {</span>
|
||||
<span class="lineNum"> 320 </span><span class="lineCov"> 288562 : ret = advise_write(&handle->advise, handle->f, offset, block_size);</span>
|
||||
<span class="lineNum"> 321 </span><span class="lineCov"> 288562 : if (ret != 0) {</span>
|
||||
<span class="lineNum"> 322 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 323 </span> : log_fatal("Error advising file '%s'. %s.\n", handle->path, strerror(errno));
|
||||
<span class="lineNum"> 324 </span> : return -1;
|
||||
<span class="lineNum"> 325 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 326 </span> : }
|
||||
<span class="lineNum"> 327 </span> :
|
||||
<span class="lineNum"> 328 </span><span class="lineCov"> 288368 : return 0;</span>
|
||||
<span class="lineNum"> 328 </span><span class="lineCov"> 288562 : return 0;</span>
|
||||
<a name="329"><span class="lineNum"> 329 </span> : }</a>
|
||||
<span class="lineNum"> 330 </span> :
|
||||
<span class="lineNum"> 331 </span><span class="lineCov"> 119415 : int handle_utime(struct snapraid_handle* handle)</span>
|
||||
<span class="lineNum"> 331 </span><span class="lineCov"> 119431 : int handle_utime(struct snapraid_handle* handle)</span>
|
||||
<span class="lineNum"> 332 </span> : {
|
||||
<span class="lineNum"> 333 </span> : int ret;
|
||||
<span class="lineNum"> 334 </span> :
|
||||
<span class="lineNum"> 335 </span> : /* do nothing if not opened */
|
||||
<span class="lineNum"> 336 </span><span class="lineCov"> 119415 : if (handle->f == -1)</span>
|
||||
<span class="lineNum"> 336 </span><span class="lineCov"> 119431 : if (handle->f == -1)</span>
|
||||
<span class="lineNum"> 337 </span><span class="lineNoCov"> 0 : return 0;</span>
|
||||
<span class="lineNum"> 338 </span> :
|
||||
<span class="lineNum"> 339 </span><span class="lineCov"> 119415 : ret = fmtime(handle->f, handle->file->mtime_sec, handle->file->mtime_nsec);</span>
|
||||
<span class="lineNum"> 339 </span><span class="lineCov"> 119431 : ret = fmtime(handle->f, handle->file->mtime_sec, handle->file->mtime_nsec);</span>
|
||||
<span class="lineNum"> 340 </span> :
|
||||
<span class="lineNum"> 341 </span><span class="lineCov"> 119415 : if (ret != 0) {</span>
|
||||
<span class="lineNum"> 341 </span><span class="lineCov"> 119431 : if (ret != 0) {</span>
|
||||
<span class="lineNum"> 342 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 343 </span> : log_fatal("Error timing file '%s'. %s.\n", handle->file->sub, strerror(errno));
|
||||
<span class="lineNum"> 344 </span> : return -1;
|
||||
<span class="lineNum"> 345 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 346 </span> : }
|
||||
<span class="lineNum"> 347 </span> :
|
||||
<span class="lineNum"> 348 </span><span class="lineCov"> 119415 : return 0;</span>
|
||||
<span class="lineNum"> 348 </span><span class="lineCov"> 119431 : return 0;</span>
|
||||
<a name="349"><span class="lineNum"> 349 </span> : }</a>
|
||||
<span class="lineNum"> 350 </span> :
|
||||
<span class="lineNum"> 351 </span><span class="lineCov"> 221 : struct snapraid_handle* handle_mapping(struct snapraid_state* state, unsigned* handlemax)</span>
|
||||
|
|
|
|||
|
|
@ -61,11 +61,11 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="import.c.gcov.html#47">import_block_hash</a></td>
|
||||
<td class="coverFnHi">656339</td>
|
||||
<td class="coverFnHi">657164</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="import.c.gcov.html#146">state_import_fetch</a></td>
|
||||
<td class="coverFnHi">651867</td>
|
||||
<td class="coverFnHi">652692</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="import.c.gcov.html#27">import_block_hash_compare</a></td>
|
||||
|
|
|
|||
|
|
@ -61,7 +61,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="import.c.gcov.html#47">import_block_hash</a></td>
|
||||
<td class="coverFnHi">656339</td>
|
||||
<td class="coverFnHi">657164</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="import.c.gcov.html#27">import_block_hash_compare</a></td>
|
||||
|
|
@ -89,7 +89,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="import.c.gcov.html#146">state_import_fetch</a></td>
|
||||
<td class="coverFnHi">651867</td>
|
||||
<td class="coverFnHi">652692</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
|
|
|
|||
|
|
@ -108,10 +108,10 @@
|
|||
<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"> 656339 : static inline tommy_uint32_t import_block_hash(const unsigned char* hash)</span>
|
||||
<span class="lineNum"> 49 </span><span class="lineCov"> 657164 : static inline tommy_uint32_t import_block_hash(const unsigned char* hash)</span>
|
||||
<span class="lineNum"> 50 </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"> 656339 : return hash[0] | ((uint32_t)hash[1] << 8) | ((uint32_t)hash[2] << 16) | ((uint32_t)hash[3] << 24);</span>
|
||||
<span class="lineNum"> 52 </span><span class="lineCov"> 657164 : 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>
|
||||
|
|
@ -207,24 +207,24 @@
|
|||
<span class="lineNum"> 145 </span><span class="lineCov"> 1750 : free(file);</span>
|
||||
<a name="146"><span class="lineNum"> 146 </span><span class="lineCov"> 1750 : }</span></a>
|
||||
<span class="lineNum"> 147 </span> :
|
||||
<span class="lineNum"> 148 </span><span class="lineCov"> 651867 : int state_import_fetch(struct snapraid_state* state, int rehash, struct snapraid_block* missing_block, unsigned char* buffer)</span>
|
||||
<span class="lineNum"> 148 </span><span class="lineCov"> 652692 : int state_import_fetch(struct snapraid_state* state, int rehash, struct snapraid_block* missing_block, unsigned char* buffer)</span>
|
||||
<span class="lineNum"> 149 </span> : {
|
||||
<span class="lineNum"> 150 </span> : struct snapraid_import_block* block;
|
||||
<span class="lineNum"> 151 </span> : int ret;
|
||||
<span class="lineNum"> 152 </span> : int f;
|
||||
<span class="lineNum"> 153 </span><span class="lineCov"> 651867 : const unsigned char* hash = missing_block->hash;</span>
|
||||
<span class="lineNum"> 154 </span><span class="lineCov"> 651867 : unsigned block_size = state->block_size;</span>
|
||||
<span class="lineNum"> 153 </span><span class="lineCov"> 652692 : const unsigned char* hash = missing_block->hash;</span>
|
||||
<span class="lineNum"> 154 </span><span class="lineCov"> 652692 : unsigned block_size = state->block_size;</span>
|
||||
<span class="lineNum"> 155 </span> : unsigned read_size;
|
||||
<span class="lineNum"> 156 </span> : unsigned char buffer_hash[HASH_MAX];
|
||||
<span class="lineNum"> 157 </span> : const char* path;
|
||||
<span class="lineNum"> 158 </span> :
|
||||
<span class="lineNum"> 159 </span><span class="lineCov"> 651867 : if (rehash) {</span>
|
||||
<span class="lineNum"> 159 </span><span class="lineCov"> 652692 : if (rehash) {</span>
|
||||
<span class="lineNum"> 160 </span><span class="lineNoCov"> 0 : block = tommy_hashdyn_search(&state->previmportset, import_block_prevhash_compare, hash, import_block_hash(hash));</span>
|
||||
<span class="lineNum"> 161 </span> : } else {
|
||||
<span class="lineNum"> 162 </span><span class="lineCov"> 651867 : block = tommy_hashdyn_search(&state->importset, import_block_hash_compare, hash, import_block_hash(hash));</span>
|
||||
<span class="lineNum"> 162 </span><span class="lineCov"> 652692 : block = tommy_hashdyn_search(&state->importset, import_block_hash_compare, hash, import_block_hash(hash));</span>
|
||||
<span class="lineNum"> 163 </span> : }
|
||||
<span class="lineNum"> 164 </span><span class="lineCov"> 651867 : if (!block)</span>
|
||||
<span class="lineNum"> 165 </span><span class="lineCov"> 647395 : return -1;</span>
|
||||
<span class="lineNum"> 164 </span><span class="lineCov"> 652692 : if (!block)</span>
|
||||
<span class="lineNum"> 165 </span><span class="lineCov"> 648220 : return -1;</span>
|
||||
<span class="lineNum"> 166 </span> :
|
||||
<span class="lineNum"> 167 </span><span class="lineCov"> 4472 : path = block->file->path;</span>
|
||||
<span class="lineNum"> 168 </span><span class="lineCov"> 4472 : read_size = block->size;</span>
|
||||
|
|
|
|||
|
|
@ -31,18 +31,18 @@
|
|||
<td class="headerValue">lcov.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntry">8491</td>
|
||||
<td class="headerCovTableEntry">9587</td>
|
||||
<td class="headerCovTableEntryMed">88.6 %</td>
|
||||
<td class="headerCovTableEntry">8598</td>
|
||||
<td class="headerCovTableEntry">9589</td>
|
||||
<td class="headerCovTableEntryMed">89.7 %</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Date:</td>
|
||||
<td class="headerValue">2016-11-06</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntry">474</td>
|
||||
<td class="headerCovTableEntry">482</td>
|
||||
<td class="headerCovTableEntry">499</td>
|
||||
<td class="headerCovTableEntryHi">95.0 %</td>
|
||||
<td class="headerCovTableEntryHi">96.6 %</td>
|
||||
</tr>
|
||||
<tr><td><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
|
|
@ -69,16 +69,6 @@
|
|||
<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="io.c.gcov.html">io.c</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../amber.png" width=78 height=10 alt="78.2%"><img src="../snow.png" width=22 height=10 alt="78.2%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerMed">78.2 %</td>
|
||||
<td class="coverNumMed">326 / 417</td>
|
||||
<td class="coverPerLo">64.5 %</td>
|
||||
<td class="coverNumLo">20 / 31</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="unix.c.gcov.html">unix.c</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
|
|
@ -99,6 +89,16 @@
|
|||
<td class="coverPerMed">87.5 %</td>
|
||||
<td class="coverNumMed">7 / 8</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="io.c.gcov.html">io.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="92.6%"><img src="../snow.png" width=7 height=10 alt="92.6%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">92.6 %</td>
|
||||
<td class="coverNumHi">386 / 417</td>
|
||||
<td class="coverPerHi">90.3 %</td>
|
||||
<td class="coverNumHi">28 / 31</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="stream.h.gcov.html">stream.h</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
|
|
@ -232,10 +232,10 @@
|
|||
<tr>
|
||||
<td class="coverFile"><a href="speed.c.gcov.html">speed.c</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../amber.png" width=90 height=10 alt="89.9%"><img src="../snow.png" width=10 height=10 alt="89.9%"></td></tr></table>
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=99 height=10 alt="99.8%"><img src="../snow.png" width=1 height=10 alt="99.8%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerMed">89.9 %</td>
|
||||
<td class="coverNumMed">363 / 404</td>
|
||||
<td class="coverPerHi">99.8 %</td>
|
||||
<td class="coverNumHi">403 / 404</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumHi">2 / 2</td>
|
||||
</tr>
|
||||
|
|
@ -332,10 +332,10 @@
|
|||
<tr>
|
||||
<td class="coverFile"><a href="sync.c.gcov.html">sync.c</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<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>
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../amber.png" width=89 height=10 alt="89.5%"><img src="../snow.png" width=11 height=10 alt="89.5%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerMed">89.1 %</td>
|
||||
<td class="coverNumMed">500 / 561</td>
|
||||
<td class="coverPerMed">89.5 %</td>
|
||||
<td class="coverNumMed">502 / 561</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumHi">7 / 7</td>
|
||||
</tr>
|
||||
|
|
@ -355,7 +355,7 @@
|
|||
<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">143 / 143</td>
|
||||
<td class="coverNumHi">145 / 145</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumHi">8 / 8</td>
|
||||
</tr>
|
||||
|
|
@ -382,10 +382,10 @@
|
|||
<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=91 height=10 alt="90.6%"><img src="../snow.png" width=9 height=10 alt="90.6%"></td></tr></table>
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=91 height=10 alt="91.1%"><img src="../snow.png" width=9 height=10 alt="91.1%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">90.6 %</td>
|
||||
<td class="coverNumHi">491 / 542</td>
|
||||
<td class="coverPerHi">91.1 %</td>
|
||||
<td class="coverNumHi">494 / 542</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumHi">9 / 9</td>
|
||||
</tr>
|
||||
|
|
|
|||
|
|
@ -31,18 +31,18 @@
|
|||
<td class="headerValue">lcov.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntry">8491</td>
|
||||
<td class="headerCovTableEntry">9587</td>
|
||||
<td class="headerCovTableEntryMed">88.6 %</td>
|
||||
<td class="headerCovTableEntry">8598</td>
|
||||
<td class="headerCovTableEntry">9589</td>
|
||||
<td class="headerCovTableEntryMed">89.7 %</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Date:</td>
|
||||
<td class="headerValue">2016-11-06</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntry">474</td>
|
||||
<td class="headerCovTableEntry">482</td>
|
||||
<td class="headerCovTableEntry">499</td>
|
||||
<td class="headerCovTableEntryHi">95.0 %</td>
|
||||
<td class="headerCovTableEntryHi">96.6 %</td>
|
||||
</tr>
|
||||
<tr><td><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
|
|
@ -89,16 +89,6 @@
|
|||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumHi">5 / 5</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="io.c.gcov.html">io.c</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../amber.png" width=78 height=10 alt="78.2%"><img src="../snow.png" width=22 height=10 alt="78.2%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerMed">78.2 %</td>
|
||||
<td class="coverNumMed">326 / 417</td>
|
||||
<td class="coverPerLo">64.5 %</td>
|
||||
<td class="coverNumLo">20 / 31</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="scrub.c.gcov.html">scrub.c</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
|
|
@ -129,16 +119,6 @@
|
|||
<td class="coverPerHi">94.7 %</td>
|
||||
<td class="coverNumHi">18 / 19</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="sync.c.gcov.html">sync.c</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<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">89.1 %</td>
|
||||
<td class="coverNumMed">500 / 561</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumHi">7 / 7</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="scan.c.gcov.html">scan.c</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
|
|
@ -150,14 +130,14 @@
|
|||
<td class="coverNumHi">23 / 23</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="speed.c.gcov.html">speed.c</a></td>
|
||||
<td class="coverFile"><a href="sync.c.gcov.html">sync.c</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../amber.png" width=90 height=10 alt="89.9%"><img src="../snow.png" width=10 height=10 alt="89.9%"></td></tr></table>
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../amber.png" width=89 height=10 alt="89.5%"><img src="../snow.png" width=11 height=10 alt="89.5%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerMed">89.9 %</td>
|
||||
<td class="coverNumMed">363 / 404</td>
|
||||
<td class="coverPerMed">89.5 %</td>
|
||||
<td class="coverNumMed">502 / 561</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumHi">2 / 2</td>
|
||||
<td class="coverNumHi">7 / 7</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="state.c.gcov.html">state.c</a></td>
|
||||
|
|
@ -189,16 +169,6 @@
|
|||
<td class="coverPerMed">87.5 %</td>
|
||||
<td class="coverNumMed">7 / 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=91 height=10 alt="90.6%"><img src="../snow.png" width=9 height=10 alt="90.6%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">90.6 %</td>
|
||||
<td class="coverNumHi">491 / 542</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumHi">9 / 9</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="check.c.gcov.html">check.c</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
|
|
@ -229,6 +199,26 @@
|
|||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumHi">7 / 7</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=91 height=10 alt="91.1%"><img src="../snow.png" width=9 height=10 alt="91.1%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">91.1 %</td>
|
||||
<td class="coverNumHi">494 / 542</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumHi">9 / 9</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="io.c.gcov.html">io.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="92.6%"><img src="../snow.png" width=7 height=10 alt="92.6%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">92.6 %</td>
|
||||
<td class="coverNumHi">386 / 417</td>
|
||||
<td class="coverPerHi">90.3 %</td>
|
||||
<td class="coverNumHi">28 / 31</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="util.c.gcov.html">util.c</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
|
|
@ -349,6 +339,16 @@
|
|||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumHi">8 / 8</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="speed.c.gcov.html">speed.c</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=99 height=10 alt="99.8%"><img src="../snow.png" width=1 height=10 alt="99.8%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">99.8 %</td>
|
||||
<td class="coverNumHi">403 / 404</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumHi">2 / 2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="portable.h.gcov.html">portable.h</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
|
|
@ -415,7 +415,7 @@
|
|||
<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">143 / 143</td>
|
||||
<td class="coverNumHi">145 / 145</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumHi">8 / 8</td>
|
||||
</tr>
|
||||
|
|
|
|||
|
|
@ -31,18 +31,18 @@
|
|||
<td class="headerValue">lcov.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntry">8491</td>
|
||||
<td class="headerCovTableEntry">9587</td>
|
||||
<td class="headerCovTableEntryMed">88.6 %</td>
|
||||
<td class="headerCovTableEntry">8598</td>
|
||||
<td class="headerCovTableEntry">9589</td>
|
||||
<td class="headerCovTableEntryMed">89.7 %</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Date:</td>
|
||||
<td class="headerValue">2016-11-06</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntry">474</td>
|
||||
<td class="headerCovTableEntry">482</td>
|
||||
<td class="headerCovTableEntry">499</td>
|
||||
<td class="headerCovTableEntryHi">95.0 %</td>
|
||||
<td class="headerCovTableEntryHi">96.6 %</td>
|
||||
</tr>
|
||||
<tr><td><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
|
|
@ -152,12 +152,12 @@
|
|||
<tr>
|
||||
<td class="coverFile"><a href="io.c.gcov.html">io.c</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../amber.png" width=78 height=10 alt="78.2%"><img src="../snow.png" width=22 height=10 alt="78.2%"></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="coverPerMed">78.2 %</td>
|
||||
<td class="coverNumMed">326 / 417</td>
|
||||
<td class="coverPerLo">64.5 %</td>
|
||||
<td class="coverNumLo">20 / 31</td>
|
||||
<td class="coverPerHi">92.6 %</td>
|
||||
<td class="coverNumHi">386 / 417</td>
|
||||
<td class="coverPerHi">90.3 %</td>
|
||||
<td class="coverNumHi">28 / 31</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="list.c.gcov.html">list.c</a></td>
|
||||
|
|
@ -275,27 +275,27 @@
|
|||
<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">143 / 143</td>
|
||||
<td class="coverNumHi">145 / 145</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=91 height=10 alt="90.6%"><img src="../snow.png" width=9 height=10 alt="90.6%"></td></tr></table>
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=91 height=10 alt="91.1%"><img src="../snow.png" width=9 height=10 alt="91.1%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">90.6 %</td>
|
||||
<td class="coverNumHi">491 / 542</td>
|
||||
<td class="coverPerHi">91.1 %</td>
|
||||
<td class="coverNumHi">494 / 542</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumHi">9 / 9</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="speed.c.gcov.html">speed.c</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../amber.png" width=90 height=10 alt="89.9%"><img src="../snow.png" width=10 height=10 alt="89.9%"></td></tr></table>
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=99 height=10 alt="99.8%"><img src="../snow.png" width=1 height=10 alt="99.8%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerMed">89.9 %</td>
|
||||
<td class="coverNumMed">363 / 404</td>
|
||||
<td class="coverPerHi">99.8 %</td>
|
||||
<td class="coverNumHi">403 / 404</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumHi">2 / 2</td>
|
||||
</tr>
|
||||
|
|
@ -372,10 +372,10 @@
|
|||
<tr>
|
||||
<td class="coverFile"><a href="sync.c.gcov.html">sync.c</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<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>
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../amber.png" width=89 height=10 alt="89.5%"><img src="../snow.png" width=11 height=10 alt="89.5%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerMed">89.1 %</td>
|
||||
<td class="coverNumMed">500 / 561</td>
|
||||
<td class="coverPerMed">89.5 %</td>
|
||||
<td class="coverNumMed">502 / 561</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumHi">7 / 7</td>
|
||||
</tr>
|
||||
|
|
|
|||
|
|
@ -31,18 +31,18 @@
|
|||
<td class="headerValue">lcov.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntry">326</td>
|
||||
<td class="headerCovTableEntry">386</td>
|
||||
<td class="headerCovTableEntry">417</td>
|
||||
<td class="headerCovTableEntryMed">78.2 %</td>
|
||||
<td class="headerCovTableEntryHi">92.6 %</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Date:</td>
|
||||
<td class="headerValue">2016-11-06</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntry">20</td>
|
||||
<td class="headerCovTableEntry">28</td>
|
||||
<td class="headerCovTableEntry">31</td>
|
||||
<td class="headerCovTableEntryLo">64.5 %</td>
|
||||
<td class="headerCovTableEntryHi">90.3 %</td>
|
||||
</tr>
|
||||
<tr><td><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
|
|
@ -61,27 +61,27 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="io.c.gcov.html#270">io_reader_step</a></td>
|
||||
<td class="coverFnHi">1192431</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="io.c.gcov.html#679">io_reader_worker</a></td>
|
||||
<td class="coverFnHi">1110427</td>
|
||||
<td class="coverFnHi">1162427</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="io.c.gcov.html#516">io_task_read_thread</a></td>
|
||||
<td class="coverFnHi">1110414</td>
|
||||
<td class="coverFnHi">1081698</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="io.c.gcov.html#679">io_reader_worker</a></td>
|
||||
<td class="coverFnHi">1081680</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="io.c.gcov.html#594">io_data_read_thread</a></td>
|
||||
<td class="coverFnHi">899610</td>
|
||||
<td class="coverFnHi">870894</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="io.c.gcov.html#326">io_writer_step</a></td>
|
||||
<td class="coverFnHi">559155</td>
|
||||
<td class="coverFnHi">553871</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="io.c.gcov.html#604">io_parity_write_thread</a></td>
|
||||
<td class="coverFnHi">558701</td>
|
||||
<td class="coverFnHi">553420</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="io.c.gcov.html#599">io_parity_read_thread</a></td>
|
||||
|
|
@ -89,68 +89,92 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="io.c.gcov.html#23">io_position_next</a></td>
|
||||
<td class="coverFnHi">162223</td>
|
||||
<td class="coverFnHi">161997</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="io.c.gcov.html#42">io_reader_sched</a></td>
|
||||
<td class="coverFnHi">162223</td>
|
||||
<td class="coverFnHi">161997</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="io.c.gcov.html#388">io_read_next_thread</a></td>
|
||||
<td class="coverFnHi">150031</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="io.c.gcov.html#425">io_write_preset_thread</a></td>
|
||||
<td class="coverFnHi">114801</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="io.c.gcov.html#432">io_write_next_thread</a></td>
|
||||
<td class="coverFnHi">114801</td>
|
||||
<td class="coverFnHi">145244</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="io.c.gcov.html#74">io_writer_sched</a></td>
|
||||
<td class="coverFnHi">112466</td>
|
||||
<td class="coverFnHi">112401</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="io.c.gcov.html#425">io_write_preset_thread</a></td>
|
||||
<td class="coverFnHi">110015</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="io.c.gcov.html#432">io_write_next_thread</a></td>
|
||||
<td class="coverFnHi">110015</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="io.c.gcov.html#179">io_task_read_mono</a></td>
|
||||
<td class="coverFnHi">28122</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="io.c.gcov.html#207">io_data_read_mono</a></td>
|
||||
<td class="coverFnHi">28122</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="io.c.gcov.html#124">io_read_next_mono</a></td>
|
||||
<td class="coverFnHi">4688</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="io.c.gcov.html#217">io_parity_write_mono</a></td>
|
||||
<td class="coverFnHi">4687</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="io.c.gcov.html#162">io_write_next_mono</a></td>
|
||||
<td class="coverFnHi">4687</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="io.c.gcov.html#142">io_write_preset_mono</a></td>
|
||||
<td class="coverFnHi">4687</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="io.c.gcov.html#99">io_writer_sched_empty</a></td>
|
||||
<td class="coverFnHi">2335</td>
|
||||
<td class="coverFnHi">2301</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="io.c.gcov.html#690">io_reader_thread</a></td>
|
||||
<td class="coverFnHi">654</td>
|
||||
<td class="coverFnHi">647</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="io.c.gcov.html#720">io_writer_thread</a></td>
|
||||
<td class="coverFnHi">463</td>
|
||||
<td class="coverFnHi">462</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="io.c.gcov.html#844">io_init</a></td>
|
||||
<td class="coverFnHi">96</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="io.c.gcov.html#753">io_start_thread</a></td>
|
||||
<td class="coverFnHi">96</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="io.c.gcov.html#980">io_done</a></td>
|
||||
<td class="coverFnHi">96</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="io.c.gcov.html#753">io_start_thread</a></td>
|
||||
<td class="coverFnHi">95</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="io.c.gcov.html#805">io_stop_thread</a></td>
|
||||
<td class="coverFnHi">96</td>
|
||||
<td class="coverFnHi">95</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="io.c.gcov.html#243">io_start_mono</a></td>
|
||||
<td class="coverFnHi">1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="io.c.gcov.html#254">io_stop_mono</a></td>
|
||||
<td class="coverFnHi">1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="io.c.gcov.html#174">io_refresh_mono</a></td>
|
||||
<td class="coverFnLo">0</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="io.c.gcov.html#217">io_parity_write_mono</a></td>
|
||||
<td class="coverFnLo">0</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="io.c.gcov.html#124">io_read_next_mono</a></td>
|
||||
<td class="coverFnLo">0</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="io.c.gcov.html#470">io_refresh_thread</a></td>
|
||||
<td class="coverFnLo">0</td>
|
||||
|
|
@ -159,30 +183,6 @@
|
|||
<td class="coverFn"><a href="io.c.gcov.html#212">io_parity_read_mono</a></td>
|
||||
<td class="coverFnLo">0</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="io.c.gcov.html#243">io_start_mono</a></td>
|
||||
<td class="coverFnLo">0</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="io.c.gcov.html#254">io_stop_mono</a></td>
|
||||
<td class="coverFnLo">0</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="io.c.gcov.html#162">io_write_next_mono</a></td>
|
||||
<td class="coverFnLo">0</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="io.c.gcov.html#142">io_write_preset_mono</a></td>
|
||||
<td class="coverFnLo">0</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="io.c.gcov.html#179">io_task_read_mono</a></td>
|
||||
<td class="coverFnLo">0</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="io.c.gcov.html#207">io_data_read_mono</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">326</td>
|
||||
<td class="headerCovTableEntry">386</td>
|
||||
<td class="headerCovTableEntry">417</td>
|
||||
<td class="headerCovTableEntryMed">78.2 %</td>
|
||||
<td class="headerCovTableEntryHi">92.6 %</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Date:</td>
|
||||
<td class="headerValue">2016-11-06</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntry">20</td>
|
||||
<td class="headerCovTableEntry">28</td>
|
||||
<td class="headerCovTableEntry">31</td>
|
||||
<td class="headerCovTableEntryLo">64.5 %</td>
|
||||
<td class="headerCovTableEntryHi">90.3 %</td>
|
||||
</tr>
|
||||
<tr><td><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
|
|
@ -61,11 +61,11 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="io.c.gcov.html#207">io_data_read_mono</a></td>
|
||||
<td class="coverFnLo">0</td>
|
||||
<td class="coverFnHi">28122</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="io.c.gcov.html#594">io_data_read_thread</a></td>
|
||||
<td class="coverFnHi">899610</td>
|
||||
<td class="coverFnHi">870894</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="io.c.gcov.html#980">io_done</a></td>
|
||||
|
|
@ -85,39 +85,39 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="io.c.gcov.html#217">io_parity_write_mono</a></td>
|
||||
<td class="coverFnLo">0</td>
|
||||
<td class="coverFnHi">4687</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="io.c.gcov.html#604">io_parity_write_thread</a></td>
|
||||
<td class="coverFnHi">558701</td>
|
||||
<td class="coverFnHi">553420</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="io.c.gcov.html#23">io_position_next</a></td>
|
||||
<td class="coverFnHi">162223</td>
|
||||
<td class="coverFnHi">161997</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="io.c.gcov.html#124">io_read_next_mono</a></td>
|
||||
<td class="coverFnLo">0</td>
|
||||
<td class="coverFnHi">4688</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="io.c.gcov.html#388">io_read_next_thread</a></td>
|
||||
<td class="coverFnHi">150031</td>
|
||||
<td class="coverFnHi">145244</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="io.c.gcov.html#42">io_reader_sched</a></td>
|
||||
<td class="coverFnHi">162223</td>
|
||||
<td class="coverFnHi">161997</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="io.c.gcov.html#270">io_reader_step</a></td>
|
||||
<td class="coverFnHi">1192431</td>
|
||||
<td class="coverFnHi">1162427</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="io.c.gcov.html#690">io_reader_thread</a></td>
|
||||
<td class="coverFnHi">654</td>
|
||||
<td class="coverFnHi">647</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="io.c.gcov.html#679">io_reader_worker</a></td>
|
||||
<td class="coverFnHi">1110427</td>
|
||||
<td class="coverFnHi">1081680</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="io.c.gcov.html#174">io_refresh_mono</a></td>
|
||||
|
|
@ -129,59 +129,59 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="io.c.gcov.html#243">io_start_mono</a></td>
|
||||
<td class="coverFnLo">0</td>
|
||||
<td class="coverFnHi">1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="io.c.gcov.html#753">io_start_thread</a></td>
|
||||
<td class="coverFnHi">96</td>
|
||||
<td class="coverFnHi">95</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="io.c.gcov.html#254">io_stop_mono</a></td>
|
||||
<td class="coverFnLo">0</td>
|
||||
<td class="coverFnHi">1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="io.c.gcov.html#805">io_stop_thread</a></td>
|
||||
<td class="coverFnHi">96</td>
|
||||
<td class="coverFnHi">95</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="io.c.gcov.html#179">io_task_read_mono</a></td>
|
||||
<td class="coverFnLo">0</td>
|
||||
<td class="coverFnHi">28122</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="io.c.gcov.html#516">io_task_read_thread</a></td>
|
||||
<td class="coverFnHi">1110414</td>
|
||||
<td class="coverFnHi">1081698</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="io.c.gcov.html#162">io_write_next_mono</a></td>
|
||||
<td class="coverFnLo">0</td>
|
||||
<td class="coverFnHi">4687</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="io.c.gcov.html#432">io_write_next_thread</a></td>
|
||||
<td class="coverFnHi">114801</td>
|
||||
<td class="coverFnHi">110015</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="io.c.gcov.html#142">io_write_preset_mono</a></td>
|
||||
<td class="coverFnLo">0</td>
|
||||
<td class="coverFnHi">4687</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="io.c.gcov.html#425">io_write_preset_thread</a></td>
|
||||
<td class="coverFnHi">114801</td>
|
||||
<td class="coverFnHi">110015</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="io.c.gcov.html#74">io_writer_sched</a></td>
|
||||
<td class="coverFnHi">112466</td>
|
||||
<td class="coverFnHi">112401</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="io.c.gcov.html#99">io_writer_sched_empty</a></td>
|
||||
<td class="coverFnHi">2335</td>
|
||||
<td class="coverFnHi">2301</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="io.c.gcov.html#326">io_writer_step</a></td>
|
||||
<td class="coverFnHi">559155</td>
|
||||
<td class="coverFnHi">553871</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="io.c.gcov.html#720">io_writer_thread</a></td>
|
||||
<td class="coverFnHi">463</td>
|
||||
<td class="coverFnHi">462</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
|
|
@ -61,23 +61,23 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="mktest.c.gcov.html#28">rnd</a></td>
|
||||
<td class="coverFnHi">56078917</td>
|
||||
<td class="coverFnHi">56057797</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="mktest.c.gcov.html#35">rndnz</a></td>
|
||||
<td class="coverFnHi">55667758</td>
|
||||
<td class="coverFnHi">55646605</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="mktest.c.gcov.html#84">file_cmp</a></td>
|
||||
<td class="coverFnHi">146650</td>
|
||||
<td class="coverFnHi">146556</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="mktest.c.gcov.html#43">rndnz_range</a></td>
|
||||
<td class="coverFnHi">32714</td>
|
||||
<td class="coverFnHi">32690</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="mktest.c.gcov.html#70">rnd_name</a></td>
|
||||
<td class="coverFnHi">26829</td>
|
||||
<td class="coverFnHi">26841</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">6236</td>
|
||||
<td class="coverFnHi">6226</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="mktest.c.gcov.html#457">cmd_append</a></td>
|
||||
<td class="coverFnHi">3238</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="mktest.c.gcov.html#508">cmd_truncate</a></td>
|
||||
<td class="coverFnHi">3191</td>
|
||||
<td class="coverFnHi">3224</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="mktest.c.gcov.html#562">cmd_delete</a></td>
|
||||
<td class="coverFnHi">3088</td>
|
||||
<td class="coverFnHi">3222</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="mktest.c.gcov.html#508">cmd_truncate</a></td>
|
||||
<td class="coverFnHi">3082</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">920</td>
|
||||
<td class="coverFnHi">932</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="mktest.c.gcov.html#644">main</a></td>
|
||||
|
|
|
|||
|
|
@ -61,7 +61,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="mktest.c.gcov.html#457">cmd_append</a></td>
|
||||
<td class="coverFnHi">3238</td>
|
||||
<td class="coverFnHi">3224</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">3088</td>
|
||||
<td class="coverFnHi">3222</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">920</td>
|
||||
<td class="coverFnHi">932</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="mktest.c.gcov.html#508">cmd_truncate</a></td>
|
||||
<td class="coverFnHi">3191</td>
|
||||
<td class="coverFnHi">3082</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="mktest.c.gcov.html#289">cmd_write</a></td>
|
||||
<td class="coverFnHi">6236</td>
|
||||
<td class="coverFnHi">6226</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">146650</td>
|
||||
<td class="coverFnHi">146556</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">56078917</td>
|
||||
<td class="coverFnHi">56057797</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="mktest.c.gcov.html#70">rnd_name</a></td>
|
||||
<td class="coverFnHi">26829</td>
|
||||
<td class="coverFnHi">26841</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="mktest.c.gcov.html#35">rndnz</a></td>
|
||||
<td class="coverFnHi">55667758</td>
|
||||
<td class="coverFnHi">55646605</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">32714</td>
|
||||
<td class="coverFnHi">32690</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
|
|
|
|||
|
|
@ -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"> 56078917 : unsigned rnd(unsigned max)</span>
|
||||
<span class="lineNum"> 30 </span><span class="lineCov"> 56057797 : unsigned rnd(unsigned max)</span>
|
||||
<span class="lineNum"> 31 </span> : {
|
||||
<span class="lineNum"> 32 </span><span class="lineCov"> 56078917 : seed = seed * 6364136223846793005LL + 1442695040888963407LL;</span>
|
||||
<span class="lineNum"> 32 </span><span class="lineCov"> 56057797 : seed = seed * 6364136223846793005LL + 1442695040888963407LL;</span>
|
||||
<span class="lineNum"> 33 </span> :
|
||||
<span class="lineNum"> 34 </span><span class="lineCov"> 56078917 : return (seed >> 32) % max;</span>
|
||||
<span class="lineNum"> 34 </span><span class="lineCov"> 56057797 : 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"> 55667758 : unsigned rndnz(unsigned max)</span>
|
||||
<span class="lineNum"> 37 </span><span class="lineCov"> 55646605 : unsigned rndnz(unsigned max)</span>
|
||||
<span class="lineNum"> 38 </span> : {
|
||||
<span class="lineNum"> 39 </span><span class="lineCov"> 55667758 : if (max <= 1)</span>
|
||||
<span class="lineNum"> 39 </span><span class="lineCov"> 55646605 : 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"> 55664927 : return rnd(max - 1) + 1;</span>
|
||||
<span class="lineNum"> 42 </span><span class="lineCov"> 55643774 : 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"> 32714 : void rndnz_range(unsigned char* data, int size)</span>
|
||||
<span class="lineNum"> 45 </span><span class="lineCov"> 32690 : 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"> 55693709 : for (i = 0; i < size; ++i)</span>
|
||||
<span class="lineNum"> 50 </span><span class="lineCov"> 55660995 : data[i] = rndnz(256);</span>
|
||||
<a name="51"><span class="lineNum"> 51 </span><span class="lineCov"> 32714 : }</span></a>
|
||||
<span class="lineNum"> 49 </span><span class="lineCov"> 55672532 : for (i = 0; i < size; ++i)</span>
|
||||
<span class="lineNum"> 50 </span><span class="lineCov"> 55639842 : data[i] = rndnz(256);</span>
|
||||
<a name="51"><span class="lineNum"> 51 </span><span class="lineCov"> 32690 : }</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"> 26829 : void rnd_name(char* file)</span>
|
||||
<span class="lineNum"> 72 </span><span class="lineCov"> 26841 : void rnd_name(char* file)</span>
|
||||
<span class="lineNum"> 73 </span> : {
|
||||
<span class="lineNum"> 74 </span><span class="lineCov"> 26829 : int l = 1 + rnd(20);</span>
|
||||
<span class="lineNum"> 74 </span><span class="lineCov"> 26841 : int l = 1 + rnd(20);</span>
|
||||
<span class="lineNum"> 75 </span> :
|
||||
<span class="lineNum"> 76 </span><span class="lineCov"> 335309 : while (l) {</span>
|
||||
<span class="lineNum"> 77 </span><span class="lineCov"> 281651 : *file++ = CHARSET[rnd(CHARSET_LEN)];</span>
|
||||
<span class="lineNum"> 78 </span><span class="lineCov"> 281651 : --l;</span>
|
||||
<span class="lineNum"> 76 </span><span class="lineCov"> 335354 : while (l) {</span>
|
||||
<span class="lineNum"> 77 </span><span class="lineCov"> 281672 : *file++ = CHARSET[rnd(CHARSET_LEN)];</span>
|
||||
<span class="lineNum"> 78 </span><span class="lineCov"> 281672 : --l;</span>
|
||||
<span class="lineNum"> 79 </span> : }
|
||||
<span class="lineNum"> 80 </span><span class="lineCov"> 26829 : *file = 0;</span>
|
||||
<span class="lineNum"> 81 </span><span class="lineCov"> 26829 : }</span>
|
||||
<span class="lineNum"> 80 </span><span class="lineCov"> 26841 : *file = 0;</span>
|
||||
<span class="lineNum"> 81 </span><span class="lineCov"> 26841 : }</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"> 146650 : int file_cmp(const void* a, const void* b)</span>
|
||||
<span class="lineNum"> 86 </span><span class="lineCov"> 146556 : int file_cmp(const void* a, const void* b)</span>
|
||||
<span class="lineNum"> 87 </span> : {
|
||||
<span class="lineNum"> 88 </span><span class="lineCov"> 146650 : return strcmp(a, b);</span>
|
||||
<span class="lineNum"> 88 </span><span class="lineCov"> 146556 : 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"> 920 : void cmd_generate_symlink(const char* path, const char* linkto)</span>
|
||||
<span class="lineNum"> 200 </span><span class="lineCov"> 932 : 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"> 920 : if (remove(path) != 0) {</span>
|
||||
<span class="lineNum"> 204 </span><span class="lineCov"> 899 : if (errno != ENOENT) {</span>
|
||||
<span class="lineNum"> 203 </span><span class="lineCov"> 932 : if (remove(path) != 0) {</span>
|
||||
<span class="lineNum"> 204 </span><span class="lineCov"> 911 : 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"> 920 : if (symlink(linkto, path) != 0) {</span>
|
||||
<span class="lineNum"> 212 </span><span class="lineCov"> 932 : 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"> 920 : }</span>
|
||||
<span class="lineNum"> 218 </span><span class="lineCov"> 932 : }</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"> 6236 : void cmd_write(const char* path, int size)</span>
|
||||
<span class="lineNum"> 291 </span><span class="lineCov"> 6226 : 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"> 6236 : if (lstat(path, &st) != 0) {</span>
|
||||
<span class="lineNum"> 295 </span><span class="lineCov"> 6226 : 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"> 6236 : if (S_ISREG(st.st_mode)) {</span>
|
||||
<span class="lineNum"> 302 </span><span class="lineCov"> 6226 : 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"> 6209 : if (size > st.st_size)</span>
|
||||
<span class="lineNum"> 309 </span><span class="lineCov"> 695 : size = st.st_size;</span>
|
||||
<span class="lineNum"> 308 </span><span class="lineCov"> 6199 : if (size > st.st_size)</span>
|
||||
<span class="lineNum"> 309 </span><span class="lineCov"> 687 : 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"> 6209 : if (size < st.st_size)</span>
|
||||
<span class="lineNum"> 313 </span><span class="lineCov"> 5512 : off = rnd(st.st_size - size);</span>
|
||||
<span class="lineNum"> 312 </span><span class="lineCov"> 6199 : if (size < st.st_size)</span>
|
||||
<span class="lineNum"> 313 </span><span class="lineCov"> 5511 : off = rnd(st.st_size - size);</span>
|
||||
<span class="lineNum"> 314 </span> : else
|
||||
<span class="lineNum"> 315 </span><span class="lineCov"> 697 : off = 0;</span>
|
||||
<span class="lineNum"> 315 </span><span class="lineCov"> 688 : off = 0;</span>
|
||||
<span class="lineNum"> 316 </span> :
|
||||
<span class="lineNum"> 317 </span><span class="lineCov"> 6209 : data = malloc(size);</span>
|
||||
<span class="lineNum"> 317 </span><span class="lineCov"> 6199 : data = malloc(size);</span>
|
||||
<span class="lineNum"> 318 </span> :
|
||||
<span class="lineNum"> 319 </span><span class="lineCov"> 6209 : rndnz_range(data, size);</span>
|
||||
<span class="lineNum"> 319 </span><span class="lineCov"> 6199 : rndnz_range(data, size);</span>
|
||||
<span class="lineNum"> 320 </span> :
|
||||
<span class="lineNum"> 321 </span><span class="lineCov"> 6209 : f = open(path, O_WRONLY | O_BINARY | O_NOFOLLOW);</span>
|
||||
<span class="lineNum"> 322 </span><span class="lineCov"> 6209 : if (f < 0) {</span>
|
||||
<span class="lineNum"> 321 </span><span class="lineCov"> 6199 : f = open(path, O_WRONLY | O_BINARY | O_NOFOLLOW);</span>
|
||||
<span class="lineNum"> 322 </span><span class="lineCov"> 6199 : 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"> 6209 : if (lseek(f, off, SEEK_SET) != off) {</span>
|
||||
<span class="lineNum"> 329 </span><span class="lineCov"> 6199 : 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"> 6209 : if (write(f, data, size) != size) {</span>
|
||||
<span class="lineNum"> 336 </span><span class="lineCov"> 6199 : 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"> 6209 : if (close(f) != 0) {</span>
|
||||
<span class="lineNum"> 343 </span><span class="lineCov"> 6199 : 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"> 6209 : free(data);</span>
|
||||
<span class="lineNum"> 350 </span><span class="lineCov"> 6199 : free(data);</span>
|
||||
<span class="lineNum"> 351 </span> : }
|
||||
<span class="lineNum"> 352 </span><span class="lineCov"> 6236 : }</span>
|
||||
<span class="lineNum"> 352 </span><span class="lineCov"> 6226 : }</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"> 3238 : void cmd_append(const char* path, int size)</span>
|
||||
<span class="lineNum"> 459 </span><span class="lineCov"> 3224 : 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"> 3238 : if (lstat(path, &st) != 0) {</span>
|
||||
<span class="lineNum"> 463 </span><span class="lineCov"> 3224 : 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"> 3238 : if (S_ISREG(st.st_mode)) {</span>
|
||||
<span class="lineNum"> 470 </span><span class="lineCov"> 3224 : 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"> 3238 : data = malloc(size);</span>
|
||||
<span class="lineNum"> 474 </span><span class="lineCov"> 3224 : data = malloc(size);</span>
|
||||
<span class="lineNum"> 475 </span> :
|
||||
<span class="lineNum"> 476 </span><span class="lineCov"> 3238 : rndnz_range(data, size);</span>
|
||||
<span class="lineNum"> 476 </span><span class="lineCov"> 3224 : rndnz_range(data, size);</span>
|
||||
<span class="lineNum"> 477 </span> :
|
||||
<span class="lineNum"> 478 </span><span class="lineCov"> 3238 : f = open(path, O_WRONLY | O_APPEND | O_BINARY | O_NOFOLLOW);</span>
|
||||
<span class="lineNum"> 479 </span><span class="lineCov"> 3238 : if (f < 0) {</span>
|
||||
<span class="lineNum"> 478 </span><span class="lineCov"> 3224 : f = open(path, O_WRONLY | O_APPEND | O_BINARY | O_NOFOLLOW);</span>
|
||||
<span class="lineNum"> 479 </span><span class="lineCov"> 3224 : 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"> 3238 : if (write(f, data, size) != size) {</span>
|
||||
<span class="lineNum"> 486 </span><span class="lineCov"> 3224 : 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"> 3238 : if (close(f) != 0) {</span>
|
||||
<span class="lineNum"> 493 </span><span class="lineCov"> 3224 : 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"> 3238 : free(data);</span>
|
||||
<span class="lineNum"> 500 </span><span class="lineCov"> 3224 : free(data);</span>
|
||||
<span class="lineNum"> 501 </span> : }
|
||||
<span class="lineNum"> 502 </span><span class="lineCov"> 3238 : }</span>
|
||||
<span class="lineNum"> 502 </span><span class="lineCov"> 3224 : }</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"> 3191 : void cmd_truncate(const char* path, int size)</span>
|
||||
<span class="lineNum"> 510 </span><span class="lineCov"> 3082 : 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"> 3191 : if (lstat(path, &st) != 0) {</span>
|
||||
<span class="lineNum"> 514 </span><span class="lineCov"> 3082 : 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"> 3191 : if (S_ISREG(st.st_mode)) {</span>
|
||||
<span class="lineNum"> 521 </span><span class="lineCov"> 3082 : 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"> 3191 : if (st.st_size == 0) {</span>
|
||||
<span class="lineNum"> 527 </span><span class="lineCov"> 4 : size = 0;</span>
|
||||
<span class="lineNum"> 526 </span><span class="lineCov"> 3082 : if (st.st_size == 0) {</span>
|
||||
<span class="lineNum"> 527 </span><span class="lineCov"> 7 : 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"> 3187 : if (size >= st.st_size)</span>
|
||||
<span class="lineNum"> 531 </span><span class="lineCov"> 163 : size = st.st_size - 1;</span>
|
||||
<span class="lineNum"> 530 </span><span class="lineCov"> 3075 : if (size >= st.st_size)</span>
|
||||
<span class="lineNum"> 531 </span><span class="lineCov"> 185 : size = st.st_size - 1;</span>
|
||||
<span class="lineNum"> 532 </span> : }
|
||||
<span class="lineNum"> 533 </span> :
|
||||
<span class="lineNum"> 534 </span><span class="lineCov"> 3191 : off = st.st_size - size;</span>
|
||||
<span class="lineNum"> 534 </span><span class="lineCov"> 3082 : off = st.st_size - size;</span>
|
||||
<span class="lineNum"> 535 </span> :
|
||||
<span class="lineNum"> 536 </span><span class="lineCov"> 3191 : f = open(path, O_WRONLY | O_BINARY | O_NOFOLLOW);</span>
|
||||
<span class="lineNum"> 537 </span><span class="lineCov"> 3191 : if (f < 0) {</span>
|
||||
<span class="lineNum"> 536 </span><span class="lineCov"> 3082 : f = open(path, O_WRONLY | O_BINARY | O_NOFOLLOW);</span>
|
||||
<span class="lineNum"> 537 </span><span class="lineCov"> 3082 : 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"> 3191 : if (ftruncate(f, off) != 0) {</span>
|
||||
<span class="lineNum"> 544 </span><span class="lineCov"> 3082 : 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"> 3191 : if (close(f) != 0) {</span>
|
||||
<span class="lineNum"> 551 </span><span class="lineCov"> 3082 : 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"> 3191 : }</span>
|
||||
<span class="lineNum"> 558 </span><span class="lineCov"> 3082 : }</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"> 3088 : void cmd_delete(const char* path)</span>
|
||||
<span class="lineNum"> 564 </span><span class="lineCov"> 3222 : void cmd_delete(const char* path)</span>
|
||||
<span class="lineNum"> 565 </span> : {
|
||||
<span class="lineNum"> 566 </span><span class="lineCov"> 3088 : if (remove(path) != 0) {</span>
|
||||
<span class="lineNum"> 566 </span><span class="lineCov"> 3222 : 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"> 3088 : }</span>
|
||||
<span class="lineNum"> 572 </span><span class="lineCov"> 3222 : }</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"> 13158 : return;</span>
|
||||
<span class="lineNum"> 583 </span><span class="lineCov"> 13157 : return;</span>
|
||||
<span class="lineNum"> 584 </span> :
|
||||
<span class="lineNum"> 585 </span><span class="lineCov"> 13098 : if (lstat(path, &st) != 0) {</span>
|
||||
<span class="lineNum"> 585 </span><span class="lineCov"> 13099 : 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"> 13098 : if (S_ISLNK(st.st_mode)) {</span>
|
||||
<span class="lineNum"> 592 </span><span class="lineCov"> 13099 : if (S_ISLNK(st.st_mode)) {</span>
|
||||
<span class="lineNum"> 593 </span> : /* symlink */
|
||||
<span class="lineNum"> 594 </span><span class="lineCov"> 394 : if (rnd(2) == 0) {</span>
|
||||
<span class="lineNum"> 595 </span> : /* delete */
|
||||
<span class="lineNum"> 596 </span><span class="lineCov"> 207 : if (remove(path) != 0) {</span>
|
||||
<span class="lineNum"> 596 </span><span class="lineCov"> 195 : 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"> 187 : if (remove(path) != 0) {</span>
|
||||
<span class="lineNum"> 606 </span><span class="lineCov"> 199 : 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"> 187 : rnd_name(linkto);</span>
|
||||
<span class="lineNum"> 613 </span><span class="lineCov"> 199 : rnd_name(linkto);</span>
|
||||
<span class="lineNum"> 614 </span> :
|
||||
<span class="lineNum"> 615 </span><span class="lineCov"> 187 : cmd_generate_symlink(path, linkto);</span>
|
||||
<span class="lineNum"> 615 </span><span class="lineCov"> 199 : cmd_generate_symlink(path, linkto);</span>
|
||||
<span class="lineNum"> 616 </span> : }
|
||||
<span class="lineNum"> 617 </span><span class="lineCov"> 12704 : } else if (S_ISREG(st.st_mode)) {</span>
|
||||
<span class="lineNum"> 617 </span><span class="lineCov"> 12705 : } 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"> 12704 : r = rnd(4);</span>
|
||||
<span class="lineNum"> 620 </span><span class="lineCov"> 12705 : r = rnd(4);</span>
|
||||
<span class="lineNum"> 621 </span> :
|
||||
<span class="lineNum"> 622 </span><span class="lineCov"> 12704 : if (r == 0) {</span>
|
||||
<span class="lineNum"> 623 </span><span class="lineCov"> 3187 : cmd_write(path, size);</span>
|
||||
<span class="lineNum"> 624 </span><span class="lineCov"> 9517 : } else if (r == 1) {</span>
|
||||
<span class="lineNum"> 625 </span><span class="lineCov"> 3238 : cmd_append(path, size);</span>
|
||||
<span class="lineNum"> 626 </span><span class="lineCov"> 6279 : } else if (r == 2) {</span>
|
||||
<span class="lineNum"> 627 </span><span class="lineCov"> 3191 : cmd_truncate(path, size);</span>
|
||||
<span class="lineNum"> 622 </span><span class="lineCov"> 12705 : if (r == 0) {</span>
|
||||
<span class="lineNum"> 623 </span><span class="lineCov"> 3177 : cmd_write(path, size);</span>
|
||||
<span class="lineNum"> 624 </span><span class="lineCov"> 9528 : } else if (r == 1) {</span>
|
||||
<span class="lineNum"> 625 </span><span class="lineCov"> 3224 : cmd_append(path, size);</span>
|
||||
<span class="lineNum"> 626 </span><span class="lineCov"> 6304 : } else if (r == 2) {</span>
|
||||
<span class="lineNum"> 627 </span><span class="lineCov"> 3082 : cmd_truncate(path, size);</span>
|
||||
<span class="lineNum"> 628 </span> : } else {
|
||||
<span class="lineNum"> 629 </span><span class="lineCov"> 3088 : cmd_delete(path);</span>
|
||||
<span class="lineNum"> 629 </span><span class="lineCov"> 3222 : cmd_delete(path);</span>
|
||||
<span class="lineNum"> 630 </span> : }
|
||||
<span class="lineNum"> 631 </span> : }
|
||||
<a name="632"><span class="lineNum"> 632 </span> : }</a>
|
||||
|
|
|
|||
|
|
@ -61,11 +61,11 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="murmur3.c.gcov.html#30">fmix32</a></td>
|
||||
<td class="coverFnHi">8307132</td>
|
||||
<td class="coverFnHi">8307308</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="murmur3.c.gcov.html#76">MurmurHash3_x86_128</a></td>
|
||||
<td class="coverFnHi">2076783</td>
|
||||
<td class="coverFnHi">2076827</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
|
|
|
|||
|
|
@ -61,11 +61,11 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="murmur3.c.gcov.html#76">MurmurHash3_x86_128</a></td>
|
||||
<td class="coverFnHi">2076783</td>
|
||||
<td class="coverFnHi">2076827</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="murmur3.c.gcov.html#30">fmix32</a></td>
|
||||
<td class="coverFnHi">8307132</td>
|
||||
<td class="coverFnHi">8307308</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
|
|
|
|||
|
|
@ -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"> 8307132 : static inline uint32_t fmix32(uint32_t h)</span>
|
||||
<span class="lineNum"> 32 </span><span class="lineCov"> 8307308 : static inline uint32_t fmix32(uint32_t h)</span>
|
||||
<span class="lineNum"> 33 </span> : {
|
||||
<span class="lineNum"> 34 </span><span class="lineCov"> 8307132 : h ^= h >> 16;</span>
|
||||
<span class="lineNum"> 35 </span><span class="lineCov"> 8307132 : h *= 0x85ebca6b;</span>
|
||||
<span class="lineNum"> 36 </span><span class="lineCov"> 8307132 : h ^= h >> 13;</span>
|
||||
<span class="lineNum"> 37 </span><span class="lineCov"> 8307132 : h *= 0xc2b2ae35;</span>
|
||||
<span class="lineNum"> 38 </span><span class="lineCov"> 8307132 : h ^= h >> 16;</span>
|
||||
<span class="lineNum"> 39 </span><span class="lineCov"> 8307132 : return h;</span>
|
||||
<span class="lineNum"> 34 </span><span class="lineCov"> 8307308 : h ^= h >> 16;</span>
|
||||
<span class="lineNum"> 35 </span><span class="lineCov"> 8307308 : h *= 0x85ebca6b;</span>
|
||||
<span class="lineNum"> 36 </span><span class="lineCov"> 8307308 : h ^= h >> 13;</span>
|
||||
<span class="lineNum"> 37 </span><span class="lineCov"> 8307308 : h *= 0xc2b2ae35;</span>
|
||||
<span class="lineNum"> 38 </span><span class="lineCov"> 8307308 : h ^= h >> 16;</span>
|
||||
<span class="lineNum"> 39 </span><span class="lineCov"> 8307308 : 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"> 2076783 : 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"> 2076827 : 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"> 2076783 : uint32_t h1 = ((const uint32_t*)seed)[0];</span>
|
||||
<span class="lineNum"> 86 </span><span class="lineCov"> 2076783 : uint32_t h2 = ((const uint32_t*)seed)[1];</span>
|
||||
<span class="lineNum"> 87 </span><span class="lineCov"> 2076783 : uint32_t h3 = ((const uint32_t*)seed)[2];</span>
|
||||
<span class="lineNum"> 88 </span><span class="lineCov"> 2076783 : uint32_t h4 = ((const uint32_t*)seed)[3];</span>
|
||||
<span class="lineNum"> 85 </span><span class="lineCov"> 2076827 : uint32_t h1 = ((const uint32_t*)seed)[0];</span>
|
||||
<span class="lineNum"> 86 </span><span class="lineCov"> 2076827 : uint32_t h2 = ((const uint32_t*)seed)[1];</span>
|
||||
<span class="lineNum"> 87 </span><span class="lineCov"> 2076827 : uint32_t h3 = ((const uint32_t*)seed)[2];</span>
|
||||
<span class="lineNum"> 88 </span><span class="lineCov"> 2076827 : 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"> 2076783 : nblocks = size / 16;</span>
|
||||
<span class="lineNum"> 98 </span><span class="lineCov"> 2076783 : blocks = data;</span>
|
||||
<span class="lineNum"> 99 </span><span class="lineCov"> 2076783 : end = blocks + nblocks * 4;</span>
|
||||
<span class="lineNum"> 97 </span><span class="lineCov"> 2076827 : nblocks = size / 16;</span>
|
||||
<span class="lineNum"> 98 </span><span class="lineCov"> 2076827 : blocks = data;</span>
|
||||
<span class="lineNum"> 99 </span><span class="lineCov"> 2076827 : end = blocks + nblocks * 4;</span>
|
||||
<span class="lineNum"> 100 </span> :
|
||||
<span class="lineNum"> 101 </span> : /* body */
|
||||
<span class="lineNum"> 102 </span><span class="lineCov"> 109635270 : while (blocks < end) {</span>
|
||||
<span class="lineNum"> 103 </span><span class="lineCov"> 105481704 : uint32_t k1 = blocks[0];</span>
|
||||
<span class="lineNum"> 104 </span><span class="lineCov"> 105481704 : uint32_t k2 = blocks[1];</span>
|
||||
<span class="lineNum"> 105 </span><span class="lineCov"> 105481704 : uint32_t k3 = blocks[2];</span>
|
||||
<span class="lineNum"> 106 </span><span class="lineCov"> 105481704 : uint32_t k4 = blocks[3];</span>
|
||||
<span class="lineNum"> 102 </span><span class="lineCov"> 110683413 : while (blocks < end) {</span>
|
||||
<span class="lineNum"> 103 </span><span class="lineCov"> 106529759 : uint32_t k1 = blocks[0];</span>
|
||||
<span class="lineNum"> 104 </span><span class="lineCov"> 106529759 : uint32_t k2 = blocks[1];</span>
|
||||
<span class="lineNum"> 105 </span><span class="lineCov"> 106529759 : uint32_t k3 = blocks[2];</span>
|
||||
<span class="lineNum"> 106 </span><span class="lineCov"> 106529759 : 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"> 105481704 : k1 *= c1; k1 = util_rotl32(k1, 15); k1 *= c2; h1 ^= k1;</span>
|
||||
<span class="lineNum"> 115 </span><span class="lineCov"> 106529759 : 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"> 105481704 : h1 = util_rotl32(h1, 19); h1 += h2; h1 = h1 * 5 + 0x561ccd1b;</span>
|
||||
<span class="lineNum"> 117 </span><span class="lineCov"> 106529759 : 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"> 105481704 : k2 *= c2; k2 = util_rotl32(k2, 16); k2 *= c3; h2 ^= k2;</span>
|
||||
<span class="lineNum"> 119 </span><span class="lineCov"> 106529759 : 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"> 105481704 : h2 = util_rotl32(h2, 17); h2 += h3; h2 = h2 * 5 + 0x0bcaa747;</span>
|
||||
<span class="lineNum"> 121 </span><span class="lineCov"> 106529759 : 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"> 105481704 : k3 *= c3; k3 = util_rotl32(k3, 17); k3 *= c4; h3 ^= k3;</span>
|
||||
<span class="lineNum"> 123 </span><span class="lineCov"> 106529759 : 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"> 105481704 : h3 = util_rotl32(h3, 15); h3 += h4; h3 = h3 * 5 + 0x96cd1c35;</span>
|
||||
<span class="lineNum"> 125 </span><span class="lineCov"> 106529759 : 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"> 105481704 : k4 *= c4; k4 = util_rotl32(k4, 18); k4 *= c1; h4 ^= k4;</span>
|
||||
<span class="lineNum"> 127 </span><span class="lineCov"> 106529759 : 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"> 105481704 : h4 = util_rotl32(h4, 13); h4 += h1; h4 = h4 * 5 + 0x32ac3b17;</span>
|
||||
<span class="lineNum"> 129 </span><span class="lineCov"> 106529759 : 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"> 105481704 : blocks += 4;</span>
|
||||
<span class="lineNum"> 131 </span><span class="lineCov"> 106529759 : 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"> 2076783 : size_remainder = size & 15;</span>
|
||||
<span class="lineNum"> 136 </span><span class="lineCov"> 2076783 : if (size_remainder != 0) {</span>
|
||||
<span class="lineNum"> 137 </span><span class="lineCov"> 779191 : const uint8_t* tail = (const uint8_t*)blocks;</span>
|
||||
<span class="lineNum"> 135 </span><span class="lineCov"> 2076827 : size_remainder = size & 15;</span>
|
||||
<span class="lineNum"> 136 </span><span class="lineCov"> 2076827 : if (size_remainder != 0) {</span>
|
||||
<span class="lineNum"> 137 </span><span class="lineCov"> 779267 : const uint8_t* tail = (const uint8_t*)blocks;</span>
|
||||
<span class="lineNum"> 138 </span> :
|
||||
<span class="lineNum"> 139 </span><span class="lineCov"> 779191 : uint32_t k1 = 0;</span>
|
||||
<span class="lineNum"> 140 </span><span class="lineCov"> 779191 : uint32_t k2 = 0;</span>
|
||||
<span class="lineNum"> 141 </span><span class="lineCov"> 779191 : uint32_t k3 = 0;</span>
|
||||
<span class="lineNum"> 142 </span><span class="lineCov"> 779191 : uint32_t k4 = 0;</span>
|
||||
<span class="lineNum"> 139 </span><span class="lineCov"> 779267 : uint32_t k1 = 0;</span>
|
||||
<span class="lineNum"> 140 </span><span class="lineCov"> 779267 : uint32_t k2 = 0;</span>
|
||||
<span class="lineNum"> 141 </span><span class="lineCov"> 779267 : uint32_t k3 = 0;</span>
|
||||
<span class="lineNum"> 142 </span><span class="lineCov"> 779267 : uint32_t k4 = 0;</span>
|
||||
<span class="lineNum"> 143 </span> :
|
||||
<span class="lineNum"> 144 </span><span class="lineCov"> 779191 : switch (size_remainder) {</span>
|
||||
<span class="lineNum"> 145 </span><span class="lineCov"> 51264 : case 15 : k4 ^= (uint32_t)tail[14] << 16;</span>
|
||||
<span class="lineNum"> 146 </span><span class="lineCov"> 104016 : case 14 : k4 ^= (uint32_t)tail[13] << 8;</span>
|
||||
<span class="lineNum"> 147 </span><span class="lineCov"> 156196 : case 13 : k4 ^= (uint32_t)tail[12] << 0;</span>
|
||||
<span class="lineNum"> 148 </span><span class="lineCov"> 156196 : k4 *= c4; k4 = util_rotl32(k4, 18); k4 *= c1; h4 ^= k4;</span>
|
||||
<span class="lineNum"> 149 </span><span class="lineCov"> 208942 : case 12 : k3 ^= (uint32_t)tail[11] << 24;</span>
|
||||
<span class="lineNum"> 150 </span><span class="lineCov"> 261429 : case 11 : k3 ^= (uint32_t)tail[10] << 16;</span>
|
||||
<span class="lineNum"> 151 </span><span class="lineCov"> 313618 : case 10 : k3 ^= (uint32_t)tail[ 9] << 8;</span>
|
||||
<span class="lineNum"> 152 </span><span class="lineCov"> 366933 : case 9 : k3 ^= (uint32_t)tail[ 8] << 0;</span>
|
||||
<span class="lineNum"> 153 </span><span class="lineCov"> 366933 : k3 *= c3; k3 = util_rotl32(k3, 17); k3 *= c4; h3 ^= k3;</span>
|
||||
<span class="lineNum"> 154 </span><span class="lineCov"> 420871 : case 8 : k2 ^= (uint32_t)tail[ 7] << 24;</span>
|
||||
<span class="lineNum"> 155 </span><span class="lineCov"> 470359 : case 7 : k2 ^= (uint32_t)tail[ 6] << 16;</span>
|
||||
<span class="lineNum"> 156 </span><span class="lineCov"> 523028 : case 6 : k2 ^= (uint32_t)tail[ 5] << 8;</span>
|
||||
<span class="lineNum"> 157 </span><span class="lineCov"> 573517 : case 5 : k2 ^= (uint32_t)tail[ 4] << 0;</span>
|
||||
<span class="lineNum"> 158 </span><span class="lineCov"> 573517 : k2 *= c2; k2 = util_rotl32(k2, 16); k2 *= c3; h2 ^= k2;</span>
|
||||
<span class="lineNum"> 159 </span><span class="lineCov"> 625497 : case 4 : k1 ^= (uint32_t)tail[ 3] << 24;</span>
|
||||
<span class="lineNum"> 160 </span><span class="lineCov"> 675829 : case 3 : k1 ^= (uint32_t)tail[ 2] << 16;</span>
|
||||
<span class="lineNum"> 161 </span><span class="lineCov"> 726893 : case 2 : k1 ^= (uint32_t)tail[ 1] << 8;</span>
|
||||
<span class="lineNum"> 162 </span><span class="lineCov"> 779191 : case 1 : k1 ^= (uint32_t)tail[ 0] << 0;</span>
|
||||
<span class="lineNum"> 163 </span><span class="lineCov"> 779191 : k1 *= c1; k1 = util_rotl32(k1, 15); k1 *= c2; h1 ^= k1;</span>
|
||||
<span class="lineNum"> 144 </span><span class="lineCov"> 779267 : switch (size_remainder) {</span>
|
||||
<span class="lineNum"> 145 </span><span class="lineCov"> 51305 : case 15 : k4 ^= (uint32_t)tail[14] << 16;</span>
|
||||
<span class="lineNum"> 146 </span><span class="lineCov"> 104040 : case 14 : k4 ^= (uint32_t)tail[13] << 8;</span>
|
||||
<span class="lineNum"> 147 </span><span class="lineCov"> 156243 : case 13 : k4 ^= (uint32_t)tail[12] << 0;</span>
|
||||
<span class="lineNum"> 148 </span><span class="lineCov"> 156243 : k4 *= c4; k4 = util_rotl32(k4, 18); k4 *= c1; h4 ^= k4;</span>
|
||||
<span class="lineNum"> 149 </span><span class="lineCov"> 209005 : case 12 : k3 ^= (uint32_t)tail[11] << 24;</span>
|
||||
<span class="lineNum"> 150 </span><span class="lineCov"> 261544 : case 11 : k3 ^= (uint32_t)tail[10] << 16;</span>
|
||||
<span class="lineNum"> 151 </span><span class="lineCov"> 313728 : case 10 : k3 ^= (uint32_t)tail[ 9] << 8;</span>
|
||||
<span class="lineNum"> 152 </span><span class="lineCov"> 367016 : case 9 : k3 ^= (uint32_t)tail[ 8] << 0;</span>
|
||||
<span class="lineNum"> 153 </span><span class="lineCov"> 367016 : k3 *= c3; k3 = util_rotl32(k3, 17); k3 *= c4; h3 ^= k3;</span>
|
||||
<span class="lineNum"> 154 </span><span class="lineCov"> 420940 : case 8 : k2 ^= (uint32_t)tail[ 7] << 24;</span>
|
||||
<span class="lineNum"> 155 </span><span class="lineCov"> 470460 : case 7 : k2 ^= (uint32_t)tail[ 6] << 16;</span>
|
||||
<span class="lineNum"> 156 </span><span class="lineCov"> 523118 : case 6 : k2 ^= (uint32_t)tail[ 5] << 8;</span>
|
||||
<span class="lineNum"> 157 </span><span class="lineCov"> 573626 : case 5 : k2 ^= (uint32_t)tail[ 4] << 0;</span>
|
||||
<span class="lineNum"> 158 </span><span class="lineCov"> 573626 : k2 *= c2; k2 = util_rotl32(k2, 16); k2 *= c3; h2 ^= k2;</span>
|
||||
<span class="lineNum"> 159 </span><span class="lineCov"> 625593 : case 4 : k1 ^= (uint32_t)tail[ 3] << 24;</span>
|
||||
<span class="lineNum"> 160 </span><span class="lineCov"> 675926 : case 3 : k1 ^= (uint32_t)tail[ 2] << 16;</span>
|
||||
<span class="lineNum"> 161 </span><span class="lineCov"> 726993 : case 2 : k1 ^= (uint32_t)tail[ 1] << 8;</span>
|
||||
<span class="lineNum"> 162 </span><span class="lineCov"> 779267 : case 1 : k1 ^= (uint32_t)tail[ 0] << 0;</span>
|
||||
<span class="lineNum"> 163 </span><span class="lineCov"> 779267 : 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"> 2076783 : h1 ^= size; h2 ^= size; h3 ^= size; h4 ^= size;</span>
|
||||
<span class="lineNum"> 168 </span><span class="lineCov"> 2076827 : h1 ^= size; h2 ^= size; h3 ^= size; h4 ^= size;</span>
|
||||
<span class="lineNum"> 169 </span> :
|
||||
<span class="lineNum"> 170 </span><span class="lineCov"> 2076783 : h1 += h2; h1 += h3; h1 += h4;</span>
|
||||
<span class="lineNum"> 171 </span><span class="lineCov"> 2076783 : h2 += h1; h3 += h1; h4 += h1;</span>
|
||||
<span class="lineNum"> 170 </span><span class="lineCov"> 2076827 : h1 += h2; h1 += h3; h1 += h4;</span>
|
||||
<span class="lineNum"> 171 </span><span class="lineCov"> 2076827 : h2 += h1; h3 += h1; h4 += h1;</span>
|
||||
<span class="lineNum"> 172 </span> :
|
||||
<span class="lineNum"> 173 </span><span class="lineCov"> 2076783 : h1 = fmix32(h1);</span>
|
||||
<span class="lineNum"> 174 </span><span class="lineCov"> 2076783 : h2 = fmix32(h2);</span>
|
||||
<span class="lineNum"> 175 </span><span class="lineCov"> 2076783 : h3 = fmix32(h3);</span>
|
||||
<span class="lineNum"> 176 </span><span class="lineCov"> 2076783 : h4 = fmix32(h4);</span>
|
||||
<span class="lineNum"> 173 </span><span class="lineCov"> 2076827 : h1 = fmix32(h1);</span>
|
||||
<span class="lineNum"> 174 </span><span class="lineCov"> 2076827 : h2 = fmix32(h2);</span>
|
||||
<span class="lineNum"> 175 </span><span class="lineCov"> 2076827 : h3 = fmix32(h3);</span>
|
||||
<span class="lineNum"> 176 </span><span class="lineCov"> 2076827 : h4 = fmix32(h4);</span>
|
||||
<span class="lineNum"> 177 </span> :
|
||||
<span class="lineNum"> 178 </span><span class="lineCov"> 2076783 : h1 += h2; h1 += h3; h1 += h4;</span>
|
||||
<span class="lineNum"> 179 </span><span class="lineCov"> 2076783 : h2 += h1; h3 += h1; h4 += h1;</span>
|
||||
<span class="lineNum"> 178 </span><span class="lineCov"> 2076827 : h1 += h2; h1 += h3; h1 += h4;</span>
|
||||
<span class="lineNum"> 179 </span><span class="lineCov"> 2076827 : 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"> 2076783 : ((uint32_t*)digest)[0] = h1;</span>
|
||||
<span class="lineNum"> 189 </span><span class="lineCov"> 2076783 : ((uint32_t*)digest)[1] = h2;</span>
|
||||
<span class="lineNum"> 190 </span><span class="lineCov"> 2076783 : ((uint32_t*)digest)[2] = h3;</span>
|
||||
<span class="lineNum"> 191 </span><span class="lineCov"> 2076783 : ((uint32_t*)digest)[3] = h4;</span>
|
||||
<span class="lineNum"> 192 </span><span class="lineCov"> 2076783 : }</span>
|
||||
<span class="lineNum"> 188 </span><span class="lineCov"> 2076827 : ((uint32_t*)digest)[0] = h1;</span>
|
||||
<span class="lineNum"> 189 </span><span class="lineCov"> 2076827 : ((uint32_t*)digest)[1] = h2;</span>
|
||||
<span class="lineNum"> 190 </span><span class="lineCov"> 2076827 : ((uint32_t*)digest)[2] = h3;</span>
|
||||
<span class="lineNum"> 191 </span><span class="lineCov"> 2076827 : ((uint32_t*)digest)[3] = h4;</span>
|
||||
<span class="lineNum"> 192 </span><span class="lineCov"> 2076827 : }</span>
|
||||
<span class="lineNum"> 193 </span> :
|
||||
</pre>
|
||||
</td>
|
||||
|
|
|
|||
|
|
@ -61,15 +61,15 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="parity.c.gcov.html#757">parity_split_find</a></td>
|
||||
<td class="coverFnHi">4113970</td>
|
||||
<td class="coverFnHi">4113567</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="parity.c.gcov.html#816">parity_read</a></td>
|
||||
<td class="coverFnHi">3501576</td>
|
||||
<td class="coverFnHi">3501825</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="parity.c.gcov.html#776">parity_write</a></td>
|
||||
<td class="coverFnHi">612148</td>
|
||||
<td class="coverFnHi">611751</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="parity.c.gcov.html#457">parity_handle_chsize</a></td>
|
||||
|
|
|
|||
|
|
@ -109,7 +109,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="parity.c.gcov.html#816">parity_read</a></td>
|
||||
<td class="coverFnHi">3501576</td>
|
||||
<td class="coverFnHi">3501825</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="parity.c.gcov.html#158">parity_size</a></td>
|
||||
|
|
@ -117,7 +117,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="parity.c.gcov.html#757">parity_split_find</a></td>
|
||||
<td class="coverFnHi">4113970</td>
|
||||
<td class="coverFnHi">4113567</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="parity.c.gcov.html#506">parity_split_is_fixed</a></td>
|
||||
|
|
@ -133,7 +133,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="parity.c.gcov.html#776">parity_write</a></td>
|
||||
<td class="coverFnHi">612148</td>
|
||||
<td class="coverFnHi">611751</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
|
|
|
|||
|
|
@ -818,44 +818,44 @@
|
|||
<span class="lineNum"> 756 </span><span class="lineCov"> 1022 : return f_ret;</span>
|
||||
<a name="757"><span class="lineNum"> 757 </span> : }</a>
|
||||
<span class="lineNum"> 758 </span> :
|
||||
<span class="lineNum"> 759 </span><span class="lineCov"> 4113970 : struct snapraid_split_handle* parity_split_find(struct snapraid_parity_handle* handle, data_off_t* offset)</span>
|
||||
<span class="lineNum"> 759 </span><span class="lineCov"> 4113567 : struct snapraid_split_handle* parity_split_find(struct snapraid_parity_handle* handle, data_off_t* offset)</span>
|
||||
<span class="lineNum"> 760 </span> : {
|
||||
<span class="lineNum"> 761 </span> : unsigned s;
|
||||
<span class="lineNum"> 762 </span> :
|
||||
<span class="lineNum"> 763 </span><span class="lineCov"> 4113970 : if (*offset < 0)</span>
|
||||
<span class="lineNum"> 763 </span><span class="lineCov"> 4113567 : if (*offset < 0)</span>
|
||||
<span class="lineNum"> 764 </span><span class="lineNoCov"> 0 : return 0;</span>
|
||||
<span class="lineNum"> 765 </span> :
|
||||
<span class="lineNum"> 766 </span><span class="lineCov"> 6502554 : for (s = 0;s < handle->split_mac;++s) {</span>
|
||||
<span class="lineNum"> 767 </span><span class="lineCov"> 6491194 : struct snapraid_split_handle* split = &handle->split_map[s];</span>
|
||||
<span class="lineNum"> 766 </span><span class="lineCov"> 6501737 : for (s = 0;s < handle->split_mac;++s) {</span>
|
||||
<span class="lineNum"> 767 </span><span class="lineCov"> 6490377 : struct snapraid_split_handle* split = &handle->split_map[s];</span>
|
||||
<span class="lineNum"> 768 </span> :
|
||||
<span class="lineNum"> 769 </span><span class="lineCov"> 6491194 : if (*offset < split->size)</span>
|
||||
<span class="lineNum"> 770 </span><span class="lineCov"> 4102610 : return split;</span>
|
||||
<span class="lineNum"> 769 </span><span class="lineCov"> 6490377 : if (*offset < split->size)</span>
|
||||
<span class="lineNum"> 770 </span><span class="lineCov"> 4102207 : return split;</span>
|
||||
<span class="lineNum"> 771 </span> :
|
||||
<span class="lineNum"> 772 </span><span class="lineCov"> 2388584 : *offset -= split->size;</span>
|
||||
<span class="lineNum"> 772 </span><span class="lineCov"> 2388170 : *offset -= split->size;</span>
|
||||
<span class="lineNum"> 773 </span> : }
|
||||
<span class="lineNum"> 774 </span> :
|
||||
<span class="lineNum"> 775 </span><span class="lineCov"> 11360 : return 0;</span>
|
||||
<a name="776"><span class="lineNum"> 776 </span> : }</a>
|
||||
<span class="lineNum"> 777 </span> :
|
||||
<span class="lineNum"> 778 </span><span class="lineCov"> 612148 : int parity_write(struct snapraid_parity_handle* handle, block_off_t pos, unsigned char* block_buffer, unsigned block_size)</span>
|
||||
<span class="lineNum"> 778 </span><span class="lineCov"> 611751 : int parity_write(struct snapraid_parity_handle* handle, block_off_t pos, unsigned char* block_buffer, unsigned block_size)</span>
|
||||
<span class="lineNum"> 779 </span> : {
|
||||
<span class="lineNum"> 780 </span> : ssize_t write_ret;
|
||||
<span class="lineNum"> 781 </span> : data_off_t offset;
|
||||
<span class="lineNum"> 782 </span> : struct snapraid_split_handle* split;
|
||||
<span class="lineNum"> 783 </span> : int ret;
|
||||
<span class="lineNum"> 784 </span> :
|
||||
<span class="lineNum"> 785 </span><span class="lineCov"> 612148 : offset = pos * (data_off_t)block_size;</span>
|
||||
<span class="lineNum"> 785 </span><span class="lineCov"> 611751 : offset = pos * (data_off_t)block_size;</span>
|
||||
<span class="lineNum"> 786 </span> :
|
||||
<span class="lineNum"> 787 </span><span class="lineCov"> 612148 : split = parity_split_find(handle, &offset);</span>
|
||||
<span class="lineNum"> 788 </span><span class="lineCov"> 612147 : if (!split) {</span>
|
||||
<span class="lineNum"> 787 </span><span class="lineCov"> 611751 : split = parity_split_find(handle, &offset);</span>
|
||||
<span class="lineNum"> 788 </span><span class="lineCov"> 611746 : if (!split) {</span>
|
||||
<span class="lineNum"> 789 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 790 </span> : log_fatal("Writing parity data outside range at extra offset %" PRIu64 ".\n", offset);
|
||||
<span class="lineNum"> 791 </span> : return -1;
|
||||
<span class="lineNum"> 792 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 793 </span> : }
|
||||
<span class="lineNum"> 794 </span> :
|
||||
<span class="lineNum"> 795 </span><span class="lineCov"> 612147 : write_ret = pwrite(split->f, block_buffer, block_size, offset);</span>
|
||||
<span class="lineNum"> 796 </span><span class="lineCov"> 612149 : if (write_ret != (ssize_t)block_size) { /* conversion is safe because block_size is always small */</span>
|
||||
<span class="lineNum"> 795 </span><span class="lineCov"> 611746 : write_ret = pwrite(split->f, block_buffer, block_size, offset);</span>
|
||||
<span class="lineNum"> 796 </span><span class="lineCov"> 611756 : if (write_ret != (ssize_t)block_size) { /* conversion is safe because block_size is always small */</span>
|
||||
<span class="lineNum"> 797 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 798 </span> : if (errno == ENOSPC) {
|
||||
<span class="lineNum"> 799 </span> : log_fatal("Failed to grow parity file '%s' using write due lack of space.\n", split->path);
|
||||
|
|
@ -866,18 +866,18 @@
|
|||
<span class="lineNum"> 804 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 805 </span> : }
|
||||
<span class="lineNum"> 806 </span> :
|
||||
<span class="lineNum"> 807 </span><span class="lineCov"> 612149 : ret = advise_write(&split->advise, split->f, offset, block_size);</span>
|
||||
<span class="lineNum"> 808 </span><span class="lineCov"> 612145 : if (ret != 0) {</span>
|
||||
<span class="lineNum"> 807 </span><span class="lineCov"> 611756 : ret = advise_write(&split->advise, split->f, offset, block_size);</span>
|
||||
<span class="lineNum"> 808 </span><span class="lineCov"> 611756 : if (ret != 0) {</span>
|
||||
<span class="lineNum"> 809 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 810 </span> : log_fatal("Error advising parity file '%s'. %s.\n", split->path, strerror(errno));
|
||||
<span class="lineNum"> 811 </span> : return -1;
|
||||
<span class="lineNum"> 812 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 813 </span> : }
|
||||
<span class="lineNum"> 814 </span> :
|
||||
<span class="lineNum"> 815 </span><span class="lineCov"> 612145 : return 0;</span>
|
||||
<span class="lineNum"> 815 </span><span class="lineCov"> 611756 : return 0;</span>
|
||||
<a name="816"><span class="lineNum"> 816 </span> : }</a>
|
||||
<span class="lineNum"> 817 </span> :
|
||||
<span class="lineNum"> 818 </span><span class="lineCov"> 3501576 : int parity_read(struct snapraid_parity_handle* handle, block_off_t pos, unsigned char* block_buffer, unsigned block_size, fptr* out)</span>
|
||||
<span class="lineNum"> 818 </span><span class="lineCov"> 3501825 : int parity_read(struct snapraid_parity_handle* handle, block_off_t pos, unsigned char* block_buffer, unsigned block_size, fptr* out)</span>
|
||||
<span class="lineNum"> 819 </span> : {
|
||||
<span class="lineNum"> 820 </span> : ssize_t read_ret;
|
||||
<span class="lineNum"> 821 </span> : data_off_t offset;
|
||||
|
|
@ -885,44 +885,44 @@
|
|||
<span class="lineNum"> 823 </span> : struct snapraid_split_handle* split;
|
||||
<span class="lineNum"> 824 </span> : int ret;
|
||||
<span class="lineNum"> 825 </span> :
|
||||
<span class="lineNum"> 826 </span><span class="lineCov"> 3501576 : offset = pos * (data_off_t)block_size;</span>
|
||||
<span class="lineNum"> 826 </span><span class="lineCov"> 3501825 : offset = pos * (data_off_t)block_size;</span>
|
||||
<span class="lineNum"> 827 </span> :
|
||||
<span class="lineNum"> 828 </span><span class="lineCov"> 3501576 : split = parity_split_find(handle, &offset);</span>
|
||||
<span class="lineNum"> 829 </span><span class="lineCov"> 3501820 : if (!split) {</span>
|
||||
<span class="lineNum"> 828 </span><span class="lineCov"> 3501825 : split = parity_split_find(handle, &offset);</span>
|
||||
<span class="lineNum"> 829 </span><span class="lineCov"> 3501816 : if (!split) {</span>
|
||||
<span class="lineNum"> 830 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 831 </span> : out("Reading parity data outside range at extra offset %" PRIu64 ".\n", offset);
|
||||
<span class="lineNum"> 832 </span> : return -1;
|
||||
<span class="lineNum"> 833 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 834 </span> : }
|
||||
<span class="lineNum"> 835 </span> :
|
||||
<span class="lineNum"> 836 </span><span class="lineCov"> 3490460 : count = 0;</span>
|
||||
<span class="lineNum"> 836 </span><span class="lineCov"> 3490456 : count = 0;</span>
|
||||
<span class="lineNum"> 837 </span> : do {
|
||||
<span class="lineNum"> 838 </span><span class="lineCov"> 3490424 : read_ret = pread(split->f, block_buffer + count, block_size - count, offset + count);</span>
|
||||
<span class="lineNum"> 839 </span><span class="lineCov"> 3490383 : if (read_ret < 0) {</span>
|
||||
<span class="lineNum"> 838 </span><span class="lineCov"> 3490442 : read_ret = pread(split->f, block_buffer + count, block_size - count, offset + count);</span>
|
||||
<span class="lineNum"> 839 </span><span class="lineCov"> 3490403 : if (read_ret < 0) {</span>
|
||||
<span class="lineNum"> 840 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 841 </span> : out("Error reading file '%s' at offset %" PRIu64 " for size %u. %s.\n", split->path, offset + count, block_size - count, strerror(errno));
|
||||
<span class="lineNum"> 842 </span> : return -1;
|
||||
<span class="lineNum"> 843 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 844 </span> : }
|
||||
<span class="lineNum"> 845 </span><span class="lineCov"> 3490383 : if (read_ret == 0) {</span>
|
||||
<span class="lineNum"> 845 </span><span class="lineCov"> 3490403 : if (read_ret == 0) {</span>
|
||||
<span class="lineNum"> 846 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 847 </span> : out("Unexpected end of file '%s' at offset %" PRIu64 ". %s.\n", split->path, offset, strerror(errno));
|
||||
<span class="lineNum"> 848 </span> : return -1;
|
||||
<span class="lineNum"> 849 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 850 </span> : }
|
||||
<span class="lineNum"> 851 </span> :
|
||||
<span class="lineNum"> 852 </span><span class="lineCov"> 3490383 : count += read_ret;</span>
|
||||
<span class="lineNum"> 853 </span><span class="lineCov"> 3490383 : } while (count < block_size);</span>
|
||||
<span class="lineNum"> 852 </span><span class="lineCov"> 3490403 : count += read_ret;</span>
|
||||
<span class="lineNum"> 853 </span><span class="lineCov"> 3490403 : } while (count < block_size);</span>
|
||||
<span class="lineNum"> 854 </span> :
|
||||
<span class="lineNum"> 855 </span><span class="lineCov"> 3490419 : ret = advise_read(&split->advise, split->f, offset, block_size);</span>
|
||||
<span class="lineNum"> 856 </span><span class="lineCov"> 3490414 : if (ret != 0) {</span>
|
||||
<span class="lineNum"> 855 </span><span class="lineCov"> 3490417 : ret = advise_read(&split->advise, split->f, offset, block_size);</span>
|
||||
<span class="lineNum"> 856 </span><span class="lineCov"> 3490399 : if (ret != 0) {</span>
|
||||
<span class="lineNum"> 857 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 858 </span> : out("Error advising parity file '%s'. %s.\n", split->path, strerror(errno));
|
||||
<span class="lineNum"> 859 </span> : return -1;
|
||||
<span class="lineNum"> 860 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 861 </span> : }
|
||||
<span class="lineNum"> 862 </span> :
|
||||
<span class="lineNum"> 863 </span><span class="lineCov"> 3490414 : return block_size;</span>
|
||||
<span class="lineNum"> 863 </span><span class="lineCov"> 3490399 : return block_size;</span>
|
||||
<span class="lineNum"> 864 </span> : }
|
||||
<span class="lineNum"> 865 </span> :
|
||||
</pre>
|
||||
|
|
|
|||
|
|
@ -73,11 +73,11 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="scan.c.gcov.html#585">scan_file_keep</a></td>
|
||||
<td class="coverFnHi">1025531</td>
|
||||
<td class="coverFnHi">1025576</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="scan.c.gcov.html#361">file_is_full_invalid_parity_and_stable</a></td>
|
||||
<td class="coverFnHi">1025531</td>
|
||||
<td class="coverFnHi">1025576</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="scan.c.gcov.html#1082">dd_ino_compare</a></td>
|
||||
|
|
@ -85,27 +85,27 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="scan.c.gcov.html#332">scan_file_delayed_allocate</a></td>
|
||||
<td class="coverFnHi">101881</td>
|
||||
<td class="coverFnHi">101836</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="scan.c.gcov.html#541">scan_file_insert</a></td>
|
||||
<td class="coverFnHi">101881</td>
|
||||
<td class="coverFnHi">101836</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="scan.c.gcov.html#159">scan_file_allocate</a></td>
|
||||
<td class="coverFnHi">101881</td>
|
||||
<td class="coverFnHi">101836</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="scan.c.gcov.html#464">scan_file_refresh</a></td>
|
||||
<td class="coverFnHi">79201</td>
|
||||
<td class="coverFnHi">79156</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="scan.c.gcov.html#560">scan_file_remove</a></td>
|
||||
<td class="coverFnHi">57015</td>
|
||||
<td class="coverFnHi">56970</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="scan.c.gcov.html#258">scan_file_deallocate</a></td>
|
||||
<td class="coverFnHi">57015</td>
|
||||
<td class="coverFnHi">56970</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="scan.c.gcov.html#84">scan_link</a></td>
|
||||
|
|
|
|||
|
|
@ -77,7 +77,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="scan.c.gcov.html#361">file_is_full_invalid_parity_and_stable</a></td>
|
||||
<td class="coverFnHi">1025531</td>
|
||||
<td class="coverFnHi">1025576</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="scan.c.gcov.html#1131">scan_dir</a></td>
|
||||
|
|
@ -101,31 +101,31 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="scan.c.gcov.html#159">scan_file_allocate</a></td>
|
||||
<td class="coverFnHi">101881</td>
|
||||
<td class="coverFnHi">101836</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="scan.c.gcov.html#258">scan_file_deallocate</a></td>
|
||||
<td class="coverFnHi">57015</td>
|
||||
<td class="coverFnHi">56970</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="scan.c.gcov.html#332">scan_file_delayed_allocate</a></td>
|
||||
<td class="coverFnHi">101881</td>
|
||||
<td class="coverFnHi">101836</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="scan.c.gcov.html#541">scan_file_insert</a></td>
|
||||
<td class="coverFnHi">101881</td>
|
||||
<td class="coverFnHi">101836</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="scan.c.gcov.html#585">scan_file_keep</a></td>
|
||||
<td class="coverFnHi">1025531</td>
|
||||
<td class="coverFnHi">1025576</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="scan.c.gcov.html#464">scan_file_refresh</a></td>
|
||||
<td class="coverFnHi">79201</td>
|
||||
<td class="coverFnHi">79156</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="scan.c.gcov.html#560">scan_file_remove</a></td>
|
||||
<td class="coverFnHi">57015</td>
|
||||
<td class="coverFnHi">56970</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="scan.c.gcov.html#84">scan_link</a></td>
|
||||
|
|
|
|||
|
|
@ -220,42 +220,42 @@
|
|||
<span class="lineNum"> 158 </span> : /**
|
||||
<a name="159"><span class="lineNum"> 159 </span> : * Insert the specified file in the parity.</a>
|
||||
<span class="lineNum"> 160 </span> : */
|
||||
<span class="lineNum"> 161 </span><span class="lineCov"> 101881 : static void scan_file_allocate(struct snapraid_scan* scan, struct snapraid_file* file)</span>
|
||||
<span class="lineNum"> 161 </span><span class="lineCov"> 101836 : static void scan_file_allocate(struct snapraid_scan* scan, struct snapraid_file* file)</span>
|
||||
<span class="lineNum"> 162 </span> : {
|
||||
<span class="lineNum"> 163 </span><span class="lineCov"> 101881 : struct snapraid_state* state = scan->state;</span>
|
||||
<span class="lineNum"> 164 </span><span class="lineCov"> 101881 : struct snapraid_disk* disk = scan->disk;</span>
|
||||
<span class="lineNum"> 163 </span><span class="lineCov"> 101836 : struct snapraid_state* state = scan->state;</span>
|
||||
<span class="lineNum"> 164 </span><span class="lineCov"> 101836 : struct snapraid_disk* disk = scan->disk;</span>
|
||||
<span class="lineNum"> 165 </span> : block_off_t i;
|
||||
<span class="lineNum"> 166 </span> : block_off_t parity_pos;
|
||||
<span class="lineNum"> 167 </span> :
|
||||
<span class="lineNum"> 168 </span> : /* state changed */
|
||||
<span class="lineNum"> 169 </span><span class="lineCov"> 101881 : state->need_write = 1;</span>
|
||||
<span class="lineNum"> 169 </span><span class="lineCov"> 101836 : state->need_write = 1;</span>
|
||||
<span class="lineNum"> 170 </span> :
|
||||
<span class="lineNum"> 171 </span> : /* allocate the blocks of the file */
|
||||
<span class="lineNum"> 172 </span><span class="lineCov"> 101881 : parity_pos = disk->first_free_block;</span>
|
||||
<span class="lineNum"> 173 </span><span class="lineCov"> 353097 : for (i = 0; i < file->blockmax; ++i) {</span>
|
||||
<span class="lineNum"> 172 </span><span class="lineCov"> 101836 : parity_pos = disk->first_free_block;</span>
|
||||
<span class="lineNum"> 173 </span><span class="lineCov"> 352922 : for (i = 0; i < file->blockmax; ++i) {</span>
|
||||
<span class="lineNum"> 174 </span> : struct snapraid_block* block;
|
||||
<span class="lineNum"> 175 </span> : struct snapraid_block* over_block;
|
||||
<span class="lineNum"> 176 </span> : snapraid_info info;
|
||||
<span class="lineNum"> 177 </span> :
|
||||
<span class="lineNum"> 178 </span> : /* increment the position until the first really free block */
|
||||
<span class="lineNum"> 179 </span><span class="lineCov"> 1022665 : while (block_has_file(fs_par2block_find(disk, parity_pos)))</span>
|
||||
<span class="lineNum"> 180 </span><span class="lineCov"> 520233 : ++parity_pos;</span>
|
||||
<span class="lineNum"> 179 </span><span class="lineCov"> 1022464 : while (block_has_file(fs_par2block_find(disk, parity_pos)))</span>
|
||||
<span class="lineNum"> 180 </span><span class="lineCov"> 520292 : ++parity_pos;</span>
|
||||
<span class="lineNum"> 181 </span> :
|
||||
<span class="lineNum"> 182 </span> : /* get block we are going to overwrite, if any */
|
||||
<span class="lineNum"> 183 </span><span class="lineCov"> 251216 : over_block = fs_par2block_find(disk, parity_pos);</span>
|
||||
<span class="lineNum"> 183 </span><span class="lineCov"> 251086 : over_block = fs_par2block_find(disk, parity_pos);</span>
|
||||
<span class="lineNum"> 184 </span> :
|
||||
<span class="lineNum"> 185 </span> : /* deallocate it */
|
||||
<span class="lineNum"> 186 </span><span class="lineCov"> 251216 : if (over_block != BLOCK_NULL)</span>
|
||||
<span class="lineNum"> 187 </span><span class="lineCov"> 95303 : fs_deallocate(disk, parity_pos);</span>
|
||||
<span class="lineNum"> 186 </span><span class="lineCov"> 251086 : if (over_block != BLOCK_NULL)</span>
|
||||
<span class="lineNum"> 187 </span><span class="lineCov"> 95173 : fs_deallocate(disk, parity_pos);</span>
|
||||
<span class="lineNum"> 188 </span> :
|
||||
<span class="lineNum"> 189 </span> : /* get block specific info */
|
||||
<span class="lineNum"> 190 </span><span class="lineCov"> 251216 : info = info_get(&state->infoarr, parity_pos);</span>
|
||||
<span class="lineNum"> 190 </span><span class="lineCov"> 251086 : info = info_get(&state->infoarr, parity_pos);</span>
|
||||
<span class="lineNum"> 191 </span> :
|
||||
<span class="lineNum"> 192 </span> : /* get the new block we are going to write */
|
||||
<span class="lineNum"> 193 </span><span class="lineCov"> 251216 : block = fs_file2block_get(file, i);</span>
|
||||
<span class="lineNum"> 193 </span><span class="lineCov"> 251086 : block = fs_file2block_get(file, i);</span>
|
||||
<span class="lineNum"> 194 </span> :
|
||||
<span class="lineNum"> 195 </span> : /* if the file block already has an updated hash without rehash */
|
||||
<span class="lineNum"> 196 </span><span class="lineCov"> 251216 : if (block_has_updated_hash(block) && !info_get_rehash(info)) {</span>
|
||||
<span class="lineNum"> 196 </span><span class="lineCov"> 251086 : if (block_has_updated_hash(block) && !info_get_rehash(info)) {</span>
|
||||
<span class="lineNum"> 197 </span> : /* the only possible case is for REP blocks */
|
||||
<span class="lineNum"> 198 </span><span class="lineCov"> 86199 : assert(block_state_get(block) == BLOCK_STATE_REP);</span>
|
||||
<span class="lineNum"> 199 </span> :
|
||||
|
|
@ -267,25 +267,25 @@
|
|||
<span class="lineNum"> 205 </span> : unsigned over_state;
|
||||
<span class="lineNum"> 206 </span> :
|
||||
<span class="lineNum"> 207 </span> : /* convert to a CHG block */
|
||||
<span class="lineNum"> 208 </span><span class="lineCov"> 165017 : block_state_set(block, BLOCK_STATE_CHG);</span>
|
||||
<span class="lineNum"> 208 </span><span class="lineCov"> 164887 : block_state_set(block, BLOCK_STATE_CHG);</span>
|
||||
<span class="lineNum"> 209 </span> :
|
||||
<span class="lineNum"> 210 </span> : /* state of the block we are going to overwrite */
|
||||
<span class="lineNum"> 211 </span><span class="lineCov"> 165017 : over_state = block_state_get(over_block);</span>
|
||||
<span class="lineNum"> 211 </span><span class="lineCov"> 164887 : over_state = block_state_get(over_block);</span>
|
||||
<span class="lineNum"> 212 </span> :
|
||||
<span class="lineNum"> 213 </span> : /* if the block is an empty one */
|
||||
<span class="lineNum"> 214 </span><span class="lineCov"> 165017 : if (over_state == BLOCK_STATE_EMPTY) {</span>
|
||||
<span class="lineNum"> 214 </span><span class="lineCov"> 164887 : if (over_state == BLOCK_STATE_EMPTY) {</span>
|
||||
<span class="lineNum"> 215 </span> : /* the block was empty and filled with zeros */
|
||||
<span class="lineNum"> 216 </span> : /* set the hash to the special ZERO value */
|
||||
<span class="lineNum"> 217 </span><span class="lineCov"> 115543 : hash_zero_set(block->hash);</span>
|
||||
<span class="lineNum"> 218 </span> : } else {
|
||||
<span class="lineNum"> 219 </span> : /* otherwise it's a DELETED one */
|
||||
<span class="lineNum"> 220 </span><span class="lineCov"> 49474 : assert(over_state == BLOCK_STATE_DELETED);</span>
|
||||
<span class="lineNum"> 220 </span><span class="lineCov"> 49344 : assert(over_state == BLOCK_STATE_DELETED);</span>
|
||||
<span class="lineNum"> 221 </span> :
|
||||
<span class="lineNum"> 222 </span> : /* copy the past hash of the block */
|
||||
<span class="lineNum"> 223 </span><span class="lineCov"> 49474 : memcpy(block->hash, over_block->hash, BLOCK_HASH_SIZE);</span>
|
||||
<span class="lineNum"> 223 </span><span class="lineCov"> 49344 : memcpy(block->hash, over_block->hash, BLOCK_HASH_SIZE);</span>
|
||||
<span class="lineNum"> 224 </span> :
|
||||
<span class="lineNum"> 225 </span> : /* if we have not already cleared the past hash */
|
||||
<span class="lineNum"> 226 </span><span class="lineCov"> 49474 : if (!state->clear_past_hash) {</span>
|
||||
<span class="lineNum"> 226 </span><span class="lineCov"> 49344 : if (!state->clear_past_hash) {</span>
|
||||
<span class="lineNum"> 227 </span> : /* in this case we don't know if the old state is still the one */
|
||||
<span class="lineNum"> 228 </span> : /* stored inside the parity, because after an aborted sync, the parity */
|
||||
<span class="lineNum"> 229 </span> : /* may be or may be not have been updated with the new data */
|
||||
|
|
@ -302,15 +302,15 @@
|
|||
<span class="lineNum"> 240 </span> : }
|
||||
<span class="lineNum"> 241 </span> :
|
||||
<span class="lineNum"> 242 </span> : /* store in the disk map, after invalidating all the other blocks */
|
||||
<span class="lineNum"> 243 </span><span class="lineCov"> 251216 : fs_allocate(disk, parity_pos, file, i);</span>
|
||||
<span class="lineNum"> 243 </span><span class="lineCov"> 251086 : fs_allocate(disk, parity_pos, file, i);</span>
|
||||
<span class="lineNum"> 244 </span> :
|
||||
<span class="lineNum"> 245 </span> : /* set the new free position */
|
||||
<span class="lineNum"> 246 </span><span class="lineCov"> 251216 : disk->first_free_block = parity_pos + 1;</span>
|
||||
<span class="lineNum"> 246 </span><span class="lineCov"> 251086 : disk->first_free_block = parity_pos + 1;</span>
|
||||
<span class="lineNum"> 247 </span> : }
|
||||
<span class="lineNum"> 248 </span> :
|
||||
<span class="lineNum"> 249 </span> : /* insert in the list of contained files */
|
||||
<span class="lineNum"> 250 </span><span class="lineCov"> 101881 : tommy_list_insert_tail(&disk->filelist, &file->nodelist, file);</span>
|
||||
<span class="lineNum"> 251 </span><span class="lineCov"> 101881 : }</span>
|
||||
<span class="lineNum"> 250 </span><span class="lineCov"> 101836 : tommy_list_insert_tail(&disk->filelist, &file->nodelist, file);</span>
|
||||
<span class="lineNum"> 251 </span><span class="lineCov"> 101836 : }</span>
|
||||
<span class="lineNum"> 252 </span> :
|
||||
<span class="lineNum"> 253 </span> : /**
|
||||
<span class="lineNum"> 254 </span> : * Delete the specified file from the parity.
|
||||
|
|
@ -319,23 +319,23 @@
|
|||
<span class="lineNum"> 257 </span> : * The file is then inserted in the deleted set, and it should not be deallocated,
|
||||
<a name="258"><span class="lineNum"> 258 </span> : * as the parity still references it.</a>
|
||||
<span class="lineNum"> 259 </span> : */
|
||||
<span class="lineNum"> 260 </span><span class="lineCov"> 57015 : static void scan_file_deallocate(struct snapraid_scan* scan, struct snapraid_file* file)</span>
|
||||
<span class="lineNum"> 260 </span><span class="lineCov"> 56970 : static void scan_file_deallocate(struct snapraid_scan* scan, struct snapraid_file* file)</span>
|
||||
<span class="lineNum"> 261 </span> : {
|
||||
<span class="lineNum"> 262 </span><span class="lineCov"> 57015 : struct snapraid_state* state = scan->state;</span>
|
||||
<span class="lineNum"> 263 </span><span class="lineCov"> 57015 : struct snapraid_disk* disk = scan->disk;</span>
|
||||
<span class="lineNum"> 262 </span><span class="lineCov"> 56970 : struct snapraid_state* state = scan->state;</span>
|
||||
<span class="lineNum"> 263 </span><span class="lineCov"> 56970 : struct snapraid_disk* disk = scan->disk;</span>
|
||||
<span class="lineNum"> 264 </span> : block_off_t i;
|
||||
<span class="lineNum"> 265 </span> :
|
||||
<span class="lineNum"> 266 </span> : /* remove from the list of contained files */
|
||||
<span class="lineNum"> 267 </span><span class="lineCov"> 57015 : tommy_list_remove_existing(&disk->filelist, &file->nodelist);</span>
|
||||
<span class="lineNum"> 267 </span><span class="lineCov"> 56970 : tommy_list_remove_existing(&disk->filelist, &file->nodelist);</span>
|
||||
<span class="lineNum"> 268 </span> :
|
||||
<span class="lineNum"> 269 </span> : /* state changed */
|
||||
<span class="lineNum"> 270 </span><span class="lineCov"> 57015 : state->need_write = 1;</span>
|
||||
<span class="lineNum"> 270 </span><span class="lineCov"> 56970 : state->need_write = 1;</span>
|
||||
<span class="lineNum"> 271 </span> :
|
||||
<span class="lineNum"> 272 </span> : /* here we are supposed to adjust the ::first_free_block position */
|
||||
<span class="lineNum"> 273 </span> : /* with the parity position we are deleting */
|
||||
<span class="lineNum"> 274 </span> : /* but we also know that we do only delayed insert, after all the deletion, */
|
||||
<span class="lineNum"> 275 </span> : /* so at this point ::first_free_block is always at 0, and we don't need to update it */
|
||||
<span class="lineNum"> 276 </span><span class="lineCov"> 57015 : if (disk->first_free_block != 0) {</span>
|
||||
<span class="lineNum"> 276 </span><span class="lineCov"> 56970 : if (disk->first_free_block != 0) {</span>
|
||||
<span class="lineNum"> 277 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 278 </span> : log_fatal("Internal inconsistency for first free position at '%u' deallocating file '%s'\n", disk->first_free_block, file->sub);
|
||||
<span class="lineNum"> 279 </span> : os_abort();
|
||||
|
|
@ -343,17 +343,17 @@
|
|||
<span class="lineNum"> 281 </span> : }
|
||||
<span class="lineNum"> 282 </span> :
|
||||
<span class="lineNum"> 283 </span> : /* free all the blocks of the file */
|
||||
<span class="lineNum"> 284 </span><span class="lineCov"> 197616 : for (i = 0; i < file->blockmax; ++i) {</span>
|
||||
<span class="lineNum"> 285 </span><span class="lineCov"> 140601 : struct snapraid_block* block = fs_file2block_get(file, i);</span>
|
||||
<span class="lineNum"> 284 </span><span class="lineCov"> 197441 : for (i = 0; i < file->blockmax; ++i) {</span>
|
||||
<span class="lineNum"> 285 </span><span class="lineCov"> 140471 : struct snapraid_block* block = fs_file2block_get(file, i);</span>
|
||||
<span class="lineNum"> 286 </span> : unsigned block_state;
|
||||
<span class="lineNum"> 287 </span> :
|
||||
<span class="lineNum"> 288 </span> : /* in case we scan after an aborted sync, */
|
||||
<span class="lineNum"> 289 </span> : /* we could get also intermediate states */
|
||||
<span class="lineNum"> 290 </span><span class="lineCov"> 140601 : block_state = block_state_get(block);</span>
|
||||
<span class="lineNum"> 291 </span><span class="lineCov"> 140601 : switch (block_state) {</span>
|
||||
<span class="lineNum"> 290 </span><span class="lineCov"> 140471 : block_state = block_state_get(block);</span>
|
||||
<span class="lineNum"> 291 </span><span class="lineCov"> 140471 : switch (block_state) {</span>
|
||||
<span class="lineNum"> 292 </span> : case BLOCK_STATE_BLK :
|
||||
<span class="lineNum"> 293 </span> : /* we keep the hash making it an "old" hash, because the parity is still containing data for it */
|
||||
<span class="lineNum"> 294 </span><span class="lineCov"> 35660 : break;</span>
|
||||
<span class="lineNum"> 294 </span><span class="lineCov"> 35530 : break;</span>
|
||||
<span class="lineNum"> 295 </span> : case BLOCK_STATE_CHG :
|
||||
<span class="lineNum"> 296 </span> : /* if we have not already cleared the past hash */
|
||||
<span class="lineNum"> 297 </span><span class="lineCov"> 28000 : if (!state->clear_past_hash) {</span>
|
||||
|
|
@ -383,23 +383,23 @@
|
|||
<span class="lineNum"> 321 </span> : }
|
||||
<span class="lineNum"> 322 </span> :
|
||||
<span class="lineNum"> 323 </span> : /* set the block as deleted */
|
||||
<span class="lineNum"> 324 </span><span class="lineCov"> 140601 : block_state_set(block, BLOCK_STATE_DELETED);</span>
|
||||
<span class="lineNum"> 324 </span><span class="lineCov"> 140471 : block_state_set(block, BLOCK_STATE_DELETED);</span>
|
||||
<span class="lineNum"> 325 </span> : }
|
||||
<span class="lineNum"> 326 </span> :
|
||||
<span class="lineNum"> 327 </span> : /* mark the file as deleted */
|
||||
<span class="lineNum"> 328 </span><span class="lineCov"> 57015 : file_flag_set(file, FILE_IS_DELETED);</span>
|
||||
<span class="lineNum"> 328 </span><span class="lineCov"> 56970 : file_flag_set(file, FILE_IS_DELETED);</span>
|
||||
<span class="lineNum"> 329 </span> :
|
||||
<span class="lineNum"> 330 </span> : /* insert it in the list of deleted blocks */
|
||||
<span class="lineNum"> 331 </span><span class="lineCov"> 57015 : tommy_list_insert_tail(&disk->deletedlist, &file->nodelist, file);</span>
|
||||
<a name="332"><span class="lineNum"> 332 </span><span class="lineCov"> 57015 : }</span></a>
|
||||
<span class="lineNum"> 331 </span><span class="lineCov"> 56970 : tommy_list_insert_tail(&disk->deletedlist, &file->nodelist, file);</span>
|
||||
<a name="332"><span class="lineNum"> 332 </span><span class="lineCov"> 56970 : }</span></a>
|
||||
<span class="lineNum"> 333 </span> :
|
||||
<span class="lineNum"> 334 </span><span class="lineCov"> 101881 : static void scan_file_delayed_allocate(struct snapraid_scan* scan, struct snapraid_file* file)</span>
|
||||
<span class="lineNum"> 334 </span><span class="lineCov"> 101836 : static void scan_file_delayed_allocate(struct snapraid_scan* scan, struct snapraid_file* file)</span>
|
||||
<span class="lineNum"> 335 </span> : {
|
||||
<span class="lineNum"> 336 </span><span class="lineCov"> 101881 : struct snapraid_state* state = scan->state;</span>
|
||||
<span class="lineNum"> 337 </span><span class="lineCov"> 101881 : struct snapraid_disk* disk = scan->disk;</span>
|
||||
<span class="lineNum"> 336 </span><span class="lineCov"> 101836 : struct snapraid_state* state = scan->state;</span>
|
||||
<span class="lineNum"> 337 </span><span class="lineCov"> 101836 : struct snapraid_disk* disk = scan->disk;</span>
|
||||
<span class="lineNum"> 338 </span> :
|
||||
<span class="lineNum"> 339 </span> : /* if we sort for physical offsets we have to read them for new files */
|
||||
<span class="lineNum"> 340 </span><span class="lineCov"> 101881 : if (state->opt.force_order == SORT_PHYSICAL</span>
|
||||
<span class="lineNum"> 340 </span><span class="lineCov"> 101836 : if (state->opt.force_order == SORT_PHYSICAL</span>
|
||||
<span class="lineNum"> 341 </span><span class="lineCov"> 11432 : && file->physical == FILEPHY_UNREAD_OFFSET</span>
|
||||
<span class="lineNum"> 342 </span> : ) {
|
||||
<span class="lineNum"> 343 </span> : char path_next[PATH_MAX];
|
||||
|
|
@ -415,30 +415,30 @@
|
|||
<span class="lineNum"> 353 </span> : }
|
||||
<span class="lineNum"> 354 </span> :
|
||||
<span class="lineNum"> 355 </span> : /* insert in the delayed list */
|
||||
<span class="lineNum"> 356 </span><span class="lineCov"> 101881 : tommy_list_insert_tail(&scan->file_insert_list, &file->nodelist, file);</span>
|
||||
<span class="lineNum"> 357 </span><span class="lineCov"> 101881 : }</span>
|
||||
<span class="lineNum"> 356 </span><span class="lineCov"> 101836 : tommy_list_insert_tail(&scan->file_insert_list, &file->nodelist, file);</span>
|
||||
<span class="lineNum"> 357 </span><span class="lineCov"> 101836 : }</span>
|
||||
<span class="lineNum"> 358 </span> :
|
||||
<span class="lineNum"> 359 </span> : /**
|
||||
<span class="lineNum"> 360 </span> : * Check if a file is completely formed of blocks with invalid parity,
|
||||
<a name="361"><span class="lineNum"> 361 </span> : * and no rehash is tagged, and if it has at least one block.</a>
|
||||
<span class="lineNum"> 362 </span> : */
|
||||
<span class="lineNum"> 363 </span><span class="lineCov"> 1025531 : static int file_is_full_invalid_parity_and_stable(struct snapraid_state* state, struct snapraid_disk* disk, struct snapraid_file* file)</span>
|
||||
<span class="lineNum"> 363 </span><span class="lineCov"> 1025576 : static int file_is_full_invalid_parity_and_stable(struct snapraid_state* state, struct snapraid_disk* disk, struct snapraid_file* file)</span>
|
||||
<span class="lineNum"> 364 </span> : {
|
||||
<span class="lineNum"> 365 </span> : block_off_t i;
|
||||
<span class="lineNum"> 366 </span> :
|
||||
<span class="lineNum"> 367 </span> : /* with no block, it never has an invalid parity */
|
||||
<span class="lineNum"> 368 </span><span class="lineCov"> 1025531 : if (file->blockmax == 0)</span>
|
||||
<span class="lineNum"> 369 </span><span class="lineCov"> 1438 : return 0;</span>
|
||||
<span class="lineNum"> 368 </span><span class="lineCov"> 1025576 : if (file->blockmax == 0)</span>
|
||||
<span class="lineNum"> 369 </span><span class="lineCov"> 1436 : return 0;</span>
|
||||
<span class="lineNum"> 370 </span> :
|
||||
<span class="lineNum"> 371 </span> : /* check all blocks */
|
||||
<span class="lineNum"> 372 </span><span class="lineCov"> 1080005 : for (i = 0; i < file->blockmax; ++i) {</span>
|
||||
<span class="lineNum"> 372 </span><span class="lineCov"> 1080052 : for (i = 0; i < file->blockmax; ++i) {</span>
|
||||
<span class="lineNum"> 373 </span> : snapraid_info info;
|
||||
<span class="lineNum"> 374 </span><span class="lineCov"> 1057325 : struct snapraid_block* block = fs_file2block_get(file, i);</span>
|
||||
<span class="lineNum"> 374 </span><span class="lineCov"> 1057372 : struct snapraid_block* block = fs_file2block_get(file, i);</span>
|
||||
<span class="lineNum"> 375 </span> : block_off_t parity_pos;
|
||||
<span class="lineNum"> 376 </span> :
|
||||
<span class="lineNum"> 377 </span> : /* exclude blocks with parity */
|
||||
<span class="lineNum"> 378 </span><span class="lineCov"> 1057325 : if (!block_has_invalid_parity(block))</span>
|
||||
<span class="lineNum"> 379 </span><span class="lineCov"> 1001413 : return 0;</span>
|
||||
<span class="lineNum"> 378 </span><span class="lineCov"> 1057372 : if (!block_has_invalid_parity(block))</span>
|
||||
<span class="lineNum"> 379 </span><span class="lineCov"> 1001460 : return 0;</span>
|
||||
<span class="lineNum"> 380 </span> :
|
||||
<span class="lineNum"> 381 </span> : /*
|
||||
<span class="lineNum"> 382 </span> : * Get the parity position.
|
||||
|
|
@ -525,7 +525,7 @@
|
|||
<span class="lineNum"> 463 </span> : *
|
||||
<a name="464"><span class="lineNum"> 464 </span> : * If this happens, we read also the physical offset, to avoid to read it later.</a>
|
||||
<span class="lineNum"> 465 </span> : */
|
||||
<span class="lineNum"> 466 </span><span class="lineCov"> 79201 : static void scan_file_refresh(struct snapraid_scan* scan, const char* sub, struct stat* st, uint64_t* physical)</span>
|
||||
<span class="lineNum"> 466 </span><span class="lineCov"> 79156 : static void scan_file_refresh(struct snapraid_scan* scan, const char* sub, struct stat* st, uint64_t* physical)</span>
|
||||
<span class="lineNum"> 467 </span> : {
|
||||
<span class="lineNum"> 468 </span> : #if HAVE_LSTAT_SYNC
|
||||
<span class="lineNum"> 469 </span> : struct snapraid_state* state = scan->state;
|
||||
|
|
@ -597,43 +597,43 @@
|
|||
<span class="lineNum"> 535 </span> : (void)st;
|
||||
<span class="lineNum"> 536 </span> : (void)physical;
|
||||
<span class="lineNum"> 537 </span> : #endif
|
||||
<span class="lineNum"> 538 </span><span class="lineCov"> 79201 : }</span>
|
||||
<span class="lineNum"> 538 </span><span class="lineCov"> 79156 : }</span>
|
||||
<span class="lineNum"> 539 </span> :
|
||||
<span class="lineNum"> 540 </span> : /**
|
||||
<a name="541"><span class="lineNum"> 541 </span> : * Insert the file in the data set.</a>
|
||||
<span class="lineNum"> 542 </span> : */
|
||||
<span class="lineNum"> 543 </span><span class="lineCov"> 101881 : static void scan_file_insert(struct snapraid_scan* scan, struct snapraid_file* file)</span>
|
||||
<span class="lineNum"> 543 </span><span class="lineCov"> 101836 : static void scan_file_insert(struct snapraid_scan* scan, struct snapraid_file* file)</span>
|
||||
<span class="lineNum"> 544 </span> : {
|
||||
<span class="lineNum"> 545 </span><span class="lineCov"> 101881 : struct snapraid_disk* disk = scan->disk;</span>
|
||||
<span class="lineNum"> 545 </span><span class="lineCov"> 101836 : struct snapraid_disk* disk = scan->disk;</span>
|
||||
<span class="lineNum"> 546 </span> :
|
||||
<span class="lineNum"> 547 </span> : /* insert the file in the containers */
|
||||
<span class="lineNum"> 548 </span><span class="lineCov"> 101881 : if (!file_flag_has(file, FILE_IS_WITHOUT_INODE))</span>
|
||||
<span class="lineNum"> 549 </span><span class="lineCov"> 101881 : tommy_hashdyn_insert(&disk->inodeset, &file->nodeset, file, file_inode_hash(file->inode));</span>
|
||||
<span class="lineNum"> 550 </span><span class="lineCov"> 101881 : tommy_hashdyn_insert(&disk->pathset, &file->pathset, file, file_path_hash(file->sub));</span>
|
||||
<span class="lineNum"> 551 </span><span class="lineCov"> 101881 : tommy_hashdyn_insert(&disk->stampset, &file->stampset, file, file_stamp_hash(file->size, file->mtime_sec, file->mtime_nsec));</span>
|
||||
<span class="lineNum"> 548 </span><span class="lineCov"> 101836 : if (!file_flag_has(file, FILE_IS_WITHOUT_INODE))</span>
|
||||
<span class="lineNum"> 549 </span><span class="lineCov"> 101836 : tommy_hashdyn_insert(&disk->inodeset, &file->nodeset, file, file_inode_hash(file->inode));</span>
|
||||
<span class="lineNum"> 550 </span><span class="lineCov"> 101836 : tommy_hashdyn_insert(&disk->pathset, &file->pathset, file, file_path_hash(file->sub));</span>
|
||||
<span class="lineNum"> 551 </span><span class="lineCov"> 101836 : tommy_hashdyn_insert(&disk->stampset, &file->stampset, file, file_stamp_hash(file->size, file->mtime_sec, file->mtime_nsec));</span>
|
||||
<span class="lineNum"> 552 </span> :
|
||||
<span class="lineNum"> 553 </span> : /* delayed allocation of the parity */
|
||||
<span class="lineNum"> 554 </span><span class="lineCov"> 101881 : scan_file_delayed_allocate(scan, file);</span>
|
||||
<span class="lineNum"> 555 </span><span class="lineCov"> 101881 : }</span>
|
||||
<span class="lineNum"> 554 </span><span class="lineCov"> 101836 : scan_file_delayed_allocate(scan, file);</span>
|
||||
<span class="lineNum"> 555 </span><span class="lineCov"> 101836 : }</span>
|
||||
<span class="lineNum"> 556 </span> :
|
||||
<span class="lineNum"> 557 </span> : /**
|
||||
<span class="lineNum"> 558 </span> : * Remove the file from the data set.
|
||||
<span class="lineNum"> 559 </span> : *
|
||||
<a name="560"><span class="lineNum"> 560 </span> : * File is then deleted.</a>
|
||||
<span class="lineNum"> 561 </span> : */
|
||||
<span class="lineNum"> 562 </span><span class="lineCov"> 57015 : static void scan_file_remove(struct snapraid_scan* scan, struct snapraid_file* file)</span>
|
||||
<span class="lineNum"> 562 </span><span class="lineCov"> 56970 : static void scan_file_remove(struct snapraid_scan* scan, struct snapraid_file* file)</span>
|
||||
<span class="lineNum"> 563 </span> : {
|
||||
<span class="lineNum"> 564 </span><span class="lineCov"> 57015 : struct snapraid_disk* disk = scan->disk;</span>
|
||||
<span class="lineNum"> 564 </span><span class="lineCov"> 56970 : struct snapraid_disk* disk = scan->disk;</span>
|
||||
<span class="lineNum"> 565 </span> :
|
||||
<span class="lineNum"> 566 </span> : /* remove the file from the containers */
|
||||
<span class="lineNum"> 567 </span><span class="lineCov"> 57015 : if (!file_flag_has(file, FILE_IS_WITHOUT_INODE))</span>
|
||||
<span class="lineNum"> 568 </span><span class="lineCov"> 56963 : tommy_hashdyn_remove_existing(&disk->inodeset, &file->nodeset);</span>
|
||||
<span class="lineNum"> 569 </span><span class="lineCov"> 57015 : tommy_hashdyn_remove_existing(&disk->pathset, &file->pathset);</span>
|
||||
<span class="lineNum"> 570 </span><span class="lineCov"> 57015 : tommy_hashdyn_remove_existing(&disk->stampset, &file->stampset);</span>
|
||||
<span class="lineNum"> 567 </span><span class="lineCov"> 56970 : if (!file_flag_has(file, FILE_IS_WITHOUT_INODE))</span>
|
||||
<span class="lineNum"> 568 </span><span class="lineCov"> 56918 : tommy_hashdyn_remove_existing(&disk->inodeset, &file->nodeset);</span>
|
||||
<span class="lineNum"> 569 </span><span class="lineCov"> 56970 : tommy_hashdyn_remove_existing(&disk->pathset, &file->pathset);</span>
|
||||
<span class="lineNum"> 570 </span><span class="lineCov"> 56970 : tommy_hashdyn_remove_existing(&disk->stampset, &file->stampset);</span>
|
||||
<span class="lineNum"> 571 </span> :
|
||||
<span class="lineNum"> 572 </span> : /* deallocate the file from the parity */
|
||||
<span class="lineNum"> 573 </span><span class="lineCov"> 57015 : scan_file_deallocate(scan, file);</span>
|
||||
<span class="lineNum"> 574 </span><span class="lineCov"> 57015 : }</span>
|
||||
<span class="lineNum"> 573 </span><span class="lineCov"> 56970 : scan_file_deallocate(scan, file);</span>
|
||||
<span class="lineNum"> 574 </span><span class="lineCov"> 56970 : }</span>
|
||||
<span class="lineNum"> 575 </span> :
|
||||
<span class="lineNum"> 576 </span> : /**
|
||||
<span class="lineNum"> 577 </span> : * Keep the file as it's (or with only a name/inode modification).
|
||||
|
|
@ -646,12 +646,12 @@
|
|||
<span class="lineNum"> 584 </span> : * This could happen after a failed sync, when some other files are deleted,
|
||||
<a name="585"><span class="lineNum"> 585 </span> : * and then new ones can be moved backward to fill the hole created.</a>
|
||||
<span class="lineNum"> 586 </span> : */
|
||||
<span class="lineNum"> 587 </span><span class="lineCov"> 1025531 : static void scan_file_keep(struct snapraid_scan* scan, struct snapraid_file* file)</span>
|
||||
<span class="lineNum"> 587 </span><span class="lineCov"> 1025576 : static void scan_file_keep(struct snapraid_scan* scan, struct snapraid_file* file)</span>
|
||||
<span class="lineNum"> 588 </span> : {
|
||||
<span class="lineNum"> 589 </span><span class="lineCov"> 1025531 : struct snapraid_disk* disk = scan->disk;</span>
|
||||
<span class="lineNum"> 589 </span><span class="lineCov"> 1025576 : struct snapraid_disk* disk = scan->disk;</span>
|
||||
<span class="lineNum"> 590 </span> :
|
||||
<span class="lineNum"> 591 </span> : /* if the file is full invalid, schedule a reinsert at later stage */
|
||||
<span class="lineNum"> 592 </span><span class="lineCov"> 1025531 : if (file_is_full_invalid_parity_and_stable(scan->state, disk, file)) {</span>
|
||||
<span class="lineNum"> 592 </span><span class="lineCov"> 1025576 : if (file_is_full_invalid_parity_and_stable(scan->state, disk, file)) {</span>
|
||||
<span class="lineNum"> 593 </span><span class="lineCov"> 22680 : struct snapraid_file* copy = file_dup(file);</span>
|
||||
<span class="lineNum"> 594 </span> :
|
||||
<span class="lineNum"> 595 </span> : /* remove the file */
|
||||
|
|
@ -660,7 +660,7 @@
|
|||
<span class="lineNum"> 598 </span> : /* reinsert the copy in the delayed list */
|
||||
<span class="lineNum"> 599 </span><span class="lineCov"> 22680 : scan_file_insert(scan, copy);</span>
|
||||
<span class="lineNum"> 600 </span> : }
|
||||
<span class="lineNum"> 601 </span><span class="lineCov"> 1025531 : }</span>
|
||||
<span class="lineNum"> 601 </span><span class="lineCov"> 1025576 : }</span>
|
||||
<span class="lineNum"> 602 </span> :
|
||||
<span class="lineNum"> 603 </span> : /**
|
||||
<a name="604"><span class="lineNum"> 604 </span> : * Process a file.</a>
|
||||
|
|
@ -717,17 +717,17 @@
|
|||
<span class="lineNum"> 655 </span> : /* identify moved files with past inodes and hardlinks with the new inodes */
|
||||
<span class="lineNum"> 656 </span><span class="lineCov"> 1104927 : if (file) {</span>
|
||||
<span class="lineNum"> 657 </span> : /* check if the file is not changed */
|
||||
<span class="lineNum"> 658 </span><span class="lineCov"> 949702 : if (file->size == st->st_size</span>
|
||||
<span class="lineNum"> 659 </span><span class="lineCov"> 935958 : && file->mtime_sec == st->st_mtime</span>
|
||||
<span class="lineNum"> 660 </span><span class="lineCov"> 932913 : && (file->mtime_nsec == STAT_NSEC(st)</span>
|
||||
<span class="lineNum"> 658 </span><span class="lineCov"> 949639 : if (file->size == st->st_size</span>
|
||||
<span class="lineNum"> 659 </span><span class="lineCov"> 935884 : && file->mtime_sec == st->st_mtime</span>
|
||||
<span class="lineNum"> 660 </span><span class="lineCov"> 932864 : && (file->mtime_nsec == STAT_NSEC(st)</span>
|
||||
<span class="lineNum"> 661 </span> : /* always accept the stored value if it's STAT_NSEC_INVALID */
|
||||
<span class="lineNum"> 662 </span> : /* it happens when upgrading from an old version of SnapRAID */
|
||||
<span class="lineNum"> 663 </span> : /* not yet supporting the nanosecond field */
|
||||
<span class="lineNum"> 664 </span><span class="lineCov"> 1 : || file->mtime_nsec == STAT_NSEC_INVALID</span>
|
||||
<span class="lineNum"> 664 </span><span class="lineCov"> 2 : || file->mtime_nsec == STAT_NSEC_INVALID</span>
|
||||
<span class="lineNum"> 665 </span> : )
|
||||
<span class="lineNum"> 666 </span> : ) {
|
||||
<span class="lineNum"> 667 </span> : /* check if multiple files have the same inode */
|
||||
<span class="lineNum"> 668 </span><span class="lineCov"> 932912 : if (file_flag_has(file, FILE_IS_PRESENT)) {</span>
|
||||
<span class="lineNum"> 668 </span><span class="lineCov"> 932862 : if (file_flag_has(file, FILE_IS_PRESENT)) {</span>
|
||||
<span class="lineNum"> 669 </span> : #if HAVE_STRUCT_STAT_ST_NLINK
|
||||
<span class="lineNum"> 670 </span><span class="lineCov"> 195 : if (st->st_nlink <= 1) {</span>
|
||||
<span class="lineNum"> 671 </span> : /* LCOV_EXCL_START */
|
||||
|
|
@ -742,11 +742,11 @@
|
|||
<span class="lineNum"> 680 </span> : }
|
||||
<span class="lineNum"> 681 </span> :
|
||||
<span class="lineNum"> 682 </span> : /* mark as present */
|
||||
<span class="lineNum"> 683 </span><span class="lineCov"> 932717 : file_flag_set(file, FILE_IS_PRESENT);</span>
|
||||
<span class="lineNum"> 683 </span><span class="lineCov"> 932667 : file_flag_set(file, FILE_IS_PRESENT);</span>
|
||||
<span class="lineNum"> 684 </span> :
|
||||
<span class="lineNum"> 685 </span> : /* update the nanoseconds mtime only if different */
|
||||
<span class="lineNum"> 686 </span> : /* to avoid unneeded updates */
|
||||
<span class="lineNum"> 687 </span><span class="lineCov"> 932717 : if (file->mtime_nsec == STAT_NSEC_INVALID</span>
|
||||
<span class="lineNum"> 687 </span><span class="lineCov"> 932667 : if (file->mtime_nsec == STAT_NSEC_INVALID</span>
|
||||
<span class="lineNum"> 688 </span><span class="lineNoCov"> 0 : && STAT_NSEC(st) != file->mtime_nsec</span>
|
||||
<span class="lineNum"> 689 </span> : ) {
|
||||
<span class="lineNum"> 690 </span><span class="lineNoCov"> 0 : file->mtime_nsec = STAT_NSEC(st);</span>
|
||||
|
|
@ -755,7 +755,7 @@
|
|||
<span class="lineNum"> 693 </span><span class="lineNoCov"> 0 : state->need_write = 1;</span>
|
||||
<span class="lineNum"> 694 </span> : }
|
||||
<span class="lineNum"> 695 </span> :
|
||||
<span class="lineNum"> 696 </span><span class="lineCov"> 932717 : if (strcmp(file->sub, sub) != 0) {</span>
|
||||
<span class="lineNum"> 696 </span><span class="lineCov"> 932667 : if (strcmp(file->sub, sub) != 0) {</span>
|
||||
<span class="lineNum"> 697 </span> : /* if the path is different, it means a moved file with the same inode */
|
||||
<span class="lineNum"> 698 </span><span class="lineCov"> 155 : ++scan->count_move;</span>
|
||||
<span class="lineNum"> 699 </span> :
|
||||
|
|
@ -777,18 +777,18 @@
|
|||
<span class="lineNum"> 715 </span><span class="lineCov"> 155 : state->need_write = 1;</span>
|
||||
<span class="lineNum"> 716 </span> : } else {
|
||||
<span class="lineNum"> 717 </span> : /* otherwise it's equal */
|
||||
<span class="lineNum"> 718 </span><span class="lineCov"> 932562 : ++scan->count_equal;</span>
|
||||
<span class="lineNum"> 718 </span><span class="lineCov"> 932512 : ++scan->count_equal;</span>
|
||||
<span class="lineNum"> 719 </span> :
|
||||
<span class="lineNum"> 720 </span><span class="lineCov"> 932562 : if (state->opt.gui) {</span>
|
||||
<span class="lineNum"> 720 </span><span class="lineCov"> 932512 : if (state->opt.gui) {</span>
|
||||
<span class="lineNum"> 721 </span><span class="lineCov"> 22599 : log_tag("scan:equal:%s:%s\n", disk->name, esc_tag(file->sub, esc_buffer));</span>
|
||||
<span class="lineNum"> 722 </span> : }
|
||||
<span class="lineNum"> 723 </span> : }
|
||||
<span class="lineNum"> 724 </span> :
|
||||
<span class="lineNum"> 725 </span> : /* mark the file as kept */
|
||||
<span class="lineNum"> 726 </span><span class="lineCov"> 932717 : scan_file_keep(scan, file);</span>
|
||||
<span class="lineNum"> 726 </span><span class="lineCov"> 932667 : scan_file_keep(scan, file);</span>
|
||||
<span class="lineNum"> 727 </span> :
|
||||
<span class="lineNum"> 728 </span> : /* nothing more to do */
|
||||
<span class="lineNum"> 729 </span><span class="lineCov"> 932717 : return;</span>
|
||||
<span class="lineNum"> 729 </span><span class="lineCov"> 932667 : return;</span>
|
||||
<span class="lineNum"> 730 </span> : }
|
||||
<span class="lineNum"> 731 </span> :
|
||||
<span class="lineNum"> 732 </span> : /* here the file matches the inode, but not the other info */
|
||||
|
|
@ -797,7 +797,7 @@
|
|||
<span class="lineNum"> 735 </span> : /* or a file-system with not persistent inodes */
|
||||
<span class="lineNum"> 736 </span> :
|
||||
<span class="lineNum"> 737 </span> : /* for sure it cannot be already present */
|
||||
<span class="lineNum"> 738 </span><span class="lineCov"> 16790 : if (file_flag_has(file, FILE_IS_PRESENT)) {</span>
|
||||
<span class="lineNum"> 738 </span><span class="lineCov"> 16777 : if (file_flag_has(file, FILE_IS_PRESENT)) {</span>
|
||||
<span class="lineNum"> 739 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 740 </span> : log_fatal("Internal inode '%" PRIu64 "' inconsistency for files '%s%s' and '%s%s' matching and already present but different\n", file->inode, disk->dir, sub, disk->dir, file->sub);
|
||||
<span class="lineNum"> 741 </span> : os_abort();
|
||||
|
|
@ -810,44 +810,44 @@
|
|||
<span class="lineNum"> 748 </span> : /* otherwise, it will get removed */
|
||||
<span class="lineNum"> 749 </span> :
|
||||
<span class="lineNum"> 750 </span> : /* remove from the inode set */
|
||||
<span class="lineNum"> 751 </span><span class="lineCov"> 16790 : tommy_hashdyn_remove_existing(&disk->inodeset, &file->nodeset);</span>
|
||||
<span class="lineNum"> 751 </span><span class="lineCov"> 16777 : tommy_hashdyn_remove_existing(&disk->inodeset, &file->nodeset);</span>
|
||||
<span class="lineNum"> 752 </span> :
|
||||
<span class="lineNum"> 753 </span> : /* clear the inode */
|
||||
<span class="lineNum"> 754 </span> : /* this is not really needed for correct functionality */
|
||||
<span class="lineNum"> 755 </span> : /* because we are going to set FILE_IS_WITHOUT_INODE */
|
||||
<span class="lineNum"> 756 </span> : /* but it's easier for debugging to have invalid inodes set to 0 */
|
||||
<span class="lineNum"> 757 </span><span class="lineCov"> 16790 : file->inode = 0;</span>
|
||||
<span class="lineNum"> 757 </span><span class="lineCov"> 16777 : file->inode = 0;</span>
|
||||
<span class="lineNum"> 758 </span> :
|
||||
<span class="lineNum"> 759 </span> : /* mark as missing inode */
|
||||
<span class="lineNum"> 760 </span><span class="lineCov"> 16790 : file_flag_set(file, FILE_IS_WITHOUT_INODE);</span>
|
||||
<span class="lineNum"> 760 </span><span class="lineCov"> 16777 : file_flag_set(file, FILE_IS_WITHOUT_INODE);</span>
|
||||
<span class="lineNum"> 761 </span> :
|
||||
<span class="lineNum"> 762 </span> : /* go further to find it by name */
|
||||
<span class="lineNum"> 763 </span> : }
|
||||
<span class="lineNum"> 764 </span> :
|
||||
<span class="lineNum"> 765 </span> : /* initialize for later overwrite */
|
||||
<span class="lineNum"> 766 </span><span class="lineCov"> 172015 : is_file_reported = 0;</span>
|
||||
<span class="lineNum"> 767 </span><span class="lineCov"> 172015 : is_original_file_size_different_than_zero = 0;</span>
|
||||
<span class="lineNum"> 766 </span><span class="lineCov"> 172065 : is_file_reported = 0;</span>
|
||||
<span class="lineNum"> 767 </span><span class="lineCov"> 172065 : is_original_file_size_different_than_zero = 0;</span>
|
||||
<span class="lineNum"> 768 </span> :
|
||||
<span class="lineNum"> 769 </span> : /* then try finding it by name */
|
||||
<span class="lineNum"> 770 </span><span class="lineCov"> 172015 : file = tommy_hashdyn_search(&disk->pathset, file_path_compare_to_arg, sub, file_path_hash(sub));</span>
|
||||
<span class="lineNum"> 770 </span><span class="lineCov"> 172065 : file = tommy_hashdyn_search(&disk->pathset, file_path_compare_to_arg, sub, file_path_hash(sub));</span>
|
||||
<span class="lineNum"> 771 </span> :
|
||||
<span class="lineNum"> 772 </span> : /* keep track if the file already exists */
|
||||
<span class="lineNum"> 773 </span><span class="lineCov"> 172015 : is_file_already_present = file != 0;</span>
|
||||
<span class="lineNum"> 773 </span><span class="lineCov"> 172065 : is_file_already_present = file != 0;</span>
|
||||
<span class="lineNum"> 774 </span> :
|
||||
<span class="lineNum"> 775 </span><span class="lineCov"> 172015 : if (is_file_already_present) {</span>
|
||||
<span class="lineNum"> 775 </span><span class="lineCov"> 172065 : if (is_file_already_present) {</span>
|
||||
<span class="lineNum"> 776 </span> : /* if the file is without an inode */
|
||||
<span class="lineNum"> 777 </span><span class="lineCov"> 97502 : if (file_flag_has(file, FILE_IS_WITHOUT_INODE)) {</span>
|
||||
<span class="lineNum"> 777 </span><span class="lineCov"> 97552 : if (file_flag_has(file, FILE_IS_WITHOUT_INODE)) {</span>
|
||||
<span class="lineNum"> 778 </span> : /* set it now */
|
||||
<span class="lineNum"> 779 </span><span class="lineCov"> 16752 : file->inode = st->st_ino;</span>
|
||||
<span class="lineNum"> 779 </span><span class="lineCov"> 16739 : file->inode = st->st_ino;</span>
|
||||
<span class="lineNum"> 780 </span> :
|
||||
<span class="lineNum"> 781 </span> : /* insert in the set */
|
||||
<span class="lineNum"> 782 </span><span class="lineCov"> 16752 : tommy_hashdyn_insert(&disk->inodeset, &file->nodeset, file, file_inode_hash(file->inode));</span>
|
||||
<span class="lineNum"> 782 </span><span class="lineCov"> 16739 : tommy_hashdyn_insert(&disk->inodeset, &file->nodeset, file, file_inode_hash(file->inode));</span>
|
||||
<span class="lineNum"> 783 </span> :
|
||||
<span class="lineNum"> 784 </span> : /* unmark as missing inode */
|
||||
<span class="lineNum"> 785 </span><span class="lineCov"> 16752 : file_flag_clear(file, FILE_IS_WITHOUT_INODE);</span>
|
||||
<span class="lineNum"> 785 </span><span class="lineCov"> 16739 : file_flag_clear(file, FILE_IS_WITHOUT_INODE);</span>
|
||||
<span class="lineNum"> 786 </span> : } else {
|
||||
<span class="lineNum"> 787 </span> : /* here the inode has to be different, otherwise we would have found it before */
|
||||
<span class="lineNum"> 788 </span><span class="lineCov"> 80750 : if (file->inode == st->st_ino) {</span>
|
||||
<span class="lineNum"> 788 </span><span class="lineCov"> 80813 : if (file->inode == st->st_ino) {</span>
|
||||
<span class="lineNum"> 789 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 790 </span> : log_fatal("Internal inconsistency in inode '%" PRIu64 "' for files '%s%s' as unexpected matching\n", file->inode, disk->dir, sub);
|
||||
<span class="lineNum"> 791 </span> : os_abort();
|
||||
|
|
@ -856,7 +856,7 @@
|
|||
<span class="lineNum"> 794 </span> : }
|
||||
<span class="lineNum"> 795 </span> :
|
||||
<span class="lineNum"> 796 </span> : /* for sure it cannot be already present */
|
||||
<span class="lineNum"> 797 </span><span class="lineCov"> 97502 : if (file_flag_has(file, FILE_IS_PRESENT)) {</span>
|
||||
<span class="lineNum"> 797 </span><span class="lineCov"> 97552 : if (file_flag_has(file, FILE_IS_PRESENT)) {</span>
|
||||
<span class="lineNum"> 798 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 799 </span> : log_fatal("Internal inconsistency in path for file '%s%s' matching and already present\n", disk->dir, sub);
|
||||
<span class="lineNum"> 800 </span> : os_abort();
|
||||
|
|
@ -864,9 +864,9 @@
|
|||
<span class="lineNum"> 802 </span> : }
|
||||
<span class="lineNum"> 803 </span> :
|
||||
<span class="lineNum"> 804 </span> : /* check if the file is not changed */
|
||||
<span class="lineNum"> 805 </span><span class="lineCov"> 97502 : if (file->size == st->st_size</span>
|
||||
<span class="lineNum"> 806 </span><span class="lineCov"> 96906 : && file->mtime_sec == st->st_mtime</span>
|
||||
<span class="lineNum"> 807 </span><span class="lineCov"> 92814 : && (file->mtime_nsec == STAT_NSEC(st)</span>
|
||||
<span class="lineNum"> 805 </span><span class="lineCov"> 97552 : if (file->size == st->st_size</span>
|
||||
<span class="lineNum"> 806 </span><span class="lineCov"> 96956 : && file->mtime_sec == st->st_mtime</span>
|
||||
<span class="lineNum"> 807 </span><span class="lineCov"> 92909 : && (file->mtime_nsec == STAT_NSEC(st)</span>
|
||||
<span class="lineNum"> 808 </span> : /* always accept the stored value if it's STAT_NSEC_INVALID */
|
||||
<span class="lineNum"> 809 </span> : /* it happens when upgrading from an old version of SnapRAID */
|
||||
<span class="lineNum"> 810 </span> : /* not yet supporting the nanosecond field */
|
||||
|
|
@ -874,11 +874,11 @@
|
|||
<span class="lineNum"> 812 </span> : )
|
||||
<span class="lineNum"> 813 </span> : ) {
|
||||
<span class="lineNum"> 814 </span> : /* mark as present */
|
||||
<span class="lineNum"> 815 </span><span class="lineCov"> 92814 : file_flag_set(file, FILE_IS_PRESENT);</span>
|
||||
<span class="lineNum"> 815 </span><span class="lineCov"> 92909 : file_flag_set(file, FILE_IS_PRESENT);</span>
|
||||
<span class="lineNum"> 816 </span> :
|
||||
<span class="lineNum"> 817 </span> : /* update the nano seconds mtime only if different */
|
||||
<span class="lineNum"> 818 </span> : /* to avoid unneeded updates */
|
||||
<span class="lineNum"> 819 </span><span class="lineCov"> 92814 : if (file->mtime_nsec == STAT_NSEC_INVALID</span>
|
||||
<span class="lineNum"> 819 </span><span class="lineCov"> 92909 : if (file->mtime_nsec == STAT_NSEC_INVALID</span>
|
||||
<span class="lineNum"> 820 </span><span class="lineNoCov"> 0 : && STAT_NSEC(st) != STAT_NSEC_INVALID</span>
|
||||
<span class="lineNum"> 821 </span> : ) {
|
||||
<span class="lineNum"> 822 </span><span class="lineNoCov"> 0 : file->mtime_nsec = STAT_NSEC(st);</span>
|
||||
|
|
@ -888,30 +888,30 @@
|
|||
<span class="lineNum"> 826 </span> : }
|
||||
<span class="lineNum"> 827 </span> :
|
||||
<span class="lineNum"> 828 </span> : /* if when processing the disk we used the past inodes values */
|
||||
<span class="lineNum"> 829 </span><span class="lineCov"> 92814 : if (has_past_inodes) {</span>
|
||||
<span class="lineNum"> 829 </span><span class="lineCov"> 92909 : if (has_past_inodes) {</span>
|
||||
<span class="lineNum"> 830 </span> : /* if persistent inodes are supported, we are sure that the inode number */
|
||||
<span class="lineNum"> 831 </span> : /* is now different, because otherwise the file would have been found */
|
||||
<span class="lineNum"> 832 </span> : /* when searching by inode. */
|
||||
<span class="lineNum"> 833 </span> : /* if the inode is different, it means a rewritten file with the same path */
|
||||
<span class="lineNum"> 834 </span> : /* like when restoring a backup that restores also the timestamp */
|
||||
<span class="lineNum"> 835 </span><span class="lineCov"> 92800 : ++scan->count_restore;</span>
|
||||
<span class="lineNum"> 835 </span><span class="lineCov"> 92895 : ++scan->count_restore;</span>
|
||||
<span class="lineNum"> 836 </span> :
|
||||
<span class="lineNum"> 837 </span><span class="lineCov"> 92800 : log_tag("scan:restore:%s:%s\n", disk->name, esc_tag(sub, esc_buffer));</span>
|
||||
<span class="lineNum"> 838 </span><span class="lineCov"> 92800 : if (is_diff) {</span>
|
||||
<span class="lineNum"> 837 </span><span class="lineCov"> 92895 : log_tag("scan:restore:%s:%s\n", disk->name, esc_tag(sub, esc_buffer));</span>
|
||||
<span class="lineNum"> 838 </span><span class="lineCov"> 92895 : if (is_diff) {</span>
|
||||
<span class="lineNum"> 839 </span><span class="lineNoCov"> 0 : printf("restore %s\n", fmt_term(disk, sub, esc_buffer));</span>
|
||||
<span class="lineNum"> 840 </span> : }
|
||||
<span class="lineNum"> 841 </span> :
|
||||
<span class="lineNum"> 842 </span> : /* remove from the inode set */
|
||||
<span class="lineNum"> 843 </span><span class="lineCov"> 92800 : tommy_hashdyn_remove_existing(&disk->inodeset, &file->nodeset);</span>
|
||||
<span class="lineNum"> 843 </span><span class="lineCov"> 92895 : tommy_hashdyn_remove_existing(&disk->inodeset, &file->nodeset);</span>
|
||||
<span class="lineNum"> 844 </span> :
|
||||
<span class="lineNum"> 845 </span> : /* save the new inode */
|
||||
<span class="lineNum"> 846 </span><span class="lineCov"> 92800 : file->inode = st->st_ino;</span>
|
||||
<span class="lineNum"> 846 </span><span class="lineCov"> 92895 : file->inode = st->st_ino;</span>
|
||||
<span class="lineNum"> 847 </span> :
|
||||
<span class="lineNum"> 848 </span> : /* reinsert in the inode set */
|
||||
<span class="lineNum"> 849 </span><span class="lineCov"> 92800 : tommy_hashdyn_insert(&disk->inodeset, &file->nodeset, file, file_inode_hash(file->inode));</span>
|
||||
<span class="lineNum"> 849 </span><span class="lineCov"> 92895 : tommy_hashdyn_insert(&disk->inodeset, &file->nodeset, file, file_inode_hash(file->inode));</span>
|
||||
<span class="lineNum"> 850 </span> :
|
||||
<span class="lineNum"> 851 </span> : /* we have to save the new inode */
|
||||
<span class="lineNum"> 852 </span><span class="lineCov"> 92800 : state->need_write = 1;</span>
|
||||
<span class="lineNum"> 852 </span><span class="lineCov"> 92895 : state->need_write = 1;</span>
|
||||
<span class="lineNum"> 853 </span> : } else {
|
||||
<span class="lineNum"> 854 </span> : /* otherwise it's the case of not persistent inode, where doesn't */
|
||||
<span class="lineNum"> 855 </span> : /* matter if the inode is different or equal, because they have no */
|
||||
|
|
@ -924,24 +924,24 @@
|
|||
<span class="lineNum"> 862 </span> : }
|
||||
<span class="lineNum"> 863 </span> :
|
||||
<span class="lineNum"> 864 </span> : /* mark the file as kept */
|
||||
<span class="lineNum"> 865 </span><span class="lineCov"> 92814 : scan_file_keep(scan, file);</span>
|
||||
<span class="lineNum"> 865 </span><span class="lineCov"> 92909 : scan_file_keep(scan, file);</span>
|
||||
<span class="lineNum"> 866 </span> :
|
||||
<span class="lineNum"> 867 </span> : /* nothing more to do */
|
||||
<span class="lineNum"> 868 </span><span class="lineCov"> 92814 : return;</span>
|
||||
<span class="lineNum"> 868 </span><span class="lineCov"> 92909 : return;</span>
|
||||
<span class="lineNum"> 869 </span> : }
|
||||
<span class="lineNum"> 870 </span> :
|
||||
<span class="lineNum"> 871 </span> : /* here if the file is changed but with the correct name */
|
||||
<span class="lineNum"> 872 </span> :
|
||||
<span class="lineNum"> 873 </span> : /* save the info for later printout */
|
||||
<span class="lineNum"> 874 </span><span class="lineCov"> 4688 : file_already_present_size = file->size;</span>
|
||||
<span class="lineNum"> 875 </span><span class="lineCov"> 4688 : file_already_present_mtime_sec = file->mtime_sec;</span>
|
||||
<span class="lineNum"> 876 </span><span class="lineCov"> 4688 : file_already_present_mtime_nsec = file->mtime_nsec;</span>
|
||||
<span class="lineNum"> 874 </span><span class="lineCov"> 4643 : file_already_present_size = file->size;</span>
|
||||
<span class="lineNum"> 875 </span><span class="lineCov"> 4643 : file_already_present_mtime_sec = file->mtime_sec;</span>
|
||||
<span class="lineNum"> 876 </span><span class="lineCov"> 4643 : file_already_present_mtime_nsec = file->mtime_nsec;</span>
|
||||
<span class="lineNum"> 877 </span> :
|
||||
<span class="lineNum"> 878 </span> : /* keep track if the original file was not of zero size */
|
||||
<span class="lineNum"> 879 </span><span class="lineCov"> 4688 : is_original_file_size_different_than_zero = file->size != 0;</span>
|
||||
<span class="lineNum"> 879 </span><span class="lineCov"> 4643 : is_original_file_size_different_than_zero = file->size != 0;</span>
|
||||
<span class="lineNum"> 880 </span> :
|
||||
<span class="lineNum"> 881 </span> : /* remove it, and continue to insert it again */
|
||||
<span class="lineNum"> 882 </span><span class="lineCov"> 4688 : scan_file_remove(scan, file);</span>
|
||||
<span class="lineNum"> 882 </span><span class="lineCov"> 4643 : scan_file_remove(scan, file);</span>
|
||||
<span class="lineNum"> 883 </span> :
|
||||
<span class="lineNum"> 884 </span> : /* and continue to insert it again */
|
||||
<span class="lineNum"> 885 </span> : } else {
|
||||
|
|
@ -953,13 +953,13 @@
|
|||
<span class="lineNum"> 891 </span> : /* refresh the info, to ensure that they are synced, */
|
||||
<span class="lineNum"> 892 </span> : /* note that we refresh only the info of the new or modified files */
|
||||
<span class="lineNum"> 893 </span> : /* because this is slow operation */
|
||||
<span class="lineNum"> 894 </span><span class="lineCov"> 79201 : scan_file_refresh(scan, sub, st, &physical);</span>
|
||||
<span class="lineNum"> 894 </span><span class="lineCov"> 79156 : scan_file_refresh(scan, sub, st, &physical);</span>
|
||||
<span class="lineNum"> 895 </span> :
|
||||
<span class="lineNum"> 896 </span> : #ifndef _WIN32
|
||||
<span class="lineNum"> 897 </span> : /* do a safety check to ensure that the common ext4 case of zeroing */
|
||||
<span class="lineNum"> 898 </span> : /* the size of a file after a crash doesn't propagate to the backup */
|
||||
<span class="lineNum"> 899 </span> : /* this check is specific for Linux, so we disable it on Windows */
|
||||
<span class="lineNum"> 900 </span><span class="lineCov"> 79201 : if (is_original_file_size_different_than_zero && st->st_size == 0) {</span>
|
||||
<span class="lineNum"> 900 </span><span class="lineCov"> 79156 : if (is_original_file_size_different_than_zero && st->st_size == 0) {</span>
|
||||
<span class="lineNum"> 901 </span><span class="lineNoCov"> 0 : if (!state->opt.force_zero) {</span>
|
||||
<span class="lineNum"> 902 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 903 </span> : log_fatal("The file '%s%s' has unexpected zero size!\n", disk->dir, sub);
|
||||
|
|
@ -978,33 +978,33 @@
|
|||
<span class="lineNum"> 916 </span> : #endif
|
||||
<span class="lineNum"> 917 </span> :
|
||||
<span class="lineNum"> 918 </span> : /* insert it */
|
||||
<span class="lineNum"> 919 </span><span class="lineCov"> 79201 : file = file_alloc(state->block_size, sub, st->st_size, st->st_mtime, STAT_NSEC(st), st->st_ino, physical);</span>
|
||||
<span class="lineNum"> 919 </span><span class="lineCov"> 79156 : file = file_alloc(state->block_size, sub, st->st_size, st->st_mtime, STAT_NSEC(st), st->st_ino, physical);</span>
|
||||
<span class="lineNum"> 920 </span> :
|
||||
<span class="lineNum"> 921 </span> : /* mark it as present */
|
||||
<span class="lineNum"> 922 </span><span class="lineCov"> 79201 : file_flag_set(file, FILE_IS_PRESENT);</span>
|
||||
<span class="lineNum"> 922 </span><span class="lineCov"> 79156 : file_flag_set(file, FILE_IS_PRESENT);</span>
|
||||
<span class="lineNum"> 923 </span> :
|
||||
<span class="lineNum"> 924 </span> : /* if copy detection is enabled */
|
||||
<span class="lineNum"> 925 </span> : /* note that the copy detection is tried also for updated files */
|
||||
<span class="lineNum"> 926 </span> : /* this makes sense because it may happen to have two different copies */
|
||||
<span class="lineNum"> 927 </span> : /* of the same file, and we move the right one over the wrong one */
|
||||
<span class="lineNum"> 928 </span> : /* in such case we have a "copy" over an "update" */
|
||||
<span class="lineNum"> 929 </span><span class="lineCov"> 79201 : if (!state->opt.force_nocopy) {</span>
|
||||
<span class="lineNum"> 930 </span><span class="lineCov"> 79201 : tommy_uint32_t hash = file_stamp_hash(file->size, file->mtime_sec, file->mtime_nsec);</span>
|
||||
<span class="lineNum"> 929 </span><span class="lineCov"> 79156 : if (!state->opt.force_nocopy) {</span>
|
||||
<span class="lineNum"> 930 </span><span class="lineCov"> 79156 : tommy_uint32_t hash = file_stamp_hash(file->size, file->mtime_sec, file->mtime_nsec);</span>
|
||||
<span class="lineNum"> 931 </span> :
|
||||
<span class="lineNum"> 932 </span> : /* search for a file with the same name and stamp in all the disks */
|
||||
<span class="lineNum"> 933 </span><span class="lineCov"> 423459 : for (i = state->disklist; i != 0; i = i->next) {</span>
|
||||
<span class="lineNum"> 934 </span><span class="lineCov"> 367894 : struct snapraid_disk* other_disk = i->data;</span>
|
||||
<span class="lineNum"> 933 </span><span class="lineCov"> 423144 : for (i = state->disklist; i != 0; i = i->next) {</span>
|
||||
<span class="lineNum"> 934 </span><span class="lineCov"> 367624 : struct snapraid_disk* other_disk = i->data;</span>
|
||||
<span class="lineNum"> 935 </span> : struct snapraid_file* other_file;
|
||||
<span class="lineNum"> 936 </span> :
|
||||
<span class="lineNum"> 937 </span> : /* if the nanosecond part of the time stamp is valid, search */
|
||||
<span class="lineNum"> 938 </span> : /* for name and stamp, otherwise for path and stamp */
|
||||
<span class="lineNum"> 939 </span><span class="lineCov"> 367894 : if (file->mtime_nsec != 0 && file->mtime_nsec != STAT_NSEC_INVALID)</span>
|
||||
<span class="lineNum"> 940 </span><span class="lineCov"> 367786 : other_file = tommy_hashdyn_search(&other_disk->stampset, file_namestamp_compare, file, hash);</span>
|
||||
<span class="lineNum"> 939 </span><span class="lineCov"> 367624 : if (file->mtime_nsec != 0 && file->mtime_nsec != STAT_NSEC_INVALID)</span>
|
||||
<span class="lineNum"> 940 </span><span class="lineCov"> 367516 : other_file = tommy_hashdyn_search(&other_disk->stampset, file_namestamp_compare, file, hash);</span>
|
||||
<span class="lineNum"> 941 </span> : else
|
||||
<span class="lineNum"> 942 </span><span class="lineCov"> 108 : other_file = tommy_hashdyn_search(&other_disk->stampset, file_pathstamp_compare, file, hash);</span>
|
||||
<span class="lineNum"> 943 </span> :
|
||||
<span class="lineNum"> 944 </span> : /* if found, and it's a fully hashed file */
|
||||
<span class="lineNum"> 945 </span><span class="lineCov"> 367894 : if (other_file && file_is_full_hashed_and_stable(scan->state, other_disk, other_file)) {</span>
|
||||
<span class="lineNum"> 945 </span><span class="lineCov"> 367624 : if (other_file && file_is_full_hashed_and_stable(scan->state, other_disk, other_file)) {</span>
|
||||
<span class="lineNum"> 946 </span> : /* assume that the file is a copy, and reuse the hash */
|
||||
<span class="lineNum"> 947 </span><span class="lineCov"> 23636 : file_copy(other_file, file);</span>
|
||||
<span class="lineNum"> 948 </span> :
|
||||
|
|
@ -1027,16 +1027,16 @@
|
|||
<span class="lineNum"> 965 </span> :
|
||||
<span class="lineNum"> 966 </span> : /* if not yet reported, do it now */
|
||||
<span class="lineNum"> 967 </span> : /* we postpone this to avoid to print two times the copied files */
|
||||
<span class="lineNum"> 968 </span><span class="lineCov"> 79201 : if (!is_file_reported) {</span>
|
||||
<span class="lineNum"> 969 </span><span class="lineCov"> 55565 : if (is_file_already_present) {</span>
|
||||
<span class="lineNum"> 970 </span><span class="lineCov"> 4688 : ++scan->count_change;</span>
|
||||
<span class="lineNum"> 968 </span><span class="lineCov"> 79156 : if (!is_file_reported) {</span>
|
||||
<span class="lineNum"> 969 </span><span class="lineCov"> 55520 : if (is_file_already_present) {</span>
|
||||
<span class="lineNum"> 970 </span><span class="lineCov"> 4643 : ++scan->count_change;</span>
|
||||
<span class="lineNum"> 971 </span> :
|
||||
<span class="lineNum"> 972 </span><span class="lineCov"> 14064 : log_tag("scan:update:%s:%s: %" PRIu64 " %" PRIu64 ".%d -> %" PRIu64 " %" PRIu64 ".%d\n", disk->name, esc_tag(sub, esc_buffer),</span>
|
||||
<span class="lineNum"> 972 </span><span class="lineCov"> 13929 : log_tag("scan:update:%s:%s: %" PRIu64 " %" PRIu64 ".%d -> %" PRIu64 " %" PRIu64 ".%d\n", disk->name, esc_tag(sub, esc_buffer),</span>
|
||||
<span class="lineNum"> 973 </span> : (uint64_t)file_already_present_size, (uint64_t)file_already_present_mtime_sec, file_already_present_mtime_nsec,
|
||||
<span class="lineNum"> 974 </span><span class="lineCov"> 9376 : (uint64_t)file->size, (uint64_t)file->mtime_sec, file->mtime_nsec</span>
|
||||
<span class="lineNum"> 974 </span><span class="lineCov"> 9286 : (uint64_t)file->size, (uint64_t)file->mtime_sec, file->mtime_nsec</span>
|
||||
<span class="lineNum"> 975 </span> : );
|
||||
<span class="lineNum"> 976 </span> :
|
||||
<span class="lineNum"> 977 </span><span class="lineCov"> 4688 : if (is_diff) {</span>
|
||||
<span class="lineNum"> 977 </span><span class="lineCov"> 4643 : if (is_diff) {</span>
|
||||
<span class="lineNum"> 978 </span><span class="lineCov"> 118 : printf("update %s\n", fmt_term(disk, sub, esc_buffer));</span>
|
||||
<span class="lineNum"> 979 </span> : }
|
||||
<span class="lineNum"> 980 </span> : } else {
|
||||
|
|
@ -1050,7 +1050,7 @@
|
|||
<span class="lineNum"> 988 </span> : }
|
||||
<span class="lineNum"> 989 </span> :
|
||||
<span class="lineNum"> 990 </span> : /* insert the file in the delayed list */
|
||||
<span class="lineNum"> 991 </span><span class="lineCov"> 79201 : scan_file_insert(scan, file);</span>
|
||||
<span class="lineNum"> 991 </span><span class="lineCov"> 79156 : scan_file_insert(scan, file);</span>
|
||||
<span class="lineNum"> 992 </span> : }
|
||||
<span class="lineNum"> 993 </span> :
|
||||
<span class="lineNum"> 994 </span> : /**
|
||||
|
|
@ -1584,14 +1584,14 @@
|
|||
<span class="lineNum"> 1522 </span> :
|
||||
<span class="lineNum"> 1523 </span> : /* check for removed files */
|
||||
<span class="lineNum"> 1524 </span><span class="lineCov"> 569 : node = disk->filelist;</span>
|
||||
<span class="lineNum"> 1525 </span><span class="lineCov"> 1033636 : while (node) {</span>
|
||||
<span class="lineNum"> 1526 </span><span class="lineCov"> 1032498 : struct snapraid_file* file = node->data;</span>
|
||||
<span class="lineNum"> 1525 </span><span class="lineCov"> 1033681 : while (node) {</span>
|
||||
<span class="lineNum"> 1526 </span><span class="lineCov"> 1032543 : struct snapraid_file* file = node->data;</span>
|
||||
<span class="lineNum"> 1527 </span> :
|
||||
<span class="lineNum"> 1528 </span> : /* next node */
|
||||
<span class="lineNum"> 1529 </span><span class="lineCov"> 1032498 : node = node->next;</span>
|
||||
<span class="lineNum"> 1529 </span><span class="lineCov"> 1032543 : node = node->next;</span>
|
||||
<span class="lineNum"> 1530 </span> :
|
||||
<span class="lineNum"> 1531 </span> : /* remove if not present */
|
||||
<span class="lineNum"> 1532 </span><span class="lineCov"> 1032498 : if (!file_flag_has(file, FILE_IS_PRESENT)) {</span>
|
||||
<span class="lineNum"> 1532 </span><span class="lineCov"> 1032543 : if (!file_flag_has(file, FILE_IS_PRESENT)) {</span>
|
||||
<span class="lineNum"> 1533 </span><span class="lineCov"> 29647 : ++scan->count_remove;</span>
|
||||
<span class="lineNum"> 1534 </span> :
|
||||
<span class="lineNum"> 1535 </span><span class="lineCov"> 29647 : log_tag("scan:remove:%s:%s\n", disk->name, esc_tag(file->sub, esc_buffer));</span>
|
||||
|
|
@ -1664,11 +1664,11 @@
|
|||
<span class="lineNum"> 1602 </span><span class="lineCov"> 569 : phy_dup = 0;</span>
|
||||
<span class="lineNum"> 1603 </span><span class="lineCov"> 569 : phy_last = FILEPHY_UNREAD_OFFSET;</span>
|
||||
<span class="lineNum"> 1604 </span><span class="lineCov"> 569 : phy_file_last = 0;</span>
|
||||
<span class="lineNum"> 1605 </span><span class="lineCov"> 103019 : while (node) {</span>
|
||||
<span class="lineNum"> 1606 </span><span class="lineCov"> 101881 : struct snapraid_file* file = node->data;</span>
|
||||
<span class="lineNum"> 1605 </span><span class="lineCov"> 102974 : while (node) {</span>
|
||||
<span class="lineNum"> 1606 </span><span class="lineCov"> 101836 : struct snapraid_file* file = node->data;</span>
|
||||
<span class="lineNum"> 1607 </span> :
|
||||
<span class="lineNum"> 1608 </span> : /* if the file is not empty, count duplicate physical offsets */
|
||||
<span class="lineNum"> 1609 </span><span class="lineCov"> 101881 : if (state->opt.force_order == SORT_PHYSICAL && file->size != 0) {</span>
|
||||
<span class="lineNum"> 1609 </span><span class="lineCov"> 101836 : if (state->opt.force_order == SORT_PHYSICAL && file->size != 0) {</span>
|
||||
<span class="lineNum"> 1610 </span><span class="lineCov"> 11418 : if (phy_file_last != 0 && file->physical == phy_last</span>
|
||||
<span class="lineNum"> 1611 </span> : /* files without offset are expected to have duplicates */
|
||||
<span class="lineNum"> 1612 </span><span class="lineNoCov"> 0 : && phy_last != FILEPHY_WITHOUT_OFFSET</span>
|
||||
|
|
@ -1686,10 +1686,10 @@
|
|||
<span class="lineNum"> 1624 </span> : }
|
||||
<span class="lineNum"> 1625 </span> :
|
||||
<span class="lineNum"> 1626 </span> : /* next node */
|
||||
<span class="lineNum"> 1627 </span><span class="lineCov"> 101881 : node = node->next;</span>
|
||||
<span class="lineNum"> 1627 </span><span class="lineCov"> 101836 : node = node->next;</span>
|
||||
<span class="lineNum"> 1628 </span> :
|
||||
<span class="lineNum"> 1629 </span> : /* insert in the parity */
|
||||
<span class="lineNum"> 1630 </span><span class="lineCov"> 101881 : scan_file_allocate(scan, file);</span>
|
||||
<span class="lineNum"> 1630 </span><span class="lineCov"> 101836 : scan_file_allocate(scan, file);</span>
|
||||
<span class="lineNum"> 1631 </span> : }
|
||||
<span class="lineNum"> 1632 </span> :
|
||||
<span class="lineNum"> 1633 </span> : /* mark the disk without reliable physical offset if it has duplicates */
|
||||
|
|
|
|||
|
|
@ -61,11 +61,11 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="scrub.c.gcov.html#217">scrub_parity_reader</a></td>
|
||||
<td class="coverFnHi">168184</td>
|
||||
<td class="coverFnHi">168183</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="scrub.c.gcov.html#103">scrub_data_reader</a></td>
|
||||
<td class="coverFnHi">168178</td>
|
||||
<td class="coverFnHi">168180</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="scrub.c.gcov.html#51">block_is_enabled</a></td>
|
||||
|
|
|
|||
|
|
@ -69,11 +69,11 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="scrub.c.gcov.html#103">scrub_data_reader</a></td>
|
||||
<td class="coverFnHi">168178</td>
|
||||
<td class="coverFnHi">168180</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="scrub.c.gcov.html#217">scrub_parity_reader</a></td>
|
||||
<td class="coverFnHi">168184</td>
|
||||
<td class="coverFnHi">168183</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="scrub.c.gcov.html#715">state_scrub</a></td>
|
||||
|
|
|
|||
|
|
@ -146,16 +146,16 @@
|
|||
<span class="lineNum"> 84 </span><span class="lineCov"> 56244 : blocktime = info_get_time(info);</span>
|
||||
<span class="lineNum"> 85 </span><span class="lineCov"> 56244 : if (blocktime > plan->timelimit) {</span>
|
||||
<span class="lineNum"> 86 </span> : /* skip it */
|
||||
<span class="lineNum"> 87 </span><span class="lineCov"> 9574 : return 0;</span>
|
||||
<span class="lineNum"> 87 </span><span class="lineCov"> 9582 : return 0;</span>
|
||||
<span class="lineNum"> 88 </span> : }
|
||||
<span class="lineNum"> 89 </span> :
|
||||
<span class="lineNum"> 90 </span> : /* if the time is less than the limit, always include */
|
||||
<span class="lineNum"> 91 </span> : /* otherwise, check if we reached the last limit count */
|
||||
<span class="lineNum"> 92 </span><span class="lineCov"> 46670 : if (blocktime == plan->timelimit) {</span>
|
||||
<span class="lineNum"> 92 </span><span class="lineCov"> 46662 : if (blocktime == plan->timelimit) {</span>
|
||||
<span class="lineNum"> 93 </span> : /* if we reached the count limit */
|
||||
<span class="lineNum"> 94 </span><span class="lineCov"> 30132 : if (plan->countlast >= plan->lastlimit) {</span>
|
||||
<span class="lineNum"> 94 </span><span class="lineCov"> 30124 : if (plan->countlast >= plan->lastlimit) {</span>
|
||||
<span class="lineNum"> 95 </span> : /* skip it */
|
||||
<span class="lineNum"> 96 </span><span class="lineCov"> 24940 : return 0;</span>
|
||||
<span class="lineNum"> 96 </span><span class="lineCov"> 24932 : return 0;</span>
|
||||
<span class="lineNum"> 97 </span> : }
|
||||
<span class="lineNum"> 98 </span> :
|
||||
<span class="lineNum"> 99 </span><span class="lineCov"> 5192 : ++plan->countlast;</span>
|
||||
|
|
@ -164,19 +164,19 @@
|
|||
<span class="lineNum"> 102 </span><span class="lineCov"> 21730 : return 1;</span>
|
||||
<a name="103"><span class="lineNum"> 103 </span> : }</a>
|
||||
<span class="lineNum"> 104 </span> :
|
||||
<span class="lineNum"> 105 </span><span class="lineCov"> 168178 : static void scrub_data_reader(struct snapraid_worker* worker, struct snapraid_task* task)</span>
|
||||
<span class="lineNum"> 105 </span><span class="lineCov"> 168180 : static void scrub_data_reader(struct snapraid_worker* worker, struct snapraid_task* task)</span>
|
||||
<span class="lineNum"> 106 </span> : {
|
||||
<span class="lineNum"> 107 </span><span class="lineCov"> 168178 : struct snapraid_io* io = worker->io;</span>
|
||||
<span class="lineNum"> 108 </span><span class="lineCov"> 168178 : struct snapraid_state* state = io->state;</span>
|
||||
<span class="lineNum"> 109 </span><span class="lineCov"> 168178 : struct snapraid_handle* handle = worker->handle;</span>
|
||||
<span class="lineNum"> 110 </span><span class="lineCov"> 168178 : struct snapraid_disk* disk = handle->disk;</span>
|
||||
<span class="lineNum"> 111 </span><span class="lineCov"> 168178 : block_off_t blockcur = task->position;</span>
|
||||
<span class="lineNum"> 112 </span><span class="lineCov"> 168178 : unsigned char* buffer = task->buffer;</span>
|
||||
<span class="lineNum"> 107 </span><span class="lineCov"> 168180 : struct snapraid_io* io = worker->io;</span>
|
||||
<span class="lineNum"> 108 </span><span class="lineCov"> 168180 : struct snapraid_state* state = io->state;</span>
|
||||
<span class="lineNum"> 109 </span><span class="lineCov"> 168180 : struct snapraid_handle* handle = worker->handle;</span>
|
||||
<span class="lineNum"> 110 </span><span class="lineCov"> 168180 : struct snapraid_disk* disk = handle->disk;</span>
|
||||
<span class="lineNum"> 111 </span><span class="lineCov"> 168180 : block_off_t blockcur = task->position;</span>
|
||||
<span class="lineNum"> 112 </span><span class="lineCov"> 168180 : unsigned char* buffer = task->buffer;</span>
|
||||
<span class="lineNum"> 113 </span> : int ret;
|
||||
<span class="lineNum"> 114 </span> : char esc_buffer[ESC_MAX];
|
||||
<span class="lineNum"> 115 </span> :
|
||||
<span class="lineNum"> 116 </span> : /* if the disk position is not used */
|
||||
<span class="lineNum"> 117 </span><span class="lineCov"> 168178 : if (!disk) {</span>
|
||||
<span class="lineNum"> 117 </span><span class="lineCov"> 168180 : if (!disk) {</span>
|
||||
<span class="lineNum"> 118 </span> : /* use an empty block */
|
||||
<span class="lineNum"> 119 </span><span class="lineNoCov"> 0 : memset(buffer, 0, state->block_size);</span>
|
||||
<span class="lineNum"> 120 </span><span class="lineNoCov"> 0 : task->state = TASK_STATE_DONE;</span>
|
||||
|
|
@ -184,10 +184,10 @@
|
|||
<span class="lineNum"> 122 </span> : }
|
||||
<span class="lineNum"> 123 </span> :
|
||||
<span class="lineNum"> 124 </span> : /* get the block */
|
||||
<span class="lineNum"> 125 </span><span class="lineCov"> 168178 : task->block = fs_par2block_find(disk, blockcur);</span>
|
||||
<span class="lineNum"> 125 </span><span class="lineCov"> 168180 : task->block = fs_par2block_find(disk, blockcur);</span>
|
||||
<span class="lineNum"> 126 </span> :
|
||||
<span class="lineNum"> 127 </span> : /* if the block is not used */
|
||||
<span class="lineNum"> 128 </span><span class="lineCov"> 168143 : if (!block_has_file(task->block)) {</span>
|
||||
<span class="lineNum"> 128 </span><span class="lineCov"> 168136 : if (!block_has_file(task->block)) {</span>
|
||||
<span class="lineNum"> 129 </span> : /* use an empty block */
|
||||
<span class="lineNum"> 130 </span><span class="lineCov"> 1585 : memset(buffer, 0, state->block_size);</span>
|
||||
<span class="lineNum"> 131 </span><span class="lineCov"> 1585 : task->state = TASK_STATE_DONE;</span>
|
||||
|
|
@ -195,14 +195,14 @@
|
|||
<span class="lineNum"> 133 </span> : }
|
||||
<span class="lineNum"> 134 </span> :
|
||||
<span class="lineNum"> 135 </span> : /* get the file of this block */
|
||||
<span class="lineNum"> 136 </span><span class="lineCov"> 166543 : task->file = fs_par2file_get(disk, blockcur, &task->file_pos);</span>
|
||||
<span class="lineNum"> 136 </span><span class="lineCov"> 166540 : task->file = fs_par2file_get(disk, blockcur, &task->file_pos);</span>
|
||||
<span class="lineNum"> 137 </span> :
|
||||
<span class="lineNum"> 138 </span> : /* if the file is different than the current one, close it */
|
||||
<span class="lineNum"> 139 </span><span class="lineCov"> 166579 : if (handle->file != 0 && handle->file != task->file) {</span>
|
||||
<span class="lineNum"> 139 </span><span class="lineCov"> 166578 : if (handle->file != 0 && handle->file != task->file) {</span>
|
||||
<span class="lineNum"> 140 </span> : /* keep a pointer at the file we are going to close for error reporting */
|
||||
<span class="lineNum"> 141 </span><span class="lineCov"> 78065 : struct snapraid_file* report = handle->file;</span>
|
||||
<span class="lineNum"> 142 </span><span class="lineCov"> 78065 : ret = handle_close(handle);</span>
|
||||
<span class="lineNum"> 143 </span><span class="lineCov"> 78039 : if (ret == -1) {</span>
|
||||
<span class="lineNum"> 141 </span><span class="lineCov"> 78089 : struct snapraid_file* report = handle->file;</span>
|
||||
<span class="lineNum"> 142 </span><span class="lineCov"> 78089 : ret = handle_close(handle);</span>
|
||||
<span class="lineNum"> 143 </span><span class="lineCov"> 78065 : if (ret == -1) {</span>
|
||||
<span class="lineNum"> 144 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 145 </span> : /* This one is really an unexpected error, because we are only reading */
|
||||
<span class="lineNum"> 146 </span> : /* and closing a descriptor should never fail */
|
||||
|
|
@ -225,8 +225,8 @@
|
|||
<span class="lineNum"> 163 </span> : }
|
||||
<span class="lineNum"> 164 </span> : }
|
||||
<span class="lineNum"> 165 </span> :
|
||||
<span class="lineNum"> 166 </span><span class="lineCov"> 166553 : ret = handle_open(handle, task->file, state->file_mode, log_error, 0);</span>
|
||||
<span class="lineNum"> 167 </span><span class="lineCov"> 166585 : if (ret == -1) {</span>
|
||||
<span class="lineNum"> 166 </span><span class="lineCov"> 166554 : ret = handle_open(handle, task->file, state->file_mode, log_error, 0);</span>
|
||||
<span class="lineNum"> 167 </span><span class="lineCov"> 166583 : if (ret == -1) {</span>
|
||||
<span class="lineNum"> 168 </span><span class="lineNoCov"> 0 : if (errno == EIO) {</span>
|
||||
<span class="lineNum"> 169 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 170 </span> : log_tag("error:%u:%s:%s: Open EIO error. %s\n", blockcur, disk->name, esc_tag(task->file->sub, esc_buffer), strerror(errno));
|
||||
|
|
@ -244,8 +244,8 @@
|
|||
<span class="lineNum"> 182 </span> : }
|
||||
<span class="lineNum"> 183 </span> :
|
||||
<span class="lineNum"> 184 </span> : /* check if the file is changed */
|
||||
<span class="lineNum"> 185 </span><span class="lineCov"> 166585 : if (handle->st.st_size != task->file->size</span>
|
||||
<span class="lineNum"> 186 </span><span class="lineCov"> 166583 : || handle->st.st_mtime != task->file->mtime_sec</span>
|
||||
<span class="lineNum"> 185 </span><span class="lineCov"> 166583 : if (handle->st.st_size != task->file->size</span>
|
||||
<span class="lineNum"> 186 </span><span class="lineCov"> 166586 : || handle->st.st_mtime != task->file->mtime_sec</span>
|
||||
<span class="lineNum"> 187 </span><span class="lineCov"> 160991 : || STAT_NSEC(&handle->st) != task->file->mtime_nsec</span>
|
||||
<span class="lineNum"> 188 </span> : /* don't check the inode to support filesystem without persistent inodes */
|
||||
<span class="lineNum"> 189 </span> : ) {
|
||||
|
|
@ -258,7 +258,7 @@
|
|||
<span class="lineNum"> 196 </span> : /* from the last sync, as we are expected to return errors if running */
|
||||
<span class="lineNum"> 197 </span> : /* in an unsynced array. This is just like the check command. */
|
||||
<span class="lineNum"> 198 </span> :
|
||||
<span class="lineNum"> 199 </span><span class="lineCov"> 166585 : task->read_size = handle_read(handle, task->file_pos, buffer, state->block_size, log_error, 0);</span>
|
||||
<span class="lineNum"> 199 </span><span class="lineCov"> 166583 : task->read_size = handle_read(handle, task->file_pos, buffer, state->block_size, log_error, 0);</span>
|
||||
<span class="lineNum"> 200 </span><span class="lineCov"> 166516 : if (task->read_size == -1) {</span>
|
||||
<span class="lineNum"> 201 </span><span class="lineNoCov"> 0 : if (errno == EIO) {</span>
|
||||
<span class="lineNum"> 202 </span><span class="lineNoCov"> 0 : log_tag("error:%u:%s:%s: Read EIO error at position %u. %s\n", blockcur, disk->name, esc_tag(task->file->sub, esc_buffer), task->file_pos, strerror(errno));</span>
|
||||
|
|
@ -275,22 +275,22 @@
|
|||
<span class="lineNum"> 213 </span> : /* store the path of the opened file */
|
||||
<span class="lineNum"> 214 </span><span class="lineCov"> 166516 : pathcpy(task->path, sizeof(task->path), handle->path);</span>
|
||||
<span class="lineNum"> 215 </span> :
|
||||
<span class="lineNum"> 216 </span><span class="lineCov"> 166568 : task->state = TASK_STATE_DONE;</span>
|
||||
<span class="lineNum"> 216 </span><span class="lineCov"> 166573 : task->state = TASK_STATE_DONE;</span>
|
||||
<a name="217"><span class="lineNum"> 217 </span> : }</a>
|
||||
<span class="lineNum"> 218 </span> :
|
||||
<span class="lineNum"> 219 </span><span class="lineCov"> 168184 : static void scrub_parity_reader(struct snapraid_worker* worker, struct snapraid_task* task)</span>
|
||||
<span class="lineNum"> 219 </span><span class="lineCov"> 168183 : static void scrub_parity_reader(struct snapraid_worker* worker, struct snapraid_task* task)</span>
|
||||
<span class="lineNum"> 220 </span> : {
|
||||
<span class="lineNum"> 221 </span><span class="lineCov"> 168184 : struct snapraid_io* io = worker->io;</span>
|
||||
<span class="lineNum"> 222 </span><span class="lineCov"> 168184 : struct snapraid_state* state = io->state;</span>
|
||||
<span class="lineNum"> 223 </span><span class="lineCov"> 168184 : struct snapraid_parity_handle* parity_handle = worker->parity_handle;</span>
|
||||
<span class="lineNum"> 224 </span><span class="lineCov"> 168184 : unsigned level = parity_handle->level;</span>
|
||||
<span class="lineNum"> 225 </span><span class="lineCov"> 168184 : block_off_t blockcur = task->position;</span>
|
||||
<span class="lineNum"> 226 </span><span class="lineCov"> 168184 : unsigned char* buffer = task->buffer;</span>
|
||||
<span class="lineNum"> 221 </span><span class="lineCov"> 168183 : struct snapraid_io* io = worker->io;</span>
|
||||
<span class="lineNum"> 222 </span><span class="lineCov"> 168183 : struct snapraid_state* state = io->state;</span>
|
||||
<span class="lineNum"> 223 </span><span class="lineCov"> 168183 : struct snapraid_parity_handle* parity_handle = worker->parity_handle;</span>
|
||||
<span class="lineNum"> 224 </span><span class="lineCov"> 168183 : unsigned level = parity_handle->level;</span>
|
||||
<span class="lineNum"> 225 </span><span class="lineCov"> 168183 : block_off_t blockcur = task->position;</span>
|
||||
<span class="lineNum"> 226 </span><span class="lineCov"> 168183 : unsigned char* buffer = task->buffer;</span>
|
||||
<span class="lineNum"> 227 </span> : int ret;
|
||||
<span class="lineNum"> 228 </span> :
|
||||
<span class="lineNum"> 229 </span> : /* read the parity */
|
||||
<span class="lineNum"> 230 </span><span class="lineCov"> 168184 : ret = parity_read(parity_handle, blockcur, buffer, state->block_size, log_error);</span>
|
||||
<span class="lineNum"> 231 </span><span class="lineCov"> 168168 : if (ret == -1) {</span>
|
||||
<span class="lineNum"> 230 </span><span class="lineCov"> 168183 : ret = parity_read(parity_handle, blockcur, buffer, state->block_size, log_error);</span>
|
||||
<span class="lineNum"> 231 </span><span class="lineCov"> 167659 : if (ret == -1) {</span>
|
||||
<span class="lineNum"> 232 </span><span class="lineNoCov"> 0 : if (errno == EIO) {</span>
|
||||
<span class="lineNum"> 233 </span><span class="lineNoCov"> 0 : log_tag("parity_error:%u:%s: Read EIO error. %s\n", blockcur, lev_config_name(level), strerror(errno));</span>
|
||||
<span class="lineNum"> 234 </span><span class="lineNoCov"> 0 : log_error("Input/Output error in parity '%s' at position '%u'\n", lev_config_name(level), blockcur);</span>
|
||||
|
|
@ -303,7 +303,7 @@
|
|||
<span class="lineNum"> 241 </span><span class="lineNoCov"> 0 : return;</span>
|
||||
<span class="lineNum"> 242 </span> : }
|
||||
<span class="lineNum"> 243 </span> :
|
||||
<span class="lineNum"> 244 </span><span class="lineCov"> 168168 : task->state = TASK_STATE_DONE;</span>
|
||||
<span class="lineNum"> 244 </span><span class="lineCov"> 167659 : task->state = TASK_STATE_DONE;</span>
|
||||
<a name="245"><span class="lineNum"> 245 </span> : }</a>
|
||||
<span class="lineNum"> 246 </span> :
|
||||
<span class="lineNum"> 247 </span><span class="lineCov"> 11 : static int state_scrub_process(struct snapraid_state* state, struct snapraid_parity_handle* parity_handle, block_off_t blockstart, block_off_t blockmax, struct snapraid_plan* plan, time_t now)</span>
|
||||
|
|
@ -872,12 +872,12 @@
|
|||
<span class="lineNum"> 810 </span> : /* output the info map */
|
||||
<span class="lineNum"> 811 </span><span class="lineCov"> 11 : i = 0;</span>
|
||||
<span class="lineNum"> 812 </span><span class="lineCov"> 11 : log_tag("info_count:%u\n", count);</span>
|
||||
<span class="lineNum"> 813 </span><span class="lineCov"> 40 : while (i < count) {</span>
|
||||
<span class="lineNum"> 814 </span><span class="lineCov"> 18 : unsigned j = i + 1;</span>
|
||||
<span class="lineNum"> 815 </span><span class="lineCov"> 56103 : while (j < count && timemap[i] == timemap[j])</span>
|
||||
<span class="lineNum"> 816 </span><span class="lineCov"> 56067 : ++j;</span>
|
||||
<span class="lineNum"> 817 </span><span class="lineCov"> 18 : log_tag("info_time:%" PRIu64 ":%u\n", (uint64_t)timemap[i], j - i);</span>
|
||||
<span class="lineNum"> 818 </span><span class="lineCov"> 18 : i = j;</span>
|
||||
<span class="lineNum"> 813 </span><span class="lineCov"> 43 : while (i < count) {</span>
|
||||
<span class="lineNum"> 814 </span><span class="lineCov"> 21 : unsigned j = i + 1;</span>
|
||||
<span class="lineNum"> 815 </span><span class="lineCov"> 56106 : while (j < count && timemap[i] == timemap[j])</span>
|
||||
<span class="lineNum"> 816 </span><span class="lineCov"> 56064 : ++j;</span>
|
||||
<span class="lineNum"> 817 </span><span class="lineCov"> 21 : log_tag("info_time:%" PRIu64 ":%u\n", (uint64_t)timemap[i], j - i);</span>
|
||||
<span class="lineNum"> 818 </span><span class="lineCov"> 21 : i = j;</span>
|
||||
<span class="lineNum"> 819 </span> : }
|
||||
<span class="lineNum"> 820 </span> :
|
||||
<span class="lineNum"> 821 </span> : /* compute the limits from count/recentlimit */
|
||||
|
|
|
|||
|
|
@ -61,19 +61,19 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="search.c.gcov.html#24">search_file</a></td>
|
||||
<td class="coverFnHi">1844175</td>
|
||||
<td class="coverFnHi">1843728</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="search.c.gcov.html#40">search_file_free</a></td>
|
||||
<td class="coverFnHi">1844175</td>
|
||||
<td class="coverFnHi">1843728</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="search.c.gcov.html#124">state_search_fetch</a></td>
|
||||
<td class="coverFnHi">638351</td>
|
||||
<td class="coverFnHi">639176</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="search.c.gcov.html#56">search_file_compare</a></td>
|
||||
<td class="coverFnHi">20091</td>
|
||||
<td class="coverFnHi">20130</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="search.c.gcov.html#149">search_dir</a></td>
|
||||
|
|
|
|||
|
|
@ -65,15 +65,15 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="search.c.gcov.html#24">search_file</a></td>
|
||||
<td class="coverFnHi">1844175</td>
|
||||
<td class="coverFnHi">1843728</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="search.c.gcov.html#56">search_file_compare</a></td>
|
||||
<td class="coverFnHi">20091</td>
|
||||
<td class="coverFnHi">20130</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="search.c.gcov.html#40">search_file_free</a></td>
|
||||
<td class="coverFnHi">1844175</td>
|
||||
<td class="coverFnHi">1843728</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="search.c.gcov.html#255">state_search</a></td>
|
||||
|
|
@ -85,7 +85,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="search.c.gcov.html#124">state_search_fetch</a></td>
|
||||
<td class="coverFnHi">638351</td>
|
||||
<td class="coverFnHi">639176</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
|
|
|
|||
|
|
@ -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"> 1844175 : 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"> 1843728 : 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"> 1844175 : file = malloc_nofail(sizeof(struct snapraid_search_file));</span>
|
||||
<span class="lineNum"> 32 </span><span class="lineCov"> 1844175 : file->path = strdup_nofail(path);</span>
|
||||
<span class="lineNum"> 33 </span><span class="lineCov"> 1844175 : file->size = size;</span>
|
||||
<span class="lineNum"> 34 </span><span class="lineCov"> 1844175 : file->mtime_sec = mtime_sec;</span>
|
||||
<span class="lineNum"> 35 </span><span class="lineCov"> 1844175 : file->mtime_nsec = mtime_nsec;</span>
|
||||
<span class="lineNum"> 31 </span><span class="lineCov"> 1843728 : file = malloc_nofail(sizeof(struct snapraid_search_file));</span>
|
||||
<span class="lineNum"> 32 </span><span class="lineCov"> 1843728 : file->path = strdup_nofail(path);</span>
|
||||
<span class="lineNum"> 33 </span><span class="lineCov"> 1843728 : file->size = size;</span>
|
||||
<span class="lineNum"> 34 </span><span class="lineCov"> 1843728 : file->mtime_sec = mtime_sec;</span>
|
||||
<span class="lineNum"> 35 </span><span class="lineCov"> 1843728 : file->mtime_nsec = mtime_nsec;</span>
|
||||
<span class="lineNum"> 36 </span> :
|
||||
<span class="lineNum"> 37 </span><span class="lineCov"> 1844175 : file_hash = file_stamp_hash(file->size, file->mtime_sec, file->mtime_nsec);</span>
|
||||
<span class="lineNum"> 37 </span><span class="lineCov"> 1843728 : 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"> 1844175 : tommy_hashdyn_insert(&state->searchset, &file->node, file, file_hash);</span>
|
||||
<a name="40"><span class="lineNum"> 40 </span><span class="lineCov"> 1844175 : }</span></a>
|
||||
<span class="lineNum"> 39 </span><span class="lineCov"> 1843728 : tommy_hashdyn_insert(&state->searchset, &file->node, file, file_hash);</span>
|
||||
<a name="40"><span class="lineNum"> 40 </span><span class="lineCov"> 1843728 : }</span></a>
|
||||
<span class="lineNum"> 41 </span> :
|
||||
<span class="lineNum"> 42 </span><span class="lineCov"> 1844175 : void search_file_free(struct snapraid_search_file* file)</span>
|
||||
<span class="lineNum"> 42 </span><span class="lineCov"> 1843728 : void search_file_free(struct snapraid_search_file* file)</span>
|
||||
<span class="lineNum"> 43 </span> : {
|
||||
<span class="lineNum"> 44 </span><span class="lineCov"> 1844175 : free(file->path);</span>
|
||||
<span class="lineNum"> 45 </span><span class="lineCov"> 1844175 : free(file);</span>
|
||||
<span class="lineNum"> 46 </span><span class="lineCov"> 1844175 : }</span>
|
||||
<span class="lineNum"> 44 </span><span class="lineCov"> 1843728 : free(file->path);</span>
|
||||
<span class="lineNum"> 45 </span><span class="lineCov"> 1843728 : free(file);</span>
|
||||
<span class="lineNum"> 46 </span><span class="lineCov"> 1843728 : }</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"> 20091 : int search_file_compare(const void* void_arg, const void* void_data)</span>
|
||||
<span class="lineNum"> 58 </span><span class="lineCov"> 20130 : 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"> 20091 : const struct search_file_compare_arg* arg = void_arg;</span>
|
||||
<span class="lineNum"> 61 </span><span class="lineCov"> 20091 : const struct snapraid_search_file* file = void_data;</span>
|
||||
<span class="lineNum"> 62 </span><span class="lineCov"> 20091 : const struct snapraid_state* state = arg->state;</span>
|
||||
<span class="lineNum"> 60 </span><span class="lineCov"> 20130 : const struct search_file_compare_arg* arg = void_arg;</span>
|
||||
<span class="lineNum"> 61 </span><span class="lineCov"> 20130 : const struct snapraid_search_file* file = void_data;</span>
|
||||
<span class="lineNum"> 62 </span><span class="lineCov"> 20130 : const struct snapraid_state* state = arg->state;</span>
|
||||
<span class="lineNum"> 63 </span> : unsigned char buffer_hash[HASH_MAX];
|
||||
<span class="lineNum"> 64 </span><span class="lineCov"> 20091 : const char* path = file->path;</span>
|
||||
<span class="lineNum"> 64 </span><span class="lineCov"> 20130 : 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"> 20091 : if (arg->file->size != file->size)</span>
|
||||
<span class="lineNum"> 69 </span><span class="lineCov"> 20130 : 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"> 20091 : if (arg->file->mtime_sec != file->mtime_sec)</span>
|
||||
<span class="lineNum"> 72 </span><span class="lineCov"> 20130 : 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"> 20091 : if (arg->file->mtime_nsec != file->mtime_nsec)</span>
|
||||
<span class="lineNum"> 75 </span><span class="lineCov"> 20130 : 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"> 20091 : f = open(path, O_RDONLY | O_BINARY);</span>
|
||||
<span class="lineNum"> 80 </span><span class="lineCov"> 20091 : if (f == -1) {</span>
|
||||
<span class="lineNum"> 79 </span><span class="lineCov"> 20130 : f = open(path, O_RDONLY | O_BINARY);</span>
|
||||
<span class="lineNum"> 80 </span><span class="lineCov"> 20130 : 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,16 +151,16 @@
|
|||
<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"> 20091 : ret = pread(f, arg->buffer, arg->read_size, arg->offset);</span>
|
||||
<span class="lineNum"> 93 </span><span class="lineCov"> 20091 : if (ret < 0 || (unsigned)ret != arg->read_size) {</span>
|
||||
<span class="lineNum"> 92 </span><span class="lineCov"> 20130 : ret = pread(f, arg->buffer, arg->read_size, arg->offset);</span>
|
||||
<span class="lineNum"> 93 </span><span class="lineCov"> 20130 : if (ret < 0 || (unsigned)ret != arg->read_size) {</span>
|
||||
<span class="lineNum"> 94 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 95 </span> : log_fatal("Error reading file '%s'. %s.\n", path, strerror(errno));
|
||||
<span class="lineNum"> 96 </span> : exit(EXIT_FAILURE);
|
||||
<span class="lineNum"> 97 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 98 </span> : }
|
||||
<span class="lineNum"> 99 </span> :
|
||||
<span class="lineNum"> 100 </span><span class="lineCov"> 20091 : ret = close(f);</span>
|
||||
<span class="lineNum"> 101 </span><span class="lineCov"> 20091 : if (ret != 0) {</span>
|
||||
<span class="lineNum"> 100 </span><span class="lineCov"> 20130 : ret = close(f);</span>
|
||||
<span class="lineNum"> 101 </span><span class="lineCov"> 20130 : if (ret != 0) {</span>
|
||||
<span class="lineNum"> 102 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 103 </span> : log_fatal("Error closing file '%s'. %s.\n", path, strerror(errno));
|
||||
<span class="lineNum"> 104 </span> : exit(EXIT_FAILURE);
|
||||
|
|
@ -168,14 +168,14 @@
|
|||
<span class="lineNum"> 106 </span> : }
|
||||
<span class="lineNum"> 107 </span> :
|
||||
<span class="lineNum"> 108 </span> : /* compute the hash */
|
||||
<span class="lineNum"> 109 </span><span class="lineCov"> 20091 : if (arg->prevhash)</span>
|
||||
<span class="lineNum"> 109 </span><span class="lineCov"> 20130 : if (arg->prevhash)</span>
|
||||
<span class="lineNum"> 110 </span><span class="lineNoCov"> 0 : memhash(state->prevhash, state->prevhashseed, buffer_hash, arg->buffer, arg->read_size);</span>
|
||||
<span class="lineNum"> 111 </span> : else
|
||||
<span class="lineNum"> 112 </span><span class="lineCov"> 20091 : memhash(state->hash, state->hashseed, buffer_hash, arg->buffer, arg->read_size);</span>
|
||||
<span class="lineNum"> 112 </span><span class="lineCov"> 20130 : memhash(state->hash, state->hashseed, buffer_hash, arg->buffer, arg->read_size);</span>
|
||||
<span class="lineNum"> 113 </span> :
|
||||
<span class="lineNum"> 114 </span> : /* check if the hash is matching */
|
||||
<span class="lineNum"> 115 </span><span class="lineCov"> 20091 : if (memcmp(buffer_hash, arg->block->hash, BLOCK_HASH_SIZE) != 0)</span>
|
||||
<span class="lineNum"> 116 </span><span class="lineCov"> 2181 : return -1;</span>
|
||||
<span class="lineNum"> 115 </span><span class="lineCov"> 20130 : if (memcmp(buffer_hash, arg->block->hash, BLOCK_HASH_SIZE) != 0)</span>
|
||||
<span class="lineNum"> 116 </span><span class="lineCov"> 2220 : return -1;</span>
|
||||
<span class="lineNum"> 117 </span> :
|
||||
<span class="lineNum"> 118 </span><span class="lineCov"> 17910 : if (arg->read_size != state->block_size) {</span>
|
||||
<span class="lineNum"> 119 </span> : /* fill the remaining with 0 */
|
||||
|
|
@ -185,26 +185,26 @@
|
|||
<span class="lineNum"> 123 </span><span class="lineCov"> 17910 : return 0;</span>
|
||||
<a name="124"><span class="lineNum"> 124 </span> : }</a>
|
||||
<span class="lineNum"> 125 </span> :
|
||||
<span class="lineNum"> 126 </span><span class="lineCov"> 638351 : 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"> 126 </span><span class="lineCov"> 639176 : 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"> 127 </span> : {
|
||||
<span class="lineNum"> 128 </span> : struct snapraid_search_file* file;
|
||||
<span class="lineNum"> 129 </span> : tommy_uint32_t file_hash;
|
||||
<span class="lineNum"> 130 </span> : struct search_file_compare_arg arg;
|
||||
<span class="lineNum"> 131 </span> :
|
||||
<span class="lineNum"> 132 </span><span class="lineCov"> 638351 : arg.state = state;</span>
|
||||
<span class="lineNum"> 133 </span><span class="lineCov"> 638351 : arg.block = missing_block;</span>
|
||||
<span class="lineNum"> 134 </span><span class="lineCov"> 638351 : arg.file = missing_file;</span>
|
||||
<span class="lineNum"> 135 </span><span class="lineCov"> 638351 : arg.buffer = buffer;</span>
|
||||
<span class="lineNum"> 136 </span><span class="lineCov"> 638351 : arg.offset = state->block_size * (data_off_t)missing_file_pos;</span>
|
||||
<span class="lineNum"> 137 </span><span class="lineCov"> 638351 : arg.read_size = file_block_size(missing_file, missing_file_pos, state->block_size);</span>
|
||||
<span class="lineNum"> 138 </span><span class="lineCov"> 638351 : arg.prevhash = prevhash;</span>
|
||||
<span class="lineNum"> 132 </span><span class="lineCov"> 639176 : arg.state = state;</span>
|
||||
<span class="lineNum"> 133 </span><span class="lineCov"> 639176 : arg.block = missing_block;</span>
|
||||
<span class="lineNum"> 134 </span><span class="lineCov"> 639176 : arg.file = missing_file;</span>
|
||||
<span class="lineNum"> 135 </span><span class="lineCov"> 639176 : arg.buffer = buffer;</span>
|
||||
<span class="lineNum"> 136 </span><span class="lineCov"> 639176 : arg.offset = state->block_size * (data_off_t)missing_file_pos;</span>
|
||||
<span class="lineNum"> 137 </span><span class="lineCov"> 639176 : arg.read_size = file_block_size(missing_file, missing_file_pos, state->block_size);</span>
|
||||
<span class="lineNum"> 138 </span><span class="lineCov"> 639176 : arg.prevhash = prevhash;</span>
|
||||
<span class="lineNum"> 139 </span> :
|
||||
<span class="lineNum"> 140 </span><span class="lineCov"> 638351 : file_hash = file_stamp_hash(arg.file->size, arg.file->mtime_sec, arg.file->mtime_nsec);</span>
|
||||
<span class="lineNum"> 140 </span><span class="lineCov"> 639176 : file_hash = file_stamp_hash(arg.file->size, arg.file->mtime_sec, arg.file->mtime_nsec);</span>
|
||||
<span class="lineNum"> 141 </span> :
|
||||
<span class="lineNum"> 142 </span> : /* search in the hashtable, and also check if the data matches the hash */
|
||||
<span class="lineNum"> 143 </span><span class="lineCov"> 638351 : file = tommy_hashdyn_search(&state->searchset, search_file_compare, &arg, file_hash);</span>
|
||||
<span class="lineNum"> 144 </span><span class="lineCov"> 638351 : if (!file)</span>
|
||||
<span class="lineNum"> 145 </span><span class="lineCov"> 620441 : return -1;</span>
|
||||
<span class="lineNum"> 143 </span><span class="lineCov"> 639176 : file = tommy_hashdyn_search(&state->searchset, search_file_compare, &arg, file_hash);</span>
|
||||
<span class="lineNum"> 144 </span><span class="lineCov"> 639176 : if (!file)</span>
|
||||
<span class="lineNum"> 145 </span><span class="lineCov"> 621266 : return -1;</span>
|
||||
<span class="lineNum"> 146 </span> :
|
||||
<span class="lineNum"> 147 </span> : /* if found, buffer is already set with data */
|
||||
<span class="lineNum"> 148 </span><span class="lineCov"> 17910 : return 0;</span>
|
||||
|
|
@ -226,40 +226,40 @@
|
|||
<span class="lineNum"> 164 </span> : char path_next[PATH_MAX];
|
||||
<span class="lineNum"> 165 </span> : char sub_next[PATH_MAX];
|
||||
<span class="lineNum"> 166 </span> : char out[PATH_MAX];
|
||||
<span class="lineNum"> 167 </span><span class="lineCov"> 2040434 : struct snapraid_filter* reason = 0;</span>
|
||||
<span class="lineNum"> 167 </span><span class="lineCov"> 2040132 : struct snapraid_filter* reason = 0;</span>
|
||||
<span class="lineNum"> 168 </span> : struct stat st;
|
||||
<span class="lineNum"> 169 </span> : const char* name;
|
||||
<span class="lineNum"> 170 </span> : struct dirent* dd;
|
||||
<span class="lineNum"> 171 </span> :
|
||||
<span class="lineNum"> 172 </span> : /* clear errno to detect erroneous conditions */
|
||||
<span class="lineNum"> 173 </span><span class="lineCov"> 2040434 : errno = 0;</span>
|
||||
<span class="lineNum"> 174 </span><span class="lineCov"> 2040434 : dd = readdir(d);</span>
|
||||
<span class="lineNum"> 175 </span><span class="lineCov"> 2040434 : if (dd == 0 && errno != 0) {</span>
|
||||
<span class="lineNum"> 173 </span><span class="lineCov"> 2040132 : errno = 0;</span>
|
||||
<span class="lineNum"> 174 </span><span class="lineCov"> 2040132 : dd = readdir(d);</span>
|
||||
<span class="lineNum"> 175 </span><span class="lineCov"> 2040132 : if (dd == 0 && errno != 0) {</span>
|
||||
<span class="lineNum"> 176 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 177 </span> : log_fatal("Error reading directory '%s'. %s.\n", dir, strerror(errno));
|
||||
<span class="lineNum"> 178 </span> : exit(EXIT_FAILURE);
|
||||
<span class="lineNum"> 179 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 180 </span> : }
|
||||
<span class="lineNum"> 181 </span><span class="lineCov"> 2040434 : if (dd == 0) {</span>
|
||||
<span class="lineNum"> 181 </span><span class="lineCov"> 2040132 : if (dd == 0) {</span>
|
||||
<span class="lineNum"> 182 </span><span class="lineCov"> 2462 : break; /* finished */</span>
|
||||
<span class="lineNum"> 183 </span> : }
|
||||
<span class="lineNum"> 184 </span> :
|
||||
<span class="lineNum"> 185 </span> : /* skip "." and ".." files */
|
||||
<span class="lineNum"> 186 </span><span class="lineCov"> 2037972 : name = dd->d_name;</span>
|
||||
<span class="lineNum"> 187 </span><span class="lineCov"> 2037972 : if (name[0] == '.' && (name[1] == 0 || (name[1] == '.' && name[2] == 0)))</span>
|
||||
<span class="lineNum"> 186 </span><span class="lineCov"> 2037670 : name = dd->d_name;</span>
|
||||
<span class="lineNum"> 187 </span><span class="lineCov"> 2037670 : if (name[0] == '.' && (name[1] == 0 || (name[1] == '.' && name[2] == 0)))</span>
|
||||
<span class="lineNum"> 188 </span><span class="lineCov"> 9848 : continue;</span>
|
||||
<span class="lineNum"> 189 </span> :
|
||||
<span class="lineNum"> 190 </span><span class="lineCov"> 2033048 : pathprint(path_next, sizeof(path_next), "%s%s", dir, name);</span>
|
||||
<span class="lineNum"> 191 </span><span class="lineCov"> 2033048 : pathprint(sub_next, sizeof(sub_next), "%s%s", sub, name);</span>
|
||||
<span class="lineNum"> 190 </span><span class="lineCov"> 2032746 : pathprint(path_next, sizeof(path_next), "%s%s", dir, name);</span>
|
||||
<span class="lineNum"> 191 </span><span class="lineCov"> 2032746 : pathprint(sub_next, sizeof(sub_next), "%s%s", sub, name);</span>
|
||||
<span class="lineNum"> 192 </span> :
|
||||
<span class="lineNum"> 193 </span> : /* exclude hidden files even before calling lstat() */
|
||||
<span class="lineNum"> 194 </span><span class="lineCov"> 2033048 : if (disk != 0 && filter_hidden(state->filter_hidden, dd) != 0) {</span>
|
||||
<span class="lineNum"> 194 </span><span class="lineCov"> 2032746 : if (disk != 0 && filter_hidden(state->filter_hidden, dd) != 0) {</span>
|
||||
<span class="lineNum"> 195 </span><span class="lineNoCov"> 0 : msg_verbose("Excluding hidden '%s'\n", path_next);</span>
|
||||
<span class="lineNum"> 196 </span><span class="lineNoCov"> 0 : continue;</span>
|
||||
<span class="lineNum"> 197 </span> : }
|
||||
<span class="lineNum"> 198 </span> :
|
||||
<span class="lineNum"> 199 </span> : /* exclude content files even before calling lstat() */
|
||||
<span class="lineNum"> 200 </span><span class="lineCov"> 2033048 : if (disk != 0 && filter_content(&state->contentlist, path_next) != 0) {</span>
|
||||
<span class="lineNum"> 200 </span><span class="lineCov"> 2032746 : if (disk != 0 && filter_content(&state->contentlist, path_next) != 0) {</span>
|
||||
<span class="lineNum"> 201 </span><span class="lineNoCov"> 0 : msg_verbose("Excluding content '%s'\n", path_next);</span>
|
||||
<span class="lineNum"> 202 </span><span class="lineNoCov"> 0 : continue;</span>
|
||||
<span class="lineNum"> 203 </span> : }
|
||||
|
|
@ -283,7 +283,7 @@
|
|||
<span class="lineNum"> 221 </span> : }
|
||||
<span class="lineNum"> 222 </span> : #else
|
||||
<span class="lineNum"> 223 </span> : /* get lstat info about the file */
|
||||
<span class="lineNum"> 224 </span><span class="lineCov"> 2033048 : if (lstat(path_next, &st) != 0) {</span>
|
||||
<span class="lineNum"> 224 </span><span class="lineCov"> 2032746 : if (lstat(path_next, &st) != 0) {</span>
|
||||
<span class="lineNum"> 225 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 226 </span> : log_fatal("Error in stat file/directory '%s'. %s.\n", path_next, strerror(errno));
|
||||
<span class="lineNum"> 227 </span> : exit(EXIT_FAILURE);
|
||||
|
|
@ -291,13 +291,13 @@
|
|||
<span class="lineNum"> 229 </span> : }
|
||||
<span class="lineNum"> 230 </span> : #endif
|
||||
<span class="lineNum"> 231 </span> :
|
||||
<span class="lineNum"> 232 </span><span class="lineCov"> 2033048 : if (S_ISREG(st.st_mode)) {</span>
|
||||
<span class="lineNum"> 233 </span><span class="lineCov"> 1968786 : if (disk == 0 || filter_path(&state->filterlist, &reason, disk->name, sub_next) == 0) {</span>
|
||||
<span class="lineNum"> 234 </span><span class="lineCov"> 1844175 : search_file(state, path_next, st.st_size, st.st_mtime, STAT_NSEC(&st));</span>
|
||||
<span class="lineNum"> 232 </span><span class="lineCov"> 2032746 : if (S_ISREG(st.st_mode)) {</span>
|
||||
<span class="lineNum"> 233 </span><span class="lineCov"> 1968447 : if (disk == 0 || filter_path(&state->filterlist, &reason, disk->name, sub_next) == 0) {</span>
|
||||
<span class="lineNum"> 234 </span><span class="lineCov"> 1843728 : search_file(state, path_next, st.st_size, st.st_mtime, STAT_NSEC(&st));</span>
|
||||
<span class="lineNum"> 235 </span> : } else {
|
||||
<span class="lineNum"> 236 </span><span class="lineCov"> 124611 : msg_verbose("Excluding link '%s' for rule '%s'\n", path_next, filter_type(reason, out, sizeof(out)));</span>
|
||||
<span class="lineNum"> 236 </span><span class="lineCov"> 124719 : msg_verbose("Excluding link '%s' for rule '%s'\n", path_next, filter_type(reason, out, sizeof(out)));</span>
|
||||
<span class="lineNum"> 237 </span> : }
|
||||
<span class="lineNum"> 238 </span><span class="lineCov"> 64262 : } else if (S_ISDIR(st.st_mode)) {</span>
|
||||
<span class="lineNum"> 238 </span><span class="lineCov"> 64299 : } else if (S_ISDIR(st.st_mode)) {</span>
|
||||
<span class="lineNum"> 239 </span><span class="lineCov"> 1781 : if (disk == 0 || filter_subdir(&state->filterlist, &reason, disk->name, sub_next) == 0) {</span>
|
||||
<span class="lineNum"> 240 </span><span class="lineCov"> 1781 : pathslash(path_next, sizeof(path_next));</span>
|
||||
<span class="lineNum"> 241 </span><span class="lineCov"> 1781 : pathslash(sub_next, sizeof(sub_next));</span>
|
||||
|
|
@ -306,7 +306,7 @@
|
|||
<span class="lineNum"> 244 </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"> 245 </span> : }
|
||||
<span class="lineNum"> 246 </span> : }
|
||||
<span class="lineNum"> 247 </span><span class="lineCov"> 2037972 : }</span>
|
||||
<span class="lineNum"> 247 </span><span class="lineCov"> 2037670 : }</span>
|
||||
<span class="lineNum"> 248 </span> :
|
||||
<span class="lineNum"> 249 </span><span class="lineCov"> 2462 : if (closedir(d) != 0) {</span>
|
||||
<span class="lineNum"> 250 </span> : /* LCOV_EXCL_START */
|
||||
|
|
|
|||
|
|
@ -31,8 +31,8 @@
|
|||
<td class="headerValue">lcov.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntry">143</td>
|
||||
<td class="headerCovTableEntry">143</td>
|
||||
<td class="headerCovTableEntry">145</td>
|
||||
<td class="headerCovTableEntry">145</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
|
@ -88,7 +88,7 @@
|
|||
<td class="coverFnHi">1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="selftest.c.gcov.html#554">selftest</a></td>
|
||||
<td class="coverFn"><a href="selftest.c.gcov.html#562">selftest</a></td>
|
||||
<td class="coverFnHi">1</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
|
|||
|
|
@ -31,8 +31,8 @@
|
|||
<td class="headerValue">lcov.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntry">143</td>
|
||||
<td class="headerCovTableEntry">143</td>
|
||||
<td class="headerCovTableEntry">145</td>
|
||||
<td class="headerCovTableEntry">145</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
|
@ -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#554">selftest</a></td>
|
||||
<td class="coverFn"><a href="selftest.c.gcov.html#562">selftest</a></td>
|
||||
<td class="coverFnHi">1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
|
|
|||
|
|
@ -31,8 +31,8 @@
|
|||
<td class="headerValue">lcov.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntry">143</td>
|
||||
<td class="headerCovTableEntry">143</td>
|
||||
<td class="headerCovTableEntry">145</td>
|
||||
<td class="headerCovTableEntry">145</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
|
@ -468,227 +468,235 @@
|
|||
<span class="lineNum"> 406 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 407 </span> : }
|
||||
<span class="lineNum"> 408 </span> :
|
||||
<span class="lineNum"> 409 </span><span class="lineCov"> 1 : tommy_hashdyn_init(&hashdyn);</span>
|
||||
<span class="lineNum"> 409 </span><span class="lineCov"> 1 : tommy_list_insert_tail(&list, &node[0], &node[0]);</span>
|
||||
<span class="lineNum"> 410 </span> :
|
||||
<span class="lineNum"> 411 </span><span class="lineCov"> 257 : for (i = 0; i < TOMMY_SIZE; ++i)</span>
|
||||
<span class="lineNum"> 412 </span><span class="lineCov"> 256 : tommy_hashdyn_insert(&hashdyn, &node[i], &node[i], i % 64);</span>
|
||||
<span class="lineNum"> 413 </span> :
|
||||
<span class="lineNum"> 414 </span><span class="lineCov"> 1 : if (tommy_hashdyn_count(&hashdyn) != TOMMY_SIZE) {</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"> 1 : if (tommy_hashdyn_memory_usage(&hashdyn) < TOMMY_SIZE * sizeof(tommy_node)) {</span>
|
||||
<span class="lineNum"> 421 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 422 </span> : goto bail;
|
||||
<span class="lineNum"> 423 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 424 </span> : }
|
||||
<span class="lineNum"> 425 </span> :
|
||||
<span class="lineNum"> 426 </span><span class="lineCov"> 1 : tommy_test_foreach_count = 0;</span>
|
||||
<span class="lineNum"> 427 </span><span class="lineCov"> 1 : tommy_hashdyn_foreach(&hashdyn, tommy_test_foreach);</span>
|
||||
<span class="lineNum"> 428 </span><span class="lineCov"> 1 : if (tommy_test_foreach_count != TOMMY_SIZE) {</span>
|
||||
<span class="lineNum"> 411 </span><span class="lineCov"> 1 : if (tommy_list_tail(&list) != tommy_list_head(&list)) {</span>
|
||||
<span class="lineNum"> 412 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 413 </span> : goto bail;
|
||||
<span class="lineNum"> 414 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 415 </span> : }
|
||||
<span class="lineNum"> 416 </span> :
|
||||
<span class="lineNum"> 417 </span><span class="lineCov"> 1 : tommy_hashdyn_init(&hashdyn);</span>
|
||||
<span class="lineNum"> 418 </span> :
|
||||
<span class="lineNum"> 419 </span><span class="lineCov"> 257 : for (i = 0; i < TOMMY_SIZE; ++i)</span>
|
||||
<span class="lineNum"> 420 </span><span class="lineCov"> 256 : tommy_hashdyn_insert(&hashdyn, &node[i], &node[i], i % 64);</span>
|
||||
<span class="lineNum"> 421 </span> :
|
||||
<span class="lineNum"> 422 </span><span class="lineCov"> 1 : if (tommy_hashdyn_count(&hashdyn) != TOMMY_SIZE) {</span>
|
||||
<span class="lineNum"> 423 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 424 </span> : goto bail;
|
||||
<span class="lineNum"> 425 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 426 </span> : }
|
||||
<span class="lineNum"> 427 </span> :
|
||||
<span class="lineNum"> 428 </span><span class="lineCov"> 1 : if (tommy_hashdyn_memory_usage(&hashdyn) < TOMMY_SIZE * sizeof(tommy_node)) {</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_test_foreach_count = 0;</span>
|
||||
<span class="lineNum"> 435 </span><span class="lineCov"> 1 : tommy_hashdyn_foreach_arg(&hashdyn, tommy_test_foreach_arg, &tommy_test_foreach_count);</span>
|
||||
<span class="lineNum"> 435 </span><span class="lineCov"> 1 : tommy_hashdyn_foreach(&hashdyn, tommy_test_foreach);</span>
|
||||
<span class="lineNum"> 436 </span><span class="lineCov"> 1 : if (tommy_test_foreach_count != TOMMY_SIZE) {</span>
|
||||
<span class="lineNum"> 437 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 438 </span> : goto bail;
|
||||
<span class="lineNum"> 439 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 440 </span> : }
|
||||
<span class="lineNum"> 441 </span> :
|
||||
<span class="lineNum"> 442 </span><span class="lineCov"> 129 : for (i = 0; i < TOMMY_SIZE / 2; ++i)</span>
|
||||
<span class="lineNum"> 443 </span><span class="lineCov"> 128 : tommy_hashdyn_remove_existing(&hashdyn, &node[i]);</span>
|
||||
<span class="lineNum"> 444 </span> :
|
||||
<span class="lineNum"> 445 </span><span class="lineCov"> 129 : for (i = 0; i < TOMMY_SIZE / 2; ++i) {</span>
|
||||
<span class="lineNum"> 446 </span><span class="lineCov"> 128 : if (tommy_hashdyn_remove(&hashdyn, tommy_test_search, &node[i], i % 64) != 0) {</span>
|
||||
<span class="lineNum"> 447 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 448 </span> : goto bail;
|
||||
<span class="lineNum"> 449 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 450 </span> : }
|
||||
<span class="lineNum"> 451 </span> : }
|
||||
<span class="lineNum"> 452 </span><span class="lineCov"> 129 : for (i = TOMMY_SIZE / 2; i < TOMMY_SIZE; ++i) {</span>
|
||||
<span class="lineNum"> 453 </span><span class="lineCov"> 128 : if (tommy_hashdyn_remove(&hashdyn, tommy_test_search, &node[i], i % 64) == 0) {</span>
|
||||
<span class="lineNum"> 454 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 455 </span> : goto bail;
|
||||
<span class="lineNum"> 456 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 457 </span> : }
|
||||
<span class="lineNum"> 458 </span> : }
|
||||
<span class="lineNum"> 459 </span> :
|
||||
<span class="lineNum"> 460 </span><span class="lineCov"> 1 : if (tommy_hashdyn_count(&hashdyn) != 0) {</span>
|
||||
<span class="lineNum"> 461 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 462 </span> : goto bail;
|
||||
<span class="lineNum"> 463 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 464 </span> : }
|
||||
<span class="lineNum"> 465 </span> :
|
||||
<span class="lineNum"> 466 </span><span class="lineCov"> 1 : tommy_hashdyn_done(&hashdyn);</span>
|
||||
<span class="lineNum"> 442 </span><span class="lineCov"> 1 : tommy_test_foreach_count = 0;</span>
|
||||
<span class="lineNum"> 443 </span><span class="lineCov"> 1 : tommy_hashdyn_foreach_arg(&hashdyn, tommy_test_foreach_arg, &tommy_test_foreach_count);</span>
|
||||
<span class="lineNum"> 444 </span><span class="lineCov"> 1 : if (tommy_test_foreach_count != TOMMY_SIZE) {</span>
|
||||
<span class="lineNum"> 445 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 446 </span> : goto bail;
|
||||
<span class="lineNum"> 447 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 448 </span> : }
|
||||
<span class="lineNum"> 449 </span> :
|
||||
<span class="lineNum"> 450 </span><span class="lineCov"> 129 : for (i = 0; i < TOMMY_SIZE / 2; ++i)</span>
|
||||
<span class="lineNum"> 451 </span><span class="lineCov"> 128 : tommy_hashdyn_remove_existing(&hashdyn, &node[i]);</span>
|
||||
<span class="lineNum"> 452 </span> :
|
||||
<span class="lineNum"> 453 </span><span class="lineCov"> 129 : for (i = 0; i < TOMMY_SIZE / 2; ++i) {</span>
|
||||
<span class="lineNum"> 454 </span><span class="lineCov"> 128 : if (tommy_hashdyn_remove(&hashdyn, tommy_test_search, &node[i], i % 64) != 0) {</span>
|
||||
<span class="lineNum"> 455 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 456 </span> : goto bail;
|
||||
<span class="lineNum"> 457 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 458 </span> : }
|
||||
<span class="lineNum"> 459 </span> : }
|
||||
<span class="lineNum"> 460 </span><span class="lineCov"> 129 : for (i = TOMMY_SIZE / 2; i < TOMMY_SIZE; ++i) {</span>
|
||||
<span class="lineNum"> 461 </span><span class="lineCov"> 128 : if (tommy_hashdyn_remove(&hashdyn, tommy_test_search, &node[i], i % 64) == 0) {</span>
|
||||
<span class="lineNum"> 462 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 463 </span> : goto bail;
|
||||
<span class="lineNum"> 464 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 465 </span> : }
|
||||
<span class="lineNum"> 466 </span> : }
|
||||
<span class="lineNum"> 467 </span> :
|
||||
<span class="lineNum"> 468 </span><span class="lineCov"> 1 : tommy_tree_init(&tree, tommy_test_compare);</span>
|
||||
<span class="lineNum"> 469 </span> :
|
||||
<span class="lineNum"> 470 </span><span class="lineCov"> 257 : for (i = 0; i < TOMMY_SIZE; ++i)</span>
|
||||
<span class="lineNum"> 471 </span><span class="lineCov"> 256 : tommy_tree_insert(&tree, &node[i], (void*)(uintptr_t)(i + 1));</span>
|
||||
<span class="lineNum"> 472 </span> :
|
||||
<span class="lineNum"> 473 </span> : /* try to insert a duplicate, count should not change */
|
||||
<span class="lineNum"> 474 </span><span class="lineCov"> 1 : tommy_tree_insert(&tree, &node[TOMMY_SIZE], (void*)(uintptr_t)1);</span>
|
||||
<span class="lineNum"> 468 </span><span class="lineCov"> 1 : if (tommy_hashdyn_count(&hashdyn) != 0) {</span>
|
||||
<span class="lineNum"> 469 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 470 </span> : goto bail;
|
||||
<span class="lineNum"> 471 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 472 </span> : }
|
||||
<span class="lineNum"> 473 </span> :
|
||||
<span class="lineNum"> 474 </span><span class="lineCov"> 1 : tommy_hashdyn_done(&hashdyn);</span>
|
||||
<span class="lineNum"> 475 </span> :
|
||||
<span class="lineNum"> 476 </span><span class="lineCov"> 1 : if (tommy_tree_count(&tree) != TOMMY_SIZE) {</span>
|
||||
<span class="lineNum"> 477 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 478 </span> : goto bail;
|
||||
<span class="lineNum"> 479 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 480 </span> : }
|
||||
<span class="lineNum"> 481 </span><span class="lineCov"> 1 : if (tommy_tree_memory_usage(&tree) < TOMMY_SIZE * sizeof(tommy_node)) {</span>
|
||||
<span class="lineNum"> 482 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 483 </span> : goto bail;
|
||||
<span class="lineNum"> 484 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 485 </span> : }
|
||||
<span class="lineNum"> 486 </span><span class="lineCov"> 1 : if (tommy_tree_search(&tree, (void*)1) != (void*)1) {</span>
|
||||
<span class="lineNum"> 487 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 488 </span> : goto bail;
|
||||
<span class="lineNum"> 489 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 490 </span> : }
|
||||
<span class="lineNum"> 491 </span><span class="lineCov"> 1 : if (tommy_tree_search(&tree, (void*)-1) != 0) {</span>
|
||||
<span class="lineNum"> 492 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 493 </span> : goto bail;
|
||||
<span class="lineNum"> 494 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 495 </span> : }
|
||||
<span class="lineNum"> 496 </span><span class="lineCov"> 1 : if (tommy_tree_search_compare(&tree, tommy_test_compare, (void*)1) != (void*)1) {</span>
|
||||
<span class="lineNum"> 497 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 498 </span> : goto bail;
|
||||
<span class="lineNum"> 499 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 500 </span> : }
|
||||
<span class="lineNum"> 501 </span><span class="lineCov"> 1 : if (tommy_tree_search_compare(&tree, tommy_test_compare, (void*)-1) != 0) {</span>
|
||||
<span class="lineNum"> 502 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 503 </span> : goto bail;
|
||||
<span class="lineNum"> 504 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 505 </span> : }
|
||||
<span class="lineNum"> 506 </span> :
|
||||
<span class="lineNum"> 507 </span><span class="lineCov"> 1 : tommy_test_foreach_count = 0;</span>
|
||||
<span class="lineNum"> 508 </span><span class="lineCov"> 1 : tommy_tree_foreach(&tree, tommy_test_foreach);</span>
|
||||
<span class="lineNum"> 509 </span><span class="lineCov"> 1 : if (tommy_test_foreach_count != TOMMY_SIZE) {</span>
|
||||
<span class="lineNum"> 476 </span><span class="lineCov"> 1 : tommy_tree_init(&tree, tommy_test_compare);</span>
|
||||
<span class="lineNum"> 477 </span> :
|
||||
<span class="lineNum"> 478 </span><span class="lineCov"> 257 : for (i = 0; i < TOMMY_SIZE; ++i)</span>
|
||||
<span class="lineNum"> 479 </span><span class="lineCov"> 256 : tommy_tree_insert(&tree, &node[i], (void*)(uintptr_t)(i + 1));</span>
|
||||
<span class="lineNum"> 480 </span> :
|
||||
<span class="lineNum"> 481 </span> : /* try to insert a duplicate, count should not change */
|
||||
<span class="lineNum"> 482 </span><span class="lineCov"> 1 : tommy_tree_insert(&tree, &node[TOMMY_SIZE], (void*)(uintptr_t)1);</span>
|
||||
<span class="lineNum"> 483 </span> :
|
||||
<span class="lineNum"> 484 </span><span class="lineCov"> 1 : if (tommy_tree_count(&tree) != TOMMY_SIZE) {</span>
|
||||
<span class="lineNum"> 485 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 486 </span> : goto bail;
|
||||
<span class="lineNum"> 487 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 488 </span> : }
|
||||
<span class="lineNum"> 489 </span><span class="lineCov"> 1 : if (tommy_tree_memory_usage(&tree) < TOMMY_SIZE * sizeof(tommy_node)) {</span>
|
||||
<span class="lineNum"> 490 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 491 </span> : goto bail;
|
||||
<span class="lineNum"> 492 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 493 </span> : }
|
||||
<span class="lineNum"> 494 </span><span class="lineCov"> 1 : if (tommy_tree_search(&tree, (void*)1) != (void*)1) {</span>
|
||||
<span class="lineNum"> 495 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 496 </span> : goto bail;
|
||||
<span class="lineNum"> 497 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 498 </span> : }
|
||||
<span class="lineNum"> 499 </span><span class="lineCov"> 1 : if (tommy_tree_search(&tree, (void*)-1) != 0) {</span>
|
||||
<span class="lineNum"> 500 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 501 </span> : goto bail;
|
||||
<span class="lineNum"> 502 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 503 </span> : }
|
||||
<span class="lineNum"> 504 </span><span class="lineCov"> 1 : if (tommy_tree_search_compare(&tree, tommy_test_compare, (void*)1) != (void*)1) {</span>
|
||||
<span class="lineNum"> 505 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 506 </span> : goto bail;
|
||||
<span class="lineNum"> 507 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 508 </span> : }
|
||||
<span class="lineNum"> 509 </span><span class="lineCov"> 1 : if (tommy_tree_search_compare(&tree, tommy_test_compare, (void*)-1) != 0) {</span>
|
||||
<span class="lineNum"> 510 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 511 </span> : goto bail;
|
||||
<span class="lineNum"> 512 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 513 </span> : }
|
||||
<span class="lineNum"> 514 </span> :
|
||||
<span class="lineNum"> 515 </span><span class="lineCov"> 1 : tommy_test_foreach_count = 0;</span>
|
||||
<span class="lineNum"> 516 </span><span class="lineCov"> 1 : tommy_tree_foreach_arg(&tree, tommy_test_foreach_arg, &tommy_test_foreach_count);</span>
|
||||
<span class="lineNum"> 516 </span><span class="lineCov"> 1 : tommy_tree_foreach(&tree, tommy_test_foreach);</span>
|
||||
<span class="lineNum"> 517 </span><span class="lineCov"> 1 : if (tommy_test_foreach_count != TOMMY_SIZE) {</span>
|
||||
<span class="lineNum"> 518 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 519 </span> : goto bail;
|
||||
<span class="lineNum"> 520 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 521 </span> : }
|
||||
<span class="lineNum"> 522 </span> :
|
||||
<span class="lineNum"> 523 </span><span class="lineCov"> 129 : for (i = 0; i < TOMMY_SIZE / 2; ++i)</span>
|
||||
<span class="lineNum"> 524 </span><span class="lineCov"> 128 : tommy_tree_remove_existing(&tree, &node[i]);</span>
|
||||
<span class="lineNum"> 525 </span> :
|
||||
<span class="lineNum"> 526 </span><span class="lineCov"> 129 : for (i = 0; i < TOMMY_SIZE / 2; ++i) {</span>
|
||||
<span class="lineNum"> 527 </span><span class="lineCov"> 128 : if (tommy_tree_remove(&tree, (void*)(uintptr_t)(i + 1)) != 0) {</span>
|
||||
<span class="lineNum"> 528 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 529 </span> : goto bail;
|
||||
<span class="lineNum"> 530 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 531 </span> : }
|
||||
<span class="lineNum"> 532 </span> : }
|
||||
<span class="lineNum"> 523 </span><span class="lineCov"> 1 : tommy_test_foreach_count = 0;</span>
|
||||
<span class="lineNum"> 524 </span><span class="lineCov"> 1 : tommy_tree_foreach_arg(&tree, tommy_test_foreach_arg, &tommy_test_foreach_count);</span>
|
||||
<span class="lineNum"> 525 </span><span class="lineCov"> 1 : if (tommy_test_foreach_count != TOMMY_SIZE) {</span>
|
||||
<span class="lineNum"> 526 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 527 </span> : goto bail;
|
||||
<span class="lineNum"> 528 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 529 </span> : }
|
||||
<span class="lineNum"> 530 </span> :
|
||||
<span class="lineNum"> 531 </span><span class="lineCov"> 129 : for (i = 0; i < TOMMY_SIZE / 2; ++i)</span>
|
||||
<span class="lineNum"> 532 </span><span class="lineCov"> 128 : tommy_tree_remove_existing(&tree, &node[i]);</span>
|
||||
<span class="lineNum"> 533 </span> :
|
||||
<span class="lineNum"> 534 </span><span class="lineCov"> 129 : for (i = TOMMY_SIZE / 2; i < TOMMY_SIZE; ++i) {</span>
|
||||
<span class="lineNum"> 535 </span><span class="lineCov"> 128 : if (tommy_tree_remove(&tree, (void*)(uintptr_t)(i + 1)) == 0) {</span>
|
||||
<span class="lineNum"> 534 </span><span class="lineCov"> 129 : for (i = 0; i < TOMMY_SIZE / 2; ++i) {</span>
|
||||
<span class="lineNum"> 535 </span><span class="lineCov"> 128 : if (tommy_tree_remove(&tree, (void*)(uintptr_t)(i + 1)) != 0) {</span>
|
||||
<span class="lineNum"> 536 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 537 </span> : goto bail;
|
||||
<span class="lineNum"> 538 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 539 </span> : }
|
||||
<span class="lineNum"> 540 </span> : }
|
||||
<span class="lineNum"> 541 </span> :
|
||||
<span class="lineNum"> 542 </span><span class="lineCov"> 1 : if (tommy_tree_count(&tree) != 0) {</span>
|
||||
<span class="lineNum"> 543 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 544 </span> : goto bail;
|
||||
<span class="lineNum"> 545 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 546 </span> : }
|
||||
<span class="lineNum"> 547 </span> :
|
||||
<span class="lineNum"> 548 </span><span class="lineCov"> 2 : return;</span>
|
||||
<span class="lineNum"> 549 </span> : bail:
|
||||
<span class="lineNum"> 550 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 551 </span> : log_fatal("Failed tommy test\n");
|
||||
<span class="lineNum"> 552 </span> : exit(EXIT_FAILURE);
|
||||
<span class="lineNum"> 553 </span> : /* LCOV_EXCL_STOP */
|
||||
<a name="554"><span class="lineNum"> 554 </span> : }</a>
|
||||
<span class="lineNum"> 542 </span><span class="lineCov"> 129 : for (i = TOMMY_SIZE / 2; i < TOMMY_SIZE; ++i) {</span>
|
||||
<span class="lineNum"> 543 </span><span class="lineCov"> 128 : if (tommy_tree_remove(&tree, (void*)(uintptr_t)(i + 1)) == 0) {</span>
|
||||
<span class="lineNum"> 544 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 545 </span> : goto bail;
|
||||
<span class="lineNum"> 546 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 547 </span> : }
|
||||
<span class="lineNum"> 548 </span> : }
|
||||
<span class="lineNum"> 549 </span> :
|
||||
<span class="lineNum"> 550 </span><span class="lineCov"> 1 : if (tommy_tree_count(&tree) != 0) {</span>
|
||||
<span class="lineNum"> 551 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 552 </span> : goto bail;
|
||||
<span class="lineNum"> 553 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 554 </span> : }
|
||||
<span class="lineNum"> 555 </span> :
|
||||
<span class="lineNum"> 556 </span><span class="lineCov"> 1 : void selftest(void)</span>
|
||||
<span class="lineNum"> 557 </span> : {
|
||||
<span class="lineNum"> 558 </span><span class="lineCov"> 1 : log_tag("selftest:\n");</span>
|
||||
<span class="lineNum"> 559 </span><span class="lineCov"> 1 : log_flush();</span>
|
||||
<span class="lineNum"> 560 </span> :
|
||||
<span class="lineNum"> 561 </span><span class="lineCov"> 1 : msg_progress("Self test...\n");</span>
|
||||
<span class="lineNum"> 562 </span> :
|
||||
<span class="lineNum"> 563 </span> : /* large file check */
|
||||
<span class="lineNum"> 564 </span> : if (sizeof(off_t) < sizeof(uint64_t)) {
|
||||
<span class="lineNum"> 565 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 566 </span> : log_fatal("Missing support for large files\n");
|
||||
<span class="lineNum"> 567 </span> : exit(EXIT_FAILURE);
|
||||
<span class="lineNum"> 568 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 569 </span> : }
|
||||
<span class="lineNum"> 556 </span><span class="lineCov"> 2 : return;</span>
|
||||
<span class="lineNum"> 557 </span> : bail:
|
||||
<span class="lineNum"> 558 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 559 </span> : log_fatal("Failed tommy test\n");
|
||||
<span class="lineNum"> 560 </span> : exit(EXIT_FAILURE);
|
||||
<span class="lineNum"> 561 </span> : /* LCOV_EXCL_STOP */
|
||||
<a name="562"><span class="lineNum"> 562 </span> : }</a>
|
||||
<span class="lineNum"> 563 </span> :
|
||||
<span class="lineNum"> 564 </span><span class="lineCov"> 1 : void selftest(void)</span>
|
||||
<span class="lineNum"> 565 </span> : {
|
||||
<span class="lineNum"> 566 </span><span class="lineCov"> 1 : log_tag("selftest:\n");</span>
|
||||
<span class="lineNum"> 567 </span><span class="lineCov"> 1 : log_flush();</span>
|
||||
<span class="lineNum"> 568 </span> :
|
||||
<span class="lineNum"> 569 </span><span class="lineCov"> 1 : msg_progress("Self test...\n");</span>
|
||||
<span class="lineNum"> 570 </span> :
|
||||
<span class="lineNum"> 571 </span><span class="lineCov"> 1 : test_hash();</span>
|
||||
<span class="lineNum"> 572 </span><span class="lineCov"> 1 : test_crc32c();</span>
|
||||
<span class="lineNum"> 573 </span><span class="lineCov"> 1 : test_tommy();</span>
|
||||
<span class="lineNum"> 574 </span><span class="lineCov"> 1 : if (raid_selftest() != 0) {</span>
|
||||
<span class="lineNum"> 575 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 576 </span> : log_fatal("Failed SELF test\n");
|
||||
<span class="lineNum"> 577 </span> : exit(EXIT_FAILURE);
|
||||
<span class="lineNum"> 578 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 579 </span> : }
|
||||
<span class="lineNum"> 580 </span><span class="lineCov"> 1 : if (raid_test_sort() != 0) {</span>
|
||||
<span class="lineNum"> 581 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 582 </span> : log_fatal("Failed SORT test\n");
|
||||
<span class="lineNum"> 583 </span> : exit(EXIT_FAILURE);
|
||||
<span class="lineNum"> 584 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 585 </span> : }
|
||||
<span class="lineNum"> 586 </span><span class="lineCov"> 1 : if (raid_test_insert() != 0) {</span>
|
||||
<span class="lineNum"> 587 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 588 </span> : log_fatal("Failed INSERT test\n");
|
||||
<span class="lineNum"> 589 </span> : exit(EXIT_FAILURE);
|
||||
<span class="lineNum"> 590 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 591 </span> : }
|
||||
<span class="lineNum"> 592 </span><span class="lineCov"> 1 : if (raid_test_combo() != 0) {</span>
|
||||
<span class="lineNum"> 593 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 594 </span> : log_fatal("Failed COMBO test\n");
|
||||
<span class="lineNum"> 595 </span> : exit(EXIT_FAILURE);
|
||||
<span class="lineNum"> 596 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 597 </span> : }
|
||||
<span class="lineNum"> 598 </span><span class="lineCov"> 1 : if (raid_test_par(RAID_MODE_VANDERMONDE, 32, 256) != 0) {</span>
|
||||
<span class="lineNum"> 599 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 600 </span> : log_fatal("Failed GEN Vandermonde test\n");
|
||||
<span class="lineNum"> 601 </span> : exit(EXIT_FAILURE);
|
||||
<span class="lineNum"> 602 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 603 </span> : }
|
||||
<span class="lineNum"> 604 </span><span class="lineCov"> 1 : if (raid_test_rec(RAID_MODE_VANDERMONDE, 12, 256) != 0) {</span>
|
||||
<span class="lineNum"> 605 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 606 </span> : log_fatal("Failed REC Vandermonde test\n");
|
||||
<span class="lineNum"> 607 </span> : exit(EXIT_FAILURE);
|
||||
<span class="lineNum"> 608 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 609 </span> : }
|
||||
<span class="lineNum"> 610 </span><span class="lineCov"> 1 : if (raid_test_par(RAID_MODE_CAUCHY, 32, 256) != 0) {</span>
|
||||
<span class="lineNum"> 611 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 612 </span> : log_fatal("Failed GEN Cauchy test\n");
|
||||
<span class="lineNum"> 613 </span> : exit(EXIT_FAILURE);
|
||||
<span class="lineNum"> 614 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 615 </span> : }
|
||||
<span class="lineNum"> 616 </span><span class="lineCov"> 1 : if (raid_test_rec(RAID_MODE_CAUCHY, 12, 256) != 0) {</span>
|
||||
<span class="lineNum"> 617 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 618 </span> : log_fatal("Failed REC Cauchy test\n");
|
||||
<span class="lineNum"> 619 </span> : exit(EXIT_FAILURE);
|
||||
<span class="lineNum"> 620 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 621 </span> : }
|
||||
<span class="lineNum"> 622 </span><span class="lineCov"> 1 : if (raid_test_par(RAID_MODE_CAUCHY, 1, 256) != 0) {</span>
|
||||
<span class="lineNum"> 623 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 624 </span> : log_fatal("Failed GEN Cauchy test sigle data disk\n");
|
||||
<span class="lineNum"> 625 </span> : exit(EXIT_FAILURE);
|
||||
<span class="lineNum"> 626 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 627 </span> : }
|
||||
<span class="lineNum"> 628 </span><span class="lineCov"> 1 : }</span>
|
||||
<span class="lineNum"> 629 </span> :
|
||||
<span class="lineNum"> 571 </span> : /* large file check */
|
||||
<span class="lineNum"> 572 </span> : if (sizeof(off_t) < sizeof(uint64_t)) {
|
||||
<span class="lineNum"> 573 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 574 </span> : log_fatal("Missing support for large files\n");
|
||||
<span class="lineNum"> 575 </span> : exit(EXIT_FAILURE);
|
||||
<span class="lineNum"> 576 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 577 </span> : }
|
||||
<span class="lineNum"> 578 </span> :
|
||||
<span class="lineNum"> 579 </span><span class="lineCov"> 1 : test_hash();</span>
|
||||
<span class="lineNum"> 580 </span><span class="lineCov"> 1 : test_crc32c();</span>
|
||||
<span class="lineNum"> 581 </span><span class="lineCov"> 1 : test_tommy();</span>
|
||||
<span class="lineNum"> 582 </span><span class="lineCov"> 1 : if (raid_selftest() != 0) {</span>
|
||||
<span class="lineNum"> 583 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 584 </span> : log_fatal("Failed SELF test\n");
|
||||
<span class="lineNum"> 585 </span> : exit(EXIT_FAILURE);
|
||||
<span class="lineNum"> 586 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 587 </span> : }
|
||||
<span class="lineNum"> 588 </span><span class="lineCov"> 1 : if (raid_test_sort() != 0) {</span>
|
||||
<span class="lineNum"> 589 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 590 </span> : log_fatal("Failed SORT test\n");
|
||||
<span class="lineNum"> 591 </span> : exit(EXIT_FAILURE);
|
||||
<span class="lineNum"> 592 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 593 </span> : }
|
||||
<span class="lineNum"> 594 </span><span class="lineCov"> 1 : if (raid_test_insert() != 0) {</span>
|
||||
<span class="lineNum"> 595 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 596 </span> : log_fatal("Failed INSERT test\n");
|
||||
<span class="lineNum"> 597 </span> : exit(EXIT_FAILURE);
|
||||
<span class="lineNum"> 598 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 599 </span> : }
|
||||
<span class="lineNum"> 600 </span><span class="lineCov"> 1 : if (raid_test_combo() != 0) {</span>
|
||||
<span class="lineNum"> 601 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 602 </span> : log_fatal("Failed COMBO test\n");
|
||||
<span class="lineNum"> 603 </span> : exit(EXIT_FAILURE);
|
||||
<span class="lineNum"> 604 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 605 </span> : }
|
||||
<span class="lineNum"> 606 </span><span class="lineCov"> 1 : if (raid_test_par(RAID_MODE_VANDERMONDE, 32, 256) != 0) {</span>
|
||||
<span class="lineNum"> 607 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 608 </span> : log_fatal("Failed GEN Vandermonde test\n");
|
||||
<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="lineCov"> 1 : if (raid_test_rec(RAID_MODE_VANDERMONDE, 12, 256) != 0) {</span>
|
||||
<span class="lineNum"> 613 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 614 </span> : log_fatal("Failed REC Vandermonde test\n");
|
||||
<span class="lineNum"> 615 </span> : exit(EXIT_FAILURE);
|
||||
<span class="lineNum"> 616 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 617 </span> : }
|
||||
<span class="lineNum"> 618 </span><span class="lineCov"> 1 : if (raid_test_par(RAID_MODE_CAUCHY, 32, 256) != 0) {</span>
|
||||
<span class="lineNum"> 619 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 620 </span> : log_fatal("Failed GEN Cauchy test\n");
|
||||
<span class="lineNum"> 621 </span> : exit(EXIT_FAILURE);
|
||||
<span class="lineNum"> 622 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 623 </span> : }
|
||||
<span class="lineNum"> 624 </span><span class="lineCov"> 1 : if (raid_test_rec(RAID_MODE_CAUCHY, 12, 256) != 0) {</span>
|
||||
<span class="lineNum"> 625 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 626 </span> : log_fatal("Failed REC Cauchy test\n");
|
||||
<span class="lineNum"> 627 </span> : exit(EXIT_FAILURE);
|
||||
<span class="lineNum"> 628 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 629 </span> : }
|
||||
<span class="lineNum"> 630 </span><span class="lineCov"> 1 : if (raid_test_par(RAID_MODE_CAUCHY, 1, 256) != 0) {</span>
|
||||
<span class="lineNum"> 631 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 632 </span> : log_fatal("Failed GEN Cauchy test sigle data disk\n");
|
||||
<span class="lineNum"> 633 </span> : exit(EXIT_FAILURE);
|
||||
<span class="lineNum"> 634 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 635 </span> : }
|
||||
<span class="lineNum"> 636 </span><span class="lineCov"> 1 : }</span>
|
||||
<span class="lineNum"> 637 </span> :
|
||||
</pre>
|
||||
</td>
|
||||
</tr>
|
||||
|
|
|
|||
|
|
@ -31,9 +31,9 @@
|
|||
<td class="headerValue">lcov.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntry">491</td>
|
||||
<td class="headerCovTableEntry">494</td>
|
||||
<td class="headerCovTableEntry">542</td>
|
||||
<td class="headerCovTableEntryHi">90.6 %</td>
|
||||
<td class="headerCovTableEntryHi">91.1 %</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Date:</td>
|
||||
|
|
@ -61,15 +61,15 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="snapraid.c.gcov.html#91">test</a></td>
|
||||
<td class="coverFnHi">272</td>
|
||||
<td class="coverFnHi">275</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="snapraid.c.gcov.html#519">main</a></td>
|
||||
<td class="coverFnHi">272</td>
|
||||
<td class="coverFnHi">275</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="snapraid.c.gcov.html#225">config</a></td>
|
||||
<td class="coverFnHi">271</td>
|
||||
<td class="coverFnHi">274</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="snapraid.c.gcov.html#124">log_open</a></td>
|
||||
|
|
|
|||
|
|
@ -31,9 +31,9 @@
|
|||
<td class="headerValue">lcov.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntry">491</td>
|
||||
<td class="headerCovTableEntry">494</td>
|
||||
<td class="headerCovTableEntry">542</td>
|
||||
<td class="headerCovTableEntryHi">90.6 %</td>
|
||||
<td class="headerCovTableEntryHi">91.1 %</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Date:</td>
|
||||
|
|
@ -61,7 +61,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="snapraid.c.gcov.html#225">config</a></td>
|
||||
<td class="coverFnHi">271</td>
|
||||
<td class="coverFnHi">274</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="snapraid.c.gcov.html#208">log_close</a></td>
|
||||
|
|
@ -73,7 +73,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="snapraid.c.gcov.html#519">main</a></td>
|
||||
<td class="coverFnHi">272</td>
|
||||
<td class="coverFnHi">275</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="snapraid.c.gcov.html#77">memory</a></td>
|
||||
|
|
@ -85,7 +85,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="snapraid.c.gcov.html#91">test</a></td>
|
||||
<td class="coverFnHi">272</td>
|
||||
<td class="coverFnHi">275</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="snapraid.c.gcov.html#35">usage</a></td>
|
||||
|
|
|
|||
|
|
@ -31,9 +31,9 @@
|
|||
<td class="headerValue">lcov.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntry">491</td>
|
||||
<td class="headerCovTableEntry">494</td>
|
||||
<td class="headerCovTableEntry">542</td>
|
||||
<td class="headerCovTableEntryHi">90.6 %</td>
|
||||
<td class="headerCovTableEntryHi">91.1 %</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Date:</td>
|
||||
|
|
@ -152,14 +152,14 @@
|
|||
<span class="lineNum"> 90 </span><span class="lineCov"> 237 : msg_progress("Using %u MiB of memory for the FileSystem.\n", (unsigned)(malloc_counter_get() / MEBI));</span>
|
||||
<a name="91"><span class="lineNum"> 91 </span><span class="lineCov"> 237 : }</span></a>
|
||||
<span class="lineNum"> 92 </span> :
|
||||
<span class="lineNum"> 93 </span><span class="lineCov"> 272 : void test(int argc, char* argv[])</span>
|
||||
<span class="lineNum"> 93 </span><span class="lineCov"> 275 : void test(int argc, char* argv[])</span>
|
||||
<span class="lineNum"> 94 </span> : {
|
||||
<span class="lineNum"> 95 </span> : int i;
|
||||
<span class="lineNum"> 96 </span> : char buffer[ESC_MAX];
|
||||
<span class="lineNum"> 97 </span> :
|
||||
<span class="lineNum"> 98 </span> : /* special testing code for quoting */
|
||||
<span class="lineNum"> 99 </span><span class="lineCov"> 272 : if (argc < 2 || strcmp(argv[1], "test") != 0)</span>
|
||||
<span class="lineNum"> 100 </span><span class="lineCov"> 542 : return;</span>
|
||||
<span class="lineNum"> 99 </span><span class="lineCov"> 275 : if (argc < 2 || strcmp(argv[1], "test") != 0)</span>
|
||||
<span class="lineNum"> 100 </span><span class="lineCov"> 548 : return;</span>
|
||||
<span class="lineNum"> 101 </span> :
|
||||
<span class="lineNum"> 102 </span><span class="lineCov"> 1 : for (i = 2; i < argc; ++i) {</span>
|
||||
<span class="lineNum"> 103 </span><span class="lineNoCov"> 0 : printf("argv[%d]\n", i);</span>
|
||||
|
|
@ -286,7 +286,7 @@
|
|||
<span class="lineNum"> 224 </span> : /****************************************************************************/
|
||||
<a name="225"><span class="lineNum"> 225 </span> : /* config */</a>
|
||||
<span class="lineNum"> 226 </span> :
|
||||
<span class="lineNum"> 227 </span><span class="lineCov"> 271 : void config(char* conf, size_t conf_size, const char* argv0)</span>
|
||||
<span class="lineNum"> 227 </span><span class="lineCov"> 274 : void config(char* conf, size_t conf_size, const char* argv0)</span>
|
||||
<span class="lineNum"> 228 </span> : {
|
||||
<span class="lineNum"> 229 </span> : #ifdef _WIN32
|
||||
<span class="lineNum"> 230 </span> : char* slash;
|
||||
|
|
@ -303,9 +303,9 @@
|
|||
<span class="lineNum"> 241 </span> : #else
|
||||
<span class="lineNum"> 242 </span> : (void)argv0;
|
||||
<span class="lineNum"> 243 </span> :
|
||||
<span class="lineNum"> 244 </span><span class="lineCov"> 271 : pathcpy(conf, conf_size, "/etc/" PACKAGE ".conf");</span>
|
||||
<span class="lineNum"> 244 </span><span class="lineCov"> 274 : pathcpy(conf, conf_size, "/etc/" PACKAGE ".conf");</span>
|
||||
<span class="lineNum"> 245 </span> : #endif
|
||||
<span class="lineNum"> 246 </span><span class="lineCov"> 271 : }</span>
|
||||
<span class="lineNum"> 246 </span><span class="lineCov"> 274 : }</span>
|
||||
<span class="lineNum"> 247 </span> :
|
||||
<span class="lineNum"> 248 </span> : /****************************************************************************/
|
||||
<span class="lineNum"> 249 </span> : /* main */
|
||||
|
|
@ -580,7 +580,7 @@
|
|||
<span class="lineNum"> 518 </span> : #define OPERATION_DEVICES 16
|
||||
<a name="519"><span class="lineNum"> 519 </span> : #define OPERATION_SMART 17</a>
|
||||
<span class="lineNum"> 520 </span> :
|
||||
<span class="lineNum"> 521 </span><span class="lineCov"> 272 : int main(int argc, char* argv[])</span>
|
||||
<span class="lineNum"> 521 </span><span class="lineCov"> 275 : int main(int argc, char* argv[])</span>
|
||||
<span class="lineNum"> 522 </span> : {
|
||||
<span class="lineNum"> 523 </span> : int c;
|
||||
<span class="lineNum"> 524 </span> : struct snapraid_option opt;
|
||||
|
|
@ -610,40 +610,40 @@
|
|||
<span class="lineNum"> 548 </span> : struct tm* tm;
|
||||
<span class="lineNum"> 549 </span> : int i;
|
||||
<span class="lineNum"> 550 </span> :
|
||||
<span class="lineNum"> 551 </span><span class="lineCov"> 272 : test(argc, argv);</span>
|
||||
<span class="lineNum"> 551 </span><span class="lineCov"> 275 : test(argc, argv);</span>
|
||||
<span class="lineNum"> 552 </span> :
|
||||
<span class="lineNum"> 553 </span><span class="lineCov"> 271 : lock_init();</span>
|
||||
<span class="lineNum"> 553 </span><span class="lineCov"> 274 : lock_init();</span>
|
||||
<span class="lineNum"> 554 </span> :
|
||||
<span class="lineNum"> 555 </span> : /* defaults */
|
||||
<span class="lineNum"> 556 </span><span class="lineCov"> 271 : config(conf, sizeof(conf), argv[0]);</span>
|
||||
<span class="lineNum"> 557 </span><span class="lineCov"> 271 : memset(&opt, 0, sizeof(opt));</span>
|
||||
<span class="lineNum"> 558 </span><span class="lineCov"> 271 : opt.io_error_limit = 100;</span>
|
||||
<span class="lineNum"> 559 </span><span class="lineCov"> 271 : blockstart = 0;</span>
|
||||
<span class="lineNum"> 560 </span><span class="lineCov"> 271 : blockcount = 0;</span>
|
||||
<span class="lineNum"> 561 </span><span class="lineCov"> 271 : tommy_list_init(&filterlist_file);</span>
|
||||
<span class="lineNum"> 562 </span><span class="lineCov"> 271 : tommy_list_init(&filterlist_disk);</span>
|
||||
<span class="lineNum"> 563 </span><span class="lineCov"> 271 : period = 1000;</span>
|
||||
<span class="lineNum"> 564 </span><span class="lineCov"> 271 : filter_missing = 0;</span>
|
||||
<span class="lineNum"> 565 </span><span class="lineCov"> 271 : filter_error = 0;</span>
|
||||
<span class="lineNum"> 566 </span><span class="lineCov"> 271 : plan = SCRUB_AUTO;</span>
|
||||
<span class="lineNum"> 567 </span><span class="lineCov"> 271 : olderthan = SCRUB_AUTO;</span>
|
||||
<span class="lineNum"> 568 </span><span class="lineCov"> 271 : import_timestamp = 0;</span>
|
||||
<span class="lineNum"> 569 </span><span class="lineCov"> 271 : import_content = 0;</span>
|
||||
<span class="lineNum"> 570 </span><span class="lineCov"> 271 : log_file = 0;</span>
|
||||
<span class="lineNum"> 571 </span><span class="lineCov"> 271 : lock = 0;</span>
|
||||
<span class="lineNum"> 572 </span><span class="lineCov"> 271 : gen_conf = 0;</span>
|
||||
<span class="lineNum"> 573 </span><span class="lineCov"> 271 : speedtest = 0;</span>
|
||||
<span class="lineNum"> 574 </span><span class="lineCov"> 271 : run = 0;</span>
|
||||
<span class="lineNum"> 556 </span><span class="lineCov"> 274 : config(conf, sizeof(conf), argv[0]);</span>
|
||||
<span class="lineNum"> 557 </span><span class="lineCov"> 274 : memset(&opt, 0, sizeof(opt));</span>
|
||||
<span class="lineNum"> 558 </span><span class="lineCov"> 274 : opt.io_error_limit = 100;</span>
|
||||
<span class="lineNum"> 559 </span><span class="lineCov"> 274 : blockstart = 0;</span>
|
||||
<span class="lineNum"> 560 </span><span class="lineCov"> 274 : blockcount = 0;</span>
|
||||
<span class="lineNum"> 561 </span><span class="lineCov"> 274 : tommy_list_init(&filterlist_file);</span>
|
||||
<span class="lineNum"> 562 </span><span class="lineCov"> 274 : tommy_list_init(&filterlist_disk);</span>
|
||||
<span class="lineNum"> 563 </span><span class="lineCov"> 274 : period = 1000;</span>
|
||||
<span class="lineNum"> 564 </span><span class="lineCov"> 274 : filter_missing = 0;</span>
|
||||
<span class="lineNum"> 565 </span><span class="lineCov"> 274 : filter_error = 0;</span>
|
||||
<span class="lineNum"> 566 </span><span class="lineCov"> 274 : plan = SCRUB_AUTO;</span>
|
||||
<span class="lineNum"> 567 </span><span class="lineCov"> 274 : olderthan = SCRUB_AUTO;</span>
|
||||
<span class="lineNum"> 568 </span><span class="lineCov"> 274 : import_timestamp = 0;</span>
|
||||
<span class="lineNum"> 569 </span><span class="lineCov"> 274 : import_content = 0;</span>
|
||||
<span class="lineNum"> 570 </span><span class="lineCov"> 274 : log_file = 0;</span>
|
||||
<span class="lineNum"> 571 </span><span class="lineCov"> 274 : lock = 0;</span>
|
||||
<span class="lineNum"> 572 </span><span class="lineCov"> 274 : gen_conf = 0;</span>
|
||||
<span class="lineNum"> 573 </span><span class="lineCov"> 274 : speedtest = 0;</span>
|
||||
<span class="lineNum"> 574 </span><span class="lineCov"> 274 : run = 0;</span>
|
||||
<span class="lineNum"> 575 </span> :
|
||||
<span class="lineNum"> 576 </span><span class="lineCov"> 271 : opterr = 0;</span>
|
||||
<span class="lineNum"> 577 </span><span class="lineCov"> 3437 : while ((c =</span>
|
||||
<span class="lineNum"> 576 </span><span class="lineCov"> 274 : opterr = 0;</span>
|
||||
<span class="lineNum"> 577 </span><span class="lineCov"> 3450 : while ((c =</span>
|
||||
<span class="lineNum"> 578 </span> : #if HAVE_GETOPT_LONG
|
||||
<span class="lineNum"> 579 </span> : getopt_long(argc, argv, OPTIONS, long_options, 0))
|
||||
<span class="lineNum"> 580 </span> : #else
|
||||
<span class="lineNum"> 581 </span> : getopt(argc, argv, OPTIONS))
|
||||
<span class="lineNum"> 582 </span> : #endif
|
||||
<span class="lineNum"> 583 </span> : != EOF) {
|
||||
<span class="lineNum"> 584 </span><span class="lineCov"> 2900 : switch (c) {</span>
|
||||
<span class="lineNum"> 584 </span><span class="lineCov"> 2907 : switch (c) {</span>
|
||||
<span class="lineNum"> 585 </span> : case 'c' :
|
||||
<span class="lineNum"> 586 </span><span class="lineCov"> 267 : pathimport(conf, sizeof(conf), optarg);</span>
|
||||
<span class="lineNum"> 587 </span><span class="lineCov"> 267 : break;</span>
|
||||
|
|
@ -802,8 +802,8 @@
|
|||
<span class="lineNum"> 740 </span><span class="lineCov"> 1 : version();</span>
|
||||
<span class="lineNum"> 741 </span><span class="lineCov"> 1 : exit(EXIT_SUCCESS);</span>
|
||||
<span class="lineNum"> 742 </span> : case 'T' :
|
||||
<span class="lineNum"> 743 </span><span class="lineCov"> 1 : speedtest = 1;</span>
|
||||
<span class="lineNum"> 744 </span><span class="lineCov"> 1 : break;</span>
|
||||
<span class="lineNum"> 743 </span><span class="lineCov"> 4 : speedtest = 1;</span>
|
||||
<span class="lineNum"> 744 </span><span class="lineCov"> 4 : break;</span>
|
||||
<span class="lineNum"> 745 </span> : case 'C' :
|
||||
<span class="lineNum"> 746 </span><span class="lineCov"> 1 : gen_conf = optarg;</span>
|
||||
<span class="lineNum"> 747 </span><span class="lineCov"> 1 : break;</span>
|
||||
|
|
@ -826,9 +826,9 @@
|
|||
<span class="lineNum"> 764 </span><span class="lineCov"> 1 : opt.skip_fallocate = 1;</span>
|
||||
<span class="lineNum"> 765 </span><span class="lineCov"> 1 : break;</span>
|
||||
<span class="lineNum"> 766 </span> : case OPT_TEST_SKIP_DEVICE :
|
||||
<span class="lineNum"> 767 </span><span class="lineCov"> 271 : opt.skip_device = 1;</span>
|
||||
<span class="lineNum"> 768 </span><span class="lineCov"> 271 : period = 50; /* reduce period of the speed test */</span>
|
||||
<span class="lineNum"> 769 </span><span class="lineCov"> 271 : break;</span>
|
||||
<span class="lineNum"> 767 </span><span class="lineCov"> 274 : opt.skip_device = 1;</span>
|
||||
<span class="lineNum"> 768 </span><span class="lineCov"> 274 : period = 50; /* reduce period of the speed test */</span>
|
||||
<span class="lineNum"> 769 </span><span class="lineCov"> 274 : break;</span>
|
||||
<span class="lineNum"> 770 </span> : case OPT_TEST_SKIP_CONTENT_CHECK :
|
||||
<span class="lineNum"> 771 </span><span class="lineNoCov"> 0 : opt.skip_content_check = 1;</span>
|
||||
<span class="lineNum"> 772 </span><span class="lineNoCov"> 0 : break;</span>
|
||||
|
|
@ -906,14 +906,14 @@
|
|||
<span class="lineNum"> 844 </span><span class="lineNoCov"> 0 : opt.force_parity_update = 1;</span>
|
||||
<span class="lineNum"> 845 </span><span class="lineNoCov"> 0 : break;</span>
|
||||
<span class="lineNum"> 846 </span> : case OPT_TEST_IO_CACHE :
|
||||
<span class="lineNum"> 847 </span><span class="lineNoCov"> 0 : opt.io_cache = atoi(optarg);</span>
|
||||
<span class="lineNum"> 848 </span><span class="lineNoCov"> 0 : if (opt.io_cache != 1 && (opt.io_cache < IO_MIN || opt.io_cache > IO_MAX)) {</span>
|
||||
<span class="lineNum"> 847 </span><span class="lineCov"> 1 : opt.io_cache = atoi(optarg);</span>
|
||||
<span class="lineNum"> 848 </span><span class="lineCov"> 1 : if (opt.io_cache != 1 && (opt.io_cache < IO_MIN || opt.io_cache > IO_MAX)) {</span>
|
||||
<span class="lineNum"> 849 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 850 </span> : log_fatal("The IO cache should be between %u and %u.\n", IO_MIN, IO_MAX);
|
||||
<span class="lineNum"> 851 </span> : exit(EXIT_FAILURE);
|
||||
<span class="lineNum"> 852 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 853 </span> : }
|
||||
<span class="lineNum"> 854 </span><span class="lineNoCov"> 0 : break;</span>
|
||||
<span class="lineNum"> 854 </span><span class="lineCov"> 1 : break;</span>
|
||||
<span class="lineNum"> 855 </span> : case OPT_TEST_IO_STATS :
|
||||
<span class="lineNum"> 856 </span><span class="lineNoCov"> 0 : opt.force_stats = 1;</span>
|
||||
<span class="lineNum"> 857 </span><span class="lineNoCov"> 0 : break;</span>
|
||||
|
|
@ -974,14 +974,14 @@
|
|||
<span class="lineNum"> 912 </span> : }
|
||||
<span class="lineNum"> 913 </span> : }
|
||||
<span class="lineNum"> 914 </span> :
|
||||
<span class="lineNum"> 915 </span><span class="lineCov"> 266 : os_init(opt.force_scan_winfind);</span>
|
||||
<span class="lineNum"> 916 </span><span class="lineCov"> 266 : raid_init();</span>
|
||||
<span class="lineNum"> 917 </span><span class="lineCov"> 266 : crc32c_init();</span>
|
||||
<span class="lineNum"> 915 </span><span class="lineCov"> 269 : os_init(opt.force_scan_winfind);</span>
|
||||
<span class="lineNum"> 916 </span><span class="lineCov"> 269 : raid_init();</span>
|
||||
<span class="lineNum"> 917 </span><span class="lineCov"> 269 : crc32c_init();</span>
|
||||
<span class="lineNum"> 918 </span> :
|
||||
<span class="lineNum"> 919 </span><span class="lineCov"> 266 : if (speedtest != 0) {</span>
|
||||
<span class="lineNum"> 920 </span><span class="lineCov"> 1 : speed(period);</span>
|
||||
<span class="lineNum"> 921 </span><span class="lineCov"> 1 : os_done();</span>
|
||||
<span class="lineNum"> 922 </span><span class="lineCov"> 1 : exit(EXIT_SUCCESS);</span>
|
||||
<span class="lineNum"> 919 </span><span class="lineCov"> 269 : if (speedtest != 0) {</span>
|
||||
<span class="lineNum"> 920 </span><span class="lineCov"> 4 : speed(period);</span>
|
||||
<span class="lineNum"> 921 </span><span class="lineCov"> 4 : os_done();</span>
|
||||
<span class="lineNum"> 922 </span><span class="lineCov"> 4 : exit(EXIT_SUCCESS);</span>
|
||||
<span class="lineNum"> 923 </span> : }
|
||||
<span class="lineNum"> 924 </span> :
|
||||
<span class="lineNum"> 925 </span><span class="lineCov"> 265 : if (gen_conf != 0) {</span>
|
||||
|
|
@ -1286,8 +1286,8 @@
|
|||
<span class="lineNum"> 1224 </span><span class="lineCov"> 264 : log_tag("time:%s\n", datetime);</span>
|
||||
<span class="lineNum"> 1225 </span> : }
|
||||
<span class="lineNum"> 1226 </span><span class="lineCov"> 264 : log_tag("command:%s\n", command);</span>
|
||||
<span class="lineNum"> 1227 </span><span class="lineCov"> 4035 : for (i = 0; i < argc; ++i)</span>
|
||||
<span class="lineNum"> 1228 </span><span class="lineCov"> 3771 : log_tag("argv:%u:%s\n", i, argv[i]);</span>
|
||||
<span class="lineNum"> 1227 </span><span class="lineCov"> 4037 : for (i = 0; i < argc; ++i)</span>
|
||||
<span class="lineNum"> 1228 </span><span class="lineCov"> 3773 : log_tag("argv:%u:%s\n", i, argv[i]);</span>
|
||||
<span class="lineNum"> 1229 </span><span class="lineCov"> 264 : log_flush();</span>
|
||||
<span class="lineNum"> 1230 </span> :
|
||||
<span class="lineNum"> 1231 </span><span class="lineCov"> 264 : if (!opt.skip_self)</span>
|
||||
|
|
|
|||
|
|
@ -31,9 +31,9 @@
|
|||
<td class="headerValue">lcov.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntry">363</td>
|
||||
<td class="headerCovTableEntry">403</td>
|
||||
<td class="headerCovTableEntry">404</td>
|
||||
<td class="headerCovTableEntryMed">89.9 %</td>
|
||||
<td class="headerCovTableEntryHi">99.8 %</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Date:</td>
|
||||
|
|
@ -61,11 +61,11 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="speed.c.gcov.html#39">diffgettimeofday</a></td>
|
||||
<td class="coverFnHi">1115</td>
|
||||
<td class="coverFnHi">1840</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="speed.c.gcov.html#76">speed</a></td>
|
||||
<td class="coverFnHi">1</td>
|
||||
<td class="coverFnHi">4</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
|
|
|
|||
|
|
@ -31,9 +31,9 @@
|
|||
<td class="headerValue">lcov.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntry">363</td>
|
||||
<td class="headerCovTableEntry">403</td>
|
||||
<td class="headerCovTableEntry">404</td>
|
||||
<td class="headerCovTableEntryMed">89.9 %</td>
|
||||
<td class="headerCovTableEntryHi">99.8 %</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Date:</td>
|
||||
|
|
@ -61,11 +61,11 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="speed.c.gcov.html#39">diffgettimeofday</a></td>
|
||||
<td class="coverFnHi">1115</td>
|
||||
<td class="coverFnHi">1840</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="speed.c.gcov.html#76">speed</a></td>
|
||||
<td class="coverFnHi">1</td>
|
||||
<td class="coverFnHi">4</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
|
|
@ -61,7 +61,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="spooky2.c.gcov.html#109">SpookyHash128</a></td>
|
||||
<td class="coverFnHi">3862036</td>
|
||||
<td class="coverFnHi">3860981</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
|
|
|
|||
|
|
@ -61,7 +61,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="spooky2.c.gcov.html#109">SpookyHash128</a></td>
|
||||
<td class="coverFnHi">3862036</td>
|
||||
<td class="coverFnHi">3860981</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
|
|
|
|||
|
|
@ -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"> 3862036 : void SpookyHash128(const void* data, size_t size, const uint8_t* seed, uint8_t* digest)</span>
|
||||
<span class="lineNum"> 111 </span><span class="lineCov"> 3860981 : 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];
|
||||
|
|
@ -183,39 +183,39 @@
|
|||
<span class="lineNum"> 121 </span> : unsigned i;
|
||||
<span class="lineNum"> 122 </span> : #endif
|
||||
<span class="lineNum"> 123 </span> :
|
||||
<span class="lineNum"> 124 </span><span class="lineCov"> 3862036 : h9 = ((const uint64_t*)seed)[0];</span>
|
||||
<span class="lineNum"> 125 </span><span class="lineCov"> 3862036 : h10 = ((const uint64_t*)seed)[1];</span>
|
||||
<span class="lineNum"> 124 </span><span class="lineCov"> 3860981 : h9 = ((const uint64_t*)seed)[0];</span>
|
||||
<span class="lineNum"> 125 </span><span class="lineCov"> 3860981 : h10 = ((const uint64_t*)seed)[1];</span>
|
||||
<span class="lineNum"> 126 </span> :
|
||||
<span class="lineNum"> 127 </span> : #if WORDS_BIGENDIAN
|
||||
<span class="lineNum"> 128 </span> : h9 = util_swap64(h9);
|
||||
<span class="lineNum"> 129 </span> : h10 = util_swap64(h10);
|
||||
<span class="lineNum"> 130 </span> : #endif
|
||||
<span class="lineNum"> 131 </span> :
|
||||
<span class="lineNum"> 132 </span><span class="lineCov"> 3862036 : h0 = h3 = h6 = h9;</span>
|
||||
<span class="lineNum"> 133 </span><span class="lineCov"> 3862036 : h1 = h4 = h7 = h10;</span>
|
||||
<span class="lineNum"> 134 </span><span class="lineCov"> 3862036 : h2 = h5 = h8 = h11 = sc_const;</span>
|
||||
<span class="lineNum"> 132 </span><span class="lineCov"> 3860981 : h0 = h3 = h6 = h9;</span>
|
||||
<span class="lineNum"> 133 </span><span class="lineCov"> 3860981 : h1 = h4 = h7 = h10;</span>
|
||||
<span class="lineNum"> 134 </span><span class="lineCov"> 3860981 : h2 = h5 = h8 = h11 = sc_const;</span>
|
||||
<span class="lineNum"> 135 </span> :
|
||||
<span class="lineNum"> 136 </span><span class="lineCov"> 3862036 : nblocks = size / sc_blockSize;</span>
|
||||
<span class="lineNum"> 137 </span><span class="lineCov"> 3862036 : blocks = data;</span>
|
||||
<span class="lineNum"> 138 </span><span class="lineCov"> 3862036 : end = blocks + nblocks * sc_numVars;</span>
|
||||
<span class="lineNum"> 136 </span><span class="lineCov"> 3860981 : nblocks = size / sc_blockSize;</span>
|
||||
<span class="lineNum"> 137 </span><span class="lineCov"> 3860981 : blocks = data;</span>
|
||||
<span class="lineNum"> 138 </span><span class="lineCov"> 3860981 : end = blocks + nblocks * sc_numVars;</span>
|
||||
<span class="lineNum"> 139 </span> :
|
||||
<span class="lineNum"> 140 </span> : /* body */
|
||||
<span class="lineNum"> 141 </span><span class="lineCov"> 38442160 : while (blocks < end) {</span>
|
||||
<span class="lineNum"> 141 </span><span class="lineCov"> 38823778 : while (blocks < end) {</span>
|
||||
<span class="lineNum"> 142 </span> : #if WORDS_BIGENDIAN
|
||||
<span class="lineNum"> 143 </span> : for (i = 0; i < sc_numVars; ++i)
|
||||
<span class="lineNum"> 144 </span> : buf[i] = util_swap64(blocks[i]);
|
||||
<span class="lineNum"> 145 </span> : Mix(buf, h0, h1, h2, h3, h4, h5, h6, h7, h8, h9, h10, h11);
|
||||
<span class="lineNum"> 146 </span> : #else
|
||||
<span class="lineNum"> 147 </span><span class="lineCov"> 30718088 : Mix(blocks, h0, h1, h2, h3, h4, h5, h6, h7, h8, h9, h10, h11);</span>
|
||||
<span class="lineNum"> 147 </span><span class="lineCov"> 31101816 : Mix(blocks, h0, h1, h2, h3, h4, h5, h6, h7, h8, h9, h10, h11);</span>
|
||||
<span class="lineNum"> 148 </span> : #endif
|
||||
<span class="lineNum"> 149 </span><span class="lineCov"> 30718088 : blocks += sc_numVars;</span>
|
||||
<span class="lineNum"> 149 </span><span class="lineCov"> 31101816 : blocks += sc_numVars;</span>
|
||||
<span class="lineNum"> 150 </span> : }
|
||||
<span class="lineNum"> 151 </span> :
|
||||
<span class="lineNum"> 152 </span> : /* tail */
|
||||
<span class="lineNum"> 153 </span><span class="lineCov"> 3862036 : size_remainder = (size - ((const uint8_t*)end - (const uint8_t*)data));</span>
|
||||
<span class="lineNum"> 154 </span><span class="lineCov"> 3862036 : memcpy(buf, end, size_remainder);</span>
|
||||
<span class="lineNum"> 155 </span><span class="lineCov"> 3862036 : memset(((uint8_t*)buf) + size_remainder, 0, sc_blockSize - size_remainder);</span>
|
||||
<span class="lineNum"> 156 </span><span class="lineCov"> 3862036 : ((uint8_t*)buf)[sc_blockSize - 1] = size_remainder;</span>
|
||||
<span class="lineNum"> 153 </span><span class="lineCov"> 3860981 : size_remainder = (size - ((const uint8_t*)end - (const uint8_t*)data));</span>
|
||||
<span class="lineNum"> 154 </span><span class="lineCov"> 3860981 : memcpy(buf, end, size_remainder);</span>
|
||||
<span class="lineNum"> 155 </span><span class="lineCov"> 3860981 : memset(((uint8_t*)buf) + size_remainder, 0, sc_blockSize - size_remainder);</span>
|
||||
<span class="lineNum"> 156 </span><span class="lineCov"> 3860981 : ((uint8_t*)buf)[sc_blockSize - 1] = size_remainder;</span>
|
||||
<span class="lineNum"> 157 </span> :
|
||||
<span class="lineNum"> 158 </span> : /* finalization */
|
||||
<span class="lineNum"> 159 </span> : #if WORDS_BIGENDIAN
|
||||
|
|
@ -223,16 +223,16 @@
|
|||
<span class="lineNum"> 161 </span> : buf[i] = util_swap64(buf[i]);
|
||||
<span class="lineNum"> 162 </span> : #endif
|
||||
<span class="lineNum"> 163 </span> :
|
||||
<span class="lineNum"> 164 </span><span class="lineCov"> 3862036 : End(buf, h0, h1, h2, h3, h4, h5, h6, h7, h8, h9, h10, h11);</span>
|
||||
<span class="lineNum"> 164 </span><span class="lineCov"> 3860981 : End(buf, h0, h1, h2, h3, h4, h5, h6, h7, h8, h9, h10, h11);</span>
|
||||
<span class="lineNum"> 165 </span> :
|
||||
<span class="lineNum"> 166 </span> : #if WORDS_BIGENDIAN
|
||||
<span class="lineNum"> 167 </span> : h0 = util_swap64(h0);
|
||||
<span class="lineNum"> 168 </span> : h1 = util_swap64(h1);
|
||||
<span class="lineNum"> 169 </span> : #endif
|
||||
<span class="lineNum"> 170 </span> :
|
||||
<span class="lineNum"> 171 </span><span class="lineCov"> 3862036 : ((uint64_t*)digest)[0] = h0;</span>
|
||||
<span class="lineNum"> 172 </span><span class="lineCov"> 3862036 : ((uint64_t*)digest)[1] = h1;</span>
|
||||
<span class="lineNum"> 173 </span><span class="lineCov"> 3862036 : }</span>
|
||||
<span class="lineNum"> 171 </span><span class="lineCov"> 3860981 : ((uint64_t*)digest)[0] = h0;</span>
|
||||
<span class="lineNum"> 172 </span><span class="lineCov"> 3860981 : ((uint64_t*)digest)[1] = h1;</span>
|
||||
<span class="lineNum"> 173 </span><span class="lineCov"> 3860981 : }</span>
|
||||
<span class="lineNum"> 174 </span> :
|
||||
</pre>
|
||||
</td>
|
||||
|
|
|
|||
|
|
@ -69,23 +69,23 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#4334">state_progress</a></td>
|
||||
<td class="coverFnHi">1073508</td>
|
||||
<td class="coverFnHi">1073409</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#4490">state_usage_misc</a></td>
|
||||
<td class="coverFnHi">1063748</td>
|
||||
<td class="coverFnHi">1063055</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#4534">state_usage_disk</a></td>
|
||||
<td class="coverFnHi">912951</td>
|
||||
<td class="coverFnHi">912357</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#4523">state_usage_hash</a></td>
|
||||
<td class="coverFnHi">777372</td>
|
||||
<td class="coverFnHi">776808</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#4554">state_usage_parity</a></td>
|
||||
<td class="coverFnHi">774617</td>
|
||||
<td class="coverFnHi">774023</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#1617">fs_position_is_required</a></td>
|
||||
|
|
@ -93,15 +93,15 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#64">lev_config_name</a></td>
|
||||
<td class="coverFnHi">186562</td>
|
||||
<td class="coverFnHi">186548</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#4501">state_usage_sched</a></td>
|
||||
<td class="coverFnHi">149935</td>
|
||||
<td class="coverFnHi">149836</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#4512">state_usage_raid</a></td>
|
||||
<td class="coverFnHi">140430</td>
|
||||
<td class="coverFnHi">140365</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#1251">find_disk_by_name</a></td>
|
||||
|
|
@ -121,7 +121,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#4168">state_progress_latest</a></td>
|
||||
<td class="coverFnHi">489</td>
|
||||
<td class="coverFnHi">495</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#494">validate_smartctl</a></td>
|
||||
|
|
|
|||
|
|
@ -93,7 +93,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#64">lev_config_name</a></td>
|
||||
<td class="coverFnHi">186562</td>
|
||||
<td class="coverFnHi">186548</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#78">lev_config_scan</a></td>
|
||||
|
|
@ -141,7 +141,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#4334">state_progress</a></td>
|
||||
<td class="coverFnHi">1073508</td>
|
||||
<td class="coverFnHi">1073409</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#4078">state_progress_begin</a></td>
|
||||
|
|
@ -157,7 +157,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#4168">state_progress_latest</a></td>
|
||||
<td class="coverFnHi">489</td>
|
||||
<td class="coverFnHi">495</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#4149">state_progress_restart</a></td>
|
||||
|
|
@ -189,19 +189,19 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#4534">state_usage_disk</a></td>
|
||||
<td class="coverFnHi">912951</td>
|
||||
<td class="coverFnHi">912357</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#4523">state_usage_hash</a></td>
|
||||
<td class="coverFnHi">777372</td>
|
||||
<td class="coverFnHi">776808</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#4490">state_usage_misc</a></td>
|
||||
<td class="coverFnHi">1063748</td>
|
||||
<td class="coverFnHi">1063055</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#4554">state_usage_parity</a></td>
|
||||
<td class="coverFnHi">774617</td>
|
||||
<td class="coverFnHi">774023</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#4568">state_usage_print</a></td>
|
||||
|
|
@ -209,11 +209,11 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#4512">state_usage_raid</a></td>
|
||||
<td class="coverFnHi">140430</td>
|
||||
<td class="coverFnHi">140365</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#4501">state_usage_sched</a></td>
|
||||
<td class="coverFnHi">149935</td>
|
||||
<td class="coverFnHi">149836</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="state.c.gcov.html#4483">state_usage_waste</a></td>
|
||||
|
|
|
|||
|
|
@ -125,10 +125,10 @@
|
|||
<span class="lineNum"> 63 </span><span class="lineNoCov"> 0 : return 0;</span>
|
||||
<a name="64"><span class="lineNum"> 64 </span> : }</a>
|
||||
<span class="lineNum"> 65 </span> :
|
||||
<span class="lineNum"> 66 </span><span class="lineCov"> 186562 : const char* lev_config_name(unsigned l)</span>
|
||||
<span class="lineNum"> 66 </span><span class="lineCov"> 186548 : const char* lev_config_name(unsigned l)</span>
|
||||
<span class="lineNum"> 67 </span> : {
|
||||
<span class="lineNum"> 68 </span><span class="lineCov"> 186562 : switch (l) {</span>
|
||||
<span class="lineNum"> 69 </span><span class="lineCov"> 86860 : case 0 : return "parity";</span>
|
||||
<span class="lineNum"> 68 </span><span class="lineCov"> 186548 : switch (l) {</span>
|
||||
<span class="lineNum"> 69 </span><span class="lineCov"> 86846 : case 0 : return "parity";</span>
|
||||
<span class="lineNum"> 70 </span><span class="lineCov"> 60620 : case 1 : return "2-parity";</span>
|
||||
<span class="lineNum"> 71 </span><span class="lineCov"> 9810 : case 2 : return "3-parity";</span>
|
||||
<span class="lineNum"> 72 </span><span class="lineCov"> 9785 : case 3 : return "4-parity";</span>
|
||||
|
|
@ -1864,12 +1864,12 @@
|
|||
<span class="lineNum"> 1802 </span> : int c;
|
||||
<span class="lineNum"> 1803 </span> :
|
||||
<span class="lineNum"> 1804 </span> : /* read the command */
|
||||
<span class="lineNum"> 1805 </span><span class="lineCov"> 3735977 : c = sgetc(f);</span>
|
||||
<span class="lineNum"> 1806 </span><span class="lineCov"> 3735977 : if (c == EOF) {</span>
|
||||
<span class="lineNum"> 1805 </span><span class="lineCov"> 3735825 : c = sgetc(f);</span>
|
||||
<span class="lineNum"> 1806 </span><span class="lineCov"> 3735825 : if (c == EOF) {</span>
|
||||
<span class="lineNum"> 1807 </span><span class="lineCov"> 251 : break;</span>
|
||||
<span class="lineNum"> 1808 </span> : }
|
||||
<span class="lineNum"> 1809 </span> :
|
||||
<span class="lineNum"> 1810 </span><span class="lineCov"> 3735726 : if (c == 'f') {</span>
|
||||
<span class="lineNum"> 1810 </span><span class="lineCov"> 3735574 : if (c == 'f') {</span>
|
||||
<span class="lineNum"> 1811 </span> : /* file */
|
||||
<span class="lineNum"> 1812 </span> : char sub[PATH_MAX];
|
||||
<span class="lineNum"> 1813 </span> : uint64_t v_size;
|
||||
|
|
@ -1881,25 +1881,25 @@
|
|||
<span class="lineNum"> 1819 </span> : struct snapraid_disk* disk;
|
||||
<span class="lineNum"> 1820 </span> : uint32_t mapping;
|
||||
<span class="lineNum"> 1821 </span> :
|
||||
<span class="lineNum"> 1822 </span><span class="lineCov"> 3612169 : ret = sgetb32(f, &mapping);</span>
|
||||
<span class="lineNum"> 1823 </span><span class="lineCov"> 3612169 : if (ret < 0 || mapping >= mapping_max) {</span>
|
||||
<span class="lineNum"> 1822 </span><span class="lineCov"> 3612018 : ret = sgetb32(f, &mapping);</span>
|
||||
<span class="lineNum"> 1823 </span><span class="lineCov"> 3612018 : if (ret < 0 || mapping >= mapping_max) {</span>
|
||||
<span class="lineNum"> 1824 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 1825 </span> : decoding_error(path, f);
|
||||
<span class="lineNum"> 1826 </span> : log_fatal("Internal inconsistency in mapping index!\n");
|
||||
<span class="lineNum"> 1827 </span> : os_abort();
|
||||
<span class="lineNum"> 1828 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 1829 </span> : }
|
||||
<span class="lineNum"> 1830 </span><span class="lineCov"> 3612169 : disk = tommy_array_get(&disk_mapping, mapping);</span>
|
||||
<span class="lineNum"> 1830 </span><span class="lineCov"> 3612018 : disk = tommy_array_get(&disk_mapping, mapping);</span>
|
||||
<span class="lineNum"> 1831 </span> :
|
||||
<span class="lineNum"> 1832 </span><span class="lineCov"> 3612169 : ret = sgetb64(f, &v_size);</span>
|
||||
<span class="lineNum"> 1833 </span><span class="lineCov"> 3612169 : if (ret < 0) {</span>
|
||||
<span class="lineNum"> 1832 </span><span class="lineCov"> 3612018 : ret = sgetb64(f, &v_size);</span>
|
||||
<span class="lineNum"> 1833 </span><span class="lineCov"> 3612018 : if (ret < 0) {</span>
|
||||
<span class="lineNum"> 1834 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 1835 </span> : decoding_error(path, f);
|
||||
<span class="lineNum"> 1836 </span> : os_abort();
|
||||
<span class="lineNum"> 1837 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 1838 </span> : }
|
||||
<span class="lineNum"> 1839 </span> :
|
||||
<span class="lineNum"> 1840 </span><span class="lineCov"> 3612169 : if (state->block_size == 0) {</span>
|
||||
<span class="lineNum"> 1840 </span><span class="lineCov"> 3612018 : if (state->block_size == 0) {</span>
|
||||
<span class="lineNum"> 1841 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 1842 </span> : decoding_error(path, f);
|
||||
<span class="lineNum"> 1843 </span> : log_fatal("Internal incosistency due zero blocksize!\n");
|
||||
|
|
@ -1908,7 +1908,7 @@
|
|||
<span class="lineNum"> 1846 </span> : }
|
||||
<span class="lineNum"> 1847 </span> :
|
||||
<span class="lineNum"> 1848 </span> : /* check for impossible file size to avoid to crash for a too big allocation */
|
||||
<span class="lineNum"> 1849 </span><span class="lineCov"> 3612169 : if (v_size / state->block_size > blockmax) {</span>
|
||||
<span class="lineNum"> 1849 </span><span class="lineCov"> 3612018 : if (v_size / state->block_size > blockmax) {</span>
|
||||
<span class="lineNum"> 1850 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 1851 </span> : decoding_error(path, f);
|
||||
<span class="lineNum"> 1852 </span> : log_fatal("Internal inconsistency in file size too big!\n");
|
||||
|
|
@ -1916,16 +1916,16 @@
|
|||
<span class="lineNum"> 1854 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 1855 </span> : }
|
||||
<span class="lineNum"> 1856 </span> :
|
||||
<span class="lineNum"> 1857 </span><span class="lineCov"> 3612169 : ret = sgetb64(f, &v_mtime_sec);</span>
|
||||
<span class="lineNum"> 1858 </span><span class="lineCov"> 3612169 : if (ret < 0) {</span>
|
||||
<span class="lineNum"> 1857 </span><span class="lineCov"> 3612018 : ret = sgetb64(f, &v_mtime_sec);</span>
|
||||
<span class="lineNum"> 1858 </span><span class="lineCov"> 3612018 : if (ret < 0) {</span>
|
||||
<span class="lineNum"> 1859 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 1860 </span> : decoding_error(path, f);
|
||||
<span class="lineNum"> 1861 </span> : os_abort();
|
||||
<span class="lineNum"> 1862 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 1863 </span> : }
|
||||
<span class="lineNum"> 1864 </span> :
|
||||
<span class="lineNum"> 1865 </span><span class="lineCov"> 3612169 : ret = sgetb32(f, &v_mtime_nsec);</span>
|
||||
<span class="lineNum"> 1866 </span><span class="lineCov"> 3612169 : if (ret < 0) {</span>
|
||||
<span class="lineNum"> 1865 </span><span class="lineCov"> 3612018 : ret = sgetb32(f, &v_mtime_nsec);</span>
|
||||
<span class="lineNum"> 1866 </span><span class="lineCov"> 3612018 : if (ret < 0) {</span>
|
||||
<span class="lineNum"> 1867 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 1868 </span> : decoding_error(path, f);
|
||||
<span class="lineNum"> 1869 </span> : os_abort();
|
||||
|
|
@ -1933,27 +1933,27 @@
|
|||
<span class="lineNum"> 1871 </span> : }
|
||||
<span class="lineNum"> 1872 </span> :
|
||||
<span class="lineNum"> 1873 </span> : /* STAT_NSEC_INVALID is encoded as 0 */
|
||||
<span class="lineNum"> 1874 </span><span class="lineCov"> 3612169 : if (v_mtime_nsec == 0)</span>
|
||||
<span class="lineNum"> 1874 </span><span class="lineCov"> 3612018 : if (v_mtime_nsec == 0)</span>
|
||||
<span class="lineNum"> 1875 </span><span class="lineNoCov"> 0 : v_mtime_nsec = STAT_NSEC_INVALID;</span>
|
||||
<span class="lineNum"> 1876 </span> : else
|
||||
<span class="lineNum"> 1877 </span><span class="lineCov"> 3612169 : --v_mtime_nsec;</span>
|
||||
<span class="lineNum"> 1877 </span><span class="lineCov"> 3612018 : --v_mtime_nsec;</span>
|
||||
<span class="lineNum"> 1878 </span> :
|
||||
<span class="lineNum"> 1879 </span><span class="lineCov"> 3612169 : ret = sgetb64(f, &v_inode);</span>
|
||||
<span class="lineNum"> 1880 </span><span class="lineCov"> 3612169 : if (ret < 0) {</span>
|
||||
<span class="lineNum"> 1879 </span><span class="lineCov"> 3612018 : ret = sgetb64(f, &v_inode);</span>
|
||||
<span class="lineNum"> 1880 </span><span class="lineCov"> 3612018 : if (ret < 0) {</span>
|
||||
<span class="lineNum"> 1881 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 1882 </span> : decoding_error(path, f);
|
||||
<span class="lineNum"> 1883 </span> : os_abort();
|
||||
<span class="lineNum"> 1884 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 1885 </span> : }
|
||||
<span class="lineNum"> 1886 </span> :
|
||||
<span class="lineNum"> 1887 </span><span class="lineCov"> 3612169 : ret = sgetbs(f, sub, sizeof(sub));</span>
|
||||
<span class="lineNum"> 1888 </span><span class="lineCov"> 3612169 : if (ret < 0) {</span>
|
||||
<span class="lineNum"> 1887 </span><span class="lineCov"> 3612018 : ret = sgetbs(f, sub, sizeof(sub));</span>
|
||||
<span class="lineNum"> 1888 </span><span class="lineCov"> 3612018 : if (ret < 0) {</span>
|
||||
<span class="lineNum"> 1889 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 1890 </span> : decoding_error(path, f);
|
||||
<span class="lineNum"> 1891 </span> : os_abort();
|
||||
<span class="lineNum"> 1892 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 1893 </span> : }
|
||||
<span class="lineNum"> 1894 </span><span class="lineCov"> 3612169 : if (!*sub) {</span>
|
||||
<span class="lineNum"> 1894 </span><span class="lineCov"> 3612018 : if (!*sub) {</span>
|
||||
<span class="lineNum"> 1895 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 1896 </span> : decoding_error(path, f);
|
||||
<span class="lineNum"> 1897 </span> : log_fatal("Internal inconsistency for null file!\n");
|
||||
|
|
@ -1962,40 +1962,40 @@
|
|||
<span class="lineNum"> 1900 </span> : }
|
||||
<span class="lineNum"> 1901 </span> :
|
||||
<span class="lineNum"> 1902 </span> : /* allocate the file */
|
||||
<span class="lineNum"> 1903 </span><span class="lineCov"> 3612169 : file = file_alloc(state->block_size, sub, v_size, v_mtime_sec, v_mtime_nsec, v_inode, 0);</span>
|
||||
<span class="lineNum"> 1903 </span><span class="lineCov"> 3612018 : file = file_alloc(state->block_size, sub, v_size, v_mtime_sec, v_mtime_nsec, v_inode, 0);</span>
|
||||
<span class="lineNum"> 1904 </span> :
|
||||
<span class="lineNum"> 1905 </span> : /* insert the file in the file containers */
|
||||
<span class="lineNum"> 1906 </span><span class="lineCov"> 3612169 : tommy_hashdyn_insert(&disk->inodeset, &file->nodeset, file, file_inode_hash(file->inode));</span>
|
||||
<span class="lineNum"> 1907 </span><span class="lineCov"> 3612169 : tommy_hashdyn_insert(&disk->pathset, &file->pathset, file, file_path_hash(file->sub));</span>
|
||||
<span class="lineNum"> 1908 </span><span class="lineCov"> 3612169 : tommy_hashdyn_insert(&disk->stampset, &file->stampset, file, file_stamp_hash(file->size, file->mtime_sec, file->mtime_nsec));</span>
|
||||
<span class="lineNum"> 1909 </span><span class="lineCov"> 3612169 : tommy_list_insert_tail(&disk->filelist, &file->nodelist, file);</span>
|
||||
<span class="lineNum"> 1906 </span><span class="lineCov"> 3612018 : tommy_hashdyn_insert(&disk->inodeset, &file->nodeset, file, file_inode_hash(file->inode));</span>
|
||||
<span class="lineNum"> 1907 </span><span class="lineCov"> 3612018 : tommy_hashdyn_insert(&disk->pathset, &file->pathset, file, file_path_hash(file->sub));</span>
|
||||
<span class="lineNum"> 1908 </span><span class="lineCov"> 3612018 : tommy_hashdyn_insert(&disk->stampset, &file->stampset, file, file_stamp_hash(file->size, file->mtime_sec, file->mtime_nsec));</span>
|
||||
<span class="lineNum"> 1909 </span><span class="lineCov"> 3612018 : tommy_list_insert_tail(&disk->filelist, &file->nodelist, file);</span>
|
||||
<span class="lineNum"> 1910 </span> :
|
||||
<span class="lineNum"> 1911 </span> : /* read all the blocks */
|
||||
<span class="lineNum"> 1912 </span><span class="lineCov"> 3612169 : v_idx = 0;</span>
|
||||
<span class="lineNum"> 1913 </span><span class="lineCov"> 10857200 : while (v_idx < file->blockmax) {</span>
|
||||
<span class="lineNum"> 1912 </span><span class="lineCov"> 3612018 : v_idx = 0;</span>
|
||||
<span class="lineNum"> 1913 </span><span class="lineCov"> 10856725 : while (v_idx < file->blockmax) {</span>
|
||||
<span class="lineNum"> 1914 </span> : block_off_t v_pos;
|
||||
<span class="lineNum"> 1915 </span> : uint32_t v_count;
|
||||
<span class="lineNum"> 1916 </span> :
|
||||
<span class="lineNum"> 1917 </span> : /* get the "subcommand */
|
||||
<span class="lineNum"> 1918 </span><span class="lineCov"> 3632862 : c = sgetc(f);</span>
|
||||
<span class="lineNum"> 1918 </span><span class="lineCov"> 3632690 : c = sgetc(f);</span>
|
||||
<span class="lineNum"> 1919 </span> :
|
||||
<span class="lineNum"> 1920 </span><span class="lineCov"> 3632862 : ret = sgetb32(f, &v_pos);</span>
|
||||
<span class="lineNum"> 1921 </span><span class="lineCov"> 3632862 : if (ret < 0) {</span>
|
||||
<span class="lineNum"> 1920 </span><span class="lineCov"> 3632690 : ret = sgetb32(f, &v_pos);</span>
|
||||
<span class="lineNum"> 1921 </span><span class="lineCov"> 3632690 : if (ret < 0) {</span>
|
||||
<span class="lineNum"> 1922 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 1923 </span> : decoding_error(path, f);
|
||||
<span class="lineNum"> 1924 </span> : os_abort();
|
||||
<span class="lineNum"> 1925 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 1926 </span> : }
|
||||
<span class="lineNum"> 1927 </span> :
|
||||
<span class="lineNum"> 1928 </span><span class="lineCov"> 3632862 : ret = sgetb32(f, &v_count);</span>
|
||||
<span class="lineNum"> 1929 </span><span class="lineCov"> 3632862 : if (ret < 0) {</span>
|
||||
<span class="lineNum"> 1928 </span><span class="lineCov"> 3632690 : ret = sgetb32(f, &v_count);</span>
|
||||
<span class="lineNum"> 1929 </span><span class="lineCov"> 3632690 : if (ret < 0) {</span>
|
||||
<span class="lineNum"> 1930 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 1931 </span> : decoding_error(path, f);
|
||||
<span class="lineNum"> 1932 </span> : os_abort();
|
||||
<span class="lineNum"> 1933 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 1934 </span> : }
|
||||
<span class="lineNum"> 1935 </span> :
|
||||
<span class="lineNum"> 1936 </span><span class="lineCov"> 3632862 : if (v_idx + v_count > file->blockmax) {</span>
|
||||
<span class="lineNum"> 1936 </span><span class="lineCov"> 3632690 : if (v_idx + v_count > file->blockmax) {</span>
|
||||
<span class="lineNum"> 1937 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 1938 </span> : decoding_error(path, f);
|
||||
<span class="lineNum"> 1939 </span> : log_fatal("Internal inconsistency in block number!\n");
|
||||
|
|
@ -2003,7 +2003,7 @@
|
|||
<span class="lineNum"> 1941 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 1942 </span> : }
|
||||
<span class="lineNum"> 1943 </span> :
|
||||
<span class="lineNum"> 1944 </span><span class="lineCov"> 3632862 : if (v_pos + v_count > blockmax) {</span>
|
||||
<span class="lineNum"> 1944 </span><span class="lineCov"> 3632689 : if (v_pos + v_count > blockmax) {</span>
|
||||
<span class="lineNum"> 1945 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 1946 </span> : decoding_error(path, f);
|
||||
<span class="lineNum"> 1947 </span> : log_fatal("Internal inconsistency in block size %u/%u!\n", blockmax, v_pos + v_count);
|
||||
|
|
@ -2038,9 +2038,9 @@
|
|||
<span class="lineNum"> 1976 </span> : }
|
||||
<span class="lineNum"> 1977 </span> :
|
||||
<span class="lineNum"> 1978 </span> : /* read the hash only for 'blk/chg/rep', and not for 'new' */
|
||||
<span class="lineNum"> 1979 </span><span class="lineCov"> 8897030 : if (c != 'n') {</span>
|
||||
<span class="lineNum"> 1980 </span><span class="lineCov"> 8897030 : ret = sread(f, block->hash, BLOCK_HASH_SIZE);</span>
|
||||
<span class="lineNum"> 1981 </span><span class="lineCov"> 8897030 : if (ret < 0) {</span>
|
||||
<span class="lineNum"> 1979 </span><span class="lineCov"> 8896647 : if (c != 'n') {</span>
|
||||
<span class="lineNum"> 1980 </span><span class="lineCov"> 8896647 : ret = sread(f, block->hash, BLOCK_HASH_SIZE);</span>
|
||||
<span class="lineNum"> 1981 </span><span class="lineCov"> 8896647 : if (ret < 0) {</span>
|
||||
<span class="lineNum"> 1982 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 1983 </span> : decoding_error(path, f);
|
||||
<span class="lineNum"> 1984 </span> : os_abort();
|
||||
|
|
@ -2053,8 +2053,8 @@
|
|||
<span class="lineNum"> 1991 </span> :
|
||||
<span class="lineNum"> 1992 </span> : /* if the block contains a hash of past data */
|
||||
<span class="lineNum"> 1993 </span> : /* and we are clearing such indeterminate hashes */
|
||||
<span class="lineNum"> 1994 </span><span class="lineCov"> 8897030 : if (state->clear_past_hash</span>
|
||||
<span class="lineNum"> 1995 </span><span class="lineCov"> 2543126 : && block_has_past_hash(block)</span>
|
||||
<span class="lineNum"> 1994 </span><span class="lineCov"> 8896647 : if (state->clear_past_hash</span>
|
||||
<span class="lineNum"> 1995 </span><span class="lineCov"> 2542743 : && block_has_past_hash(block)</span>
|
||||
<span class="lineNum"> 1996 </span> : ) {
|
||||
<span class="lineNum"> 1997 </span> : /* set the hash value to INVALID */
|
||||
<span class="lineNum"> 1998 </span><span class="lineCov"> 28006 : hash_invalid_set(block->hash);</span>
|
||||
|
|
@ -2065,8 +2065,8 @@
|
|||
<span class="lineNum"> 2003 </span> : /* in other sync commands */
|
||||
<span class="lineNum"> 2004 </span> : /* note that this is required only in sync, and we detect */
|
||||
<span class="lineNum"> 2005 </span> : /* this using the clear_past_hash flag */
|
||||
<span class="lineNum"> 2006 </span><span class="lineCov"> 8897030 : if (state->clear_past_hash</span>
|
||||
<span class="lineNum"> 2007 </span><span class="lineCov"> 2543126 : && state->opt.force_nocopy</span>
|
||||
<span class="lineNum"> 2006 </span><span class="lineCov"> 8896647 : if (state->clear_past_hash</span>
|
||||
<span class="lineNum"> 2007 </span><span class="lineCov"> 2542743 : && state->opt.force_nocopy</span>
|
||||
<span class="lineNum"> 2008 </span><span class="lineCov"> 14195 : && block_state_get(block) == BLOCK_STATE_REP</span>
|
||||
<span class="lineNum"> 2009 </span> : ) {
|
||||
<span class="lineNum"> 2010 </span> : /* set the hash value to INVALID */
|
||||
|
|
@ -2078,25 +2078,25 @@
|
|||
<span class="lineNum"> 2016 </span> : /* if we want a full reallocation, marks block as invalid parity */
|
||||
<span class="lineNum"> 2017 </span> : /* note that we do this after the force_nocopy option */
|
||||
<span class="lineNum"> 2018 </span> : /* to avoid to mixup the two things */
|
||||
<span class="lineNum"> 2019 </span><span class="lineCov"> 8897030 : if (state->opt.force_realloc</span>
|
||||
<span class="lineNum"> 2019 </span><span class="lineCov"> 8896647 : if (state->opt.force_realloc</span>
|
||||
<span class="lineNum"> 2020 </span><span class="lineCov"> 27826 : && block_state_get(block) == BLOCK_STATE_BLK) {</span>
|
||||
<span class="lineNum"> 2021 </span> : /* convert from BLK to REP */
|
||||
<span class="lineNum"> 2022 </span><span class="lineCov"> 27826 : block_state_set(block, BLOCK_STATE_REP);</span>
|
||||
<span class="lineNum"> 2023 </span> : }
|
||||
<span class="lineNum"> 2024 </span> :
|
||||
<span class="lineNum"> 2025 </span> : /* set the parity association */
|
||||
<span class="lineNum"> 2026 </span><span class="lineCov"> 8897030 : fs_allocate(disk, v_pos, file, v_idx);</span>
|
||||
<span class="lineNum"> 2026 </span><span class="lineCov"> 8896647 : fs_allocate(disk, v_pos, file, v_idx);</span>
|
||||
<span class="lineNum"> 2027 </span> :
|
||||
<span class="lineNum"> 2028 </span> : /* go to the next block */
|
||||
<span class="lineNum"> 2029 </span><span class="lineCov"> 8897030 : ++v_idx;</span>
|
||||
<span class="lineNum"> 2030 </span><span class="lineCov"> 8897030 : ++v_pos;</span>
|
||||
<span class="lineNum"> 2031 </span><span class="lineCov"> 8897030 : --v_count;</span>
|
||||
<span class="lineNum"> 2029 </span><span class="lineCov"> 8896647 : ++v_idx;</span>
|
||||
<span class="lineNum"> 2030 </span><span class="lineCov"> 8896647 : ++v_pos;</span>
|
||||
<span class="lineNum"> 2031 </span><span class="lineCov"> 8896647 : --v_count;</span>
|
||||
<span class="lineNum"> 2032 </span> : }
|
||||
<span class="lineNum"> 2033 </span> : }
|
||||
<span class="lineNum"> 2034 </span> :
|
||||
<span class="lineNum"> 2035 </span> : /* stat */
|
||||
<span class="lineNum"> 2036 </span><span class="lineCov"> 3612169 : ++count_file;</span>
|
||||
<span class="lineNum"> 2037 </span><span class="lineCov"> 123557 : } else if (c == 'i') {</span>
|
||||
<span class="lineNum"> 2036 </span><span class="lineCov"> 3612017 : ++count_file;</span>
|
||||
<span class="lineNum"> 2037 </span><span class="lineCov"> 123556 : } else if (c == 'i') {</span>
|
||||
<span class="lineNum"> 2038 </span> : /* "inf" command */
|
||||
<span class="lineNum"> 2039 </span> : snapraid_info info;
|
||||
<span class="lineNum"> 2040 </span> : uint32_t v_pos;
|
||||
|
|
@ -2111,7 +2111,7 @@
|
|||
<span class="lineNum"> 2049 </span> : }
|
||||
<span class="lineNum"> 2050 </span> :
|
||||
<span class="lineNum"> 2051 </span><span class="lineCov"> 251 : v_pos = 0;</span>
|
||||
<span class="lineNum"> 2052 </span><span class="lineCov"> 44707 : while (v_pos < blockmax) {</span>
|
||||
<span class="lineNum"> 2052 </span><span class="lineCov"> 55933 : while (v_pos < blockmax) {</span>
|
||||
<span class="lineNum"> 2053 </span> : int bad;
|
||||
<span class="lineNum"> 2054 </span> : int rehash;
|
||||
<span class="lineNum"> 2055 </span> : int justsynced;
|
||||
|
|
@ -2119,15 +2119,15 @@
|
|||
<span class="lineNum"> 2057 </span> : uint32_t flag;
|
||||
<span class="lineNum"> 2058 </span> : uint32_t v_count;
|
||||
<span class="lineNum"> 2059 </span> :
|
||||
<span class="lineNum"> 2060 </span><span class="lineCov"> 44205 : ret = sgetb32(f, &v_count);</span>
|
||||
<span class="lineNum"> 2061 </span><span class="lineCov"> 44205 : if (ret < 0) {</span>
|
||||
<span class="lineNum"> 2060 </span><span class="lineCov"> 55431 : ret = sgetb32(f, &v_count);</span>
|
||||
<span class="lineNum"> 2061 </span><span class="lineCov"> 55431 : if (ret < 0) {</span>
|
||||
<span class="lineNum"> 2062 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 2063 </span> : decoding_error(path, f);
|
||||
<span class="lineNum"> 2064 </span> : os_abort();
|
||||
<span class="lineNum"> 2065 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 2066 </span> : }
|
||||
<span class="lineNum"> 2067 </span> :
|
||||
<span class="lineNum"> 2068 </span><span class="lineCov"> 44205 : if (v_pos + v_count > blockmax) {</span>
|
||||
<span class="lineNum"> 2068 </span><span class="lineCov"> 55431 : if (v_pos + v_count > blockmax) {</span>
|
||||
<span class="lineNum"> 2069 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 2070 </span> : decoding_error(path, f);
|
||||
<span class="lineNum"> 2071 </span> : log_fatal("Internal inconsistency in info size %u/%u!\n", blockmax, v_pos + v_count);
|
||||
|
|
@ -2135,8 +2135,8 @@
|
|||
<span class="lineNum"> 2073 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 2074 </span> : }
|
||||
<span class="lineNum"> 2075 </span> :
|
||||
<span class="lineNum"> 2076 </span><span class="lineCov"> 44205 : ret = sgetb32(f, &flag);</span>
|
||||
<span class="lineNum"> 2077 </span><span class="lineCov"> 44205 : if (ret < 0) {</span>
|
||||
<span class="lineNum"> 2076 </span><span class="lineCov"> 55431 : ret = sgetb32(f, &flag);</span>
|
||||
<span class="lineNum"> 2077 </span><span class="lineCov"> 55431 : if (ret < 0) {</span>
|
||||
<span class="lineNum"> 2078 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 2079 </span> : decoding_error(path, f);
|
||||
<span class="lineNum"> 2080 </span> : os_abort();
|
||||
|
|
@ -2144,10 +2144,10 @@
|
|||
<span class="lineNum"> 2082 </span> : }
|
||||
<span class="lineNum"> 2083 </span> :
|
||||
<span class="lineNum"> 2084 </span> : /* if there is an info */
|
||||
<span class="lineNum"> 2085 </span><span class="lineCov"> 44205 : if ((flag & 1) != 0) {</span>
|
||||
<span class="lineNum"> 2085 </span><span class="lineCov"> 55431 : if ((flag & 1) != 0) {</span>
|
||||
<span class="lineNum"> 2086 </span> : /* read the time */
|
||||
<span class="lineNum"> 2087 </span><span class="lineCov"> 44190 : ret = sgetb32(f, &t);</span>
|
||||
<span class="lineNum"> 2088 </span><span class="lineCov"> 44190 : if (ret < 0) {</span>
|
||||
<span class="lineNum"> 2087 </span><span class="lineCov"> 55416 : ret = sgetb32(f, &t);</span>
|
||||
<span class="lineNum"> 2088 </span><span class="lineCov"> 55416 : if (ret < 0) {</span>
|
||||
<span class="lineNum"> 2089 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 2090 </span> : decoding_error(path, f);
|
||||
<span class="lineNum"> 2091 </span> : os_abort();
|
||||
|
|
@ -2155,11 +2155,11 @@
|
|||
<span class="lineNum"> 2093 </span> : }
|
||||
<span class="lineNum"> 2094 </span> :
|
||||
<span class="lineNum"> 2095 </span> : /* analyze the flags */
|
||||
<span class="lineNum"> 2096 </span><span class="lineCov"> 44190 : bad = (flag & 2) != 0;</span>
|
||||
<span class="lineNum"> 2097 </span><span class="lineCov"> 44190 : rehash = (flag & 4) != 0;</span>
|
||||
<span class="lineNum"> 2098 </span><span class="lineCov"> 44190 : justsynced = (flag & 8) != 0;</span>
|
||||
<span class="lineNum"> 2096 </span><span class="lineCov"> 55416 : bad = (flag & 2) != 0;</span>
|
||||
<span class="lineNum"> 2097 </span><span class="lineCov"> 55416 : rehash = (flag & 4) != 0;</span>
|
||||
<span class="lineNum"> 2098 </span><span class="lineCov"> 55416 : justsynced = (flag & 8) != 0;</span>
|
||||
<span class="lineNum"> 2099 </span> :
|
||||
<span class="lineNum"> 2100 </span><span class="lineCov"> 44190 : if (rehash && state->prevhash == HASH_UNDEFINED) {</span>
|
||||
<span class="lineNum"> 2100 </span><span class="lineCov"> 55416 : if (rehash && state->prevhash == HASH_UNDEFINED) {</span>
|
||||
<span class="lineNum"> 2101 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 2102 </span> : decoding_error(path, f);
|
||||
<span class="lineNum"> 2103 </span> : log_fatal("Internal inconsistency for missing previous checksum!\n");
|
||||
|
|
@ -2167,12 +2167,12 @@
|
|||
<span class="lineNum"> 2105 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 2106 </span> : }
|
||||
<span class="lineNum"> 2107 </span> :
|
||||
<span class="lineNum"> 2108 </span><span class="lineCov"> 44190 : info = info_make(t + v_oldest, bad, rehash, justsynced);</span>
|
||||
<span class="lineNum"> 2108 </span><span class="lineCov"> 55416 : info = info_make(t + v_oldest, bad, rehash, justsynced);</span>
|
||||
<span class="lineNum"> 2109 </span> : } else {
|
||||
<span class="lineNum"> 2110 </span><span class="lineCov"> 15 : info = 0;</span>
|
||||
<span class="lineNum"> 2111 </span> : }
|
||||
<span class="lineNum"> 2112 </span> :
|
||||
<span class="lineNum"> 2113 </span><span class="lineCov"> 1636221 : while (v_count) {</span>
|
||||
<span class="lineNum"> 2113 </span><span class="lineCov"> 1658673 : while (v_count) {</span>
|
||||
<span class="lineNum"> 2114 </span> : /* insert the info in the array */
|
||||
<span class="lineNum"> 2115 </span><span class="lineCov"> 1547811 : info_set(&state->infoarr, v_pos, info);</span>
|
||||
<span class="lineNum"> 2116 </span> :
|
||||
|
|
@ -2195,7 +2195,7 @@
|
|||
<span class="lineNum"> 2133 </span><span class="lineCov"> 1547811 : --v_count;</span>
|
||||
<span class="lineNum"> 2134 </span> : }
|
||||
<span class="lineNum"> 2135 </span> : }
|
||||
<span class="lineNum"> 2136 </span><span class="lineCov"> 123306 : } else if (c == 'h') {</span>
|
||||
<span class="lineNum"> 2136 </span><span class="lineCov"> 123305 : } else if (c == 'h') {</span>
|
||||
<span class="lineNum"> 2137 </span> : /* hole */
|
||||
<span class="lineNum"> 2138 </span> : uint32_t v_pos;
|
||||
<span class="lineNum"> 2139 </span> : struct snapraid_disk* disk;
|
||||
|
|
@ -2293,7 +2293,7 @@
|
|||
<span class="lineNum"> 2231 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 2232 </span> : }
|
||||
<span class="lineNum"> 2233 </span> : }
|
||||
<span class="lineNum"> 2234 </span><span class="lineCov"> 121919 : } else if (c == 's') {</span>
|
||||
<span class="lineNum"> 2234 </span><span class="lineCov"> 121918 : } else if (c == 's') {</span>
|
||||
<span class="lineNum"> 2235 </span> : /* symlink */
|
||||
<span class="lineNum"> 2236 </span> : char sub[PATH_MAX];
|
||||
<span class="lineNum"> 2237 </span> : char linkto[PATH_MAX];
|
||||
|
|
@ -2344,7 +2344,7 @@
|
|||
<span class="lineNum"> 2282 </span> :
|
||||
<span class="lineNum"> 2283 </span> : /* stat */
|
||||
<span class="lineNum"> 2284 </span><span class="lineCov"> 116468 : ++count_symlink;</span>
|
||||
<span class="lineNum"> 2285 </span><span class="lineCov"> 5451 : } else if (c == 'a') {</span>
|
||||
<span class="lineNum"> 2285 </span><span class="lineCov"> 5450 : } else if (c == 'a') {</span>
|
||||
<span class="lineNum"> 2286 </span> : /* hardlink */
|
||||
<span class="lineNum"> 2287 </span> : char sub[PATH_MAX];
|
||||
<span class="lineNum"> 2288 </span> : char linkto[PATH_MAX];
|
||||
|
|
@ -2403,7 +2403,7 @@
|
|||
<span class="lineNum"> 2341 </span> :
|
||||
<span class="lineNum"> 2342 </span> : /* stat */
|
||||
<span class="lineNum"> 2343 </span><span class="lineCov"> 597 : ++count_hardlink;</span>
|
||||
<span class="lineNum"> 2344 </span><span class="lineCov"> 4854 : } else if (c == 'r') {</span>
|
||||
<span class="lineNum"> 2344 </span><span class="lineCov"> 4853 : } else if (c == 'r') {</span>
|
||||
<span class="lineNum"> 2345 </span> : /* dir */
|
||||
<span class="lineNum"> 2346 </span> : char sub[PATH_MAX];
|
||||
<span class="lineNum"> 2347 </span> : struct snapraid_dir* dir;
|
||||
|
|
@ -2445,7 +2445,7 @@
|
|||
<span class="lineNum"> 2383 </span> :
|
||||
<span class="lineNum"> 2384 </span> : /* stat */
|
||||
<span class="lineNum"> 2385 </span><span class="lineCov"> 790 : ++count_dir;</span>
|
||||
<span class="lineNum"> 2386 </span><span class="lineCov"> 4064 : } else if (c == 'c') {</span>
|
||||
<span class="lineNum"> 2386 </span><span class="lineCov"> 4063 : } else if (c == 'c') {</span>
|
||||
<span class="lineNum"> 2387 </span> : /* get the subcommand */
|
||||
<span class="lineNum"> 2388 </span><span class="lineCov"> 252 : c = sgetc(f);</span>
|
||||
<span class="lineNum"> 2389 </span> :
|
||||
|
|
@ -2472,7 +2472,7 @@
|
|||
<span class="lineNum"> 2410 </span> : os_abort();
|
||||
<span class="lineNum"> 2411 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 2412 </span> : }
|
||||
<span class="lineNum"> 2413 </span><span class="lineCov"> 3812 : } else if (c == 'C') {</span>
|
||||
<span class="lineNum"> 2413 </span><span class="lineCov"> 3811 : } else if (c == 'C') {</span>
|
||||
<span class="lineNum"> 2414 </span> : /* get the sub-command */
|
||||
<span class="lineNum"> 2415 </span><span class="lineCov"> 4 : c = sgetc(f);</span>
|
||||
<span class="lineNum"> 2416 </span> :
|
||||
|
|
@ -2499,7 +2499,7 @@
|
|||
<span class="lineNum"> 2437 </span> : os_abort();
|
||||
<span class="lineNum"> 2438 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 2439 </span> : }
|
||||
<span class="lineNum"> 2440 </span><span class="lineCov"> 3808 : } else if (c == 'z') {</span>
|
||||
<span class="lineNum"> 2440 </span><span class="lineCov"> 3807 : } else if (c == 'z') {</span>
|
||||
<span class="lineNum"> 2441 </span> : uint32_t block_size;
|
||||
<span class="lineNum"> 2442 </span> :
|
||||
<span class="lineNum"> 2443 </span><span class="lineCov"> 252 : ret = sgetb32(f, &block_size);</span>
|
||||
|
|
@ -2531,7 +2531,7 @@
|
|||
<span class="lineNum"> 2469 </span> : exit(EXIT_FAILURE);
|
||||
<span class="lineNum"> 2470 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 2471 </span> : }
|
||||
<span class="lineNum"> 2472 </span><span class="lineCov"> 3556 : } else if (c == 'y') {</span>
|
||||
<span class="lineNum"> 2472 </span><span class="lineCov"> 3555 : } else if (c == 'y') {</span>
|
||||
<span class="lineNum"> 2473 </span> : uint32_t hash_size;
|
||||
<span class="lineNum"> 2474 </span> :
|
||||
<span class="lineNum"> 2475 </span><span class="lineCov"> 252 : ret = sgetb32(f, &hash_size);</span>
|
||||
|
|
@ -2563,7 +2563,7 @@
|
|||
<span class="lineNum"> 2501 </span> : exit(EXIT_FAILURE);
|
||||
<span class="lineNum"> 2502 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 2503 </span> : }
|
||||
<span class="lineNum"> 2504 </span><span class="lineCov"> 3304 : } else if (c == 'x') {</span>
|
||||
<span class="lineNum"> 2504 </span><span class="lineCov"> 3303 : } else if (c == 'x') {</span>
|
||||
<span class="lineNum"> 2505 </span><span class="lineCov"> 252 : ret = sgetb32(f, &blockmax);</span>
|
||||
<span class="lineNum"> 2506 </span><span class="lineCov"> 252 : if (ret < 0) {</span>
|
||||
<span class="lineNum"> 2507 </span> : /* LCOV_EXCL_START */
|
||||
|
|
@ -2571,7 +2571,7 @@
|
|||
<span class="lineNum"> 2509 </span> : os_abort();
|
||||
<span class="lineNum"> 2510 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 2511 </span> : }
|
||||
<span class="lineNum"> 2512 </span><span class="lineCov"> 4445 : } else if (c == 'm' || c == 'M') {</span>
|
||||
<span class="lineNum"> 2512 </span><span class="lineCov"> 4444 : } else if (c == 'm' || c == 'M') {</span>
|
||||
<span class="lineNum"> 2513 </span> : struct snapraid_map* map;
|
||||
<span class="lineNum"> 2514 </span> : char uuid[UUID_MAX];
|
||||
<span class="lineNum"> 2515 </span> : uint32_t v_pos;
|
||||
|
|
@ -2658,7 +2658,7 @@
|
|||
<span class="lineNum"> 2596 </span><span class="lineCov"> 1393 : tommy_array_grow(&disk_mapping, mapping_max + 1);</span>
|
||||
<span class="lineNum"> 2597 </span><span class="lineCov"> 1393 : tommy_array_set(&disk_mapping, mapping_max, disk);</span>
|
||||
<span class="lineNum"> 2598 </span><span class="lineCov"> 1393 : ++mapping_max;</span>
|
||||
<span class="lineNum"> 2599 </span><span class="lineCov"> 1659 : } else if (c == 'P') {</span>
|
||||
<span class="lineNum"> 2599 </span><span class="lineCov"> 1658 : } else if (c == 'P') {</span>
|
||||
<span class="lineNum"> 2600 </span> : /* from SnapRAID 7.0 the 'P' command includes the free space */
|
||||
<span class="lineNum"> 2601 </span> : /* from SnapRAID 11.0 the 'P' command is deprecated by 'Q' */
|
||||
<span class="lineNum"> 2602 </span> : char v_uuid[UUID_MAX];
|
||||
|
|
@ -2720,7 +2720,7 @@
|
|||
<span class="lineNum"> 2658 </span><span class="lineNoCov"> 0 : state->parity[v_level].total_blocks = v_total_blocks;</span>
|
||||
<span class="lineNum"> 2659 </span><span class="lineNoCov"> 0 : state->parity[v_level].free_blocks = v_free_blocks;</span>
|
||||
<span class="lineNum"> 2660 </span> : }
|
||||
<span class="lineNum"> 2661 </span><span class="lineCov"> 1659 : } else if (c == 'Q') {</span>
|
||||
<span class="lineNum"> 2661 </span><span class="lineCov"> 1658 : } else if (c == 'Q') {</span>
|
||||
<span class="lineNum"> 2662 </span> : /* from SnapRAID 11.0 the 'Q' command include size info and multi file support */
|
||||
<span class="lineNum"> 2663 </span> : uint32_t v_level;
|
||||
<span class="lineNum"> 2664 </span> : uint32_t v_total_blocks;
|
||||
|
|
@ -2845,7 +2845,7 @@
|
|||
<span class="lineNum"> 2783 </span> : }
|
||||
<span class="lineNum"> 2784 </span> : }
|
||||
<span class="lineNum"> 2785 </span> : }
|
||||
<span class="lineNum"> 2786 </span><span class="lineCov"> 252 : } else if (c == 'N') {</span>
|
||||
<span class="lineNum"> 2786 </span><span class="lineCov"> 251 : } else if (c == 'N') {</span>
|
||||
<span class="lineNum"> 2787 </span> : uint32_t crc_stored;
|
||||
<span class="lineNum"> 2788 </span> : uint32_t crc_computed;
|
||||
<span class="lineNum"> 2789 </span> :
|
||||
|
|
@ -2879,7 +2879,7 @@
|
|||
<span class="lineNum"> 2817 </span> : os_abort();
|
||||
<span class="lineNum"> 2818 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 2819 </span> : }
|
||||
<span class="lineNum"> 2820 </span><span class="lineCov"> 3735725 : }</span>
|
||||
<span class="lineNum"> 2820 </span><span class="lineCov"> 3735573 : }</span>
|
||||
<span class="lineNum"> 2821 </span> :
|
||||
<span class="lineNum"> 2822 </span><span class="lineCov"> 251 : tommy_array_done(&disk_mapping);</span>
|
||||
<span class="lineNum"> 2823 </span> :
|
||||
|
|
@ -3141,30 +3141,30 @@
|
|||
<span class="lineNum"> 3079 </span> :
|
||||
<span class="lineNum"> 3080 </span> : /* for all the blocks of the file */
|
||||
<span class="lineNum"> 3081 </span><span class="lineCov"> 1770884 : begin = 0;</span>
|
||||
<span class="lineNum"> 3082 </span><span class="lineCov"> 5323009 : while (begin < file->blockmax) {</span>
|
||||
<span class="lineNum"> 3083 </span><span class="lineCov"> 1781241 : unsigned v_state = block_state_get(fs_file2block_get(file, begin));</span>
|
||||
<span class="lineNum"> 3084 </span><span class="lineCov"> 1781241 : block_off_t v_pos = fs_file2par_get(disk, file, begin);</span>
|
||||
<span class="lineNum"> 3082 </span><span class="lineCov"> 5322967 : while (begin < file->blockmax) {</span>
|
||||
<span class="lineNum"> 3083 </span><span class="lineCov"> 1781199 : unsigned v_state = block_state_get(fs_file2block_get(file, begin));</span>
|
||||
<span class="lineNum"> 3084 </span><span class="lineCov"> 1781199 : block_off_t v_pos = fs_file2par_get(disk, file, begin);</span>
|
||||
<span class="lineNum"> 3085 </span> : uint32_t v_count;
|
||||
<span class="lineNum"> 3086 </span> :
|
||||
<span class="lineNum"> 3087 </span> : block_off_t end;
|
||||
<span class="lineNum"> 3088 </span> :
|
||||
<span class="lineNum"> 3089 </span> : /* find the end of run of blocks */
|
||||
<span class="lineNum"> 3090 </span><span class="lineCov"> 1781241 : end = begin + 1;</span>
|
||||
<span class="lineNum"> 3091 </span><span class="lineCov"> 6146381 : while (end < file->blockmax) {</span>
|
||||
<span class="lineNum"> 3090 </span><span class="lineCov"> 1781199 : end = begin + 1;</span>
|
||||
<span class="lineNum"> 3091 </span><span class="lineCov"> 6146339 : while (end < file->blockmax) {</span>
|
||||
<span class="lineNum"> 3092 </span><span class="lineCov"> 2596728 : if (v_state != block_state_get(fs_file2block_get(file, end)))</span>
|
||||
<span class="lineNum"> 3093 </span><span class="lineCov"> 12 : break;</span>
|
||||
<span class="lineNum"> 3094 </span><span class="lineCov"> 2596716 : if (v_pos + (end - begin) != fs_file2par_get(disk, file, end))</span>
|
||||
<span class="lineNum"> 3095 </span><span class="lineCov"> 12817 : break;</span>
|
||||
<span class="lineNum"> 3096 </span><span class="lineCov"> 2583899 : ++end;</span>
|
||||
<span class="lineNum"> 3095 </span><span class="lineCov"> 12775 : break;</span>
|
||||
<span class="lineNum"> 3096 </span><span class="lineCov"> 2583941 : ++end;</span>
|
||||
<span class="lineNum"> 3097 </span> : }
|
||||
<span class="lineNum"> 3098 </span> :
|
||||
<span class="lineNum"> 3099 </span><span class="lineCov"> 1781241 : switch (v_state) {</span>
|
||||
<span class="lineNum"> 3099 </span><span class="lineCov"> 1781199 : switch (v_state) {</span>
|
||||
<span class="lineNum"> 3100 </span> : case BLOCK_STATE_BLK :
|
||||
<span class="lineNum"> 3101 </span><span class="lineCov"> 1678555 : sputc('b', f);</span>
|
||||
<span class="lineNum"> 3102 </span><span class="lineCov"> 1678555 : break;</span>
|
||||
<span class="lineNum"> 3101 </span><span class="lineCov"> 1678581 : sputc('b', f);</span>
|
||||
<span class="lineNum"> 3102 </span><span class="lineCov"> 1678581 : break;</span>
|
||||
<span class="lineNum"> 3103 </span> : case BLOCK_STATE_CHG :
|
||||
<span class="lineNum"> 3104 </span><span class="lineCov"> 67768 : sputc('g', f);</span>
|
||||
<span class="lineNum"> 3105 </span><span class="lineCov"> 67768 : break;</span>
|
||||
<span class="lineNum"> 3104 </span><span class="lineCov"> 67700 : sputc('g', f);</span>
|
||||
<span class="lineNum"> 3105 </span><span class="lineCov"> 67700 : break;</span>
|
||||
<span class="lineNum"> 3106 </span> : case BLOCK_STATE_REP :
|
||||
<span class="lineNum"> 3107 </span><span class="lineCov"> 34918 : sputc('p', f);</span>
|
||||
<span class="lineNum"> 3108 </span><span class="lineCov"> 34918 : break;</span>
|
||||
|
|
@ -3175,19 +3175,19 @@
|
|||
<span class="lineNum"> 3113 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 3114 </span> : }
|
||||
<span class="lineNum"> 3115 </span> :
|
||||
<span class="lineNum"> 3116 </span><span class="lineCov"> 1781241 : sputb32(v_pos, f);</span>
|
||||
<span class="lineNum"> 3116 </span><span class="lineCov"> 1781199 : sputb32(v_pos, f);</span>
|
||||
<span class="lineNum"> 3117 </span> :
|
||||
<span class="lineNum"> 3118 </span><span class="lineCov"> 1781241 : v_count = end - begin;</span>
|
||||
<span class="lineNum"> 3119 </span><span class="lineCov"> 1781241 : sputb32(v_count, f);</span>
|
||||
<span class="lineNum"> 3118 </span><span class="lineCov"> 1781199 : v_count = end - begin;</span>
|
||||
<span class="lineNum"> 3119 </span><span class="lineCov"> 1781199 : sputb32(v_count, f);</span>
|
||||
<span class="lineNum"> 3120 </span> :
|
||||
<span class="lineNum"> 3121 </span> : /* write hashes */
|
||||
<span class="lineNum"> 3122 </span><span class="lineCov"> 6146381 : for (idx = begin; idx < end; ++idx) {</span>
|
||||
<span class="lineNum"> 3122 </span><span class="lineCov"> 6146339 : for (idx = begin; idx < end; ++idx) {</span>
|
||||
<span class="lineNum"> 3123 </span><span class="lineCov"> 4365140 : struct snapraid_block* block = fs_file2block_get(file, idx);</span>
|
||||
<span class="lineNum"> 3124 </span> :
|
||||
<span class="lineNum"> 3125 </span><span class="lineCov"> 4365140 : swrite(block->hash, BLOCK_HASH_SIZE, f);</span>
|
||||
<span class="lineNum"> 3126 </span> : }
|
||||
<span class="lineNum"> 3127 </span> :
|
||||
<span class="lineNum"> 3128 </span><span class="lineCov"> 1781241 : if (serror(f)) {</span>
|
||||
<span class="lineNum"> 3128 </span><span class="lineCov"> 1781199 : if (serror(f)) {</span>
|
||||
<span class="lineNum"> 3129 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 3130 </span> : log_fatal("Error writing the content file '%s'. %s.\n", serrorfile(f), strerror(errno));
|
||||
<span class="lineNum"> 3131 </span> : return context;
|
||||
|
|
@ -3195,7 +3195,7 @@
|
|||
<span class="lineNum"> 3133 </span> : }
|
||||
<span class="lineNum"> 3134 </span> :
|
||||
<span class="lineNum"> 3135 </span> : /* next begin position */
|
||||
<span class="lineNum"> 3136 </span><span class="lineCov"> 1781241 : begin = end;</span>
|
||||
<span class="lineNum"> 3136 </span><span class="lineCov"> 1781199 : begin = end;</span>
|
||||
<span class="lineNum"> 3137 </span> : }
|
||||
<span class="lineNum"> 3138 </span> :
|
||||
<span class="lineNum"> 3139 </span><span class="lineCov"> 1770884 : ++count_file;</span>
|
||||
|
|
@ -3304,44 +3304,44 @@
|
|||
<span class="lineNum"> 3242 </span><span class="lineCov"> 151 : sputc('i', f);</span>
|
||||
<span class="lineNum"> 3243 </span><span class="lineCov"> 151 : sputb32(info_oldest, f);</span>
|
||||
<span class="lineNum"> 3244 </span><span class="lineCov"> 151 : begin = 0;</span>
|
||||
<span class="lineNum"> 3245 </span><span class="lineCov"> 15146 : while (begin < blockmax) {</span>
|
||||
<span class="lineNum"> 3245 </span><span class="lineCov"> 19734 : while (begin < blockmax) {</span>
|
||||
<span class="lineNum"> 3246 </span> : snapraid_info info;
|
||||
<span class="lineNum"> 3247 </span> : block_off_t end;
|
||||
<span class="lineNum"> 3248 </span> : time_t t;
|
||||
<span class="lineNum"> 3249 </span> : unsigned flag;
|
||||
<span class="lineNum"> 3250 </span> :
|
||||
<span class="lineNum"> 3251 </span><span class="lineCov"> 14844 : info = info_get(&state->infoarr, begin);</span>
|
||||
<span class="lineNum"> 3251 </span><span class="lineCov"> 19432 : info = info_get(&state->infoarr, begin);</span>
|
||||
<span class="lineNum"> 3252 </span> :
|
||||
<span class="lineNum"> 3253 </span> : /* find the end of run of blocks */
|
||||
<span class="lineNum"> 3254 </span><span class="lineCov"> 14844 : end = begin + 1;</span>
|
||||
<span class="lineNum"> 3255 </span><span class="lineCov"> 770943 : while (end < blockmax</span>
|
||||
<span class="lineNum"> 3254 </span><span class="lineCov"> 19432 : end = begin + 1;</span>
|
||||
<span class="lineNum"> 3255 </span><span class="lineCov"> 775531 : while (end < blockmax</span>
|
||||
<span class="lineNum"> 3256 </span><span class="lineCov"> 755951 : && info == info_get(&state->infoarr, end)</span>
|
||||
<span class="lineNum"> 3257 </span> : ) {
|
||||
<span class="lineNum"> 3258 </span><span class="lineCov"> 741255 : ++end;</span>
|
||||
<span class="lineNum"> 3258 </span><span class="lineCov"> 736667 : ++end;</span>
|
||||
<span class="lineNum"> 3259 </span> : }
|
||||
<span class="lineNum"> 3260 </span> :
|
||||
<span class="lineNum"> 3261 </span><span class="lineCov"> 14844 : sputb32(end - begin, f);</span>
|
||||
<span class="lineNum"> 3261 </span><span class="lineCov"> 19432 : sputb32(end - begin, f);</span>
|
||||
<span class="lineNum"> 3262 </span> :
|
||||
<span class="lineNum"> 3263 </span> : /* if there is info */
|
||||
<span class="lineNum"> 3264 </span><span class="lineCov"> 14844 : if (info) {</span>
|
||||
<span class="lineNum"> 3264 </span><span class="lineCov"> 19432 : if (info) {</span>
|
||||
<span class="lineNum"> 3265 </span> : /* other flags */
|
||||
<span class="lineNum"> 3266 </span><span class="lineCov"> 14821 : flag = 1; /* info is present */</span>
|
||||
<span class="lineNum"> 3267 </span><span class="lineCov"> 14821 : if (info_get_bad(info))</span>
|
||||
<span class="lineNum"> 3268 </span><span class="lineCov"> 1340 : flag |= 2;</span>
|
||||
<span class="lineNum"> 3269 </span><span class="lineCov"> 14821 : if (info_get_rehash(info))</span>
|
||||
<span class="lineNum"> 3270 </span><span class="lineCov"> 4967 : flag |= 4;</span>
|
||||
<span class="lineNum"> 3271 </span><span class="lineCov"> 14821 : if (info_get_justsynced(info))</span>
|
||||
<span class="lineNum"> 3272 </span><span class="lineCov"> 7432 : flag |= 8;</span>
|
||||
<span class="lineNum"> 3273 </span><span class="lineCov"> 14821 : sputb32(flag, f);</span>
|
||||
<span class="lineNum"> 3266 </span><span class="lineCov"> 19409 : flag = 1; /* info is present */</span>
|
||||
<span class="lineNum"> 3267 </span><span class="lineCov"> 19409 : if (info_get_bad(info))</span>
|
||||
<span class="lineNum"> 3268 </span><span class="lineCov"> 1358 : flag |= 2;</span>
|
||||
<span class="lineNum"> 3269 </span><span class="lineCov"> 19409 : if (info_get_rehash(info))</span>
|
||||
<span class="lineNum"> 3270 </span><span class="lineCov"> 5212 : flag |= 4;</span>
|
||||
<span class="lineNum"> 3271 </span><span class="lineCov"> 19409 : if (info_get_justsynced(info))</span>
|
||||
<span class="lineNum"> 3272 </span><span class="lineCov"> 12050 : flag |= 8;</span>
|
||||
<span class="lineNum"> 3273 </span><span class="lineCov"> 19409 : sputb32(flag, f);</span>
|
||||
<span class="lineNum"> 3274 </span> :
|
||||
<span class="lineNum"> 3275 </span><span class="lineCov"> 14821 : t = info_get_time(info) - info_oldest;</span>
|
||||
<span class="lineNum"> 3276 </span><span class="lineCov"> 14821 : sputb32(t, f);</span>
|
||||
<span class="lineNum"> 3275 </span><span class="lineCov"> 19409 : t = info_get_time(info) - info_oldest;</span>
|
||||
<span class="lineNum"> 3276 </span><span class="lineCov"> 19409 : sputb32(t, f);</span>
|
||||
<span class="lineNum"> 3277 </span> : } else {
|
||||
<span class="lineNum"> 3278 </span> : /* write a special 0 flag to mark missing info */
|
||||
<span class="lineNum"> 3279 </span><span class="lineCov"> 23 : sputb32(0, f);</span>
|
||||
<span class="lineNum"> 3280 </span> : }
|
||||
<span class="lineNum"> 3281 </span> :
|
||||
<span class="lineNum"> 3282 </span><span class="lineCov"> 14844 : if (serror(f)) {</span>
|
||||
<span class="lineNum"> 3282 </span><span class="lineCov"> 19432 : if (serror(f)) {</span>
|
||||
<span class="lineNum"> 3283 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 3284 </span> : log_fatal("Error writing the content file '%s'. %s.\n", serrorfile(f), strerror(errno));
|
||||
<span class="lineNum"> 3285 </span> : return context;
|
||||
|
|
@ -3349,7 +3349,7 @@
|
|||
<span class="lineNum"> 3287 </span> : }
|
||||
<span class="lineNum"> 3288 </span> :
|
||||
<span class="lineNum"> 3289 </span> : /* next begin position */
|
||||
<span class="lineNum"> 3290 </span><span class="lineCov"> 14844 : begin = end;</span>
|
||||
<span class="lineNum"> 3290 </span><span class="lineCov"> 19432 : begin = end;</span>
|
||||
<span class="lineNum"> 3291 </span> : }
|
||||
<span class="lineNum"> 3292 </span> :
|
||||
<span class="lineNum"> 3293 </span><span class="lineCov"> 151 : sputc('N', f);</span>
|
||||
|
|
@ -3438,7 +3438,7 @@
|
|||
<span class="lineNum"> 3376 </span><span class="lineCov"> 711614 : time_t info_time = info_get_time(info);</span>
|
||||
<span class="lineNum"> 3377 </span> :
|
||||
<span class="lineNum"> 3378 </span><span class="lineCov"> 711614 : if (!info_oldest || info_time < info_oldest)</span>
|
||||
<span class="lineNum"> 3379 </span><span class="lineCov"> 152 : info_oldest = info_time;</span>
|
||||
<span class="lineNum"> 3379 </span><span class="lineCov"> 150 : info_oldest = info_time;</span>
|
||||
<span class="lineNum"> 3380 </span> :
|
||||
<span class="lineNum"> 3381 </span><span class="lineCov"> 711614 : if (info_get_rehash(info))</span>
|
||||
<span class="lineNum"> 3382 </span><span class="lineCov"> 13822 : info_has_rehash = 1;</span>
|
||||
|
|
@ -4089,7 +4089,7 @@
|
|||
<span class="lineNum"> 4027 </span><span class="lineCov"> 78138 : || filter_existence(filter_missing, disk->dir, file->sub) != 0</span>
|
||||
<span class="lineNum"> 4028 </span><span class="lineCov"> 38646 : || filter_correctness(filter_error, &state->infoarr, disk, file) != 0</span>
|
||||
<span class="lineNum"> 4029 </span> : ) {
|
||||
<span class="lineNum"> 4030 </span><span class="lineCov"> 109469 : file_flag_set(file, FILE_IS_EXCLUDED);</span>
|
||||
<span class="lineNum"> 4030 </span><span class="lineCov"> 109457 : file_flag_set(file, FILE_IS_EXCLUDED);</span>
|
||||
<span class="lineNum"> 4031 </span> : }
|
||||
<span class="lineNum"> 4032 </span> : }
|
||||
<span class="lineNum"> 4033 </span> :
|
||||
|
|
@ -4229,23 +4229,23 @@
|
|||
<span class="lineNum"> 4167 </span> : /**
|
||||
<a name="4168"><span class="lineNum"> 4168 </span> : * Set the latest tick data in the progress vector.</a>
|
||||
<span class="lineNum"> 4169 </span> : */
|
||||
<span class="lineNum"> 4170 </span><span class="lineCov"> 489 : static void state_progress_latest(struct snapraid_state* state)</span>
|
||||
<span class="lineNum"> 4170 </span><span class="lineCov"> 495 : static void state_progress_latest(struct snapraid_state* state)</span>
|
||||
<span class="lineNum"> 4171 </span> : {
|
||||
<span class="lineNum"> 4172 </span> : tommy_node* i;
|
||||
<span class="lineNum"> 4173 </span> : unsigned l;
|
||||
<span class="lineNum"> 4174 </span> :
|
||||
<span class="lineNum"> 4175 </span><span class="lineCov"> 489 : state->progress_tick_misc[state->progress_ptr] = state->tick_misc;</span>
|
||||
<span class="lineNum"> 4176 </span><span class="lineCov"> 489 : state->progress_tick_sched[state->progress_ptr] = state->tick_sched;</span>
|
||||
<span class="lineNum"> 4177 </span><span class="lineCov"> 489 : state->progress_tick_raid[state->progress_ptr] = state->tick_raid;</span>
|
||||
<span class="lineNum"> 4178 </span><span class="lineCov"> 489 : state->progress_tick_hash[state->progress_ptr] = state->tick_hash;</span>
|
||||
<span class="lineNum"> 4179 </span><span class="lineCov"> 489 : state->progress_tick_io[state->progress_ptr] = state->tick_io;</span>
|
||||
<span class="lineNum"> 4180 </span><span class="lineCov"> 3416 : for (i = state->disklist; i != 0; i = i->next) {</span>
|
||||
<span class="lineNum"> 4181 </span><span class="lineCov"> 2927 : struct snapraid_disk* disk = i->data;</span>
|
||||
<span class="lineNum"> 4182 </span><span class="lineCov"> 2927 : disk->progress_tick[state->progress_ptr] = disk->tick;</span>
|
||||
<span class="lineNum"> 4175 </span><span class="lineCov"> 495 : state->progress_tick_misc[state->progress_ptr] = state->tick_misc;</span>
|
||||
<span class="lineNum"> 4176 </span><span class="lineCov"> 495 : state->progress_tick_sched[state->progress_ptr] = state->tick_sched;</span>
|
||||
<span class="lineNum"> 4177 </span><span class="lineCov"> 495 : state->progress_tick_raid[state->progress_ptr] = state->tick_raid;</span>
|
||||
<span class="lineNum"> 4178 </span><span class="lineCov"> 495 : state->progress_tick_hash[state->progress_ptr] = state->tick_hash;</span>
|
||||
<span class="lineNum"> 4179 </span><span class="lineCov"> 495 : state->progress_tick_io[state->progress_ptr] = state->tick_io;</span>
|
||||
<span class="lineNum"> 4180 </span><span class="lineCov"> 3457 : for (i = state->disklist; i != 0; i = i->next) {</span>
|
||||
<span class="lineNum"> 4181 </span><span class="lineCov"> 2962 : struct snapraid_disk* disk = i->data;</span>
|
||||
<span class="lineNum"> 4182 </span><span class="lineCov"> 2962 : disk->progress_tick[state->progress_ptr] = disk->tick;</span>
|
||||
<span class="lineNum"> 4183 </span> : }
|
||||
<span class="lineNum"> 4184 </span><span class="lineCov"> 2774 : for (l = 0; l < state->level; ++l)</span>
|
||||
<span class="lineNum"> 4185 </span><span class="lineCov"> 2285 : state->parity[l].progress_tick[state->progress_ptr] = state->parity[l].tick;</span>
|
||||
<span class="lineNum"> 4186 </span><span class="lineCov"> 489 : }</span>
|
||||
<span class="lineNum"> 4184 </span><span class="lineCov"> 2811 : for (l = 0; l < state->level; ++l)</span>
|
||||
<span class="lineNum"> 4185 </span><span class="lineCov"> 2316 : state->parity[l].progress_tick[state->progress_ptr] = state->parity[l].tick;</span>
|
||||
<span class="lineNum"> 4186 </span><span class="lineCov"> 495 : }</span>
|
||||
<span class="lineNum"> 4187 </span> :
|
||||
<span class="lineNum"> 4188 </span> : /**
|
||||
<span class="lineNum"> 4189 </span> : * Number of columns
|
||||
|
|
@ -4395,45 +4395,45 @@
|
|||
<span class="lineNum"> 4333 </span><span class="lineCov"> 1 : printf("\n");</span>
|
||||
<a name="4334"><span class="lineNum"> 4334 </span> : }</a>
|
||||
<span class="lineNum"> 4335 </span> :
|
||||
<span class="lineNum"> 4336 </span><span class="lineCov"> 1073508 : int state_progress(struct snapraid_state* state, struct snapraid_io* io, block_off_t blockpos, block_off_t countpos, block_off_t countmax, data_off_t countsize)</span>
|
||||
<span class="lineNum"> 4336 </span><span class="lineCov"> 1073409 : int state_progress(struct snapraid_state* state, struct snapraid_io* io, block_off_t blockpos, block_off_t countpos, block_off_t countmax, data_off_t countsize)</span>
|
||||
<span class="lineNum"> 4337 </span> : {
|
||||
<span class="lineNum"> 4338 </span> : time_t now;
|
||||
<span class="lineNum"> 4339 </span> : int pred;
|
||||
<span class="lineNum"> 4340 </span> :
|
||||
<span class="lineNum"> 4341 </span><span class="lineCov"> 1073508 : now = time(0);</span>
|
||||
<span class="lineNum"> 4341 </span><span class="lineCov"> 1073409 : now = time(0);</span>
|
||||
<span class="lineNum"> 4342 </span> :
|
||||
<span class="lineNum"> 4343 </span> : /* previous position */
|
||||
<span class="lineNum"> 4344 </span><span class="lineCov"> 1073508 : pred = state->progress_ptr + PROGRESS_MAX - 1;</span>
|
||||
<span class="lineNum"> 4345 </span><span class="lineCov"> 1073508 : if (pred >= PROGRESS_MAX)</span>
|
||||
<span class="lineNum"> 4346 </span><span class="lineCov"> 1073309 : pred -= PROGRESS_MAX;</span>
|
||||
<span class="lineNum"> 4344 </span><span class="lineCov"> 1073409 : pred = state->progress_ptr + PROGRESS_MAX - 1;</span>
|
||||
<span class="lineNum"> 4345 </span><span class="lineCov"> 1073409 : if (pred >= PROGRESS_MAX)</span>
|
||||
<span class="lineNum"> 4346 </span><span class="lineCov"> 1073210 : pred -= PROGRESS_MAX;</span>
|
||||
<span class="lineNum"> 4347 </span> :
|
||||
<span class="lineNum"> 4348 </span> : /* if the previous measure is different */
|
||||
<span class="lineNum"> 4349 </span><span class="lineCov"> 1073508 : if (state->progress_tick == 0</span>
|
||||
<span class="lineNum"> 4350 </span><span class="lineCov"> 1073309 : || state->progress_time[pred] != now</span>
|
||||
<span class="lineNum"> 4349 </span><span class="lineCov"> 1073409 : if (state->progress_tick == 0</span>
|
||||
<span class="lineNum"> 4350 </span><span class="lineCov"> 1073210 : || state->progress_time[pred] != now</span>
|
||||
<span class="lineNum"> 4351 </span> : ) {
|
||||
<span class="lineNum"> 4352 </span> : time_t elapsed;
|
||||
<span class="lineNum"> 4353 </span><span class="lineCov"> 393 : unsigned out_perc = 0;</span>
|
||||
<span class="lineNum"> 4354 </span><span class="lineCov"> 393 : unsigned out_speed = 0;</span>
|
||||
<span class="lineNum"> 4355 </span><span class="lineCov"> 393 : unsigned out_cpu = 0;</span>
|
||||
<span class="lineNum"> 4356 </span><span class="lineCov"> 393 : unsigned out_eta = 0;</span>
|
||||
<span class="lineNum"> 4357 </span><span class="lineCov"> 393 : int out_computed = 0;</span>
|
||||
<span class="lineNum"> 4353 </span><span class="lineCov"> 399 : unsigned out_perc = 0;</span>
|
||||
<span class="lineNum"> 4354 </span><span class="lineCov"> 399 : unsigned out_speed = 0;</span>
|
||||
<span class="lineNum"> 4355 </span><span class="lineCov"> 399 : unsigned out_cpu = 0;</span>
|
||||
<span class="lineNum"> 4356 </span><span class="lineCov"> 399 : unsigned out_eta = 0;</span>
|
||||
<span class="lineNum"> 4357 </span><span class="lineCov"> 399 : int out_computed = 0;</span>
|
||||
<span class="lineNum"> 4358 </span> :
|
||||
<span class="lineNum"> 4359 </span> : /* store the new measure */
|
||||
<span class="lineNum"> 4360 </span><span class="lineCov"> 393 : state->progress_time[state->progress_ptr] = now;</span>
|
||||
<span class="lineNum"> 4361 </span><span class="lineCov"> 393 : state->progress_pos[state->progress_ptr] = countpos;</span>
|
||||
<span class="lineNum"> 4362 </span><span class="lineCov"> 393 : state->progress_size[state->progress_ptr] = countsize;</span>
|
||||
<span class="lineNum"> 4363 </span><span class="lineCov"> 393 : state_progress_latest(state);</span>
|
||||
<span class="lineNum"> 4360 </span><span class="lineCov"> 399 : state->progress_time[state->progress_ptr] = now;</span>
|
||||
<span class="lineNum"> 4361 </span><span class="lineCov"> 399 : state->progress_pos[state->progress_ptr] = countpos;</span>
|
||||
<span class="lineNum"> 4362 </span><span class="lineCov"> 399 : state->progress_size[state->progress_ptr] = countsize;</span>
|
||||
<span class="lineNum"> 4363 </span><span class="lineCov"> 399 : state_progress_latest(state);</span>
|
||||
<span class="lineNum"> 4364 </span> :
|
||||
<span class="lineNum"> 4365 </span><span class="lineCov"> 393 : elapsed = now - state->progress_whole_start - state->progress_wasted;</span>
|
||||
<span class="lineNum"> 4365 </span><span class="lineCov"> 399 : elapsed = now - state->progress_whole_start - state->progress_wasted;</span>
|
||||
<span class="lineNum"> 4366 </span> :
|
||||
<span class="lineNum"> 4367 </span> : /* completion percentage */
|
||||
<span class="lineNum"> 4368 </span><span class="lineCov"> 393 : if (countmax)</span>
|
||||
<span class="lineNum"> 4369 </span><span class="lineCov"> 393 : out_perc = countpos * 100 / countmax;</span>
|
||||
<span class="lineNum"> 4368 </span><span class="lineCov"> 399 : if (countmax)</span>
|
||||
<span class="lineNum"> 4369 </span><span class="lineCov"> 399 : out_perc = countpos * 100 / countmax;</span>
|
||||
<span class="lineNum"> 4370 </span> :
|
||||
<span class="lineNum"> 4371 </span> : /* if we have at least 5 measures */
|
||||
<span class="lineNum"> 4372 </span><span class="lineCov"> 393 : if (state->progress_tick >= 5</span>
|
||||
<span class="lineNum"> 4372 </span><span class="lineCov"> 399 : if (state->progress_tick >= 5</span>
|
||||
<span class="lineNum"> 4373 </span> : /* or if we are running in test mode, with at least one measure */
|
||||
<span class="lineNum"> 4374 </span><span class="lineCov"> 369 : || (state->opt.force_progress && state->progress_tick >= 1)</span>
|
||||
<span class="lineNum"> 4374 </span><span class="lineCov"> 378 : || (state->opt.force_progress && state->progress_tick >= 1)</span>
|
||||
<span class="lineNum"> 4375 </span> : ) {
|
||||
<span class="lineNum"> 4376 </span> : int oldest;
|
||||
<span class="lineNum"> 4377 </span> : int past;
|
||||
|
|
@ -4448,88 +4448,88 @@
|
|||
<span class="lineNum"> 4386 </span> : uint64_t oldest_tick_total;
|
||||
<span class="lineNum"> 4387 </span> :
|
||||
<span class="lineNum"> 4388 </span> : /* number of past measures */
|
||||
<span class="lineNum"> 4389 </span><span class="lineCov"> 194 : past = state->progress_tick;</span>
|
||||
<span class="lineNum"> 4389 </span><span class="lineCov"> 200 : past = state->progress_tick;</span>
|
||||
<span class="lineNum"> 4390 </span> :
|
||||
<span class="lineNum"> 4391 </span> : /* drop the oldest ones, to promptly */
|
||||
<span class="lineNum"> 4392 </span> : /* skip the startup phase */
|
||||
<span class="lineNum"> 4393 </span><span class="lineCov"> 194 : past -= past / 5;</span>
|
||||
<span class="lineNum"> 4393 </span><span class="lineCov"> 200 : past -= past / 5;</span>
|
||||
<span class="lineNum"> 4394 </span> :
|
||||
<span class="lineNum"> 4395 </span> : /* check how much we can go in the past */
|
||||
<span class="lineNum"> 4396 </span><span class="lineCov"> 194 : if (past >= PROGRESS_MAX - 1) {</span>
|
||||
<span class="lineNum"> 4396 </span><span class="lineCov"> 200 : if (past >= PROGRESS_MAX - 1) {</span>
|
||||
<span class="lineNum"> 4397 </span> : /* the vector is filled, so we are already in position */
|
||||
<span class="lineNum"> 4398 </span> : /* to get the possible oldest one */
|
||||
<span class="lineNum"> 4399 </span><span class="lineNoCov"> 0 : oldest = state->progress_ptr + 1;</span>
|
||||
<span class="lineNum"> 4400 </span> : } else {
|
||||
<span class="lineNum"> 4401 </span> : /* go backward the number of positions selected */
|
||||
<span class="lineNum"> 4402 </span><span class="lineCov"> 194 : oldest = state->progress_ptr + PROGRESS_MAX - past;</span>
|
||||
<span class="lineNum"> 4402 </span><span class="lineCov"> 200 : oldest = state->progress_ptr + PROGRESS_MAX - past;</span>
|
||||
<span class="lineNum"> 4403 </span> : }
|
||||
<span class="lineNum"> 4404 </span><span class="lineCov"> 194 : if (oldest >= PROGRESS_MAX)</span>
|
||||
<span class="lineNum"> 4405 </span><span class="lineCov"> 194 : oldest -= PROGRESS_MAX;</span>
|
||||
<span class="lineNum"> 4404 </span><span class="lineCov"> 200 : if (oldest >= PROGRESS_MAX)</span>
|
||||
<span class="lineNum"> 4405 </span><span class="lineCov"> 200 : oldest -= PROGRESS_MAX;</span>
|
||||
<span class="lineNum"> 4406 </span> :
|
||||
<span class="lineNum"> 4407 </span><span class="lineCov"> 388 : tick_cpu = state->progress_tick_misc[state->progress_ptr]</span>
|
||||
<span class="lineNum"> 4408 </span><span class="lineCov"> 194 : + state->progress_tick_sched[state->progress_ptr]</span>
|
||||
<span class="lineNum"> 4409 </span><span class="lineCov"> 194 : + state->progress_tick_raid[state->progress_ptr]</span>
|
||||
<span class="lineNum"> 4410 </span><span class="lineCov"> 194 : + state->progress_tick_hash[state->progress_ptr];</span>
|
||||
<span class="lineNum"> 4411 </span><span class="lineCov"> 194 : tick_total = tick_cpu + state->progress_tick_io[state->progress_ptr];</span>
|
||||
<span class="lineNum"> 4407 </span><span class="lineCov"> 400 : tick_cpu = state->progress_tick_misc[state->progress_ptr]</span>
|
||||
<span class="lineNum"> 4408 </span><span class="lineCov"> 200 : + state->progress_tick_sched[state->progress_ptr]</span>
|
||||
<span class="lineNum"> 4409 </span><span class="lineCov"> 200 : + state->progress_tick_raid[state->progress_ptr]</span>
|
||||
<span class="lineNum"> 4410 </span><span class="lineCov"> 200 : + state->progress_tick_hash[state->progress_ptr];</span>
|
||||
<span class="lineNum"> 4411 </span><span class="lineCov"> 200 : tick_total = tick_cpu + state->progress_tick_io[state->progress_ptr];</span>
|
||||
<span class="lineNum"> 4412 </span> :
|
||||
<span class="lineNum"> 4413 </span><span class="lineCov"> 388 : oldest_tick_cpu = state->progress_tick_misc[oldest]</span>
|
||||
<span class="lineNum"> 4414 </span><span class="lineCov"> 194 : + state->progress_tick_sched[oldest]</span>
|
||||
<span class="lineNum"> 4415 </span><span class="lineCov"> 194 : + state->progress_tick_raid[oldest]</span>
|
||||
<span class="lineNum"> 4416 </span><span class="lineCov"> 194 : + state->progress_tick_hash[oldest];</span>
|
||||
<span class="lineNum"> 4417 </span><span class="lineCov"> 194 : oldest_tick_total = oldest_tick_cpu + state->progress_tick_io[oldest];</span>
|
||||
<span class="lineNum"> 4413 </span><span class="lineCov"> 400 : oldest_tick_cpu = state->progress_tick_misc[oldest]</span>
|
||||
<span class="lineNum"> 4414 </span><span class="lineCov"> 200 : + state->progress_tick_sched[oldest]</span>
|
||||
<span class="lineNum"> 4415 </span><span class="lineCov"> 200 : + state->progress_tick_raid[oldest]</span>
|
||||
<span class="lineNum"> 4416 </span><span class="lineCov"> 200 : + state->progress_tick_hash[oldest];</span>
|
||||
<span class="lineNum"> 4417 </span><span class="lineCov"> 200 : oldest_tick_total = oldest_tick_cpu + state->progress_tick_io[oldest];</span>
|
||||
<span class="lineNum"> 4418 </span> :
|
||||
<span class="lineNum"> 4419 </span><span class="lineCov"> 194 : delta_time = now - state->progress_time[oldest];</span>
|
||||
<span class="lineNum"> 4420 </span><span class="lineCov"> 194 : delta_pos = countpos - state->progress_pos[oldest];</span>
|
||||
<span class="lineNum"> 4421 </span><span class="lineCov"> 194 : delta_size = countsize - state->progress_size[oldest];</span>
|
||||
<span class="lineNum"> 4422 </span><span class="lineCov"> 194 : delta_tick_cpu = tick_cpu - oldest_tick_cpu;</span>
|
||||
<span class="lineNum"> 4423 </span><span class="lineCov"> 194 : delta_tick_total = tick_total - oldest_tick_total;</span>
|
||||
<span class="lineNum"> 4419 </span><span class="lineCov"> 200 : delta_time = now - state->progress_time[oldest];</span>
|
||||
<span class="lineNum"> 4420 </span><span class="lineCov"> 200 : delta_pos = countpos - state->progress_pos[oldest];</span>
|
||||
<span class="lineNum"> 4421 </span><span class="lineCov"> 200 : delta_size = countsize - state->progress_size[oldest];</span>
|
||||
<span class="lineNum"> 4422 </span><span class="lineCov"> 200 : delta_tick_cpu = tick_cpu - oldest_tick_cpu;</span>
|
||||
<span class="lineNum"> 4423 </span><span class="lineCov"> 200 : delta_tick_total = tick_total - oldest_tick_total;</span>
|
||||
<span class="lineNum"> 4424 </span> :
|
||||
<span class="lineNum"> 4425 </span> : /* estimate the speed in MB/s */
|
||||
<span class="lineNum"> 4426 </span><span class="lineCov"> 194 : if (delta_time != 0)</span>
|
||||
<span class="lineNum"> 4427 </span><span class="lineCov"> 194 : out_speed = (unsigned)(delta_size / MEGA / delta_time);</span>
|
||||
<span class="lineNum"> 4426 </span><span class="lineCov"> 200 : if (delta_time != 0)</span>
|
||||
<span class="lineNum"> 4427 </span><span class="lineCov"> 200 : out_speed = (unsigned)(delta_size / MEGA / delta_time);</span>
|
||||
<span class="lineNum"> 4428 </span> :
|
||||
<span class="lineNum"> 4429 </span> : /* estimate the cpu usage percentage */
|
||||
<span class="lineNum"> 4430 </span><span class="lineCov"> 194 : if (delta_tick_total != 0)</span>
|
||||
<span class="lineNum"> 4431 </span><span class="lineCov"> 74 : out_cpu = (unsigned)(delta_tick_cpu * 100U / delta_tick_total);</span>
|
||||
<span class="lineNum"> 4430 </span><span class="lineCov"> 200 : if (delta_tick_total != 0)</span>
|
||||
<span class="lineNum"> 4431 </span><span class="lineCov"> 82 : out_cpu = (unsigned)(delta_tick_cpu * 100U / delta_tick_total);</span>
|
||||
<span class="lineNum"> 4432 </span> :
|
||||
<span class="lineNum"> 4433 </span> : /* estimate the remaining time in minutes */
|
||||
<span class="lineNum"> 4434 </span><span class="lineCov"> 194 : if (delta_pos != 0)</span>
|
||||
<span class="lineNum"> 4435 </span><span class="lineCov"> 194 : out_eta = (countmax - countpos) * delta_time / (60 * delta_pos);</span>
|
||||
<span class="lineNum"> 4434 </span><span class="lineCov"> 200 : if (delta_pos != 0)</span>
|
||||
<span class="lineNum"> 4435 </span><span class="lineCov"> 200 : out_eta = (countmax - countpos) * delta_time / (60 * delta_pos);</span>
|
||||
<span class="lineNum"> 4436 </span> :
|
||||
<span class="lineNum"> 4437 </span><span class="lineCov"> 194 : if (state->opt.force_stats) {</span>
|
||||
<span class="lineNum"> 4437 </span><span class="lineCov"> 200 : if (state->opt.force_stats) {</span>
|
||||
<span class="lineNum"> 4438 </span><span class="lineNoCov"> 0 : os_clear();</span>
|
||||
<span class="lineNum"> 4439 </span><span class="lineNoCov"> 0 : state_progress_graph(state, io, state->progress_ptr, oldest);</span>
|
||||
<span class="lineNum"> 4440 </span> : }
|
||||
<span class="lineNum"> 4441 </span> :
|
||||
<span class="lineNum"> 4442 </span> : /* we have the output value */
|
||||
<span class="lineNum"> 4443 </span><span class="lineCov"> 194 : out_computed = 1;</span>
|
||||
<span class="lineNum"> 4443 </span><span class="lineCov"> 200 : out_computed = 1;</span>
|
||||
<span class="lineNum"> 4444 </span> : }
|
||||
<span class="lineNum"> 4445 </span> :
|
||||
<span class="lineNum"> 4446 </span><span class="lineCov"> 393 : if (state->opt.gui) {</span>
|
||||
<span class="lineNum"> 4446 </span><span class="lineCov"> 399 : if (state->opt.gui) {</span>
|
||||
<span class="lineNum"> 4447 </span><span class="lineCov"> 6 : log_tag("run:pos:%u:%u:%" PRIu64 ":%u:%u:%u:%u:%" PRIu64 "\n", blockpos, countpos, countsize, out_perc, out_eta, out_speed, out_cpu, (uint64_t)elapsed);</span>
|
||||
<span class="lineNum"> 4448 </span><span class="lineCov"> 6 : log_flush();</span>
|
||||
<span class="lineNum"> 4449 </span> : } else {
|
||||
<span class="lineNum"> 4450 </span><span class="lineCov"> 387 : msg_bar("%u%%, %u MB", out_perc, (unsigned)(countsize / MEGA));</span>
|
||||
<span class="lineNum"> 4451 </span><span class="lineCov"> 387 : if (out_computed) {</span>
|
||||
<span class="lineNum"> 4452 </span><span class="lineCov"> 193 : msg_bar(", %u MB/s", out_speed);</span>
|
||||
<span class="lineNum"> 4453 </span><span class="lineCov"> 193 : msg_bar(", CPU %u%%", out_cpu);</span>
|
||||
<span class="lineNum"> 4454 </span><span class="lineCov"> 193 : msg_bar(", %u:%02u ETA", out_eta / 60, out_eta % 60);</span>
|
||||
<span class="lineNum"> 4450 </span><span class="lineCov"> 393 : msg_bar("%u%%, %u MB", out_perc, (unsigned)(countsize / MEGA));</span>
|
||||
<span class="lineNum"> 4451 </span><span class="lineCov"> 393 : if (out_computed) {</span>
|
||||
<span class="lineNum"> 4452 </span><span class="lineCov"> 199 : msg_bar(", %u MB/s", out_speed);</span>
|
||||
<span class="lineNum"> 4453 </span><span class="lineCov"> 199 : msg_bar(", CPU %u%%", out_cpu);</span>
|
||||
<span class="lineNum"> 4454 </span><span class="lineCov"> 199 : msg_bar(", %u:%02u ETA", out_eta / 60, out_eta % 60);</span>
|
||||
<span class="lineNum"> 4455 </span> : }
|
||||
<span class="lineNum"> 4456 </span><span class="lineCov"> 387 : msg_bar("%s\r", PROGRESS_CLEAR);</span>
|
||||
<span class="lineNum"> 4457 </span><span class="lineCov"> 387 : msg_flush();</span>
|
||||
<span class="lineNum"> 4456 </span><span class="lineCov"> 393 : msg_bar("%s\r", PROGRESS_CLEAR);</span>
|
||||
<span class="lineNum"> 4457 </span><span class="lineCov"> 393 : msg_flush();</span>
|
||||
<span class="lineNum"> 4458 </span> : }
|
||||
<span class="lineNum"> 4459 </span> :
|
||||
<span class="lineNum"> 4460 </span> : /* next position to fill */
|
||||
<span class="lineNum"> 4461 </span><span class="lineCov"> 393 : ++state->progress_ptr;</span>
|
||||
<span class="lineNum"> 4462 </span><span class="lineCov"> 393 : if (state->progress_ptr >= PROGRESS_MAX)</span>
|
||||
<span class="lineNum"> 4461 </span><span class="lineCov"> 399 : ++state->progress_ptr;</span>
|
||||
<span class="lineNum"> 4462 </span><span class="lineCov"> 399 : if (state->progress_ptr >= PROGRESS_MAX)</span>
|
||||
<span class="lineNum"> 4463 </span><span class="lineNoCov"> 0 : state->progress_ptr -= PROGRESS_MAX;</span>
|
||||
<span class="lineNum"> 4464 </span> :
|
||||
<span class="lineNum"> 4465 </span> : /* one more measure */
|
||||
<span class="lineNum"> 4466 </span><span class="lineCov"> 393 : ++state->progress_tick;</span>
|
||||
<span class="lineNum"> 4466 </span><span class="lineCov"> 399 : ++state->progress_tick;</span>
|
||||
<span class="lineNum"> 4467 </span> : }
|
||||
<span class="lineNum"> 4468 </span> :
|
||||
<span class="lineNum"> 4469 </span> : /* stop if requested */
|
||||
<span class="lineNum"> 4470 </span><span class="lineCov"> 1073508 : if (global_interrupt) {</span>
|
||||
<span class="lineNum"> 4470 </span><span class="lineCov"> 1073409 : if (global_interrupt) {</span>
|
||||
<span class="lineNum"> 4471 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 4472 </span> : if (!state->opt.gui) {
|
||||
<span class="lineNum"> 4473 </span> : log_fatal("\n");
|
||||
|
|
@ -4541,7 +4541,7 @@
|
|||
<span class="lineNum"> 4479 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 4480 </span> : }
|
||||
<span class="lineNum"> 4481 </span> :
|
||||
<span class="lineNum"> 4482 </span><span class="lineCov"> 1073508 : return 0;</span>
|
||||
<span class="lineNum"> 4482 </span><span class="lineCov"> 1073409 : return 0;</span>
|
||||
<a name="4483"><span class="lineNum"> 4483 </span> : }</a>
|
||||
<span class="lineNum"> 4484 </span> :
|
||||
<span class="lineNum"> 4485 </span><span class="lineCov"> 104 : void state_usage_waste(struct snapraid_state* state)</span>
|
||||
|
|
@ -4551,83 +4551,83 @@
|
|||
<span class="lineNum"> 4489 </span><span class="lineCov"> 104 : state->tick_last = now;</span>
|
||||
<a name="4490"><span class="lineNum"> 4490 </span><span class="lineCov"> 104 : }</span></a>
|
||||
<span class="lineNum"> 4491 </span> :
|
||||
<span class="lineNum"> 4492 </span><span class="lineCov"> 1063748 : void state_usage_misc(struct snapraid_state* state)</span>
|
||||
<span class="lineNum"> 4492 </span><span class="lineCov"> 1063055 : void state_usage_misc(struct snapraid_state* state)</span>
|
||||
<span class="lineNum"> 4493 </span> : {
|
||||
<span class="lineNum"> 4494 </span><span class="lineCov"> 1063748 : uint64_t now = tick();</span>
|
||||
<span class="lineNum"> 4495 </span><span class="lineCov"> 1063748 : uint64_t delta = now - state->tick_last;</span>
|
||||
<span class="lineNum"> 4494 </span><span class="lineCov"> 1063055 : uint64_t now = tick();</span>
|
||||
<span class="lineNum"> 4495 </span><span class="lineCov"> 1063055 : uint64_t delta = now - state->tick_last;</span>
|
||||
<span class="lineNum"> 4496 </span> :
|
||||
<span class="lineNum"> 4497 </span> : /* increment the time spent in computations */
|
||||
<span class="lineNum"> 4498 </span><span class="lineCov"> 1063748 : state->tick_misc += delta;</span>
|
||||
<span class="lineNum"> 4498 </span><span class="lineCov"> 1063055 : state->tick_misc += delta;</span>
|
||||
<span class="lineNum"> 4499 </span> :
|
||||
<span class="lineNum"> 4500 </span><span class="lineCov"> 1063748 : state->tick_last = now;</span>
|
||||
<a name="4501"><span class="lineNum"> 4501 </span><span class="lineCov"> 1063748 : }</span></a>
|
||||
<span class="lineNum"> 4500 </span><span class="lineCov"> 1063055 : state->tick_last = now;</span>
|
||||
<a name="4501"><span class="lineNum"> 4501 </span><span class="lineCov"> 1063055 : }</span></a>
|
||||
<span class="lineNum"> 4502 </span> :
|
||||
<span class="lineNum"> 4503 </span><span class="lineCov"> 149935 : void state_usage_sched(struct snapraid_state* state)</span>
|
||||
<span class="lineNum"> 4503 </span><span class="lineCov"> 149836 : void state_usage_sched(struct snapraid_state* state)</span>
|
||||
<span class="lineNum"> 4504 </span> : {
|
||||
<span class="lineNum"> 4505 </span><span class="lineCov"> 149935 : uint64_t now = tick();</span>
|
||||
<span class="lineNum"> 4506 </span><span class="lineCov"> 149935 : uint64_t delta = now - state->tick_last;</span>
|
||||
<span class="lineNum"> 4505 </span><span class="lineCov"> 149836 : uint64_t now = tick();</span>
|
||||
<span class="lineNum"> 4506 </span><span class="lineCov"> 149836 : uint64_t delta = now - state->tick_last;</span>
|
||||
<span class="lineNum"> 4507 </span> :
|
||||
<span class="lineNum"> 4508 </span> : /* increment the time spent in computations */
|
||||
<span class="lineNum"> 4509 </span><span class="lineCov"> 149935 : state->tick_sched += delta;</span>
|
||||
<span class="lineNum"> 4509 </span><span class="lineCov"> 149836 : state->tick_sched += delta;</span>
|
||||
<span class="lineNum"> 4510 </span> :
|
||||
<span class="lineNum"> 4511 </span><span class="lineCov"> 149935 : state->tick_last = now;</span>
|
||||
<a name="4512"><span class="lineNum"> 4512 </span><span class="lineCov"> 149935 : }</span></a>
|
||||
<span class="lineNum"> 4511 </span><span class="lineCov"> 149836 : state->tick_last = now;</span>
|
||||
<a name="4512"><span class="lineNum"> 4512 </span><span class="lineCov"> 149836 : }</span></a>
|
||||
<span class="lineNum"> 4513 </span> :
|
||||
<span class="lineNum"> 4514 </span><span class="lineCov"> 140430 : void state_usage_raid(struct snapraid_state* state)</span>
|
||||
<span class="lineNum"> 4514 </span><span class="lineCov"> 140365 : void state_usage_raid(struct snapraid_state* state)</span>
|
||||
<span class="lineNum"> 4515 </span> : {
|
||||
<span class="lineNum"> 4516 </span><span class="lineCov"> 140430 : uint64_t now = tick();</span>
|
||||
<span class="lineNum"> 4517 </span><span class="lineCov"> 140430 : uint64_t delta = now - state->tick_last;</span>
|
||||
<span class="lineNum"> 4516 </span><span class="lineCov"> 140365 : uint64_t now = tick();</span>
|
||||
<span class="lineNum"> 4517 </span><span class="lineCov"> 140365 : uint64_t delta = now - state->tick_last;</span>
|
||||
<span class="lineNum"> 4518 </span> :
|
||||
<span class="lineNum"> 4519 </span> : /* increment the time spent in computations */
|
||||
<span class="lineNum"> 4520 </span><span class="lineCov"> 140430 : state->tick_raid += delta;</span>
|
||||
<span class="lineNum"> 4520 </span><span class="lineCov"> 140365 : state->tick_raid += delta;</span>
|
||||
<span class="lineNum"> 4521 </span> :
|
||||
<span class="lineNum"> 4522 </span><span class="lineCov"> 140430 : state->tick_last = now;</span>
|
||||
<a name="4523"><span class="lineNum"> 4523 </span><span class="lineCov"> 140430 : }</span></a>
|
||||
<span class="lineNum"> 4522 </span><span class="lineCov"> 140365 : state->tick_last = now;</span>
|
||||
<a name="4523"><span class="lineNum"> 4523 </span><span class="lineCov"> 140365 : }</span></a>
|
||||
<span class="lineNum"> 4524 </span> :
|
||||
<span class="lineNum"> 4525 </span><span class="lineCov"> 777372 : void state_usage_hash(struct snapraid_state* state)</span>
|
||||
<span class="lineNum"> 4525 </span><span class="lineCov"> 776808 : void state_usage_hash(struct snapraid_state* state)</span>
|
||||
<span class="lineNum"> 4526 </span> : {
|
||||
<span class="lineNum"> 4527 </span><span class="lineCov"> 777372 : uint64_t now = tick();</span>
|
||||
<span class="lineNum"> 4528 </span><span class="lineCov"> 777372 : uint64_t delta = now - state->tick_last;</span>
|
||||
<span class="lineNum"> 4527 </span><span class="lineCov"> 776808 : uint64_t now = tick();</span>
|
||||
<span class="lineNum"> 4528 </span><span class="lineCov"> 776808 : uint64_t delta = now - state->tick_last;</span>
|
||||
<span class="lineNum"> 4529 </span> :
|
||||
<span class="lineNum"> 4530 </span> : /* increment the time spent in computations */
|
||||
<span class="lineNum"> 4531 </span><span class="lineCov"> 777372 : state->tick_hash += delta;</span>
|
||||
<span class="lineNum"> 4531 </span><span class="lineCov"> 776808 : state->tick_hash += delta;</span>
|
||||
<span class="lineNum"> 4532 </span> :
|
||||
<span class="lineNum"> 4533 </span><span class="lineCov"> 777372 : state->tick_last = now;</span>
|
||||
<a name="4534"><span class="lineNum"> 4534 </span><span class="lineCov"> 777372 : }</span></a>
|
||||
<span class="lineNum"> 4533 </span><span class="lineCov"> 776808 : state->tick_last = now;</span>
|
||||
<a name="4534"><span class="lineNum"> 4534 </span><span class="lineCov"> 776808 : }</span></a>
|
||||
<span class="lineNum"> 4535 </span> :
|
||||
<span class="lineNum"> 4536 </span><span class="lineCov"> 912951 : void state_usage_disk(struct snapraid_state* state, struct snapraid_handle* handle_map, unsigned* waiting_map, unsigned waiting_mac)</span>
|
||||
<span class="lineNum"> 4536 </span><span class="lineCov"> 912357 : void state_usage_disk(struct snapraid_state* state, struct snapraid_handle* handle_map, unsigned* waiting_map, unsigned waiting_mac)</span>
|
||||
<span class="lineNum"> 4537 </span> : {
|
||||
<span class="lineNum"> 4538 </span><span class="lineCov"> 912951 : uint64_t now = tick();</span>
|
||||
<span class="lineNum"> 4539 </span><span class="lineCov"> 912951 : uint64_t delta = now - state->tick_last;</span>
|
||||
<span class="lineNum"> 4538 </span><span class="lineCov"> 912357 : uint64_t now = tick();</span>
|
||||
<span class="lineNum"> 4539 </span><span class="lineCov"> 912357 : uint64_t delta = now - state->tick_last;</span>
|
||||
<span class="lineNum"> 4540 </span> : unsigned i;
|
||||
<span class="lineNum"> 4541 </span> :
|
||||
<span class="lineNum"> 4542 </span> : /* increment the time spent in the data disks */
|
||||
<span class="lineNum"> 4543 </span><span class="lineCov"> 927928 : for (i = 0; i < waiting_mac; ++i) {</span>
|
||||
<span class="lineNum"> 4544 </span><span class="lineCov"> 14977 : struct snapraid_disk* disk = handle_map[waiting_map[i]].disk;</span>
|
||||
<span class="lineNum"> 4543 </span><span class="lineCov"> 956230 : for (i = 0; i < waiting_mac; ++i) {</span>
|
||||
<span class="lineNum"> 4544 </span><span class="lineCov"> 43873 : struct snapraid_disk* disk = handle_map[waiting_map[i]].disk;</span>
|
||||
<span class="lineNum"> 4545 </span> :
|
||||
<span class="lineNum"> 4546 </span><span class="lineCov"> 14977 : if (!disk)</span>
|
||||
<span class="lineNum"> 4547 </span><span class="lineCov"> 5 : continue;</span>
|
||||
<span class="lineNum"> 4546 </span><span class="lineCov"> 43873 : if (!disk)</span>
|
||||
<span class="lineNum"> 4547 </span><span class="lineCov"> 6 : continue;</span>
|
||||
<span class="lineNum"> 4548 </span> :
|
||||
<span class="lineNum"> 4549 </span><span class="lineCov"> 14972 : disk->tick += delta;</span>
|
||||
<span class="lineNum"> 4549 </span><span class="lineCov"> 43867 : disk->tick += delta;</span>
|
||||
<span class="lineNum"> 4550 </span> : }
|
||||
<span class="lineNum"> 4551 </span><span class="lineCov"> 912951 : state->tick_io += delta;</span>
|
||||
<span class="lineNum"> 4551 </span><span class="lineCov"> 912357 : state->tick_io += delta;</span>
|
||||
<span class="lineNum"> 4552 </span> :
|
||||
<span class="lineNum"> 4553 </span><span class="lineCov"> 912951 : state->tick_last = now;</span>
|
||||
<a name="4554"><span class="lineNum"> 4554 </span><span class="lineCov"> 912951 : }</span></a>
|
||||
<span class="lineNum"> 4553 </span><span class="lineCov"> 912357 : state->tick_last = now;</span>
|
||||
<a name="4554"><span class="lineNum"> 4554 </span><span class="lineCov"> 912357 : }</span></a>
|
||||
<span class="lineNum"> 4555 </span> :
|
||||
<span class="lineNum"> 4556 </span><span class="lineCov"> 774617 : void state_usage_parity(struct snapraid_state* state, unsigned* waiting_map, unsigned waiting_mac)</span>
|
||||
<span class="lineNum"> 4556 </span><span class="lineCov"> 774023 : void state_usage_parity(struct snapraid_state* state, unsigned* waiting_map, unsigned waiting_mac)</span>
|
||||
<span class="lineNum"> 4557 </span> : {
|
||||
<span class="lineNum"> 4558 </span><span class="lineCov"> 774617 : uint64_t now = tick();</span>
|
||||
<span class="lineNum"> 4559 </span><span class="lineCov"> 774617 : uint64_t delta = now - state->tick_last;</span>
|
||||
<span class="lineNum"> 4558 </span><span class="lineCov"> 774023 : uint64_t now = tick();</span>
|
||||
<span class="lineNum"> 4559 </span><span class="lineCov"> 774023 : uint64_t delta = now - state->tick_last;</span>
|
||||
<span class="lineNum"> 4560 </span> : unsigned i;
|
||||
<span class="lineNum"> 4561 </span> :
|
||||
<span class="lineNum"> 4562 </span> : /* increment the time spent in the parity disk */
|
||||
<span class="lineNum"> 4563 </span><span class="lineCov"> 848719 : for (i = 0; i < waiting_mac; ++i)</span>
|
||||
<span class="lineNum"> 4564 </span><span class="lineCov"> 74102 : state->parity[waiting_map[i]].tick += delta;</span>
|
||||
<span class="lineNum"> 4565 </span><span class="lineCov"> 774617 : state->tick_io += delta;</span>
|
||||
<span class="lineNum"> 4563 </span><span class="lineCov"> 851328 : for (i = 0; i < waiting_mac; ++i)</span>
|
||||
<span class="lineNum"> 4564 </span><span class="lineCov"> 77305 : state->parity[waiting_map[i]].tick += delta;</span>
|
||||
<span class="lineNum"> 4565 </span><span class="lineCov"> 774023 : state->tick_io += delta;</span>
|
||||
<span class="lineNum"> 4566 </span> :
|
||||
<span class="lineNum"> 4567 </span><span class="lineCov"> 774617 : state->tick_last = now;</span>
|
||||
<a name="4568"><span class="lineNum"> 4568 </span><span class="lineCov"> 774617 : }</span></a>
|
||||
<span class="lineNum"> 4567 </span><span class="lineCov"> 774023 : state->tick_last = now;</span>
|
||||
<a name="4568"><span class="lineNum"> 4568 </span><span class="lineCov"> 774023 : }</span></a>
|
||||
<span class="lineNum"> 4569 </span> :
|
||||
<span class="lineNum"> 4570 </span><span class="lineCov"> 96 : void state_usage_print(struct snapraid_state* state)</span>
|
||||
<span class="lineNum"> 4571 </span> : {
|
||||
|
|
|
|||
|
|
@ -395,10 +395,10 @@
|
|||
<span class="lineNum"> 333 </span><span class="lineCov"> 39752 : scrub_time = info_get_time(info);</span>
|
||||
<span class="lineNum"> 334 </span> :
|
||||
<span class="lineNum"> 335 </span><span class="lineCov"> 39752 : if (info_get_justsynced(info)) {</span>
|
||||
<span class="lineNum"> 336 </span><span class="lineCov"> 20457 : ++unscrubbed_blocks;</span>
|
||||
<span class="lineNum"> 336 </span><span class="lineCov"> 20453 : ++unscrubbed_blocks;</span>
|
||||
<span class="lineNum"> 337 </span> :
|
||||
<span class="lineNum"> 338 </span> : /* mark the time as not scrubbed */
|
||||
<span class="lineNum"> 339 </span><span class="lineCov"> 20457 : scrub_time |= TIME_NEW;</span>
|
||||
<span class="lineNum"> 339 </span><span class="lineCov"> 20453 : scrub_time |= TIME_NEW;</span>
|
||||
<span class="lineNum"> 340 </span> : }
|
||||
<span class="lineNum"> 341 </span> :
|
||||
<span class="lineNum"> 342 </span><span class="lineCov"> 39752 : timemap[count++] = scrub_time;</span>
|
||||
|
|
@ -430,16 +430,16 @@
|
|||
<span class="lineNum"> 368 </span> : /* output the info map */
|
||||
<span class="lineNum"> 369 </span><span class="lineCov"> 8 : i = 0;</span>
|
||||
<span class="lineNum"> 370 </span><span class="lineCov"> 8 : log_tag("info_count:%u\n", count);</span>
|
||||
<span class="lineNum"> 371 </span><span class="lineCov"> 33 : while (i < count) {</span>
|
||||
<span class="lineNum"> 372 </span><span class="lineCov"> 17 : unsigned j = i + 1;</span>
|
||||
<span class="lineNum"> 373 </span><span class="lineCov"> 39769 : while (j < count && timemap[i] == timemap[j])</span>
|
||||
<span class="lineNum"> 374 </span><span class="lineCov"> 39735 : ++j;</span>
|
||||
<span class="lineNum"> 375 </span><span class="lineCov"> 17 : if ((timemap[i] & TIME_NEW) == 0) {</span>
|
||||
<span class="lineNum"> 376 </span><span class="lineCov"> 8 : log_tag("info_time:%" PRIu64 ":%u:scrubbed\n", (uint64_t)timemap[i], j - i);</span>
|
||||
<span class="lineNum"> 371 </span><span class="lineCov"> 35 : while (i < count) {</span>
|
||||
<span class="lineNum"> 372 </span><span class="lineCov"> 19 : unsigned j = i + 1;</span>
|
||||
<span class="lineNum"> 373 </span><span class="lineCov"> 39771 : while (j < count && timemap[i] == timemap[j])</span>
|
||||
<span class="lineNum"> 374 </span><span class="lineCov"> 39733 : ++j;</span>
|
||||
<span class="lineNum"> 375 </span><span class="lineCov"> 19 : if ((timemap[i] & TIME_NEW) == 0) {</span>
|
||||
<span class="lineNum"> 376 </span><span class="lineCov"> 7 : log_tag("info_time:%" PRIu64 ":%u:scrubbed\n", (uint64_t)timemap[i], j - i);</span>
|
||||
<span class="lineNum"> 377 </span> : } else {
|
||||
<span class="lineNum"> 378 </span><span class="lineCov"> 9 : log_tag("info_time:%" PRIu64 ":%u:new\n", (uint64_t)(timemap[i] & ~TIME_NEW), j - i);</span>
|
||||
<span class="lineNum"> 378 </span><span class="lineCov"> 12 : log_tag("info_time:%" PRIu64 ":%u:new\n", (uint64_t)(timemap[i] & ~TIME_NEW), j - i);</span>
|
||||
<span class="lineNum"> 379 </span> : }
|
||||
<span class="lineNum"> 380 </span><span class="lineCov"> 17 : i = j;</span>
|
||||
<span class="lineNum"> 380 </span><span class="lineCov"> 19 : i = j;</span>
|
||||
<span class="lineNum"> 381 </span> : }
|
||||
<span class="lineNum"> 382 </span> :
|
||||
<span class="lineNum"> 383 </span><span class="lineCov"> 8 : oldest = timemap[0];</span>
|
||||
|
|
@ -462,9 +462,9 @@
|
|||
<span class="lineNum"> 400 </span><span class="lineCov"> 560 : step_new = 0;</span>
|
||||
<span class="lineNum"> 401 </span><span class="lineCov"> 40872 : while (barpos < count && timemap[barpos] <= limit) {</span>
|
||||
<span class="lineNum"> 402 </span><span class="lineCov"> 39752 : if ((timemap[barpos] & TIME_NEW) != 0)</span>
|
||||
<span class="lineNum"> 403 </span><span class="lineCov"> 20457 : ++step_new;</span>
|
||||
<span class="lineNum"> 403 </span><span class="lineCov"> 20453 : ++step_new;</span>
|
||||
<span class="lineNum"> 404 </span> : else
|
||||
<span class="lineNum"> 405 </span><span class="lineCov"> 19295 : ++step_scrubbed;</span>
|
||||
<span class="lineNum"> 405 </span><span class="lineCov"> 19299 : ++step_scrubbed;</span>
|
||||
<span class="lineNum"> 406 </span><span class="lineCov"> 39752 : ++barpos;</span>
|
||||
<span class="lineNum"> 407 </span> : }
|
||||
<span class="lineNum"> 408 </span> :
|
||||
|
|
@ -494,20 +494,20 @@
|
|||
<span class="lineNum"> 432 </span><span class="lineCov"> 8400 : unsigned scrubbed = bar_scrubbed[x];</span>
|
||||
<span class="lineNum"> 433 </span> :
|
||||
<span class="lineNum"> 434 </span><span class="lineCov"> 8400 : if (both > pivot_upper) {</span>
|
||||
<span class="lineNum"> 435 </span><span class="lineCov"> 149 : if (scrubbed > pivot_lower)</span>
|
||||
<span class="lineNum"> 436 </span><span class="lineCov"> 71 : printf("*");</span>
|
||||
<span class="lineNum"> 435 </span><span class="lineCov"> 145 : if (scrubbed > pivot_lower)</span>
|
||||
<span class="lineNum"> 436 </span><span class="lineCov"> 63 : printf("*");</span>
|
||||
<span class="lineNum"> 437 </span> : else
|
||||
<span class="lineNum"> 438 </span><span class="lineCov"> 78 : printf("o");</span>
|
||||
<span class="lineNum"> 439 </span><span class="lineCov"> 8251 : } else if (both > pivot_lower) {</span>
|
||||
<span class="lineNum"> 440 </span><span class="lineCov"> 16 : if (scrubbed == both)</span>
|
||||
<span class="lineNum"> 438 </span><span class="lineCov"> 82 : printf("o");</span>
|
||||
<span class="lineNum"> 439 </span><span class="lineCov"> 8255 : } else if (both > pivot_lower) {</span>
|
||||
<span class="lineNum"> 440 </span><span class="lineCov"> 19 : if (scrubbed == both)</span>
|
||||
<span class="lineNum"> 441 </span><span class="lineCov"> 7 : printf("*");</span>
|
||||
<span class="lineNum"> 442 </span> : else
|
||||
<span class="lineNum"> 443 </span><span class="lineCov"> 9 : printf("o");</span>
|
||||
<span class="lineNum"> 443 </span><span class="lineCov"> 12 : printf("o");</span>
|
||||
<span class="lineNum"> 444 </span> : } else {
|
||||
<span class="lineNum"> 445 </span><span class="lineCov"> 8235 : if (y == GRAPH_ROW - 1)</span>
|
||||
<span class="lineNum"> 446 </span><span class="lineCov"> 544 : printf("_");</span>
|
||||
<span class="lineNum"> 445 </span><span class="lineCov"> 8236 : if (y == GRAPH_ROW - 1)</span>
|
||||
<span class="lineNum"> 446 </span><span class="lineCov"> 541 : printf("_");</span>
|
||||
<span class="lineNum"> 447 </span> : else
|
||||
<span class="lineNum"> 448 </span><span class="lineCov"> 7691 : printf(" ");</span>
|
||||
<span class="lineNum"> 448 </span><span class="lineCov"> 7695 : printf(" ");</span>
|
||||
<span class="lineNum"> 449 </span> : }
|
||||
<span class="lineNum"> 450 </span> : }
|
||||
<span class="lineNum"> 451 </span><span class="lineCov"> 120 : printf("\n");</span>
|
||||
|
|
@ -559,19 +559,19 @@
|
|||
<span class="lineNum"> 497 </span> :
|
||||
<span class="lineNum"> 498 </span> : /* print some of the errors */
|
||||
<span class="lineNum"> 499 </span><span class="lineCov"> 2 : bad_print = 0;</span>
|
||||
<span class="lineNum"> 500 </span><span class="lineCov"> 723 : for (i = 0; i < blockmax; ++i) {</span>
|
||||
<span class="lineNum"> 501 </span><span class="lineCov"> 723 : snapraid_info info = info_get(&state->infoarr, i);</span>
|
||||
<span class="lineNum"> 500 </span><span class="lineCov"> 720 : for (i = 0; i < blockmax; ++i) {</span>
|
||||
<span class="lineNum"> 501 </span><span class="lineCov"> 720 : snapraid_info info = info_get(&state->infoarr, i);</span>
|
||||
<span class="lineNum"> 502 </span> :
|
||||
<span class="lineNum"> 503 </span> : /* skip unused blocks */
|
||||
<span class="lineNum"> 504 </span><span class="lineCov"> 723 : if (info == 0)</span>
|
||||
<span class="lineNum"> 504 </span><span class="lineCov"> 720 : if (info == 0)</span>
|
||||
<span class="lineNum"> 505 </span><span class="lineNoCov"> 0 : continue;</span>
|
||||
<span class="lineNum"> 506 </span> :
|
||||
<span class="lineNum"> 507 </span><span class="lineCov"> 723 : if (info_get_bad(info)) {</span>
|
||||
<span class="lineNum"> 507 </span><span class="lineCov"> 720 : if (info_get_bad(info)) {</span>
|
||||
<span class="lineNum"> 508 </span><span class="lineCov"> 202 : printf(" %u", i);</span>
|
||||
<span class="lineNum"> 509 </span><span class="lineCov"> 202 : ++bad_print;</span>
|
||||
<span class="lineNum"> 510 </span> : }
|
||||
<span class="lineNum"> 511 </span> :
|
||||
<span class="lineNum"> 512 </span><span class="lineCov"> 723 : if (bad_print > 100) {</span>
|
||||
<span class="lineNum"> 512 </span><span class="lineCov"> 720 : if (bad_print > 100) {</span>
|
||||
<span class="lineNum"> 513 </span><span class="lineCov"> 2 : printf(" and %u more...", bad - bad_print);</span>
|
||||
<span class="lineNum"> 514 </span><span class="lineCov"> 2 : break;</span>
|
||||
<span class="lineNum"> 515 </span> : }
|
||||
|
|
|
|||
|
|
@ -61,23 +61,23 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="stream.c.gcov.html#633">swrite</a></td>
|
||||
<td class="coverFnHi">20711595</td>
|
||||
<td class="coverFnHi">20725275</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="stream.c.gcov.html#525">sgetb32</a></td>
|
||||
<td class="coverFnHi">18635654</td>
|
||||
<td class="coverFnHi">18668535</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="stream.c.gcov.html#384">sread</a></td>
|
||||
<td class="coverFnHi">12811254</td>
|
||||
<td class="coverFnHi">12810720</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="stream.c.gcov.html#561">sgetb64</a></td>
|
||||
<td class="coverFnHi">10850327</td>
|
||||
<td class="coverFnHi">10849874</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="stream.c.gcov.html#670">sputb32</a></td>
|
||||
<td class="coverFnHi">9113968</td>
|
||||
<td class="coverFnHi">9127648</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="stream.c.gcov.html#691">sputb64</a></td>
|
||||
|
|
@ -85,7 +85,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="stream.c.gcov.html#612">sgetbs</a></td>
|
||||
<td class="coverFnHi">3877387</td>
|
||||
<td class="coverFnHi">3877236</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="stream.c.gcov.html#724">sputbs</a></td>
|
||||
|
|
@ -93,7 +93,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="stream.c.gcov.html#202">sfill</a></td>
|
||||
<td class="coverFnHi">607114</td>
|
||||
<td class="coverFnHi">607111</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="stream.c.gcov.html#339">sgetc_uncached</a></td>
|
||||
|
|
@ -129,7 +129,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="stream.c.gcov.html#239">sdeplete</a></td>
|
||||
<td class="coverFnHi">1143</td>
|
||||
<td class="coverFnHi">1142</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="stream.c.gcov.html#104">sopen_multi_file</a></td>
|
||||
|
|
|
|||
|
|
@ -73,11 +73,11 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="stream.c.gcov.html#239">sdeplete</a></td>
|
||||
<td class="coverFnHi">1143</td>
|
||||
<td class="coverFnHi">1142</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="stream.c.gcov.html#202">sfill</a></td>
|
||||
<td class="coverFnHi">607114</td>
|
||||
<td class="coverFnHi">607111</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="stream.c.gcov.html#277">sflush</a></td>
|
||||
|
|
@ -85,11 +85,11 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="stream.c.gcov.html#525">sgetb32</a></td>
|
||||
<td class="coverFnHi">18635654</td>
|
||||
<td class="coverFnHi">18668535</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="stream.c.gcov.html#561">sgetb64</a></td>
|
||||
<td class="coverFnHi">10850327</td>
|
||||
<td class="coverFnHi">10849874</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="stream.c.gcov.html#597">sgetble32</a></td>
|
||||
|
|
@ -97,7 +97,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="stream.c.gcov.html#612">sgetbs</a></td>
|
||||
<td class="coverFnHi">3877387</td>
|
||||
<td class="coverFnHi">3877236</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="stream.c.gcov.html#339">sgetc_uncached</a></td>
|
||||
|
|
@ -141,7 +141,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="stream.c.gcov.html#670">sputb32</a></td>
|
||||
<td class="coverFnHi">9113968</td>
|
||||
<td class="coverFnHi">9127648</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="stream.c.gcov.html#691">sputb64</a></td>
|
||||
|
|
@ -157,7 +157,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="stream.c.gcov.html#384">sread</a></td>
|
||||
<td class="coverFnHi">12811254</td>
|
||||
<td class="coverFnHi">12810720</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="stream.c.gcov.html#738">ssync</a></td>
|
||||
|
|
@ -169,7 +169,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="stream.c.gcov.html#633">swrite</a></td>
|
||||
<td class="coverFnHi">20711595</td>
|
||||
<td class="coverFnHi">20725275</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
|
|
|
|||
|
|
@ -263,17 +263,17 @@
|
|||
<span class="lineNum"> 201 </span> : * Fill the read stream buffer.
|
||||
<a name="202"><span class="lineNum"> 202 </span> : * \return 0 if at least on char is read, or EOF on error.</a>
|
||||
<span class="lineNum"> 203 </span> : */
|
||||
<span class="lineNum"> 204 </span><span class="lineCov"> 607114 : static int sfill(STREAM* s)</span>
|
||||
<span class="lineNum"> 204 </span><span class="lineCov"> 607111 : static int sfill(STREAM* s)</span>
|
||||
<span class="lineNum"> 205 </span> : {
|
||||
<span class="lineNum"> 206 </span> : ssize_t ret;
|
||||
<span class="lineNum"> 207 </span> :
|
||||
<span class="lineNum"> 208 </span><span class="lineCov"> 607114 : if (s->state != STREAM_STATE_READ) {</span>
|
||||
<span class="lineNum"> 208 </span><span class="lineCov"> 607111 : if (s->state != STREAM_STATE_READ) {</span>
|
||||
<span class="lineNum"> 209 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 210 </span> : return EOF;
|
||||
<span class="lineNum"> 211 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 212 </span> : }
|
||||
<span class="lineNum"> 213 </span> :
|
||||
<span class="lineNum"> 214 </span><span class="lineCov"> 606062 : ret = read(s->handle[0].f, s->buffer, STREAM_SIZE);</span>
|
||||
<span class="lineNum"> 214 </span><span class="lineCov"> 606059 : ret = read(s->handle[0].f, s->buffer, STREAM_SIZE);</span>
|
||||
<span class="lineNum"> 215 </span> :
|
||||
<span class="lineNum"> 216 </span><span class="lineCov"> 606062 : if (ret < 0) {</span>
|
||||
<span class="lineNum"> 217 </span> : /* LCOV_EXCL_START */
|
||||
|
|
@ -291,38 +291,38 @@
|
|||
<span class="lineNum"> 229 </span><span class="lineCov"> 604407 : s->crc = crc32c(s->crc, s->buffer, ret);</span>
|
||||
<span class="lineNum"> 230 </span> :
|
||||
<span class="lineNum"> 231 </span> : /* update the offset */
|
||||
<span class="lineNum"> 232 </span><span class="lineCov"> 604405 : s->offset_uncached = s->offset;</span>
|
||||
<span class="lineNum"> 233 </span><span class="lineCov"> 604405 : s->offset += ret;</span>
|
||||
<span class="lineNum"> 232 </span><span class="lineCov"> 604404 : s->offset_uncached = s->offset;</span>
|
||||
<span class="lineNum"> 233 </span><span class="lineCov"> 604404 : s->offset += ret;</span>
|
||||
<span class="lineNum"> 234 </span> :
|
||||
<span class="lineNum"> 235 </span><span class="lineCov"> 604405 : s->pos = s->buffer;</span>
|
||||
<span class="lineNum"> 236 </span><span class="lineCov"> 604405 : s->end = s->buffer + ret;</span>
|
||||
<span class="lineNum"> 235 </span><span class="lineCov"> 604404 : s->pos = s->buffer;</span>
|
||||
<span class="lineNum"> 236 </span><span class="lineCov"> 604404 : s->end = s->buffer + ret;</span>
|
||||
<span class="lineNum"> 237 </span> :
|
||||
<span class="lineNum"> 238 </span><span class="lineCov"> 604405 : return 0;</span>
|
||||
<span class="lineNum"> 238 </span><span class="lineCov"> 604404 : return 0;</span>
|
||||
<a name="239"><span class="lineNum"> 239 </span> : }</a>
|
||||
<span class="lineNum"> 240 </span> :
|
||||
<span class="lineNum"> 241 </span><span class="lineCov"> 1143 : int sdeplete(STREAM* s, unsigned char* last)</span>
|
||||
<span class="lineNum"> 241 </span><span class="lineCov"> 1142 : int sdeplete(STREAM* s, unsigned char* last)</span>
|
||||
<span class="lineNum"> 242 </span> : {
|
||||
<span class="lineNum"> 243 </span> : /* last four bytes */
|
||||
<span class="lineNum"> 244 </span><span class="lineCov"> 1143 : last[0] = 0;</span>
|
||||
<span class="lineNum"> 245 </span><span class="lineCov"> 1143 : last[1] = 0;</span>
|
||||
<span class="lineNum"> 246 </span><span class="lineCov"> 1143 : last[2] = 0;</span>
|
||||
<span class="lineNum"> 247 </span><span class="lineCov"> 1143 : last[3] = 0;</span>
|
||||
<span class="lineNum"> 244 </span><span class="lineCov"> 1142 : last[0] = 0;</span>
|
||||
<span class="lineNum"> 245 </span><span class="lineCov"> 1142 : last[1] = 0;</span>
|
||||
<span class="lineNum"> 246 </span><span class="lineCov"> 1142 : last[2] = 0;</span>
|
||||
<span class="lineNum"> 247 </span><span class="lineCov"> 1142 : last[3] = 0;</span>
|
||||
<span class="lineNum"> 248 </span> :
|
||||
<span class="lineNum"> 249 </span> : while (1) {
|
||||
<span class="lineNum"> 250 </span> : /* increase the position up to 4 bytes before the end */
|
||||
<span class="lineNum"> 251 </span><span class="lineCov"> 308267 : if (s->pos + 4 <= s->end)</span>
|
||||
<span class="lineNum"> 252 </span><span class="lineCov"> 148389 : s->pos = s->end - 4;</span>
|
||||
<span class="lineNum"> 251 </span><span class="lineCov"> 308265 : if (s->pos + 4 <= s->end)</span>
|
||||
<span class="lineNum"> 252 </span><span class="lineCov"> 148388 : s->pos = s->end - 4;</span>
|
||||
<span class="lineNum"> 253 </span> :
|
||||
<span class="lineNum"> 254 </span> : /* insert the last 4 bytes */
|
||||
<span class="lineNum"> 255 </span><span class="lineCov"> 1469857 : while (s->pos < s->end) {</span>
|
||||
<span class="lineNum"> 256 </span><span class="lineCov"> 853323 : last[0] = last[1];</span>
|
||||
<span class="lineNum"> 257 </span><span class="lineCov"> 853323 : last[1] = last[2];</span>
|
||||
<span class="lineNum"> 258 </span><span class="lineCov"> 853323 : last[2] = last[3];</span>
|
||||
<span class="lineNum"> 259 </span><span class="lineCov"> 853323 : last[3] = *s->pos++;</span>
|
||||
<span class="lineNum"> 255 </span><span class="lineCov"> 1469850 : while (s->pos < s->end) {</span>
|
||||
<span class="lineNum"> 256 </span><span class="lineCov"> 853320 : last[0] = last[1];</span>
|
||||
<span class="lineNum"> 257 </span><span class="lineCov"> 853320 : last[1] = last[2];</span>
|
||||
<span class="lineNum"> 258 </span><span class="lineCov"> 853320 : last[2] = last[3];</span>
|
||||
<span class="lineNum"> 259 </span><span class="lineCov"> 853320 : last[3] = *s->pos++;</span>
|
||||
<span class="lineNum"> 260 </span> : }
|
||||
<span class="lineNum"> 261 </span> :
|
||||
<span class="lineNum"> 262 </span> : /* fill again the buffer until the end of the file */
|
||||
<span class="lineNum"> 263 </span><span class="lineCov"> 308267 : if (sfill(s) != 0) {</span>
|
||||
<span class="lineNum"> 263 </span><span class="lineCov"> 308265 : if (sfill(s) != 0) {</span>
|
||||
<span class="lineNum"> 264 </span> : /* on error fail */
|
||||
<span class="lineNum"> 265 </span><span class="lineCov"> 1141 : if (serror(s)) {</span>
|
||||
<span class="lineNum"> 266 </span> : /* LCOV_EXCL_START */
|
||||
|
|
@ -333,7 +333,7 @@
|
|||
<span class="lineNum"> 271 </span> : /* on EOF terminate */
|
||||
<span class="lineNum"> 272 </span><span class="lineCov"> 1141 : break;</span>
|
||||
<span class="lineNum"> 273 </span> : }
|
||||
<span class="lineNum"> 274 </span><span class="lineCov"> 307124 : }</span>
|
||||
<span class="lineNum"> 274 </span><span class="lineCov"> 307123 : }</span>
|
||||
<span class="lineNum"> 275 </span> :
|
||||
<span class="lineNum"> 276 </span><span class="lineCov"> 1141 : return 0;</span>
|
||||
<a name="277"><span class="lineNum"> 277 </span> : }</a>
|
||||
|
|
@ -445,35 +445,35 @@
|
|||
<span class="lineNum"> 383 </span><span class="lineCov"> 8138 : return i - str;</span>
|
||||
<a name="384"><span class="lineNum"> 384 </span> : }</a>
|
||||
<span class="lineNum"> 385 </span> :
|
||||
<span class="lineNum"> 386 </span><span class="lineCov"> 12811254 : int sread(STREAM* f, void* void_data, unsigned size)</span>
|
||||
<span class="lineNum"> 386 </span><span class="lineCov"> 12810720 : int sread(STREAM* f, void* void_data, unsigned size)</span>
|
||||
<span class="lineNum"> 387 </span> : {
|
||||
<span class="lineNum"> 388 </span><span class="lineCov"> 12811254 : unsigned char* data = void_data;</span>
|
||||
<span class="lineNum"> 388 </span><span class="lineCov"> 12810720 : unsigned char* data = void_data;</span>
|
||||
<span class="lineNum"> 389 </span> :
|
||||
<span class="lineNum"> 390 </span> : /* if there is enough space in memory */
|
||||
<span class="lineNum"> 391 </span><span class="lineCov"> 12811254 : if (sptrlookup(f, size)) {</span>
|
||||
<span class="lineNum"> 391 </span><span class="lineCov"> 12810720 : if (sptrlookup(f, size)) {</span>
|
||||
<span class="lineNum"> 392 </span> : /* optimized version with all the data in memory */
|
||||
<span class="lineNum"> 393 </span><span class="lineCov"> 12785041 : unsigned char* pos = sptrget(f);</span>
|
||||
<span class="lineNum"> 393 </span><span class="lineCov"> 12784282 : unsigned char* pos = sptrget(f);</span>
|
||||
<span class="lineNum"> 394 </span> :
|
||||
<span class="lineNum"> 395 </span> : /* copy it */
|
||||
<span class="lineNum"> 396 </span><span class="lineCov"> 217739589 : while (size--)</span>
|
||||
<span class="lineNum"> 397 </span><span class="lineCov"> 192169507 : *data++ = *pos++;</span>
|
||||
<span class="lineNum"> 396 </span><span class="lineCov"> 217726263 : while (size--)</span>
|
||||
<span class="lineNum"> 397 </span><span class="lineCov"> 192157699 : *data++ = *pos++;</span>
|
||||
<span class="lineNum"> 398 </span> :
|
||||
<span class="lineNum"> 399 </span><span class="lineCov"> 12785041 : sptrset(f, pos);</span>
|
||||
<span class="lineNum"> 399 </span><span class="lineCov"> 12784282 : sptrset(f, pos);</span>
|
||||
<span class="lineNum"> 400 </span> : } else {
|
||||
<span class="lineNum"> 401 </span> : /* standard version using sgetc() */
|
||||
<span class="lineNum"> 402 </span><span class="lineCov"> 1376048 : while (size--) {</span>
|
||||
<span class="lineNum"> 403 </span><span class="lineCov"> 1323622 : int c = sgetc(f);</span>
|
||||
<span class="lineNum"> 404 </span><span class="lineCov"> 1323622 : if (c == EOF) {</span>
|
||||
<span class="lineNum"> 402 </span><span class="lineCov"> 1380323 : while (size--) {</span>
|
||||
<span class="lineNum"> 403 </span><span class="lineCov"> 1327447 : int c = sgetc(f);</span>
|
||||
<span class="lineNum"> 404 </span><span class="lineCov"> 1327447 : if (c == EOF) {</span>
|
||||
<span class="lineNum"> 405 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 406 </span> : return -1;
|
||||
<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"> 1323622 : *data++ = c;</span>
|
||||
<span class="lineNum"> 410 </span><span class="lineCov"> 1327447 : *data++ = c;</span>
|
||||
<span class="lineNum"> 411 </span> : }
|
||||
<span class="lineNum"> 412 </span> : }
|
||||
<span class="lineNum"> 413 </span> :
|
||||
<span class="lineNum"> 414 </span><span class="lineCov"> 12811254 : return 0;</span>
|
||||
<span class="lineNum"> 414 </span><span class="lineCov"> 12810720 : return 0;</span>
|
||||
<a name="415"><span class="lineNum"> 415 </span> : }</a>
|
||||
<span class="lineNum"> 416 </span> :
|
||||
<span class="lineNum"> 417 </span><span class="lineCov"> 5410 : int sgetline(STREAM* f, char* str, int size)</span>
|
||||
|
|
@ -586,76 +586,76 @@
|
|||
<span class="lineNum"> 524 </span> : }
|
||||
<a name="525"><span class="lineNum"> 525 </span> : }</a>
|
||||
<span class="lineNum"> 526 </span> :
|
||||
<span class="lineNum"> 527 </span><span class="lineCov"> 18635654 : int sgetb32(STREAM* f, uint32_t* value)</span>
|
||||
<span class="lineNum"> 527 </span><span class="lineCov"> 18668535 : int sgetb32(STREAM* f, uint32_t* value)</span>
|
||||
<span class="lineNum"> 528 </span> : {
|
||||
<span class="lineNum"> 529 </span> : uint32_t v;
|
||||
<span class="lineNum"> 530 </span> : unsigned char b;
|
||||
<span class="lineNum"> 531 </span> : unsigned char s;
|
||||
<span class="lineNum"> 532 </span> : int c;
|
||||
<span class="lineNum"> 533 </span> :
|
||||
<span class="lineNum"> 534 </span><span class="lineCov"> 18635654 : v = 0;</span>
|
||||
<span class="lineNum"> 535 </span><span class="lineCov"> 18635654 : s = 0;</span>
|
||||
<span class="lineNum"> 534 </span><span class="lineCov"> 18668535 : v = 0;</span>
|
||||
<span class="lineNum"> 535 </span><span class="lineCov"> 18668535 : s = 0;</span>
|
||||
<span class="lineNum"> 536 </span> : loop:
|
||||
<span class="lineNum"> 537 </span><span class="lineCov"> 35583277 : c = sgetc(f);</span>
|
||||
<span class="lineNum"> 538 </span><span class="lineCov"> 35583277 : if (c == EOF) {</span>
|
||||
<span class="lineNum"> 537 </span><span class="lineCov"> 36576764 : c = sgetc(f);</span>
|
||||
<span class="lineNum"> 538 </span><span class="lineCov"> 36576764 : if (c == EOF) {</span>
|
||||
<span class="lineNum"> 539 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 540 </span> : return -1;
|
||||
<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"> 35583277 : b = (unsigned char)c;</span>
|
||||
<span class="lineNum"> 545 </span><span class="lineCov"> 35583277 : if ((b & 0x80) == 0) {</span>
|
||||
<span class="lineNum"> 546 </span><span class="lineCov"> 16947623 : v |= (uint32_t)b << s;</span>
|
||||
<span class="lineNum"> 547 </span><span class="lineCov"> 16947623 : s += 7;</span>
|
||||
<span class="lineNum"> 548 </span><span class="lineCov"> 16947623 : if (s >= 32) {</span>
|
||||
<span class="lineNum"> 544 </span><span class="lineCov"> 36576764 : b = (unsigned char)c;</span>
|
||||
<span class="lineNum"> 545 </span><span class="lineCov"> 36576764 : if ((b & 0x80) == 0) {</span>
|
||||
<span class="lineNum"> 546 </span><span class="lineCov"> 17908229 : v |= (uint32_t)b << s;</span>
|
||||
<span class="lineNum"> 547 </span><span class="lineCov"> 17908229 : s += 7;</span>
|
||||
<span class="lineNum"> 548 </span><span class="lineCov"> 17908229 : if (s >= 32) {</span>
|
||||
<span class="lineNum"> 549 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 550 </span> : return -1;
|
||||
<span class="lineNum"> 551 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 552 </span> : }
|
||||
<span class="lineNum"> 553 </span><span class="lineCov"> 16947623 : goto loop;</span>
|
||||
<span class="lineNum"> 553 </span><span class="lineCov"> 17908229 : goto loop;</span>
|
||||
<span class="lineNum"> 554 </span> : }
|
||||
<span class="lineNum"> 555 </span> :
|
||||
<span class="lineNum"> 556 </span><span class="lineCov"> 18635654 : v |= (uint32_t)(b & 0x7f) << s;</span>
|
||||
<span class="lineNum"> 556 </span><span class="lineCov"> 18668535 : v |= (uint32_t)(b & 0x7f) << s;</span>
|
||||
<span class="lineNum"> 557 </span> :
|
||||
<span class="lineNum"> 558 </span><span class="lineCov"> 18635654 : *value = v;</span>
|
||||
<span class="lineNum"> 558 </span><span class="lineCov"> 18668535 : *value = v;</span>
|
||||
<span class="lineNum"> 559 </span> :
|
||||
<span class="lineNum"> 560 </span><span class="lineCov"> 18635654 : return 0;</span>
|
||||
<span class="lineNum"> 560 </span><span class="lineCov"> 18668535 : return 0;</span>
|
||||
<a name="561"><span class="lineNum"> 561 </span> : }</a>
|
||||
<span class="lineNum"> 562 </span> :
|
||||
<span class="lineNum"> 563 </span><span class="lineCov"> 10850327 : int sgetb64(STREAM* f, uint64_t* value)</span>
|
||||
<span class="lineNum"> 563 </span><span class="lineCov"> 10849874 : int sgetb64(STREAM* f, uint64_t* value)</span>
|
||||
<span class="lineNum"> 564 </span> : {
|
||||
<span class="lineNum"> 565 </span> : uint64_t v;
|
||||
<span class="lineNum"> 566 </span> : unsigned char b;
|
||||
<span class="lineNum"> 567 </span> : unsigned char s;
|
||||
<span class="lineNum"> 568 </span> : int c;
|
||||
<span class="lineNum"> 569 </span> :
|
||||
<span class="lineNum"> 570 </span><span class="lineCov"> 10850327 : v = 0;</span>
|
||||
<span class="lineNum"> 571 </span><span class="lineCov"> 10850327 : s = 0;</span>
|
||||
<span class="lineNum"> 570 </span><span class="lineCov"> 10849874 : v = 0;</span>
|
||||
<span class="lineNum"> 571 </span><span class="lineCov"> 10849874 : s = 0;</span>
|
||||
<span class="lineNum"> 572 </span> : loop:
|
||||
<span class="lineNum"> 573 </span><span class="lineCov"> 39669689 : c = sgetc(f);</span>
|
||||
<span class="lineNum"> 574 </span><span class="lineCov"> 39669689 : if (c == EOF) {</span>
|
||||
<span class="lineNum"> 573 </span><span class="lineCov"> 39668034 : c = sgetc(f);</span>
|
||||
<span class="lineNum"> 574 </span><span class="lineCov"> 39668034 : if (c == EOF) {</span>
|
||||
<span class="lineNum"> 575 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 576 </span> : return -1;
|
||||
<span class="lineNum"> 577 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 578 </span> : }
|
||||
<span class="lineNum"> 579 </span> :
|
||||
<span class="lineNum"> 580 </span><span class="lineCov"> 39669689 : b = (unsigned char)c;</span>
|
||||
<span class="lineNum"> 581 </span><span class="lineCov"> 39669689 : if ((b & 0x80) == 0) {</span>
|
||||
<span class="lineNum"> 582 </span><span class="lineCov"> 28819362 : v |= (uint64_t)b << s;</span>
|
||||
<span class="lineNum"> 583 </span><span class="lineCov"> 28819362 : s += 7;</span>
|
||||
<span class="lineNum"> 584 </span><span class="lineCov"> 28819362 : if (s >= 64) {</span>
|
||||
<span class="lineNum"> 580 </span><span class="lineCov"> 39668034 : b = (unsigned char)c;</span>
|
||||
<span class="lineNum"> 581 </span><span class="lineCov"> 39668034 : if ((b & 0x80) == 0) {</span>
|
||||
<span class="lineNum"> 582 </span><span class="lineCov"> 28818160 : v |= (uint64_t)b << s;</span>
|
||||
<span class="lineNum"> 583 </span><span class="lineCov"> 28818160 : s += 7;</span>
|
||||
<span class="lineNum"> 584 </span><span class="lineCov"> 28818160 : if (s >= 64) {</span>
|
||||
<span class="lineNum"> 585 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 586 </span> : return -1;
|
||||
<span class="lineNum"> 587 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 588 </span> : }
|
||||
<span class="lineNum"> 589 </span><span class="lineCov"> 28819362 : goto loop;</span>
|
||||
<span class="lineNum"> 589 </span><span class="lineCov"> 28818160 : goto loop;</span>
|
||||
<span class="lineNum"> 590 </span> : }
|
||||
<span class="lineNum"> 591 </span> :
|
||||
<span class="lineNum"> 592 </span><span class="lineCov"> 10850327 : v |= (uint64_t)(b & 0x7f) << s;</span>
|
||||
<span class="lineNum"> 592 </span><span class="lineCov"> 10849874 : v |= (uint64_t)(b & 0x7f) << s;</span>
|
||||
<span class="lineNum"> 593 </span> :
|
||||
<span class="lineNum"> 594 </span><span class="lineCov"> 10850327 : *value = v;</span>
|
||||
<span class="lineNum"> 594 </span><span class="lineCov"> 10849874 : *value = v;</span>
|
||||
<span class="lineNum"> 595 </span> :
|
||||
<span class="lineNum"> 596 </span><span class="lineCov"> 10850327 : return 0;</span>
|
||||
<span class="lineNum"> 596 </span><span class="lineCov"> 10849874 : return 0;</span>
|
||||
<a name="597"><span class="lineNum"> 597 </span> : }</a>
|
||||
<span class="lineNum"> 598 </span> :
|
||||
<span class="lineNum"> 599 </span><span class="lineCov"> 379 : int sgetble32(STREAM* f, uint32_t* value)</span>
|
||||
|
|
@ -673,35 +673,35 @@
|
|||
<span class="lineNum"> 611 </span><span class="lineCov"> 379 : return 0;</span>
|
||||
<a name="612"><span class="lineNum"> 612 </span> : }</a>
|
||||
<span class="lineNum"> 613 </span> :
|
||||
<span class="lineNum"> 614 </span><span class="lineCov"> 3877387 : int sgetbs(STREAM* f, char* str, int size)</span>
|
||||
<span class="lineNum"> 614 </span><span class="lineCov"> 3877236 : int sgetbs(STREAM* f, char* str, int size)</span>
|
||||
<span class="lineNum"> 615 </span> : {
|
||||
<span class="lineNum"> 616 </span> : uint32_t len;
|
||||
<span class="lineNum"> 617 </span> :
|
||||
<span class="lineNum"> 618 </span><span class="lineCov"> 3877387 : if (sgetb32(f, &len) < 0) {</span>
|
||||
<span class="lineNum"> 618 </span><span class="lineCov"> 3877236 : if (sgetb32(f, &len) < 0) {</span>
|
||||
<span class="lineNum"> 619 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 620 </span> : return -1;
|
||||
<span class="lineNum"> 621 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 622 </span> : }
|
||||
<span class="lineNum"> 623 </span> :
|
||||
<span class="lineNum"> 624 </span><span class="lineCov"> 3877387 : if (len + 1 > (uint32_t)size) {</span>
|
||||
<span class="lineNum"> 624 </span><span class="lineCov"> 3877236 : if (len + 1 > (uint32_t)size) {</span>
|
||||
<span class="lineNum"> 625 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 626 </span> : return -1;
|
||||
<span class="lineNum"> 627 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 628 </span> : }
|
||||
<span class="lineNum"> 629 </span> :
|
||||
<span class="lineNum"> 630 </span><span class="lineCov"> 3877387 : str[len] = 0;</span>
|
||||
<span class="lineNum"> 630 </span><span class="lineCov"> 3877236 : str[len] = 0;</span>
|
||||
<span class="lineNum"> 631 </span> :
|
||||
<span class="lineNum"> 632 </span><span class="lineCov"> 3877387 : return sread(f, str, (int)len);</span>
|
||||
<span class="lineNum"> 632 </span><span class="lineCov"> 3877236 : return sread(f, str, (int)len);</span>
|
||||
<a name="633"><span class="lineNum"> 633 </span> : }</a>
|
||||
<span class="lineNum"> 634 </span> :
|
||||
<span class="lineNum"> 635 </span><span class="lineCov"> 20711595 : int swrite(const void* void_data, unsigned size, STREAM* f)</span>
|
||||
<span class="lineNum"> 635 </span><span class="lineCov"> 20725275 : int swrite(const void* void_data, unsigned size, STREAM* f)</span>
|
||||
<span class="lineNum"> 636 </span> : {
|
||||
<span class="lineNum"> 637 </span><span class="lineCov"> 20711595 : const unsigned char* data = void_data;</span>
|
||||
<span class="lineNum"> 637 </span><span class="lineCov"> 20725275 : const unsigned char* data = void_data;</span>
|
||||
<span class="lineNum"> 638 </span> :
|
||||
<span class="lineNum"> 639 </span> : /* if there is enough space in memory */
|
||||
<span class="lineNum"> 640 </span><span class="lineCov"> 20711595 : if (sptrlookup(f, size)) {</span>
|
||||
<span class="lineNum"> 640 </span><span class="lineCov"> 20725275 : if (sptrlookup(f, size)) {</span>
|
||||
<span class="lineNum"> 641 </span> : /* optimized version with all the data in memory */
|
||||
<span class="lineNum"> 642 </span><span class="lineCov"> 20705435 : unsigned char* pos = sptrget(f);</span>
|
||||
<span class="lineNum"> 642 </span><span class="lineCov"> 20719102 : unsigned char* pos = sptrget(f);</span>
|
||||
<span class="lineNum"> 643 </span> :
|
||||
<span class="lineNum"> 644 </span> : /**
|
||||
<span class="lineNum"> 645 </span> : * Update the crc *before* writing the data in the buffer
|
||||
|
|
@ -710,17 +710,17 @@
|
|||
<span class="lineNum"> 648 </span> : * to be able to detect memory errors on the buffer,
|
||||
<span class="lineNum"> 649 </span> : * happening before we write it on the file.
|
||||
<span class="lineNum"> 650 </span> : */
|
||||
<span class="lineNum"> 651 </span><span class="lineCov"> 20705435 : f->crc_stream = crc32c_plain(f->crc_stream, data, size);</span>
|
||||
<span class="lineNum"> 651 </span><span class="lineCov"> 20719102 : f->crc_stream = crc32c_plain(f->crc_stream, data, size);</span>
|
||||
<span class="lineNum"> 652 </span> :
|
||||
<span class="lineNum"> 653 </span> : /* copy it */
|
||||
<span class="lineNum"> 654 </span><span class="lineCov"> 172587335 : while (size--)</span>
|
||||
<span class="lineNum"> 655 </span><span class="lineCov"> 131176465 : *pos++ = *data++;</span>
|
||||
<span class="lineNum"> 654 </span><span class="lineCov"> 173066513 : while (size--)</span>
|
||||
<span class="lineNum"> 655 </span><span class="lineCov"> 131628309 : *pos++ = *data++;</span>
|
||||
<span class="lineNum"> 656 </span> :
|
||||
<span class="lineNum"> 657 </span><span class="lineCov"> 20705435 : sptrset(f, pos);</span>
|
||||
<span class="lineNum"> 657 </span><span class="lineCov"> 20719102 : sptrset(f, pos);</span>
|
||||
<span class="lineNum"> 658 </span> : } else {
|
||||
<span class="lineNum"> 659 </span> : /* standard version using sputc() */
|
||||
<span class="lineNum"> 660 </span><span class="lineCov"> 200869 : while (size--) {</span>
|
||||
<span class="lineNum"> 661 </span><span class="lineCov"> 188549 : if (sputc(*data++, f) != 0) {</span>
|
||||
<span class="lineNum"> 660 </span><span class="lineCov"> 202070 : while (size--) {</span>
|
||||
<span class="lineNum"> 661 </span><span class="lineCov"> 189724 : if (sputc(*data++, f) != 0) {</span>
|
||||
<span class="lineNum"> 662 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 663 </span> : return -1;
|
||||
<span class="lineNum"> 664 </span> : /* LCOV_EXCL_STOP */
|
||||
|
|
@ -728,28 +728,28 @@
|
|||
<span class="lineNum"> 666 </span> : }
|
||||
<span class="lineNum"> 667 </span> : }
|
||||
<span class="lineNum"> 668 </span> :
|
||||
<span class="lineNum"> 669 </span><span class="lineCov"> 20711595 : return 0;</span>
|
||||
<span class="lineNum"> 669 </span><span class="lineCov"> 20725275 : return 0;</span>
|
||||
<a name="670"><span class="lineNum"> 670 </span> : }</a>
|
||||
<span class="lineNum"> 671 </span> :
|
||||
<span class="lineNum"> 672 </span><span class="lineCov"> 9113968 : int sputb32(uint32_t value, STREAM* s)</span>
|
||||
<span class="lineNum"> 672 </span><span class="lineCov"> 9127648 : int sputb32(uint32_t value, STREAM* s)</span>
|
||||
<span class="lineNum"> 673 </span> : {
|
||||
<span class="lineNum"> 674 </span> : unsigned char b;
|
||||
<span class="lineNum"> 675 </span> : unsigned char buf[16];
|
||||
<span class="lineNum"> 676 </span> : unsigned i;
|
||||
<span class="lineNum"> 677 </span> :
|
||||
<span class="lineNum"> 678 </span><span class="lineCov"> 9113968 : i = 0;</span>
|
||||
<span class="lineNum"> 678 </span><span class="lineCov"> 9127648 : i = 0;</span>
|
||||
<span class="lineNum"> 679 </span> : loop:
|
||||
<span class="lineNum"> 680 </span><span class="lineCov"> 17456278 : b = value & 0x7f;</span>
|
||||
<span class="lineNum"> 681 </span><span class="lineCov"> 17456278 : value >>= 7;</span>
|
||||
<span class="lineNum"> 680 </span><span class="lineCov"> 17909297 : b = value & 0x7f;</span>
|
||||
<span class="lineNum"> 681 </span><span class="lineCov"> 17909297 : value >>= 7;</span>
|
||||
<span class="lineNum"> 682 </span> :
|
||||
<span class="lineNum"> 683 </span><span class="lineCov"> 17456278 : if (value) {</span>
|
||||
<span class="lineNum"> 684 </span><span class="lineCov"> 8342310 : buf[i++] = b;</span>
|
||||
<span class="lineNum"> 685 </span><span class="lineCov"> 8342310 : goto loop;</span>
|
||||
<span class="lineNum"> 683 </span><span class="lineCov"> 17909297 : if (value) {</span>
|
||||
<span class="lineNum"> 684 </span><span class="lineCov"> 8781649 : buf[i++] = b;</span>
|
||||
<span class="lineNum"> 685 </span><span class="lineCov"> 8781649 : goto loop;</span>
|
||||
<span class="lineNum"> 686 </span> : }
|
||||
<span class="lineNum"> 687 </span> :
|
||||
<span class="lineNum"> 688 </span><span class="lineCov"> 9113968 : buf[i++] = b | 0x80;</span>
|
||||
<span class="lineNum"> 688 </span><span class="lineCov"> 9127648 : buf[i++] = b | 0x80;</span>
|
||||
<span class="lineNum"> 689 </span> :
|
||||
<span class="lineNum"> 690 </span><span class="lineCov"> 9113968 : return swrite(buf, i, s);</span>
|
||||
<span class="lineNum"> 690 </span><span class="lineCov"> 9127648 : return swrite(buf, i, s);</span>
|
||||
<a name="691"><span class="lineNum"> 691 </span> : }</a>
|
||||
<span class="lineNum"> 692 </span> :
|
||||
<span class="lineNum"> 693 </span><span class="lineCov"> 5317120 : int sputb64(uint64_t value, STREAM* s)</span>
|
||||
|
|
|
|||
|
|
@ -61,27 +61,27 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="stream.h.gcov.html#230">sgetc</a></td>
|
||||
<td class="coverFnHi">84208356</td>
|
||||
<td class="coverFnHi">85203689</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="stream.h.gcov.html#160">sptrlookup</a></td>
|
||||
<td class="coverFnHi">33528259</td>
|
||||
<td class="coverFnHi">33541405</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="stream.h.gcov.html#176">sptrset</a></td>
|
||||
<td class="coverFnHi">33490476</td>
|
||||
<td class="coverFnHi">33503384</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="stream.h.gcov.html#168">sptrget</a></td>
|
||||
<td class="coverFnHi">33490476</td>
|
||||
<td class="coverFnHi">33503384</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="stream.h.gcov.html#346">sputc</a></td>
|
||||
<td class="coverFnHi">3807708</td>
|
||||
<td class="coverFnHi">3808841</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="stream.h.gcov.html#184">serror</a></td>
|
||||
<td class="coverFnHi">3630957</td>
|
||||
<td class="coverFnHi">3635503</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="stream.h.gcov.html#241">sungetc</a></td>
|
||||
|
|
|
|||
|
|
@ -65,7 +65,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="stream.h.gcov.html#184">serror</a></td>
|
||||
<td class="coverFnHi">3630957</td>
|
||||
<td class="coverFnHi">3635503</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="stream.h.gcov.html#208">serrorfile</a></td>
|
||||
|
|
@ -73,7 +73,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="stream.h.gcov.html#230">sgetc</a></td>
|
||||
<td class="coverFnHi">84208356</td>
|
||||
<td class="coverFnHi">85203689</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="stream.h.gcov.html#256">sgeteol</a></td>
|
||||
|
|
@ -85,19 +85,19 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="stream.h.gcov.html#168">sptrget</a></td>
|
||||
<td class="coverFnHi">33490476</td>
|
||||
<td class="coverFnHi">33503384</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="stream.h.gcov.html#160">sptrlookup</a></td>
|
||||
<td class="coverFnHi">33528259</td>
|
||||
<td class="coverFnHi">33541405</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="stream.h.gcov.html#176">sptrset</a></td>
|
||||
<td class="coverFnHi">33490476</td>
|
||||
<td class="coverFnHi">33503384</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="stream.h.gcov.html#346">sputc</a></td>
|
||||
<td class="coverFnHi">3807708</td>
|
||||
<td class="coverFnHi">3808841</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="stream.h.gcov.html#241">sungetc</a></td>
|
||||
|
|
|
|||
|
|
@ -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"> 33528259 : static inline int sptrlookup(STREAM* s, int size)</span>
|
||||
<span class="lineNum"> 162 </span><span class="lineCov"> 33541405 : static inline int sptrlookup(STREAM* s, int size)</span>
|
||||
<span class="lineNum"> 163 </span> : {
|
||||
<span class="lineNum"> 164 </span><span class="lineCov"> 33528259 : return s->pos + size <= s->end;</span>
|
||||
<span class="lineNum"> 164 </span><span class="lineCov"> 33541405 : 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"> 33490476 : static inline unsigned char* sptrget(STREAM* s)</span>
|
||||
<span class="lineNum"> 170 </span><span class="lineCov"> 33503384 : static inline unsigned char* sptrget(STREAM* s)</span>
|
||||
<span class="lineNum"> 171 </span> : {
|
||||
<span class="lineNum"> 172 </span><span class="lineCov"> 33490476 : return s->pos;</span>
|
||||
<span class="lineNum"> 172 </span><span class="lineCov"> 33503384 : 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"> 33490476 : static inline void sptrset(STREAM* s, unsigned char* ptr)</span>
|
||||
<span class="lineNum"> 178 </span><span class="lineCov"> 33503384 : static inline void sptrset(STREAM* s, unsigned char* ptr)</span>
|
||||
<span class="lineNum"> 179 </span> : {
|
||||
<span class="lineNum"> 180 </span><span class="lineCov"> 33490476 : s->pos = ptr;</span>
|
||||
<span class="lineNum"> 181 </span><span class="lineCov"> 33490476 : }</span>
|
||||
<span class="lineNum"> 180 </span><span class="lineCov"> 33503384 : s->pos = ptr;</span>
|
||||
<span class="lineNum"> 181 </span><span class="lineCov"> 33503384 : }</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"> 3630957 : static inline int serror(STREAM* s)</span>
|
||||
<span class="lineNum"> 186 </span><span class="lineCov"> 3635503 : static inline int serror(STREAM* s)</span>
|
||||
<span class="lineNum"> 187 </span> : {
|
||||
<span class="lineNum"> 188 </span><span class="lineCov"> 3630957 : return s->state == STREAM_STATE_ERROR;</span>
|
||||
<span class="lineNum"> 188 </span><span class="lineCov"> 3635503 : return s->state == STREAM_STATE_ERROR;</span>
|
||||
<span class="lineNum"> 189 </span> : }
|
||||
<span class="lineNum"> 190 </span> :
|
||||
<span class="lineNum"> 191 </span> : /**
|
||||
|
|
@ -291,11 +291,11 @@
|
|||
<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"> 84208356 : static inline int sgetc(STREAM* s)</span>
|
||||
<span class="lineNum"> 232 </span><span class="lineCov"> 85203689 : static inline int sgetc(STREAM* s)</span>
|
||||
<span class="lineNum"> 233 </span> : {
|
||||
<span class="lineNum"> 234 </span><span class="lineCov"> 84208356 : if (tommy_unlikely(s->pos == s->end))</span>
|
||||
<span class="lineNum"> 234 </span><span class="lineCov"> 85203689 : if (tommy_unlikely(s->pos == s->end))</span>
|
||||
<span class="lineNum"> 235 </span><span class="lineCov"> 298847 : return sgetc_uncached(s);</span>
|
||||
<span class="lineNum"> 236 </span><span class="lineCov"> 83909509 : return *s->pos++;</span>
|
||||
<span class="lineNum"> 236 </span><span class="lineCov"> 84904842 : return *s->pos++;</span>
|
||||
<span class="lineNum"> 237 </span> : }
|
||||
<span class="lineNum"> 238 </span> :
|
||||
<span class="lineNum"> 239 </span> : /**
|
||||
|
|
@ -407,9 +407,9 @@
|
|||
<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"> 3807708 : static inline int sputc(int c, STREAM* s)</span>
|
||||
<span class="lineNum"> 348 </span><span class="lineCov"> 3808841 : static inline int sputc(int c, STREAM* s)</span>
|
||||
<span class="lineNum"> 349 </span> : {
|
||||
<span class="lineNum"> 350 </span><span class="lineCov"> 3807708 : if (s->pos == s->end) {</span>
|
||||
<span class="lineNum"> 350 </span><span class="lineCov"> 3808841 : if (s->pos == s->end) {</span>
|
||||
<span class="lineNum"> 351 </span><span class="lineCov"> 38580 : if (sflush(s) != 0)</span>
|
||||
<span class="lineNum"> 352 </span><span class="lineNoCov"> 0 : return -1;</span>
|
||||
<span class="lineNum"> 353 </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"> 3807708 : s->crc_stream = crc32c_plain_char(s->crc_stream, c);</span>
|
||||
<span class="lineNum"> 362 </span><span class="lineCov"> 3808841 : s->crc_stream = crc32c_plain_char(s->crc_stream, c);</span>
|
||||
<span class="lineNum"> 363 </span> :
|
||||
<span class="lineNum"> 364 </span><span class="lineCov"> 3807708 : *s->pos++ = c;</span>
|
||||
<span class="lineNum"> 364 </span><span class="lineCov"> 3808841 : *s->pos++ = c;</span>
|
||||
<span class="lineNum"> 365 </span> :
|
||||
<span class="lineNum"> 366 </span><span class="lineCov"> 3807708 : return 0;</span>
|
||||
<span class="lineNum"> 366 </span><span class="lineCov"> 3808841 : return 0;</span>
|
||||
<span class="lineNum"> 367 </span> : }
|
||||
<span class="lineNum"> 368 </span> :
|
||||
<span class="lineNum"> 369 </span> : /**
|
||||
|
|
|
|||
|
|
@ -61,123 +61,123 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#1521">thread_mutex_unlock</a></td>
|
||||
<td class="coverFnHi">80937280</td>
|
||||
<td class="coverFnHi">80857847</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#1511">thread_mutex_lock</a></td>
|
||||
<td class="coverFnHi">80931472</td>
|
||||
<td class="coverFnHi">80853291</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#765">pathcmp</a></td>
|
||||
<td class="coverFnHi">51890441</td>
|
||||
<td class="coverFnHi">51888281</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#716">pathprint</a></td>
|
||||
<td class="coverFnHi">51564443</td>
|
||||
<td class="coverFnHi">51562554</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#52">unlock_memory</a></td>
|
||||
<td class="coverFnHi">20175842</td>
|
||||
<td class="coverFnHi">20174119</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#45">lock_memory</a></td>
|
||||
<td class="coverFnHi">20175842</td>
|
||||
<td class="coverFnHi">20174119</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#1221">malloc_counter_inc</a></td>
|
||||
<td class="coverFnHi">20175368</td>
|
||||
<td class="coverFnHi">20173645</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#1280">malloc_nofail</a></td>
|
||||
<td class="coverFnHi">14365336</td>
|
||||
<td class="coverFnHi">14364256</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#1134">advise_read</a></td>
|
||||
<td class="coverFnHi">8904745</td>
|
||||
<td class="coverFnHi">8903012</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#631">pathcpy</a></td>
|
||||
<td class="coverFnHi">7892641</td>
|
||||
<td class="coverFnHi">7891437</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#1329">strdup_nofail</a></td>
|
||||
<td class="coverFnHi">5800015</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#31">lock_msg</a></td>
|
||||
<td class="coverFnHi">3885087</td>
|
||||
<td class="coverFnHi">5799372</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#38">unlock_msg</a></td>
|
||||
<td class="coverFnHi">3885087</td>
|
||||
<td class="coverFnHi">3888570</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#31">lock_msg</a></td>
|
||||
<td class="coverFnHi">3888569</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#154">log_tag</a></td>
|
||||
<td class="coverFnHi">2906282</td>
|
||||
<td class="coverFnHi">2908990</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#905">advise_flags</a></td>
|
||||
<td class="coverFnHi">2495144</td>
|
||||
<td class="coverFnHi">2494931</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#898">advise_init</a></td>
|
||||
<td class="coverFnHi">2495049</td>
|
||||
<td class="coverFnHi">2494857</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#390">esc_tag</a></td>
|
||||
<td class="coverFnHi">2427117</td>
|
||||
<td class="coverFnHi">2429566</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#925">advise_open</a></td>
|
||||
<td class="coverFnHi">2416674</td>
|
||||
<td class="coverFnHi">2416121</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#1571">thread_cond_wait</a></td>
|
||||
<td class="coverFnHi">1125861</td>
|
||||
<td class="coverFnHi">1095193</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#957">advise_write</a></td>
|
||||
<td class="coverFnHi">900515</td>
|
||||
<td class="coverFnHi">900323</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#785">mkancestor</a></td>
|
||||
<td class="coverFnHi">793086</td>
|
||||
<td class="coverFnHi">793097</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#115">log_error</a></td>
|
||||
<td class="coverFnHi">535740</td>
|
||||
<td class="coverFnHi">536153</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#431">esc_shell_multi</a></td>
|
||||
<td class="coverFnHi">355793</td>
|
||||
<td class="coverFnHi">356012</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#207">msg_info</a></td>
|
||||
<td class="coverFnHi">295568</td>
|
||||
<td class="coverFnHi">295787</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#1561">thread_cond_broadcast</a></td>
|
||||
<td class="coverFnHi">265024</td>
|
||||
<td class="coverFnHi">255449</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#1627">thread_cond_broadcast_and_unlock</a></td>
|
||||
<td class="coverFnHi">264832</td>
|
||||
<td class="coverFnHi">255259</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#269">msg_verbose</a></td>
|
||||
<td class="coverFnHi">126843</td>
|
||||
<td class="coverFnHi">126951</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#849">fmtime</a></td>
|
||||
<td class="coverFnHi">119588</td>
|
||||
<td class="coverFnHi">119601</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#1551">thread_cond_signal</a></td>
|
||||
<td class="coverFnHi">87252</td>
|
||||
<td class="coverFnHi">84548</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#1610">thread_cond_signal_and_unlock</a></td>
|
||||
<td class="coverFnHi">87252</td>
|
||||
<td class="coverFnHi">84548</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#696">pathexport</a></td>
|
||||
|
|
@ -205,23 +205,23 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#1491">thread_mutex_init</a></td>
|
||||
<td class="coverFnHi">2263</td>
|
||||
<td class="coverFnHi">2268</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#1644">thread_create</a></td>
|
||||
<td class="coverFnHi">2207</td>
|
||||
<td class="coverFnHi">2200</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#1654">thread_join</a></td>
|
||||
<td class="coverFnHi">2207</td>
|
||||
<td class="coverFnHi">2200</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#1501">thread_mutex_destroy</a></td>
|
||||
<td class="coverFnHi">2075</td>
|
||||
<td class="coverFnHi">2074</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#250">msg_bar</a></td>
|
||||
<td class="coverFnHi">1748</td>
|
||||
<td class="coverFnHi">1778</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#602">strsplit</a></td>
|
||||
|
|
@ -245,7 +245,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#293">msg_flush</a></td>
|
||||
<td class="coverFnHi">585</td>
|
||||
<td class="coverFnHi">591</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#1208">malloc_counter_get</a></td>
|
||||
|
|
@ -253,15 +253,15 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#1531">thread_cond_init</a></td>
|
||||
<td class="coverFnHi">384</td>
|
||||
<td class="coverFnHi">380</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#1541">thread_cond_destroy</a></td>
|
||||
<td class="coverFnHi">384</td>
|
||||
<td class="coverFnHi">380</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#59">lock_init</a></td>
|
||||
<td class="coverFnHi">294</td>
|
||||
<td class="coverFnHi">297</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#645">pathcat</a></td>
|
||||
|
|
|
|||
|
|
@ -61,23 +61,23 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#905">advise_flags</a></td>
|
||||
<td class="coverFnHi">2495144</td>
|
||||
<td class="coverFnHi">2494931</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#898">advise_init</a></td>
|
||||
<td class="coverFnHi">2495049</td>
|
||||
<td class="coverFnHi">2494857</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#925">advise_open</a></td>
|
||||
<td class="coverFnHi">2416674</td>
|
||||
<td class="coverFnHi">2416121</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#1134">advise_read</a></td>
|
||||
<td class="coverFnHi">8904745</td>
|
||||
<td class="coverFnHi">8903012</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#957">advise_write</a></td>
|
||||
<td class="coverFnHi">900515</td>
|
||||
<td class="coverFnHi">900323</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#1306">calloc_nofail</a></td>
|
||||
|
|
@ -85,15 +85,15 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#431">esc_shell_multi</a></td>
|
||||
<td class="coverFnHi">355793</td>
|
||||
<td class="coverFnHi">356012</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#390">esc_tag</a></td>
|
||||
<td class="coverFnHi">2427117</td>
|
||||
<td class="coverFnHi">2429566</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#849">fmtime</a></td>
|
||||
<td class="coverFnHi">119588</td>
|
||||
<td class="coverFnHi">119601</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#68">lock_done</a></td>
|
||||
|
|
@ -101,19 +101,19 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#59">lock_init</a></td>
|
||||
<td class="coverFnHi">294</td>
|
||||
<td class="coverFnHi">297</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#45">lock_memory</a></td>
|
||||
<td class="coverFnHi">20175842</td>
|
||||
<td class="coverFnHi">20174119</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#31">lock_msg</a></td>
|
||||
<td class="coverFnHi">3885087</td>
|
||||
<td class="coverFnHi">3888569</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#115">log_error</a></td>
|
||||
<td class="coverFnHi">535740</td>
|
||||
<td class="coverFnHi">536153</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#137">log_expected</a></td>
|
||||
|
|
@ -129,7 +129,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#154">log_tag</a></td>
|
||||
<td class="coverFnHi">2906282</td>
|
||||
<td class="coverFnHi">2908990</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#1208">malloc_counter_get</a></td>
|
||||
|
|
@ -137,27 +137,27 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#1221">malloc_counter_inc</a></td>
|
||||
<td class="coverFnHi">20175368</td>
|
||||
<td class="coverFnHi">20173645</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#1280">malloc_nofail</a></td>
|
||||
<td class="coverFnHi">14365336</td>
|
||||
<td class="coverFnHi">14364256</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#785">mkancestor</a></td>
|
||||
<td class="coverFnHi">793086</td>
|
||||
<td class="coverFnHi">793097</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#250">msg_bar</a></td>
|
||||
<td class="coverFnHi">1748</td>
|
||||
<td class="coverFnHi">1778</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#293">msg_flush</a></td>
|
||||
<td class="coverFnHi">585</td>
|
||||
<td class="coverFnHi">591</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#207">msg_info</a></td>
|
||||
<td class="coverFnHi">295568</td>
|
||||
<td class="coverFnHi">295787</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#226">msg_progress</a></td>
|
||||
|
|
@ -169,7 +169,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#269">msg_verbose</a></td>
|
||||
<td class="coverFnHi">126843</td>
|
||||
<td class="coverFnHi">126951</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#645">pathcat</a></td>
|
||||
|
|
@ -181,11 +181,11 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#765">pathcmp</a></td>
|
||||
<td class="coverFnHi">51890441</td>
|
||||
<td class="coverFnHi">51888281</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#631">pathcpy</a></td>
|
||||
<td class="coverFnHi">7892641</td>
|
||||
<td class="coverFnHi">7891437</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#755">pathcut</a></td>
|
||||
|
|
@ -201,7 +201,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#716">pathprint</a></td>
|
||||
<td class="coverFnHi">51564443</td>
|
||||
<td class="coverFnHi">51562554</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#738">pathslash</a></td>
|
||||
|
|
@ -237,7 +237,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#1329">strdup_nofail</a></td>
|
||||
<td class="coverFnHi">5800015</td>
|
||||
<td class="coverFnHi">5799372</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#589">strpolish</a></td>
|
||||
|
|
@ -249,63 +249,63 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#1561">thread_cond_broadcast</a></td>
|
||||
<td class="coverFnHi">265024</td>
|
||||
<td class="coverFnHi">255449</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#1627">thread_cond_broadcast_and_unlock</a></td>
|
||||
<td class="coverFnHi">264832</td>
|
||||
<td class="coverFnHi">255259</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#1541">thread_cond_destroy</a></td>
|
||||
<td class="coverFnHi">384</td>
|
||||
<td class="coverFnHi">380</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#1531">thread_cond_init</a></td>
|
||||
<td class="coverFnHi">384</td>
|
||||
<td class="coverFnHi">380</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#1551">thread_cond_signal</a></td>
|
||||
<td class="coverFnHi">87252</td>
|
||||
<td class="coverFnHi">84548</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#1610">thread_cond_signal_and_unlock</a></td>
|
||||
<td class="coverFnHi">87252</td>
|
||||
<td class="coverFnHi">84548</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#1571">thread_cond_wait</a></td>
|
||||
<td class="coverFnHi">1125861</td>
|
||||
<td class="coverFnHi">1095193</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#1644">thread_create</a></td>
|
||||
<td class="coverFnHi">2207</td>
|
||||
<td class="coverFnHi">2200</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#1654">thread_join</a></td>
|
||||
<td class="coverFnHi">2207</td>
|
||||
<td class="coverFnHi">2200</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#1501">thread_mutex_destroy</a></td>
|
||||
<td class="coverFnHi">2075</td>
|
||||
<td class="coverFnHi">2074</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#1491">thread_mutex_init</a></td>
|
||||
<td class="coverFnHi">2263</td>
|
||||
<td class="coverFnHi">2268</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#1511">thread_mutex_lock</a></td>
|
||||
<td class="coverFnHi">80931472</td>
|
||||
<td class="coverFnHi">80853291</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#1521">thread_mutex_unlock</a></td>
|
||||
<td class="coverFnHi">80937280</td>
|
||||
<td class="coverFnHi">80857847</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#52">unlock_memory</a></td>
|
||||
<td class="coverFnHi">20175842</td>
|
||||
<td class="coverFnHi">20174119</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="support.c.gcov.html#38">unlock_msg</a></td>
|
||||
<td class="coverFnHi">3885087</td>
|
||||
<td class="coverFnHi">3888570</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
|
|
@ -61,7 +61,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="support.h.gcov.html#230">esc_shell</a></td>
|
||||
<td class="coverFnHi">331733</td>
|
||||
<td class="coverFnHi">331952</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
|
|
|
|||
|
|
@ -61,7 +61,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="support.h.gcov.html#230">esc_shell</a></td>
|
||||
<td class="coverFnHi">331733</td>
|
||||
<td class="coverFnHi">331952</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
|
|
|
|||
|
|
@ -291,9 +291,9 @@
|
|||
<span class="lineNum"> 229 </span> : * \param buffer Preallocated buffer of ESC_MAX size.
|
||||
<a name="230"><span class="lineNum"> 230 </span> : */</a>
|
||||
<span class="lineNum"> 231 </span> : const char* esc_shell_multi(const char** str_map, unsigned str_max, char* buffer);
|
||||
<span class="lineNum"> 232 </span><span class="lineCov"> 331733 : static inline const char* esc_shell(const char* str, char* buffer)</span>
|
||||
<span class="lineNum"> 232 </span><span class="lineCov"> 331952 : static inline const char* esc_shell(const char* str, char* buffer)</span>
|
||||
<span class="lineNum"> 233 </span> : {
|
||||
<span class="lineNum"> 234 </span><span class="lineCov"> 331733 : return esc_shell_multi(&str, 1, buffer);</span>
|
||||
<span class="lineNum"> 234 </span><span class="lineCov"> 331952 : return esc_shell_multi(&str, 1, buffer);</span>
|
||||
<span class="lineNum"> 235 </span> : }
|
||||
<span class="lineNum"> 236 </span> :
|
||||
<span class="lineNum"> 237 </span> : /**
|
||||
|
|
|
|||
|
|
@ -31,9 +31,9 @@
|
|||
<td class="headerValue">lcov.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntry">500</td>
|
||||
<td class="headerCovTableEntry">502</td>
|
||||
<td class="headerCovTableEntry">561</td>
|
||||
<td class="headerCovTableEntryMed">89.1 %</td>
|
||||
<td class="headerCovTableEntryMed">89.5 %</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Date:</td>
|
||||
|
|
@ -65,11 +65,11 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="sync.c.gcov.html#473">sync_data_reader</a></td>
|
||||
<td class="coverFnHi">688722</td>
|
||||
<td class="coverFnHi">688117</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="sync.c.gcov.html#627">sync_parity_writer</a></td>
|
||||
<td class="coverFnHi">544684</td>
|
||||
<td class="coverFnHi">544283</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="sync.c.gcov.html#416">failed_compare_by_index</a></td>
|
||||
|
|
|
|||
|
|
@ -31,9 +31,9 @@
|
|||
<td class="headerValue">lcov.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntry">500</td>
|
||||
<td class="headerCovTableEntry">502</td>
|
||||
<td class="headerCovTableEntry">561</td>
|
||||
<td class="headerCovTableEntryMed">89.1 %</td>
|
||||
<td class="headerCovTableEntryMed">89.5 %</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Date:</td>
|
||||
|
|
@ -81,11 +81,11 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="sync.c.gcov.html#473">sync_data_reader</a></td>
|
||||
<td class="coverFnHi">688722</td>
|
||||
<td class="coverFnHi">688117</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="sync.c.gcov.html#627">sync_parity_writer</a></td>
|
||||
<td class="coverFnHi">544684</td>
|
||||
<td class="coverFnHi">544283</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
|
|
|
|||
|
|
@ -31,9 +31,9 @@
|
|||
<td class="headerValue">lcov.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntry">500</td>
|
||||
<td class="headerCovTableEntry">502</td>
|
||||
<td class="headerCovTableEntry">561</td>
|
||||
<td class="headerCovTableEntryMed">89.1 %</td>
|
||||
<td class="headerCovTableEntryMed">89.5 %</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Date:</td>
|
||||
|
|
@ -524,56 +524,56 @@
|
|||
<span class="lineNum"> 462 </span><span class="lineCov"> 4688742 : one_valid = 1;</span>
|
||||
<span class="lineNum"> 463 </span> :
|
||||
<span class="lineNum"> 464 </span><span class="lineCov"> 4911646 : if (block_has_invalid_parity(block) || plan->force_full)</span>
|
||||
<span class="lineNum"> 465 </span><span class="lineCov"> 753400 : one_invalid = 1;</span>
|
||||
<span class="lineNum"> 465 </span><span class="lineCov"> 753140 : one_invalid = 1;</span>
|
||||
<span class="lineNum"> 466 </span> : }
|
||||
<span class="lineNum"> 467 </span> :
|
||||
<span class="lineNum"> 468 </span> : /* if none valid or none invalid, we don't need to update */
|
||||
<span class="lineNum"> 469 </span><span class="lineCov"> 820170 : if (!one_invalid || !one_valid)</span>
|
||||
<span class="lineNum"> 470 </span><span class="lineCov"> 590568 : return 0;</span>
|
||||
<span class="lineNum"> 470 </span><span class="lineCov"> 590766 : return 0;</span>
|
||||
<span class="lineNum"> 471 </span> :
|
||||
<span class="lineNum"> 472 </span><span class="lineCov"> 229602 : return 1;</span>
|
||||
<span class="lineNum"> 472 </span><span class="lineCov"> 229404 : return 1;</span>
|
||||
<a name="473"><span class="lineNum"> 473 </span> : }</a>
|
||||
<span class="lineNum"> 474 </span> :
|
||||
<span class="lineNum"> 475 </span><span class="lineCov"> 688722 : static void sync_data_reader(struct snapraid_worker* worker, struct snapraid_task* task)</span>
|
||||
<span class="lineNum"> 475 </span><span class="lineCov"> 688117 : static void sync_data_reader(struct snapraid_worker* worker, struct snapraid_task* task)</span>
|
||||
<span class="lineNum"> 476 </span> : {
|
||||
<span class="lineNum"> 477 </span><span class="lineCov"> 688722 : struct snapraid_io* io = worker->io;</span>
|
||||
<span class="lineNum"> 478 </span><span class="lineCov"> 688722 : struct snapraid_state* state = io->state;</span>
|
||||
<span class="lineNum"> 479 </span><span class="lineCov"> 688722 : struct snapraid_handle* handle = worker->handle;</span>
|
||||
<span class="lineNum"> 480 </span><span class="lineCov"> 688722 : struct snapraid_disk* disk = handle->disk;</span>
|
||||
<span class="lineNum"> 481 </span><span class="lineCov"> 688722 : block_off_t blockcur = task->position;</span>
|
||||
<span class="lineNum"> 482 </span><span class="lineCov"> 688722 : unsigned char* buffer = task->buffer;</span>
|
||||
<span class="lineNum"> 477 </span><span class="lineCov"> 688117 : struct snapraid_io* io = worker->io;</span>
|
||||
<span class="lineNum"> 478 </span><span class="lineCov"> 688117 : struct snapraid_state* state = io->state;</span>
|
||||
<span class="lineNum"> 479 </span><span class="lineCov"> 688117 : struct snapraid_handle* handle = worker->handle;</span>
|
||||
<span class="lineNum"> 480 </span><span class="lineCov"> 688117 : struct snapraid_disk* disk = handle->disk;</span>
|
||||
<span class="lineNum"> 481 </span><span class="lineCov"> 688117 : block_off_t blockcur = task->position;</span>
|
||||
<span class="lineNum"> 482 </span><span class="lineCov"> 688117 : unsigned char* buffer = task->buffer;</span>
|
||||
<span class="lineNum"> 483 </span> : int ret;
|
||||
<span class="lineNum"> 484 </span> : char esc_buffer[ESC_MAX];
|
||||
<span class="lineNum"> 485 </span> :
|
||||
<span class="lineNum"> 486 </span> : /* if the disk position is not used */
|
||||
<span class="lineNum"> 487 </span><span class="lineCov"> 688722 : if (!disk) {</span>
|
||||
<span class="lineNum"> 487 </span><span class="lineCov"> 688117 : if (!disk) {</span>
|
||||
<span class="lineNum"> 488 </span> : /* use an empty block */
|
||||
<span class="lineNum"> 489 </span><span class="lineNoCov"> 0 : memset(buffer, 0, state->block_size);</span>
|
||||
<span class="lineNum"> 490 </span><span class="lineNoCov"> 0 : task->state = TASK_STATE_DONE;</span>
|
||||
<span class="lineNum"> 491 </span><span class="lineCov"> 92200 : return;</span>
|
||||
<span class="lineNum"> 489 </span><span class="lineCov"> 1 : memset(buffer, 0, state->block_size);</span>
|
||||
<span class="lineNum"> 490 </span><span class="lineCov"> 1 : task->state = TASK_STATE_DONE;</span>
|
||||
<span class="lineNum"> 491 </span><span class="lineCov"> 92173 : return;</span>
|
||||
<span class="lineNum"> 492 </span> : }
|
||||
<span class="lineNum"> 493 </span> :
|
||||
<span class="lineNum"> 494 </span> : /* get the block */
|
||||
<span class="lineNum"> 495 </span><span class="lineCov"> 688725 : task->block = fs_par2block_find(disk, blockcur);</span>
|
||||
<span class="lineNum"> 495 </span><span class="lineCov"> 688116 : task->block = fs_par2block_find(disk, blockcur);</span>
|
||||
<span class="lineNum"> 496 </span> :
|
||||
<span class="lineNum"> 497 </span> : /* if the block has no file, meaning that it's EMPTY or DELETED, */
|
||||
<span class="lineNum"> 498 </span> : /* it doesn't participate in the new parity computation */
|
||||
<span class="lineNum"> 499 </span><span class="lineCov"> 688673 : if (!block_has_file(task->block)) {</span>
|
||||
<span class="lineNum"> 499 </span><span class="lineCov"> 688081 : if (!block_has_file(task->block)) {</span>
|
||||
<span class="lineNum"> 500 </span> : /* use an empty block */
|
||||
<span class="lineNum"> 501 </span><span class="lineCov"> 92188 : memset(buffer, 0, state->block_size);</span>
|
||||
<span class="lineNum"> 502 </span><span class="lineCov"> 92188 : task->state = TASK_STATE_DONE;</span>
|
||||
<span class="lineNum"> 503 </span><span class="lineCov"> 92188 : return;</span>
|
||||
<span class="lineNum"> 501 </span><span class="lineCov"> 92153 : memset(buffer, 0, state->block_size);</span>
|
||||
<span class="lineNum"> 502 </span><span class="lineCov"> 92153 : task->state = TASK_STATE_DONE;</span>
|
||||
<span class="lineNum"> 503 </span><span class="lineCov"> 92153 : return;</span>
|
||||
<span class="lineNum"> 504 </span> : }
|
||||
<span class="lineNum"> 505 </span> :
|
||||
<span class="lineNum"> 506 </span> : /* get the file of this block */
|
||||
<span class="lineNum"> 507 </span><span class="lineCov"> 596459 : task->file = fs_par2file_get(disk, blockcur, &task->file_pos);</span>
|
||||
<span class="lineNum"> 507 </span><span class="lineCov"> 595895 : task->file = fs_par2file_get(disk, blockcur, &task->file_pos);</span>
|
||||
<span class="lineNum"> 508 </span> :
|
||||
<span class="lineNum"> 509 </span> : /* if the file is different than the current one, close it */
|
||||
<span class="lineNum"> 510 </span><span class="lineCov"> 596533 : if (handle->file != 0 && handle->file != task->file) {</span>
|
||||
<span class="lineNum"> 510 </span><span class="lineCov"> 595951 : if (handle->file != 0 && handle->file != task->file) {</span>
|
||||
<span class="lineNum"> 511 </span> : /* keep a pointer at the file we are going to close for error reporting */
|
||||
<span class="lineNum"> 512 </span><span class="lineCov"> 246230 : struct snapraid_file* report = handle->file;</span>
|
||||
<span class="lineNum"> 513 </span><span class="lineCov"> 246230 : ret = handle_close(handle);</span>
|
||||
<span class="lineNum"> 514 </span><span class="lineCov"> 246161 : if (ret == -1) {</span>
|
||||
<span class="lineNum"> 512 </span><span class="lineCov"> 245994 : struct snapraid_file* report = handle->file;</span>
|
||||
<span class="lineNum"> 513 </span><span class="lineCov"> 245994 : ret = handle_close(handle);</span>
|
||||
<span class="lineNum"> 514 </span><span class="lineCov"> 245950 : if (ret == -1) {</span>
|
||||
<span class="lineNum"> 515 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 516 </span> : /* This one is really an unexpected error, because we are only reading */
|
||||
<span class="lineNum"> 517 </span> : /* and closing a descriptor should never fail */
|
||||
|
|
@ -596,8 +596,8 @@
|
|||
<span class="lineNum"> 534 </span> : }
|
||||
<span class="lineNum"> 535 </span> : }
|
||||
<span class="lineNum"> 536 </span> :
|
||||
<span class="lineNum"> 537 </span><span class="lineCov"> 596464 : ret = handle_open(handle, task->file, state->file_mode, log_error, 0);</span>
|
||||
<span class="lineNum"> 538 </span><span class="lineCov"> 596411 : if (ret == -1) {</span>
|
||||
<span class="lineNum"> 537 </span><span class="lineCov"> 595907 : ret = handle_open(handle, task->file, state->file_mode, log_error, 0);</span>
|
||||
<span class="lineNum"> 538 </span><span class="lineCov"> 595847 : if (ret == -1) {</span>
|
||||
<span class="lineNum"> 539 </span><span class="lineCov"> 12 : if (errno == EIO) {</span>
|
||||
<span class="lineNum"> 540 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 541 </span> : log_tag("error:%u:%s:%s: Open EIO error. %s\n", blockcur, disk->name, esc_tag(task->file->sub, esc_buffer), strerror(errno));
|
||||
|
|
@ -641,12 +641,12 @@
|
|||
<span class="lineNum"> 579 </span> : }
|
||||
<span class="lineNum"> 580 </span> :
|
||||
<span class="lineNum"> 581 </span> : /* check if the file is changed */
|
||||
<span class="lineNum"> 582 </span><span class="lineCov"> 596399 : if (handle->st.st_size != task->file->size</span>
|
||||
<span class="lineNum"> 583 </span><span class="lineCov"> 596450 : || handle->st.st_mtime != task->file->mtime_sec</span>
|
||||
<span class="lineNum"> 584 </span><span class="lineCov"> 596448 : || STAT_NSEC(&handle->st) != task->file->mtime_nsec</span>
|
||||
<span class="lineNum"> 585 </span><span class="lineCov"> 596442 : || handle->st.st_ino != task->file->inode</span>
|
||||
<span class="lineNum"> 582 </span><span class="lineCov"> 595835 : if (handle->st.st_size != task->file->size</span>
|
||||
<span class="lineNum"> 583 </span><span class="lineCov"> 595862 : || handle->st.st_mtime != task->file->mtime_sec</span>
|
||||
<span class="lineNum"> 584 </span><span class="lineCov"> 595897 : || STAT_NSEC(&handle->st) != task->file->mtime_nsec</span>
|
||||
<span class="lineNum"> 585 </span><span class="lineCov"> 595892 : || handle->st.st_ino != task->file->inode</span>
|
||||
<span class="lineNum"> 586 </span> : ) {
|
||||
<span class="lineNum"> 587 </span><span class="lineCov"> 61 : log_tag("error:%u:%s:%s: Unexpected attribute change\n", blockcur, disk->name, esc_tag(task->file->sub, esc_buffer));</span>
|
||||
<span class="lineNum"> 587 </span><span class="lineCov"> 66 : log_tag("error:%u:%s:%s: Unexpected attribute change\n", blockcur, disk->name, esc_tag(task->file->sub, esc_buffer));</span>
|
||||
<span class="lineNum"> 588 </span><span class="lineCov"> 6 : if (handle->st.st_size != task->file->size) {</span>
|
||||
<span class="lineNum"> 589 </span><span class="lineCov"> 2 : log_error("Unexpected size change at file '%s' from %" PRIu64 " to %" PRIu64 ".\n", handle->path, task->file->size, handle->st.st_size);</span>
|
||||
<span class="lineNum"> 590 </span><span class="lineCov"> 4 : } else if (handle->st.st_mtime != task->file->mtime_sec</span>
|
||||
|
|
@ -663,8 +663,8 @@
|
|||
<span class="lineNum"> 601 </span><span class="lineCov"> 6 : return;</span>
|
||||
<span class="lineNum"> 602 </span> : }
|
||||
<span class="lineNum"> 603 </span> :
|
||||
<span class="lineNum"> 604 </span><span class="lineCov"> 596338 : task->read_size = handle_read(handle, task->file_pos, buffer, state->block_size, log_error, 0);</span>
|
||||
<span class="lineNum"> 605 </span><span class="lineCov"> 596044 : if (task->read_size == -1) {</span>
|
||||
<span class="lineNum"> 604 </span><span class="lineCov"> 595769 : task->read_size = handle_read(handle, task->file_pos, buffer, state->block_size, log_error, 0);</span>
|
||||
<span class="lineNum"> 605 </span><span class="lineCov"> 595561 : if (task->read_size == -1) {</span>
|
||||
<span class="lineNum"> 606 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 607 </span> : if (errno == EIO) {
|
||||
<span class="lineNum"> 608 </span> : log_tag("error:%u:%s:%s: Read EIO error at position %u. %s\n", blockcur, disk->name, esc_tag(task->file->sub, esc_buffer), task->file_pos, strerror(errno));
|
||||
|
|
@ -683,24 +683,24 @@
|
|||
<span class="lineNum"> 621 </span> : }
|
||||
<span class="lineNum"> 622 </span> :
|
||||
<span class="lineNum"> 623 </span> : /* store the path of the opened file */
|
||||
<span class="lineNum"> 624 </span><span class="lineCov"> 596044 : pathcpy(task->path, sizeof(task->path), handle->path);</span>
|
||||
<span class="lineNum"> 624 </span><span class="lineCov"> 595561 : pathcpy(task->path, sizeof(task->path), handle->path);</span>
|
||||
<span class="lineNum"> 625 </span> :
|
||||
<span class="lineNum"> 626 </span><span class="lineCov"> 596345 : task->state = TASK_STATE_DONE;</span>
|
||||
<span class="lineNum"> 626 </span><span class="lineCov"> 595834 : task->state = TASK_STATE_DONE;</span>
|
||||
<a name="627"><span class="lineNum"> 627 </span> : }</a>
|
||||
<span class="lineNum"> 628 </span> :
|
||||
<span class="lineNum"> 629 </span><span class="lineCov"> 544684 : static void sync_parity_writer(struct snapraid_worker* worker, struct snapraid_task* task)</span>
|
||||
<span class="lineNum"> 629 </span><span class="lineCov"> 544283 : static void sync_parity_writer(struct snapraid_worker* worker, struct snapraid_task* task)</span>
|
||||
<span class="lineNum"> 630 </span> : {
|
||||
<span class="lineNum"> 631 </span><span class="lineCov"> 544684 : struct snapraid_io* io = worker->io;</span>
|
||||
<span class="lineNum"> 632 </span><span class="lineCov"> 544684 : struct snapraid_state* state = io->state;</span>
|
||||
<span class="lineNum"> 633 </span><span class="lineCov"> 544684 : struct snapraid_parity_handle* parity_handle = worker->parity_handle;</span>
|
||||
<span class="lineNum"> 634 </span><span class="lineCov"> 544684 : unsigned level = parity_handle->level;</span>
|
||||
<span class="lineNum"> 635 </span><span class="lineCov"> 544684 : block_off_t blockcur = task->position;</span>
|
||||
<span class="lineNum"> 636 </span><span class="lineCov"> 544684 : unsigned char* buffer = task->buffer;</span>
|
||||
<span class="lineNum"> 631 </span><span class="lineCov"> 544283 : struct snapraid_io* io = worker->io;</span>
|
||||
<span class="lineNum"> 632 </span><span class="lineCov"> 544283 : struct snapraid_state* state = io->state;</span>
|
||||
<span class="lineNum"> 633 </span><span class="lineCov"> 544283 : struct snapraid_parity_handle* parity_handle = worker->parity_handle;</span>
|
||||
<span class="lineNum"> 634 </span><span class="lineCov"> 544283 : unsigned level = parity_handle->level;</span>
|
||||
<span class="lineNum"> 635 </span><span class="lineCov"> 544283 : block_off_t blockcur = task->position;</span>
|
||||
<span class="lineNum"> 636 </span><span class="lineCov"> 544283 : unsigned char* buffer = task->buffer;</span>
|
||||
<span class="lineNum"> 637 </span> : int ret;
|
||||
<span class="lineNum"> 638 </span> :
|
||||
<span class="lineNum"> 639 </span> : /* write parity */
|
||||
<span class="lineNum"> 640 </span><span class="lineCov"> 544684 : ret = parity_write(parity_handle, blockcur, buffer, state->block_size);</span>
|
||||
<span class="lineNum"> 641 </span><span class="lineCov"> 544678 : if (ret == -1) {</span>
|
||||
<span class="lineNum"> 640 </span><span class="lineCov"> 544283 : ret = parity_write(parity_handle, blockcur, buffer, state->block_size);</span>
|
||||
<span class="lineNum"> 641 </span><span class="lineCov"> 544291 : if (ret == -1) {</span>
|
||||
<span class="lineNum"> 642 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 643 </span> : if (errno == EIO) {
|
||||
<span class="lineNum"> 644 </span> : log_tag("parity_error:%u:%s: Write EIO error. %s\n", blockcur, lev_config_name(level), strerror(errno));
|
||||
|
|
@ -718,7 +718,7 @@
|
|||
<span class="lineNum"> 656 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 657 </span> : }
|
||||
<span class="lineNum"> 658 </span> :
|
||||
<span class="lineNum"> 659 </span><span class="lineCov"> 544678 : task->state = TASK_STATE_DONE;</span>
|
||||
<span class="lineNum"> 659 </span><span class="lineCov"> 544291 : task->state = TASK_STATE_DONE;</span>
|
||||
<a name="660"><span class="lineNum"> 660 </span> : }</a>
|
||||
<span class="lineNum"> 661 </span> :
|
||||
<span class="lineNum"> 662 </span><span class="lineCov"> 83 : static int state_sync_process(struct snapraid_state* state, struct snapraid_parity_handle* parity_handle, block_off_t blockstart, block_off_t blockmax)</span>
|
||||
|
|
@ -799,8 +799,8 @@
|
|||
<span class="lineNum"> 737 </span><span class="lineCov"> 83 : plan.force_full = state->opt.force_full;</span>
|
||||
<span class="lineNum"> 738 </span><span class="lineCov"> 410168 : for (blockcur = blockstart; blockcur < blockmax; ++blockcur) {</span>
|
||||
<span class="lineNum"> 739 </span><span class="lineCov"> 410085 : if (!block_is_enabled(&plan, blockcur))</span>
|
||||
<span class="lineNum"> 740 </span><span class="lineCov"> 295284 : continue;</span>
|
||||
<span class="lineNum"> 741 </span><span class="lineCov"> 114801 : ++countmax;</span>
|
||||
<span class="lineNum"> 740 </span><span class="lineCov"> 295383 : continue;</span>
|
||||
<span class="lineNum"> 741 </span><span class="lineCov"> 114702 : ++countmax;</span>
|
||||
<span class="lineNum"> 742 </span> : }
|
||||
<span class="lineNum"> 743 </span> :
|
||||
<span class="lineNum"> 744 </span> : /* compute the autosave size for all disk, even if not read */
|
||||
|
|
@ -836,31 +836,31 @@
|
|||
<span class="lineNum"> 774 </span> : int writer_error[IO_WRITER_ERROR_MAX];
|
||||
<span class="lineNum"> 775 </span> :
|
||||
<span class="lineNum"> 776 </span> : /* go to the next block */
|
||||
<span class="lineNum"> 777 </span><span class="lineCov"> 114884 : blockcur = io_read_next(&io, &buffer);</span>
|
||||
<span class="lineNum"> 778 </span><span class="lineCov"> 114884 : if (blockcur >= blockmax)</span>
|
||||
<span class="lineNum"> 777 </span><span class="lineCov"> 114785 : blockcur = io_read_next(&io, &buffer);</span>
|
||||
<span class="lineNum"> 778 </span><span class="lineCov"> 114785 : if (blockcur >= blockmax)</span>
|
||||
<span class="lineNum"> 779 </span><span class="lineCov"> 166 : break;</span>
|
||||
<span class="lineNum"> 780 </span> :
|
||||
<span class="lineNum"> 781 </span> : /* until now is scheduling */
|
||||
<span class="lineNum"> 782 </span><span class="lineCov"> 114801 : state_usage_sched(state);</span>
|
||||
<span class="lineNum"> 782 </span><span class="lineCov"> 114702 : state_usage_sched(state);</span>
|
||||
<span class="lineNum"> 783 </span> :
|
||||
<span class="lineNum"> 784 </span> : /* one more block processed for autosave */
|
||||
<span class="lineNum"> 785 </span><span class="lineCov"> 114801 : ++autosavedone;</span>
|
||||
<span class="lineNum"> 786 </span><span class="lineCov"> 114801 : --autosavemissing;</span>
|
||||
<span class="lineNum"> 785 </span><span class="lineCov"> 114702 : ++autosavedone;</span>
|
||||
<span class="lineNum"> 786 </span><span class="lineCov"> 114702 : --autosavemissing;</span>
|
||||
<span class="lineNum"> 787 </span> :
|
||||
<span class="lineNum"> 788 </span> : /* by default process the block, and skip it if something goes wrong */
|
||||
<span class="lineNum"> 789 </span><span class="lineCov"> 114801 : error_on_this_block = 0;</span>
|
||||
<span class="lineNum"> 790 </span><span class="lineCov"> 114801 : silent_error_on_this_block = 0;</span>
|
||||
<span class="lineNum"> 791 </span><span class="lineCov"> 114801 : io_error_on_this_block = 0;</span>
|
||||
<span class="lineNum"> 792 </span><span class="lineCov"> 114801 : fixed_error_on_this_block = 0;</span>
|
||||
<span class="lineNum"> 789 </span><span class="lineCov"> 114702 : error_on_this_block = 0;</span>
|
||||
<span class="lineNum"> 790 </span><span class="lineCov"> 114702 : silent_error_on_this_block = 0;</span>
|
||||
<span class="lineNum"> 791 </span><span class="lineCov"> 114702 : io_error_on_this_block = 0;</span>
|
||||
<span class="lineNum"> 792 </span><span class="lineCov"> 114702 : fixed_error_on_this_block = 0;</span>
|
||||
<span class="lineNum"> 793 </span> :
|
||||
<span class="lineNum"> 794 </span> : /* keep track of the number of failed blocks */
|
||||
<span class="lineNum"> 795 </span><span class="lineCov"> 114801 : failed_count = 0;</span>
|
||||
<span class="lineNum"> 795 </span><span class="lineCov"> 114702 : failed_count = 0;</span>
|
||||
<span class="lineNum"> 796 </span> :
|
||||
<span class="lineNum"> 797 </span> : /* get block specific info */
|
||||
<span class="lineNum"> 798 </span><span class="lineCov"> 114801 : info = info_get(&state->infoarr, blockcur);</span>
|
||||
<span class="lineNum"> 798 </span><span class="lineCov"> 114702 : info = info_get(&state->infoarr, blockcur);</span>
|
||||
<span class="lineNum"> 799 </span> :
|
||||
<span class="lineNum"> 800 </span> : /* if we have to use the old hash */
|
||||
<span class="lineNum"> 801 </span><span class="lineCov"> 114801 : rehash = info_get_rehash(info);</span>
|
||||
<span class="lineNum"> 801 </span><span class="lineCov"> 114702 : rehash = info_get_rehash(info);</span>
|
||||
<span class="lineNum"> 802 </span> :
|
||||
<span class="lineNum"> 803 </span> : /* if the parity requires to be updated */
|
||||
<span class="lineNum"> 804 </span> : /* It could happens that all the blocks are EMPTY/BLK and CHG but with the hash */
|
||||
|
|
@ -869,18 +869,18 @@
|
|||
<span class="lineNum"> 807 </span> : /* Note that CHG/DELETED blocks already present in the content file loaded */
|
||||
<span class="lineNum"> 808 </span> : /* have the hash cleared (::clear_past_hash flag), and then they won't never match the hash. */
|
||||
<span class="lineNum"> 809 </span> : /* We are treating only CHG blocks created at runtime. */
|
||||
<span class="lineNum"> 810 </span><span class="lineCov"> 114801 : parity_needs_to_be_updated = state->opt.force_full || state->opt.force_parity_update;</span>
|
||||
<span class="lineNum"> 810 </span><span class="lineCov"> 114702 : parity_needs_to_be_updated = state->opt.force_full || state->opt.force_parity_update;</span>
|
||||
<span class="lineNum"> 811 </span> :
|
||||
<span class="lineNum"> 812 </span> : /* if the parity is going to be updated */
|
||||
<span class="lineNum"> 813 </span><span class="lineCov"> 114801 : parity_going_to_be_updated = 0;</span>
|
||||
<span class="lineNum"> 813 </span><span class="lineCov"> 114702 : parity_going_to_be_updated = 0;</span>
|
||||
<span class="lineNum"> 814 </span> :
|
||||
<span class="lineNum"> 815 </span> : /* if the block is marked as bad, we force the parity update */
|
||||
<span class="lineNum"> 816 </span> : /* because the bad block may be the result of a wrong parity */
|
||||
<span class="lineNum"> 817 </span><span class="lineCov"> 114801 : if (info_get_bad(info))</span>
|
||||
<span class="lineNum"> 817 </span><span class="lineCov"> 114702 : if (info_get_bad(info))</span>
|
||||
<span class="lineNum"> 818 </span><span class="lineNoCov"> 0 : parity_needs_to_be_updated = 1;</span>
|
||||
<span class="lineNum"> 819 </span> :
|
||||
<span class="lineNum"> 820 </span> : /* for each disk, process the block */
|
||||
<span class="lineNum"> 821 </span><span class="lineCov"> 803607 : for (j = 0; j < diskmax; ++j) {</span>
|
||||
<span class="lineNum"> 821 </span><span class="lineCov"> 802914 : for (j = 0; j < diskmax; ++j) {</span>
|
||||
<span class="lineNum"> 822 </span> : struct snapraid_task* task;
|
||||
<span class="lineNum"> 823 </span> : int read_size;
|
||||
<span class="lineNum"> 824 </span> : unsigned char hash[HASH_MAX];
|
||||
|
|
@ -892,45 +892,45 @@
|
|||
<span class="lineNum"> 830 </span> : unsigned diskcur;
|
||||
<span class="lineNum"> 831 </span> :
|
||||
<span class="lineNum"> 832 </span> : /* until now is misc */
|
||||
<span class="lineNum"> 833 </span><span class="lineCov"> 688806 : state_usage_misc(state);</span>
|
||||
<span class="lineNum"> 833 </span><span class="lineCov"> 688212 : state_usage_misc(state);</span>
|
||||
<span class="lineNum"> 834 </span> :
|
||||
<span class="lineNum"> 835 </span><span class="lineCov"> 688806 : task = io_data_read(&io, &diskcur, waiting_map, &waiting_mac);</span>
|
||||
<span class="lineNum"> 835 </span><span class="lineCov"> 688212 : task = io_data_read(&io, &diskcur, waiting_map, &waiting_mac);</span>
|
||||
<span class="lineNum"> 836 </span> :
|
||||
<span class="lineNum"> 837 </span> : /* until now is disk */
|
||||
<span class="lineNum"> 838 </span><span class="lineCov"> 688806 : state_usage_disk(state, handle, waiting_map, waiting_mac);</span>
|
||||
<span class="lineNum"> 838 </span><span class="lineCov"> 688212 : state_usage_disk(state, handle, waiting_map, waiting_mac);</span>
|
||||
<span class="lineNum"> 839 </span> :
|
||||
<span class="lineNum"> 840 </span> : /* get the results */
|
||||
<span class="lineNum"> 841 </span><span class="lineCov"> 688806 : disk = task->disk;</span>
|
||||
<span class="lineNum"> 842 </span><span class="lineCov"> 688806 : block = task->block;</span>
|
||||
<span class="lineNum"> 843 </span><span class="lineCov"> 688806 : file = task->file;</span>
|
||||
<span class="lineNum"> 844 </span><span class="lineCov"> 688806 : file_pos = task->file_pos;</span>
|
||||
<span class="lineNum"> 845 </span><span class="lineCov"> 688806 : read_size = task->read_size;</span>
|
||||
<span class="lineNum"> 841 </span><span class="lineCov"> 688212 : disk = task->disk;</span>
|
||||
<span class="lineNum"> 842 </span><span class="lineCov"> 688212 : block = task->block;</span>
|
||||
<span class="lineNum"> 843 </span><span class="lineCov"> 688212 : file = task->file;</span>
|
||||
<span class="lineNum"> 844 </span><span class="lineCov"> 688212 : file_pos = task->file_pos;</span>
|
||||
<span class="lineNum"> 845 </span><span class="lineCov"> 688212 : read_size = task->read_size;</span>
|
||||
<span class="lineNum"> 846 </span> :
|
||||
<span class="lineNum"> 847 </span> : /* by default no rehash in case of "continue" */
|
||||
<span class="lineNum"> 848 </span><span class="lineCov"> 688806 : rehandle[diskcur].block = 0;</span>
|
||||
<span class="lineNum"> 848 </span><span class="lineCov"> 688212 : rehandle[diskcur].block = 0;</span>
|
||||
<span class="lineNum"> 849 </span> :
|
||||
<span class="lineNum"> 850 </span> : /* if the disk position is not used */
|
||||
<span class="lineNum"> 851 </span><span class="lineCov"> 688806 : if (!disk)</span>
|
||||
<span class="lineNum"> 852 </span><span class="lineCov"> 93087 : continue;</span>
|
||||
<span class="lineNum"> 851 </span><span class="lineCov"> 688212 : if (!disk)</span>
|
||||
<span class="lineNum"> 852 </span><span class="lineCov"> 93057 : continue;</span>
|
||||
<span class="lineNum"> 853 </span> :
|
||||
<span class="lineNum"> 854 </span> : /* get the state of the block */
|
||||
<span class="lineNum"> 855 </span><span class="lineCov"> 688806 : block_state = block_state_get(block);</span>
|
||||
<span class="lineNum"> 855 </span><span class="lineCov"> 688212 : block_state = block_state_get(block);</span>
|
||||
<span class="lineNum"> 856 </span> :
|
||||
<span class="lineNum"> 857 </span> : /* if the block has invalid parity, */
|
||||
<span class="lineNum"> 858 </span> : /* we have to take care of it in case of recover */
|
||||
<span class="lineNum"> 859 </span><span class="lineCov"> 688806 : if (block_has_invalid_parity(block)) {</span>
|
||||
<span class="lineNum"> 859 </span><span class="lineCov"> 688212 : if (block_has_invalid_parity(block)) {</span>
|
||||
<span class="lineNum"> 860 </span> : /* store it in the failed set, because */
|
||||
<span class="lineNum"> 861 </span> : /* the parity may be still computed with the previous content */
|
||||
<span class="lineNum"> 862 </span><span class="lineCov"> 182902 : failed[failed_count].index = diskcur;</span>
|
||||
<span class="lineNum"> 863 </span><span class="lineCov"> 182902 : failed[failed_count].size = state->block_size;</span>
|
||||
<span class="lineNum"> 864 </span><span class="lineCov"> 182902 : failed[failed_count].block = block;</span>
|
||||
<span class="lineNum"> 865 </span><span class="lineCov"> 182902 : ++failed_count;</span>
|
||||
<span class="lineNum"> 862 </span><span class="lineCov"> 182772 : failed[failed_count].index = diskcur;</span>
|
||||
<span class="lineNum"> 863 </span><span class="lineCov"> 182772 : failed[failed_count].size = state->block_size;</span>
|
||||
<span class="lineNum"> 864 </span><span class="lineCov"> 182772 : failed[failed_count].block = block;</span>
|
||||
<span class="lineNum"> 865 </span><span class="lineCov"> 182772 : ++failed_count;</span>
|
||||
<span class="lineNum"> 866 </span> :
|
||||
<span class="lineNum"> 867 </span> : /* if the block has invalid parity, we have to update the parity */
|
||||
<span class="lineNum"> 868 </span> : /* to include this block change */
|
||||
<span class="lineNum"> 869 </span> : /* This also apply to CHG blocks, but we are going to handle */
|
||||
<span class="lineNum"> 870 </span> : /* later this case to do the updates only if really needed */
|
||||
<span class="lineNum"> 871 </span><span class="lineCov"> 182902 : if (block_state != BLOCK_STATE_CHG)</span>
|
||||
<span class="lineNum"> 871 </span><span class="lineCov"> 182772 : if (block_state != BLOCK_STATE_CHG)</span>
|
||||
<span class="lineNum"> 872 </span><span class="lineCov"> 88225 : parity_needs_to_be_updated = 1;</span>
|
||||
<span class="lineNum"> 873 </span> :
|
||||
<span class="lineNum"> 874 </span> : /* note that DELETE blocks are skipped in the next check */
|
||||
|
|
@ -941,24 +941,24 @@
|
|||
<span class="lineNum"> 879 </span> : }
|
||||
<span class="lineNum"> 880 </span> :
|
||||
<span class="lineNum"> 881 </span> : /* if the block is not used */
|
||||
<span class="lineNum"> 882 </span><span class="lineCov"> 688806 : if (!block_has_file(block))</span>
|
||||
<span class="lineNum"> 883 </span><span class="lineCov"> 92216 : continue;</span>
|
||||
<span class="lineNum"> 882 </span><span class="lineCov"> 688212 : if (!block_has_file(block))</span>
|
||||
<span class="lineNum"> 883 </span><span class="lineCov"> 92186 : continue;</span>
|
||||
<span class="lineNum"> 884 </span> :
|
||||
<span class="lineNum"> 885 </span> : /* handle error conditions */
|
||||
<span class="lineNum"> 886 </span><span class="lineCov"> 596590 : if (task->state == TASK_STATE_IOERROR) {</span>
|
||||
<span class="lineNum"> 886 </span><span class="lineCov"> 596026 : if (task->state == TASK_STATE_IOERROR) {</span>
|
||||
<span class="lineNum"> 887 </span><span class="lineNoCov"> 0 : ++io_error;</span>
|
||||
<span class="lineNum"> 888 </span><span class="lineNoCov"> 0 : goto bail;</span>
|
||||
<span class="lineNum"> 889 </span> : }
|
||||
<span class="lineNum"> 890 </span><span class="lineCov"> 596590 : if (task->state == TASK_STATE_ERROR) {</span>
|
||||
<span class="lineNum"> 890 </span><span class="lineCov"> 596026 : if (task->state == TASK_STATE_ERROR) {</span>
|
||||
<span class="lineNum"> 891 </span><span class="lineNoCov"> 0 : ++error;</span>
|
||||
<span class="lineNum"> 892 </span><span class="lineNoCov"> 0 : goto bail;</span>
|
||||
<span class="lineNum"> 893 </span> : }
|
||||
<span class="lineNum"> 894 </span><span class="lineCov"> 596590 : if (task->state == TASK_STATE_ERROR_CONTINUE) {</span>
|
||||
<span class="lineNum"> 894 </span><span class="lineCov"> 596026 : if (task->state == TASK_STATE_ERROR_CONTINUE) {</span>
|
||||
<span class="lineNum"> 895 </span><span class="lineCov"> 18 : ++error;</span>
|
||||
<span class="lineNum"> 896 </span><span class="lineCov"> 18 : error_on_this_block = 1;</span>
|
||||
<span class="lineNum"> 897 </span><span class="lineCov"> 18 : continue;</span>
|
||||
<span class="lineNum"> 898 </span> : }
|
||||
<span class="lineNum"> 899 </span><span class="lineCov"> 596572 : if (task->state == TASK_STATE_IOERROR_CONTINUE) {</span>
|
||||
<span class="lineNum"> 899 </span><span class="lineCov"> 596008 : if (task->state == TASK_STATE_IOERROR_CONTINUE) {</span>
|
||||
<span class="lineNum"> 900 </span><span class="lineNoCov"> 0 : ++io_error;</span>
|
||||
<span class="lineNum"> 901 </span><span class="lineNoCov"> 0 : if (io_error >= state->opt.io_error_limit) {</span>
|
||||
<span class="lineNum"> 902 </span><span class="lineNoCov"> 0 : log_fatal("DANGER! Unexpected input/output read error in a data disk, it isn't possible to sync.\n");</span>
|
||||
|
|
@ -971,32 +971,32 @@
|
|||
<span class="lineNum"> 909 </span><span class="lineNoCov"> 0 : io_error_on_this_block = 1;</span>
|
||||
<span class="lineNum"> 910 </span><span class="lineNoCov"> 0 : continue;</span>
|
||||
<span class="lineNum"> 911 </span> : }
|
||||
<span class="lineNum"> 912 </span><span class="lineCov"> 596572 : if (task->state != TASK_STATE_DONE) {</span>
|
||||
<span class="lineNum"> 912 </span><span class="lineCov"> 596008 : if (task->state != TASK_STATE_DONE) {</span>
|
||||
<span class="lineNum"> 913 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 914 </span> : log_fatal("Internal inconsistency in task state\n");
|
||||
<span class="lineNum"> 915 </span> : os_abort();
|
||||
<span class="lineNum"> 916 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 917 </span> : }
|
||||
<span class="lineNum"> 918 </span> :
|
||||
<span class="lineNum"> 919 </span><span class="lineCov"> 596572 : countsize += read_size;</span>
|
||||
<span class="lineNum"> 919 </span><span class="lineCov"> 596008 : countsize += read_size;</span>
|
||||
<span class="lineNum"> 920 </span> :
|
||||
<span class="lineNum"> 921 </span> : /* now compute the hash */
|
||||
<span class="lineNum"> 922 </span><span class="lineCov"> 596572 : if (rehash) {</span>
|
||||
<span class="lineNum"> 922 </span><span class="lineCov"> 596008 : if (rehash) {</span>
|
||||
<span class="lineNum"> 923 </span><span class="lineCov"> 27243 : memhash(state->prevhash, state->prevhashseed, hash, buffer[diskcur], read_size);</span>
|
||||
<span class="lineNum"> 924 </span> :
|
||||
<span class="lineNum"> 925 </span> : /* compute the new hash, and store it */
|
||||
<span class="lineNum"> 926 </span><span class="lineCov"> 27243 : rehandle[diskcur].block = block;</span>
|
||||
<span class="lineNum"> 927 </span><span class="lineCov"> 27243 : memhash(state->hash, state->hashseed, rehandle[diskcur].hash, buffer[diskcur], read_size);</span>
|
||||
<span class="lineNum"> 928 </span> : } else {
|
||||
<span class="lineNum"> 929 </span><span class="lineCov"> 569329 : memhash(state->hash, state->hashseed, hash, buffer[diskcur], read_size);</span>
|
||||
<span class="lineNum"> 929 </span><span class="lineCov"> 568765 : memhash(state->hash, state->hashseed, hash, buffer[diskcur], read_size);</span>
|
||||
<span class="lineNum"> 930 </span> : }
|
||||
<span class="lineNum"> 931 </span> :
|
||||
<span class="lineNum"> 932 </span> : /* until now is hash */
|
||||
<span class="lineNum"> 933 </span><span class="lineCov"> 596572 : state_usage_hash(state);</span>
|
||||
<span class="lineNum"> 933 </span><span class="lineCov"> 596008 : state_usage_hash(state);</span>
|
||||
<span class="lineNum"> 934 </span> :
|
||||
<span class="lineNum"> 935 </span><span class="lineCov"> 596572 : if (block_has_updated_hash(block)) {</span>
|
||||
<span class="lineNum"> 935 </span><span class="lineCov"> 596008 : if (block_has_updated_hash(block)) {</span>
|
||||
<span class="lineNum"> 936 </span> : /* compare the hash */
|
||||
<span class="lineNum"> 937 </span><span class="lineCov"> 501913 : if (memcmp(hash, block->hash, BLOCK_HASH_SIZE) != 0) {</span>
|
||||
<span class="lineNum"> 937 </span><span class="lineCov"> 501479 : if (memcmp(hash, block->hash, BLOCK_HASH_SIZE) != 0) {</span>
|
||||
<span class="lineNum"> 938 </span> : /* if the file has invalid parity, it's a REP changed during the sync */
|
||||
<span class="lineNum"> 939 </span><span class="lineCov"> 853 : if (block_has_invalid_parity(block)) {</span>
|
||||
<span class="lineNum"> 940 </span><span class="lineCov"> 1 : log_tag("error:%u:%s:%s: Unexpected data change\n", blockcur, disk->name, esc_tag(file->sub, esc_buffer));</span>
|
||||
|
|
@ -1039,28 +1039,28 @@
|
|||
<span class="lineNum"> 977 </span> : }
|
||||
<span class="lineNum"> 978 </span> : } else {
|
||||
<span class="lineNum"> 979 </span> : /* if until now the parity doesn't need to be updated */
|
||||
<span class="lineNum"> 980 </span><span class="lineCov"> 94659 : if (!parity_needs_to_be_updated) {</span>
|
||||
<span class="lineNum"> 980 </span><span class="lineCov"> 94529 : if (!parity_needs_to_be_updated) {</span>
|
||||
<span class="lineNum"> 981 </span> : /* for sure it's a CHG block, because EMPTY are processed before with "continue" */
|
||||
<span class="lineNum"> 982 </span> : /* and BLK and REP have "block_has_updated_hash()" as 1, and all the others */
|
||||
<span class="lineNum"> 983 </span> : /* have "parity_needs_to_be_updated" already at 1 */
|
||||
<span class="lineNum"> 984 </span><span class="lineCov"> 35282 : assert(block_state_get(block) == BLOCK_STATE_CHG);</span>
|
||||
<span class="lineNum"> 984 </span><span class="lineCov"> 35175 : assert(block_state_get(block) == BLOCK_STATE_CHG);</span>
|
||||
<span class="lineNum"> 985 </span> :
|
||||
<span class="lineNum"> 986 </span> : /* if the hash represents the data unequivocally */
|
||||
<span class="lineNum"> 987 </span><span class="lineCov"> 35282 : if (hash_is_unique(block->hash)) {</span>
|
||||
<span class="lineNum"> 987 </span><span class="lineCov"> 35175 : if (hash_is_unique(block->hash)) {</span>
|
||||
<span class="lineNum"> 988 </span> : /* check if the hash is changed */
|
||||
<span class="lineNum"> 989 </span><span class="lineCov"> 8608 : if (memcmp(hash, block->hash, BLOCK_HASH_SIZE) != 0) {</span>
|
||||
<span class="lineNum"> 989 </span><span class="lineCov"> 8502 : if (memcmp(hash, block->hash, BLOCK_HASH_SIZE) != 0) {</span>
|
||||
<span class="lineNum"> 990 </span> : /* the block is different, and we must update parity */
|
||||
<span class="lineNum"> 991 </span><span class="lineCov"> 6067 : parity_needs_to_be_updated = 1;</span>
|
||||
<span class="lineNum"> 991 </span><span class="lineCov"> 6003 : parity_needs_to_be_updated = 1;</span>
|
||||
<span class="lineNum"> 992 </span> : }
|
||||
<span class="lineNum"> 993 </span> : } else {
|
||||
<span class="lineNum"> 994 </span> : /* if the hash is already invalid, we update parity */
|
||||
<span class="lineNum"> 995 </span><span class="lineCov"> 26674 : parity_needs_to_be_updated = 1;</span>
|
||||
<span class="lineNum"> 995 </span><span class="lineCov"> 26673 : parity_needs_to_be_updated = 1;</span>
|
||||
<span class="lineNum"> 996 </span> : }
|
||||
<span class="lineNum"> 997 </span> : }
|
||||
<span class="lineNum"> 998 </span> :
|
||||
<span class="lineNum"> 999 </span> : /* copy the hash in the block, but doesn't mark the block as hashed */
|
||||
<span class="lineNum"> 1000 </span> : /* this allow in case of skipped block to do not save the failed computation */
|
||||
<span class="lineNum"> 1001 </span><span class="lineCov"> 94659 : memcpy(block->hash, hash, BLOCK_HASH_SIZE);</span>
|
||||
<span class="lineNum"> 1001 </span><span class="lineCov"> 94529 : memcpy(block->hash, hash, BLOCK_HASH_SIZE);</span>
|
||||
<span class="lineNum"> 1002 </span> :
|
||||
<span class="lineNum"> 1003 </span> : /* note that in case of rehash, this is the wrong hash, */
|
||||
<span class="lineNum"> 1004 </span> : /* but it will be overwritten later */
|
||||
|
|
@ -1070,7 +1070,7 @@
|
|||
<span class="lineNum"> 1008 </span> : /* if we have only silent errors we can try to fix them on-the-fly */
|
||||
<span class="lineNum"> 1009 </span> : /* note the the fix is not written to disk, but used only to */
|
||||
<span class="lineNum"> 1010 </span> : /* compute the new parity */
|
||||
<span class="lineNum"> 1011 </span><span class="lineCov"> 114801 : if (!error_on_this_block && !io_error_on_this_block && silent_error_on_this_block) {</span>
|
||||
<span class="lineNum"> 1011 </span><span class="lineCov"> 114702 : if (!error_on_this_block && !io_error_on_this_block && silent_error_on_this_block) {</span>
|
||||
<span class="lineNum"> 1012 </span> : unsigned failed_mac;
|
||||
<span class="lineNum"> 1013 </span><span class="lineCov"> 852 : int something_to_recover = 0;</span>
|
||||
<span class="lineNum"> 1014 </span> :
|
||||
|
|
@ -1190,7 +1190,7 @@
|
|||
<span class="lineNum"> 1128 </span> :
|
||||
<span class="lineNum"> 1129 </span> : /* pad with 0 if needed */
|
||||
<span class="lineNum"> 1130 </span><span class="lineCov"> 852 : if (size < state->block_size)</span>
|
||||
<span class="lineNum"> 1131 </span><span class="lineCov"> 342 : memset(block_buffer + size, 0, state->block_size - size);</span>
|
||||
<span class="lineNum"> 1131 </span><span class="lineCov"> 349 : memset(block_buffer + size, 0, state->block_size - size);</span>
|
||||
<span class="lineNum"> 1132 </span> : } else {
|
||||
<span class="lineNum"> 1133 </span> : /* otherwise restore the content */
|
||||
<span class="lineNum"> 1134 </span> : /* because we are not interested in the old state */
|
||||
|
|
@ -1207,44 +1207,44 @@
|
|||
<span class="lineNum"> 1145 </span> : }
|
||||
<span class="lineNum"> 1146 </span> :
|
||||
<span class="lineNum"> 1147 </span> : /* if we have read all the data required and it's correct, proceed with the parity */
|
||||
<span class="lineNum"> 1148 </span><span class="lineCov"> 114801 : if (!error_on_this_block && !io_error_on_this_block</span>
|
||||
<span class="lineNum"> 1149 </span><span class="lineCov"> 114782 : && (!silent_error_on_this_block || fixed_error_on_this_block)</span>
|
||||
<span class="lineNum"> 1148 </span><span class="lineCov"> 114702 : if (!error_on_this_block && !io_error_on_this_block</span>
|
||||
<span class="lineNum"> 1149 </span><span class="lineCov"> 114683 : && (!silent_error_on_this_block || fixed_error_on_this_block)</span>
|
||||
<span class="lineNum"> 1150 </span> : ) {
|
||||
<span class="lineNum"> 1151 </span> : /* update the parity only if really needed */
|
||||
<span class="lineNum"> 1152 </span><span class="lineCov"> 114782 : if (parity_needs_to_be_updated) {</span>
|
||||
<span class="lineNum"> 1152 </span><span class="lineCov"> 114683 : if (parity_needs_to_be_updated) {</span>
|
||||
<span class="lineNum"> 1153 </span> : /* compute the parity */
|
||||
<span class="lineNum"> 1154 </span><span class="lineCov"> 112466 : raid_gen(diskmax, state->level, state->block_size, buffer);</span>
|
||||
<span class="lineNum"> 1154 </span><span class="lineCov"> 112401 : raid_gen(diskmax, state->level, state->block_size, buffer);</span>
|
||||
<span class="lineNum"> 1155 </span> :
|
||||
<span class="lineNum"> 1156 </span> : /* until now is raid */
|
||||
<span class="lineNum"> 1157 </span><span class="lineCov"> 112466 : state_usage_raid(state);</span>
|
||||
<span class="lineNum"> 1157 </span><span class="lineCov"> 112401 : state_usage_raid(state);</span>
|
||||
<span class="lineNum"> 1158 </span> :
|
||||
<span class="lineNum"> 1159 </span> : /* mark that the parity is going to be written */
|
||||
<span class="lineNum"> 1160 </span><span class="lineCov"> 112466 : parity_going_to_be_updated = 1;</span>
|
||||
<span class="lineNum"> 1160 </span><span class="lineCov"> 112401 : parity_going_to_be_updated = 1;</span>
|
||||
<span class="lineNum"> 1161 </span> : }
|
||||
<span class="lineNum"> 1162 </span> :
|
||||
<span class="lineNum"> 1163 </span> : /* for each disk, mark the blocks as processed */
|
||||
<span class="lineNum"> 1164 </span><span class="lineCov"> 803474 : for (j = 0; j < diskmax; ++j) {</span>
|
||||
<span class="lineNum"> 1164 </span><span class="lineCov"> 802781 : for (j = 0; j < diskmax; ++j) {</span>
|
||||
<span class="lineNum"> 1165 </span> : struct snapraid_block* block;
|
||||
<span class="lineNum"> 1166 </span> :
|
||||
<span class="lineNum"> 1167 </span><span class="lineCov"> 688692 : if (!handle[j].disk)</span>
|
||||
<span class="lineNum"> 1167 </span><span class="lineCov"> 688098 : if (!handle[j].disk)</span>
|
||||
<span class="lineNum"> 1168 </span><span class="lineNoCov"> 0 : continue;</span>
|
||||
<span class="lineNum"> 1169 </span> :
|
||||
<span class="lineNum"> 1170 </span><span class="lineCov"> 688692 : block = fs_par2block_find(handle[j].disk, blockcur);</span>
|
||||
<span class="lineNum"> 1170 </span><span class="lineCov"> 688098 : block = fs_par2block_find(handle[j].disk, blockcur);</span>
|
||||
<span class="lineNum"> 1171 </span> :
|
||||
<span class="lineNum"> 1172 </span><span class="lineCov"> 688692 : if (block == BLOCK_NULL) {</span>
|
||||
<span class="lineNum"> 1172 </span><span class="lineCov"> 688098 : if (block == BLOCK_NULL) {</span>
|
||||
<span class="lineNum"> 1173 </span> : /* nothing to do */
|
||||
<span class="lineNum"> 1174 </span><span class="lineCov"> 81261 : continue;</span>
|
||||
<span class="lineNum"> 1174 </span><span class="lineCov"> 81231 : continue;</span>
|
||||
<span class="lineNum"> 1175 </span> : }
|
||||
<span class="lineNum"> 1176 </span> :
|
||||
<span class="lineNum"> 1177 </span> : /* if it's a deleted block */
|
||||
<span class="lineNum"> 1178 </span><span class="lineCov"> 607431 : if (block_state_get(block) == BLOCK_STATE_DELETED) {</span>
|
||||
<span class="lineNum"> 1178 </span><span class="lineCov"> 606867 : if (block_state_get(block) == BLOCK_STATE_DELETED) {</span>
|
||||
<span class="lineNum"> 1179 </span> : /* the parity is now updated without this block, so it's now empty */
|
||||
<span class="lineNum"> 1180 </span><span class="lineCov"> 10953 : fs_deallocate(handle[j].disk, blockcur);</span>
|
||||
<span class="lineNum"> 1181 </span><span class="lineCov"> 10953 : continue;</span>
|
||||
<span class="lineNum"> 1182 </span> : }
|
||||
<span class="lineNum"> 1183 </span> :
|
||||
<span class="lineNum"> 1184 </span> : /* now all the blocks have the hash and the parity computed */
|
||||
<span class="lineNum"> 1185 </span><span class="lineCov"> 596478 : block_state_set(block, BLOCK_STATE_BLK);</span>
|
||||
<span class="lineNum"> 1185 </span><span class="lineCov"> 595914 : block_state_set(block, BLOCK_STATE_BLK);</span>
|
||||
<span class="lineNum"> 1186 </span> : }
|
||||
<span class="lineNum"> 1187 </span> :
|
||||
<span class="lineNum"> 1188 </span> : /* we update the info block only if we really have updated the parity */
|
||||
|
|
@ -1252,11 +1252,11 @@
|
|||
<span class="lineNum"> 1190 </span> : /* wrote the parity at this time */
|
||||
<span class="lineNum"> 1191 </span> : /* we also update the info block only if no silent error was found */
|
||||
<span class="lineNum"> 1192 </span> : /* because has no sense to refresh the time for data that we know bad */
|
||||
<span class="lineNum"> 1193 </span><span class="lineCov"> 114782 : if (parity_needs_to_be_updated</span>
|
||||
<span class="lineNum"> 1194 </span><span class="lineCov"> 112466 : && !silent_error_on_this_block</span>
|
||||
<span class="lineNum"> 1193 </span><span class="lineCov"> 114683 : if (parity_needs_to_be_updated</span>
|
||||
<span class="lineNum"> 1194 </span><span class="lineCov"> 112401 : && !silent_error_on_this_block</span>
|
||||
<span class="lineNum"> 1195 </span> : ) {
|
||||
<span class="lineNum"> 1196 </span> : /* if rehash is needed */
|
||||
<span class="lineNum"> 1197 </span><span class="lineCov"> 112125 : if (rehash) {</span>
|
||||
<span class="lineNum"> 1197 </span><span class="lineCov"> 112055 : if (rehash) {</span>
|
||||
<span class="lineNum"> 1198 </span> : /* store all the new hash already computed */
|
||||
<span class="lineNum"> 1199 </span><span class="lineCov"> 32249 : for (j = 0; j < diskmax; ++j) {</span>
|
||||
<span class="lineNum"> 1200 </span><span class="lineCov"> 27642 : if (rehandle[j].block)</span>
|
||||
|
|
@ -1266,14 +1266,14 @@
|
|||
<span class="lineNum"> 1204 </span> :
|
||||
<span class="lineNum"> 1205 </span> : /* update the time info of the block */
|
||||
<span class="lineNum"> 1206 </span> : /* we are also clearing any previous bad and rehash flag */
|
||||
<span class="lineNum"> 1207 </span><span class="lineCov"> 112125 : info_set(&state->infoarr, blockcur, info_make(now, 0, 0, 1));</span>
|
||||
<span class="lineNum"> 1207 </span><span class="lineCov"> 112055 : info_set(&state->infoarr, blockcur, info_make(now, 0, 0, 1));</span>
|
||||
<span class="lineNum"> 1208 </span> : }
|
||||
<span class="lineNum"> 1209 </span> : }
|
||||
<span class="lineNum"> 1210 </span> :
|
||||
<span class="lineNum"> 1211 </span> : /* if a silent (even if corrected) or input/output error was found */
|
||||
<span class="lineNum"> 1212 </span> : /* mark the block as bad to have check/fix to handle it */
|
||||
<span class="lineNum"> 1213 </span> : /* because our correction is in memory only and not yet written */
|
||||
<span class="lineNum"> 1214 </span><span class="lineCov"> 114801 : if (silent_error_on_this_block || io_error_on_this_block) {</span>
|
||||
<span class="lineNum"> 1214 </span><span class="lineCov"> 114702 : if (silent_error_on_this_block || io_error_on_this_block) {</span>
|
||||
<span class="lineNum"> 1215 </span> : /* set the error status keeping the other info */
|
||||
<span class="lineNum"> 1216 </span><span class="lineCov"> 852 : info_set(&state->infoarr, blockcur, info_set_bad(info));</span>
|
||||
<span class="lineNum"> 1217 </span> : }
|
||||
|
|
@ -1282,27 +1282,27 @@
|
|||
<span class="lineNum"> 1220 </span> : /* Note that the calls to io_parity_write() are mandatory */
|
||||
<span class="lineNum"> 1221 </span> : /* even if the parity doesn't need to be updated */
|
||||
<span class="lineNum"> 1222 </span> : /* This because we want to keep track of the time usage */
|
||||
<span class="lineNum"> 1223 </span><span class="lineCov"> 114801 : state_usage_misc(state);</span>
|
||||
<span class="lineNum"> 1223 </span><span class="lineCov"> 114702 : state_usage_misc(state);</span>
|
||||
<span class="lineNum"> 1224 </span> :
|
||||
<span class="lineNum"> 1225 </span> : /* write start */
|
||||
<span class="lineNum"> 1226 </span><span class="lineCov"> 114801 : io_write_preset(&io, blockcur, !parity_going_to_be_updated);</span>
|
||||
<span class="lineNum"> 1226 </span><span class="lineCov"> 114702 : io_write_preset(&io, blockcur, !parity_going_to_be_updated);</span>
|
||||
<span class="lineNum"> 1227 </span> :
|
||||
<span class="lineNum"> 1228 </span> : /* write the parity */
|
||||
<span class="lineNum"> 1229 </span><span class="lineCov"> 673502 : for (l = 0; l < state->level; ++l) {</span>
|
||||
<span class="lineNum"> 1229 </span><span class="lineCov"> 672809 : for (l = 0; l < state->level; ++l) {</span>
|
||||
<span class="lineNum"> 1230 </span> : unsigned levcur;
|
||||
<span class="lineNum"> 1231 </span> :
|
||||
<span class="lineNum"> 1232 </span><span class="lineCov"> 558701 : io_parity_write(&io, &levcur, waiting_map, &waiting_mac);</span>
|
||||
<span class="lineNum"> 1232 </span><span class="lineCov"> 558107 : io_parity_write(&io, &levcur, waiting_map, &waiting_mac);</span>
|
||||
<span class="lineNum"> 1233 </span> :
|
||||
<span class="lineNum"> 1234 </span> : /* until now is parity */
|
||||
<span class="lineNum"> 1235 </span><span class="lineCov"> 558701 : state_usage_parity(state, waiting_map, waiting_mac);</span>
|
||||
<span class="lineNum"> 1235 </span><span class="lineCov"> 558107 : state_usage_parity(state, waiting_map, waiting_mac);</span>
|
||||
<span class="lineNum"> 1236 </span> : }
|
||||
<span class="lineNum"> 1237 </span> :
|
||||
<span class="lineNum"> 1238 </span> : /* write finished */
|
||||
<span class="lineNum"> 1239 </span><span class="lineCov"> 114801 : io_write_next(&io, blockcur, !parity_going_to_be_updated, writer_error);</span>
|
||||
<span class="lineNum"> 1239 </span><span class="lineCov"> 114702 : io_write_next(&io, blockcur, !parity_going_to_be_updated, writer_error);</span>
|
||||
<span class="lineNum"> 1240 </span> :
|
||||
<span class="lineNum"> 1241 </span> : /* handle errors reported */
|
||||
<span class="lineNum"> 1242 </span><span class="lineCov"> 574005 : for (j = 0; j < IO_WRITER_ERROR_MAX; ++j) {</span>
|
||||
<span class="lineNum"> 1243 </span><span class="lineCov"> 459204 : if (writer_error[j]) {</span>
|
||||
<span class="lineNum"> 1242 </span><span class="lineCov"> 573510 : for (j = 0; j < IO_WRITER_ERROR_MAX; ++j) {</span>
|
||||
<span class="lineNum"> 1243 </span><span class="lineCov"> 458808 : if (writer_error[j]) {</span>
|
||||
<span class="lineNum"> 1244 </span><span class="lineNoCov"> 0 : switch (j + IO_WRITER_ERROR_BASE) {</span>
|
||||
<span class="lineNum"> 1245 </span> : case TASK_STATE_IOERROR_CONTINUE :
|
||||
<span class="lineNum"> 1246 </span><span class="lineNoCov"> 0 : ++io_error;</span>
|
||||
|
|
@ -1326,24 +1326,24 @@
|
|||
<span class="lineNum"> 1264 </span> : }
|
||||
<span class="lineNum"> 1265 </span> :
|
||||
<span class="lineNum"> 1266 </span> : /* mark the state as needing write */
|
||||
<span class="lineNum"> 1267 </span><span class="lineCov"> 114801 : state->need_write = 1;</span>
|
||||
<span class="lineNum"> 1267 </span><span class="lineCov"> 114702 : state->need_write = 1;</span>
|
||||
<span class="lineNum"> 1268 </span> :
|
||||
<span class="lineNum"> 1269 </span> : /* count the number of processed block */
|
||||
<span class="lineNum"> 1270 </span><span class="lineCov"> 114801 : ++countpos;</span>
|
||||
<span class="lineNum"> 1270 </span><span class="lineCov"> 114702 : ++countpos;</span>
|
||||
<span class="lineNum"> 1271 </span> :
|
||||
<span class="lineNum"> 1272 </span> : /* progress */
|
||||
<span class="lineNum"> 1273 </span><span class="lineCov"> 114801 : if (state_progress(state, &io, blockcur, countpos, countmax, countsize)) {</span>
|
||||
<span class="lineNum"> 1273 </span><span class="lineCov"> 114702 : if (state_progress(state, &io, blockcur, countpos, countmax, countsize)) {</span>
|
||||
<span class="lineNum"> 1274 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 1275 </span> : break;
|
||||
<span class="lineNum"> 1276 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 1277 </span> : }
|
||||
<span class="lineNum"> 1278 </span> :
|
||||
<span class="lineNum"> 1279 </span> : /* autosave */
|
||||
<span class="lineNum"> 1280 </span><span class="lineCov"> 114801 : if ((state->autosave != 0</span>
|
||||
<span class="lineNum"> 1280 </span><span class="lineCov"> 114702 : if ((state->autosave != 0</span>
|
||||
<span class="lineNum"> 1281 </span><span class="lineCov"> 26021 : && autosavedone >= autosavelimit /* if we have reached the limit */</span>
|
||||
<span class="lineNum"> 1282 </span><span class="lineNoCov"> 0 : && autosavemissing >= autosavelimit) /* if we have at least a full step to do */</span>
|
||||
<span class="lineNum"> 1283 </span> : /* or if we have a forced autosave at the specified block */
|
||||
<span class="lineNum"> 1284 </span><span class="lineCov"> 114801 : || (state->opt.force_autosave_at != 0 && state->opt.force_autosave_at == blockcur)</span>
|
||||
<span class="lineNum"> 1284 </span><span class="lineCov"> 114702 : || (state->opt.force_autosave_at != 0 && state->opt.force_autosave_at == blockcur)</span>
|
||||
<span class="lineNum"> 1285 </span> : ) {
|
||||
<span class="lineNum"> 1286 </span><span class="lineCov"> 1 : autosavedone = 0; /* restart the counter */</span>
|
||||
<span class="lineNum"> 1287 </span> :
|
||||
|
|
@ -1378,7 +1378,7 @@
|
|||
<span class="lineNum"> 1316 </span> : /* drop until now */
|
||||
<span class="lineNum"> 1317 </span><span class="lineCov"> 1 : state_usage_waste(state);</span>
|
||||
<span class="lineNum"> 1318 </span> : }
|
||||
<span class="lineNum"> 1319 </span><span class="lineCov"> 114801 : }</span>
|
||||
<span class="lineNum"> 1319 </span><span class="lineCov"> 114702 : }</span>
|
||||
<span class="lineNum"> 1320 </span> :
|
||||
<span class="lineNum"> 1321 </span> : end:
|
||||
<span class="lineNum"> 1322 </span><span class="lineCov"> 83 : state_progress_end(state, countpos, countmax, countsize);</span>
|
||||
|
|
|
|||
|
|
@ -61,11 +61,11 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="unix.c.gcov.html#730">tick</a></td>
|
||||
<td class="coverFnHi">3819422</td>
|
||||
<td class="coverFnHi">3816813</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="unix.c.gcov.html#29">open_noatime</a></td>
|
||||
<td class="coverFnHi">1719600</td>
|
||||
<td class="coverFnHi">1719371</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="unix.c.gcov.html#532">filephy</a></td>
|
||||
|
|
@ -89,23 +89,23 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="unix.c.gcov.html#1416">os_init</a></td>
|
||||
<td class="coverFnHi">266</td>
|
||||
<td class="coverFnHi">269</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="unix.c.gcov.html#1431">os_done</a></td>
|
||||
<td class="coverFnHi">244</td>
|
||||
<td class="coverFnHi">247</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="unix.c.gcov.html#228">tagread</a></td>
|
||||
<td class="coverFnHi">191</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="unix.c.gcov.html#330">devresolve_sys</a></td>
|
||||
<td class="coverFn"><a href="unix.c.gcov.html#372">devresolve</a></td>
|
||||
<td class="coverFnHi">191</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="unix.c.gcov.html#372">devresolve</a></td>
|
||||
<td class="coverFnHi">177</td>
|
||||
<td class="coverFn"><a href="unix.c.gcov.html#330">devresolve_sys</a></td>
|
||||
<td class="coverFnHi">191</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="unix.c.gcov.html#798">devread</a></td>
|
||||
|
|
@ -120,12 +120,12 @@
|
|||
<td class="coverFnHi">65</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="unix.c.gcov.html#1034">devsmart</a></td>
|
||||
<td class="coverFn"><a href="unix.c.gcov.html#1264">thread_smart</a></td>
|
||||
<td class="coverFnHi">43</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="unix.c.gcov.html#1264">thread_smart</a></td>
|
||||
<td class="coverFnHi">42</td>
|
||||
<td class="coverFn"><a href="unix.c.gcov.html#1034">devsmart</a></td>
|
||||
<td class="coverFnHi">43</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="unix.c.gcov.html#1175">devup</a></td>
|
||||
|
|
|
|||
|
|
@ -81,7 +81,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="unix.c.gcov.html#372">devresolve</a></td>
|
||||
<td class="coverFnHi">177</td>
|
||||
<td class="coverFnHi">191</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="unix.c.gcov.html#77">devresolve_proc</a></td>
|
||||
|
|
@ -137,7 +137,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="unix.c.gcov.html#29">open_noatime</a></td>
|
||||
<td class="coverFnHi">1719600</td>
|
||||
<td class="coverFnHi">1719371</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="unix.c.gcov.html#1500">os_clear</a></td>
|
||||
|
|
@ -145,11 +145,11 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="unix.c.gcov.html#1431">os_done</a></td>
|
||||
<td class="coverFnHi">244</td>
|
||||
<td class="coverFnHi">247</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="unix.c.gcov.html#1416">os_init</a></td>
|
||||
<td class="coverFnHi">266</td>
|
||||
<td class="coverFnHi">269</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="unix.c.gcov.html#772">randomize</a></td>
|
||||
|
|
@ -165,7 +165,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="unix.c.gcov.html#1264">thread_smart</a></td>
|
||||
<td class="coverFnHi">42</td>
|
||||
<td class="coverFnHi">43</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="unix.c.gcov.html#1238">thread_spindown</a></td>
|
||||
|
|
@ -177,7 +177,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="unix.c.gcov.html#730">tick</a></td>
|
||||
<td class="coverFnHi">3819422</td>
|
||||
<td class="coverFnHi">3816813</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="unix.c.gcov.html#762">tick_ms</a></td>
|
||||
|
|
|
|||
|
|
@ -90,15 +90,15 @@
|
|||
<span class="lineNum"> 28 </span> : int exit_failure = 1;
|
||||
<a name="29"><span class="lineNum"> 29 </span> : int exit_sync_needed = 2;</a>
|
||||
<span class="lineNum"> 30 </span> :
|
||||
<span class="lineNum"> 31 </span><span class="lineCov"> 1719600 : int open_noatime(const char* file, int flags)</span>
|
||||
<span class="lineNum"> 31 </span><span class="lineCov"> 1719371 : int open_noatime(const char* file, int flags)</span>
|
||||
<span class="lineNum"> 32 </span> : {
|
||||
<span class="lineNum"> 33 </span> : #ifdef O_NOATIME
|
||||
<span class="lineNum"> 34 </span><span class="lineCov"> 1719600 : int f = open(file, flags | O_NOATIME);</span>
|
||||
<span class="lineNum"> 34 </span><span class="lineCov"> 1719371 : int f = open(file, flags | O_NOATIME);</span>
|
||||
<span class="lineNum"> 35 </span> :
|
||||
<span class="lineNum"> 36 </span> : /* only root is allowed to use O_NOATIME, in case retry without it */
|
||||
<span class="lineNum"> 37 </span><span class="lineCov"> 1719647 : if (f == -1 && errno == EPERM)</span>
|
||||
<span class="lineNum"> 37 </span><span class="lineCov"> 1719426 : if (f == -1 && errno == EPERM)</span>
|
||||
<span class="lineNum"> 38 </span><span class="lineNoCov"> 0 : f = open(file, flags);</span>
|
||||
<span class="lineNum"> 39 </span><span class="lineCov"> 1719648 : return f;</span>
|
||||
<span class="lineNum"> 39 </span><span class="lineCov"> 1719420 : return f;</span>
|
||||
<span class="lineNum"> 40 </span> : #else
|
||||
<span class="lineNum"> 41 </span> : return open(file, flags);
|
||||
<span class="lineNum"> 42 </span> : #endif
|
||||
|
|
@ -324,23 +324,23 @@
|
|||
<span class="lineNum"> 262 </span> : }
|
||||
<span class="lineNum"> 263 </span> :
|
||||
<span class="lineNum"> 264 </span><span class="lineCov"> 191 : ret = close(f);</span>
|
||||
<span class="lineNum"> 265 </span><span class="lineCov"> 191 : if (ret != 0) {</span>
|
||||
<span class="lineNum"> 265 </span><span class="lineCov"> 190 : if (ret != 0) {</span>
|
||||
<span class="lineNum"> 266 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 267 </span> : log_fatal("Failed to close '%s'.\n", path);
|
||||
<span class="lineNum"> 268 </span> : return -1;
|
||||
<span class="lineNum"> 269 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 270 </span> : }
|
||||
<span class="lineNum"> 271 </span> :
|
||||
<span class="lineNum"> 272 </span><span class="lineCov"> 191 : buf[len] = 0;</span>
|
||||
<span class="lineNum"> 273 </span><span class="lineCov"> 191 : tag_len = strlen(tag);</span>
|
||||
<span class="lineNum"> 272 </span><span class="lineCov"> 190 : buf[len] = 0;</span>
|
||||
<span class="lineNum"> 273 </span><span class="lineCov"> 190 : tag_len = strlen(tag);</span>
|
||||
<span class="lineNum"> 274 </span> :
|
||||
<span class="lineNum"> 275 </span><span class="lineCov"> 3324 : for (i = buf; *i; ++i) {</span>
|
||||
<span class="lineNum"> 276 </span><span class="lineCov"> 3324 : char* p = i;</span>
|
||||
<span class="lineNum"> 275 </span><span class="lineCov"> 3321 : for (i = buf; *i; ++i) {</span>
|
||||
<span class="lineNum"> 276 </span><span class="lineCov"> 3321 : char* p = i;</span>
|
||||
<span class="lineNum"> 277 </span> :
|
||||
<span class="lineNum"> 278 </span> : /* start with a space */
|
||||
<span class="lineNum"> 279 </span><span class="lineCov"> 3324 : if (p != buf) {</span>
|
||||
<span class="lineNum"> 280 </span><span class="lineCov"> 3133 : if (!isspace(*p))</span>
|
||||
<span class="lineNum"> 281 </span><span class="lineCov"> 2751 : continue;</span>
|
||||
<span class="lineNum"> 279 </span><span class="lineCov"> 3321 : if (p != buf) {</span>
|
||||
<span class="lineNum"> 280 </span><span class="lineCov"> 3130 : if (!isspace(*p))</span>
|
||||
<span class="lineNum"> 281 </span><span class="lineCov"> 2749 : continue;</span>
|
||||
<span class="lineNum"> 282 </span><span class="lineCov"> 382 : ++p;</span>
|
||||
<span class="lineNum"> 283 </span> : }
|
||||
<span class="lineNum"> 284 </span> :
|
||||
|
|
@ -368,18 +368,18 @@
|
|||
<span class="lineNum"> 306 </span><span class="lineCov"> 191 : e = i;</span>
|
||||
<span class="lineNum"> 307 </span><span class="lineCov"> 1020 : while (*e != 0 && !isspace(*e))</span>
|
||||
<span class="lineNum"> 308 </span><span class="lineCov"> 638 : ++e;</span>
|
||||
<span class="lineNum"> 309 </span><span class="lineCov"> 191 : *e = 0;</span>
|
||||
<span class="lineNum"> 309 </span><span class="lineCov"> 190 : *e = 0;</span>
|
||||
<span class="lineNum"> 310 </span> :
|
||||
<span class="lineNum"> 311 </span><span class="lineCov"> 191 : if (!*i) {</span>
|
||||
<span class="lineNum"> 311 </span><span class="lineCov"> 190 : if (!*i) {</span>
|
||||
<span class="lineNum"> 312 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 313 </span> : log_fatal("Empty tag '%s' for '%s'.\n", tag, path);
|
||||
<span class="lineNum"> 314 </span> : return -1;
|
||||
<span class="lineNum"> 315 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 316 </span> : }
|
||||
<span class="lineNum"> 317 </span> :
|
||||
<span class="lineNum"> 318 </span><span class="lineCov"> 191 : pathprint(value, value_size, "%s", i);</span>
|
||||
<span class="lineNum"> 318 </span><span class="lineCov"> 190 : pathprint(value, value_size, "%s", i);</span>
|
||||
<span class="lineNum"> 319 </span> :
|
||||
<span class="lineNum"> 320 </span><span class="lineCov"> 191 : return 0;</span>
|
||||
<span class="lineNum"> 320 </span><span class="lineCov"> 190 : return 0;</span>
|
||||
<span class="lineNum"> 321 </span> : }
|
||||
<span class="lineNum"> 322 </span> : #endif
|
||||
<span class="lineNum"> 323 </span> :
|
||||
|
|
@ -407,7 +407,7 @@
|
|||
<span class="lineNum"> 345 </span> : }
|
||||
<span class="lineNum"> 346 </span> :
|
||||
<span class="lineNum"> 347 </span> : /* set the real device path */
|
||||
<span class="lineNum"> 348 </span><span class="lineCov"> 191 : pathprint(path, path_size, "/dev/%s", buf);</span>
|
||||
<span class="lineNum"> 348 </span><span class="lineCov"> 190 : pathprint(path, path_size, "/dev/%s", buf);</span>
|
||||
<span class="lineNum"> 349 </span> :
|
||||
<span class="lineNum"> 350 </span> : /* check the device */
|
||||
<span class="lineNum"> 351 </span><span class="lineCov"> 191 : if (stat(path, &st) != 0) {</span>
|
||||
|
|
@ -416,14 +416,14 @@
|
|||
<span class="lineNum"> 354 </span> : return -1;
|
||||
<span class="lineNum"> 355 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 356 </span> : }
|
||||
<span class="lineNum"> 357 </span><span class="lineCov"> 191 : if (st.st_rdev != device) {</span>
|
||||
<span class="lineNum"> 357 </span><span class="lineCov"> 190 : if (st.st_rdev != device) {</span>
|
||||
<span class="lineNum"> 358 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 359 </span> : log_tag("resolve:sys:%u:%u: unexpected device '%u:%u' for '%s'.\n", major(device), minor(device), major(st.st_rdev), minor(st.st_rdev), path);
|
||||
<span class="lineNum"> 360 </span> : return -1;
|
||||
<span class="lineNum"> 361 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 362 </span> : }
|
||||
<span class="lineNum"> 363 </span> :
|
||||
<span class="lineNum"> 364 </span><span class="lineCov"> 191 : log_tag("resolve:sys:%u:%u:%s: found\n", major(device), minor(device), path);</span>
|
||||
<span class="lineNum"> 364 </span><span class="lineCov"> 190 : log_tag("resolve:sys:%u:%u:%s: found\n", major(device), minor(device), path);</span>
|
||||
<span class="lineNum"> 365 </span> :
|
||||
<span class="lineNum"> 366 </span><span class="lineCov"> 191 : return 0;</span>
|
||||
<span class="lineNum"> 367 </span> : }
|
||||
|
|
@ -433,9 +433,9 @@
|
|||
<span class="lineNum"> 371 </span> : * Get the device file from the device number.
|
||||
<a name="372"><span class="lineNum"> 372 </span> : */</a>
|
||||
<span class="lineNum"> 373 </span> : #if HAVE_LINUX_DEVICE
|
||||
<span class="lineNum"> 374 </span><span class="lineCov"> 177 : static int devresolve(uint64_t device, char* path, size_t path_size)</span>
|
||||
<span class="lineNum"> 374 </span><span class="lineCov"> 191 : static int devresolve(uint64_t device, char* path, size_t path_size)</span>
|
||||
<span class="lineNum"> 375 </span> : {
|
||||
<span class="lineNum"> 376 </span><span class="lineCov"> 177 : if (devresolve_sys(device, path, path_size) == 0)</span>
|
||||
<span class="lineNum"> 376 </span><span class="lineCov"> 191 : if (devresolve_sys(device, path, path_size) == 0)</span>
|
||||
<span class="lineNum"> 377 </span><span class="lineCov"> 191 : return 0;</span>
|
||||
<span class="lineNum"> 378 </span> :
|
||||
<span class="lineNum"> 379 </span><span class="lineNoCov"> 0 : return -1;</span>
|
||||
|
|
@ -791,7 +791,7 @@
|
|||
<span class="lineNum"> 729 </span><span class="lineCov"> 5477 : return 0;</span>
|
||||
<a name="730"><span class="lineNum"> 730 </span> : }</a>
|
||||
<span class="lineNum"> 731 </span> :
|
||||
<span class="lineNum"> 732 </span><span class="lineCov"> 3819422 : uint64_t tick(void)</span>
|
||||
<span class="lineNum"> 732 </span><span class="lineCov"> 3816813 : uint64_t tick(void)</span>
|
||||
<span class="lineNum"> 733 </span> : {
|
||||
<span class="lineNum"> 734 </span> : #if HAVE_MACH_ABSOLUTE_TIME
|
||||
<span class="lineNum"> 735 </span> : /* for Mac OS X */
|
||||
|
|
@ -802,14 +802,14 @@
|
|||
<span class="lineNum"> 740 </span> :
|
||||
<span class="lineNum"> 741 </span> : /* nanosecond precision with clock_gettime() */
|
||||
<span class="lineNum"> 742 </span> : #if defined(CLOCK_MONOTONIC_RAW)
|
||||
<span class="lineNum"> 743 </span><span class="lineCov"> 3819422 : if (clock_gettime(CLOCK_MONOTONIC_RAW, &tv) != 0) {</span>
|
||||
<span class="lineNum"> 743 </span><span class="lineCov"> 3816813 : if (clock_gettime(CLOCK_MONOTONIC_RAW, &tv) != 0) {</span>
|
||||
<span class="lineNum"> 744 </span> : #else
|
||||
<span class="lineNum"> 745 </span> : if (clock_gettime(CLOCK_MONOTONIC, &tv) != 0) {
|
||||
<span class="lineNum"> 746 </span> : #endif
|
||||
<span class="lineNum"> 747 </span><span class="lineNoCov"> 0 : return 0;</span>
|
||||
<span class="lineNum"> 748 </span> : }
|
||||
<span class="lineNum"> 749 </span> :
|
||||
<span class="lineNum"> 750 </span><span class="lineCov"> 3819422 : return tv.tv_sec * 1000000000ULL + tv.tv_nsec;</span>
|
||||
<span class="lineNum"> 750 </span><span class="lineCov"> 3816813 : return tv.tv_sec * 1000000000ULL + tv.tv_nsec;</span>
|
||||
<span class="lineNum"> 751 </span> : #else
|
||||
<span class="lineNum"> 752 </span> : /* other platforms */
|
||||
<span class="lineNum"> 753 </span> : struct timeval tv;
|
||||
|
|
@ -1135,7 +1135,7 @@
|
|||
<span class="lineNum"> 1073 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 1074 </span> : }
|
||||
<span class="lineNum"> 1075 </span> :
|
||||
<span class="lineNum"> 1076 </span><span class="lineCov"> 42 : ret = pclose(f);</span>
|
||||
<span class="lineNum"> 1076 </span><span class="lineCov"> 43 : ret = pclose(f);</span>
|
||||
<span class="lineNum"> 1077 </span> :
|
||||
<span class="lineNum"> 1078 </span><span class="lineCov"> 43 : log_tag("smartctl:%s:%s:ret: %x\n", file, name, ret);</span>
|
||||
<span class="lineNum"> 1079 </span> :
|
||||
|
|
@ -1325,12 +1325,12 @@
|
|||
<span class="lineNum"> 1263 </span> : /**
|
||||
<a name="1264"><span class="lineNum"> 1264 </span> : * Thread for getting smart info.</a>
|
||||
<span class="lineNum"> 1265 </span> : */
|
||||
<span class="lineNum"> 1266 </span><span class="lineCov"> 42 : static void* thread_smart(void* arg)</span>
|
||||
<span class="lineNum"> 1266 </span><span class="lineCov"> 43 : static void* thread_smart(void* arg)</span>
|
||||
<span class="lineNum"> 1267 </span> : {
|
||||
<span class="lineNum"> 1268 </span> : #if HAVE_LINUX_DEVICE
|
||||
<span class="lineNum"> 1269 </span><span class="lineCov"> 42 : devinfo_t* devinfo = arg;</span>
|
||||
<span class="lineNum"> 1269 </span><span class="lineCov"> 43 : devinfo_t* devinfo = arg;</span>
|
||||
<span class="lineNum"> 1270 </span> :
|
||||
<span class="lineNum"> 1271 </span><span class="lineCov"> 42 : if (devsmart(devinfo->device, devinfo->name, devinfo->smartctl, devinfo->smart, devinfo->smart_serial, devinfo->smart_vendor, devinfo->smart_model) != 0) {</span>
|
||||
<span class="lineNum"> 1271 </span><span class="lineCov"> 43 : if (devsmart(devinfo->device, devinfo->name, devinfo->smartctl, devinfo->smart, devinfo->smart_serial, devinfo->smart_vendor, devinfo->smart_model) != 0) {</span>
|
||||
<span class="lineNum"> 1272 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 1273 </span> : return (void*)-1;
|
||||
<span class="lineNum"> 1274 </span> : /* LCOV_EXCL_STOP */
|
||||
|
|
@ -1477,12 +1477,12 @@
|
|||
<span class="lineNum"> 1415 </span><span class="lineCov"> 3 : return device_thread(low, func);</span>
|
||||
<a name="1416"><span class="lineNum"> 1416 </span> : }</a>
|
||||
<span class="lineNum"> 1417 </span> :
|
||||
<span class="lineNum"> 1418 </span><span class="lineCov"> 266 : void os_init(int opt)</span>
|
||||
<span class="lineNum"> 1418 </span><span class="lineCov"> 269 : void os_init(int opt)</span>
|
||||
<span class="lineNum"> 1419 </span> : {
|
||||
<span class="lineNum"> 1420 </span> : #if HAVE_BLKID
|
||||
<span class="lineNum"> 1421 </span> : int ret;
|
||||
<span class="lineNum"> 1422 </span><span class="lineCov"> 266 : ret = blkid_get_cache(&cache, NULL);</span>
|
||||
<span class="lineNum"> 1423 </span><span class="lineCov"> 266 : if (ret != 0) {</span>
|
||||
<span class="lineNum"> 1422 </span><span class="lineCov"> 269 : ret = blkid_get_cache(&cache, NULL);</span>
|
||||
<span class="lineNum"> 1423 </span><span class="lineCov"> 269 : if (ret != 0) {</span>
|
||||
<span class="lineNum"> 1424 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 1425 </span> : log_fatal("WARNING Failed to get blkid cache\n");
|
||||
<span class="lineNum"> 1426 </span> : /* LCOV_EXCL_STOP */
|
||||
|
|
@ -1490,15 +1490,15 @@
|
|||
<span class="lineNum"> 1428 </span> : #endif
|
||||
<span class="lineNum"> 1429 </span> :
|
||||
<span class="lineNum"> 1430 </span> : (void)opt;
|
||||
<a name="1431"><span class="lineNum"> 1431 </span><span class="lineCov"> 266 : }</span></a>
|
||||
<a name="1431"><span class="lineNum"> 1431 </span><span class="lineCov"> 269 : }</span></a>
|
||||
<span class="lineNum"> 1432 </span> :
|
||||
<span class="lineNum"> 1433 </span><span class="lineCov"> 244 : void os_done(void)</span>
|
||||
<span class="lineNum"> 1433 </span><span class="lineCov"> 247 : void os_done(void)</span>
|
||||
<span class="lineNum"> 1434 </span> : {
|
||||
<span class="lineNum"> 1435 </span> : #if HAVE_BLKID
|
||||
<span class="lineNum"> 1436 </span><span class="lineCov"> 244 : if (cache != 0)</span>
|
||||
<span class="lineNum"> 1437 </span><span class="lineCov"> 244 : blkid_put_cache(cache);</span>
|
||||
<span class="lineNum"> 1436 </span><span class="lineCov"> 247 : if (cache != 0)</span>
|
||||
<span class="lineNum"> 1437 </span><span class="lineCov"> 247 : blkid_put_cache(cache);</span>
|
||||
<span class="lineNum"> 1438 </span> : #endif
|
||||
<span class="lineNum"> 1439 </span><span class="lineCov"> 244 : }</span>
|
||||
<span class="lineNum"> 1439 </span><span class="lineCov"> 247 : }</span>
|
||||
<span class="lineNum"> 1440 </span> :
|
||||
<span class="lineNum"> 1441 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 1442 </span> : void os_abort(void)
|
||||
|
|
|
|||
|
|
@ -61,27 +61,27 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="util.c.gcov.html#461">util_rotl32</a></td>
|
||||
<td class="coverFnHi">845729469</td>
|
||||
<td class="coverFnHi">854114224</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="util.c.gcov.html#466">util_rotl64</a></td>
|
||||
<td class="coverFnHi">507650352</td>
|
||||
<td class="coverFnHi">512217108</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="util.c.gcov.html#509">memhash</a></td>
|
||||
<td class="coverFnHi">5938819</td>
|
||||
<td class="coverFnHi">5937808</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="util.c.gcov.html#429">crc32c_x86</a></td>
|
||||
<td class="coverFnHi">646398</td>
|
||||
<td class="coverFnHi">646614</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="util.c.gcov.html#540">memdiff</a></td>
|
||||
<td class="coverFnHi">93443</td>
|
||||
<td class="coverFnHi">93184</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="util.c.gcov.html#58">malloc_nofail_vector_align</a></td>
|
||||
<td class="coverFnHi">12490</td>
|
||||
<td class="coverFnHi">12366</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="util.c.gcov.html#131">mtest_vector</a></td>
|
||||
|
|
@ -95,9 +95,13 @@
|
|||
<td class="coverFn"><a href="util.c.gcov.html#107">fast_mtest_vector</a></td>
|
||||
<td class="coverFnHi">1951</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="util.c.gcov.html#417">crc32c_gen</a></td>
|
||||
<td class="coverFnHi">361</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="util.c.gcov.html#443">crc32c_init</a></td>
|
||||
<td class="coverFnHi">282</td>
|
||||
<td class="coverFnHi">285</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="util.c.gcov.html#563">lock_lock</a></td>
|
||||
|
|
@ -111,10 +115,6 @@
|
|||
<td class="coverFn"><a href="util.c.gcov.html#26">malloc_nofail_align</a></td>
|
||||
<td class="coverFnHi">179</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="util.c.gcov.html#417">crc32c_gen</a></td>
|
||||
<td class="coverFnHi">105</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="util.c.gcov.html#527">hash_config_name</a></td>
|
||||
<td class="coverFnHi">42</td>
|
||||
|
|
|
|||
|
|
@ -61,15 +61,15 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="util.c.gcov.html#417">crc32c_gen</a></td>
|
||||
<td class="coverFnHi">105</td>
|
||||
<td class="coverFnHi">361</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="util.c.gcov.html#443">crc32c_init</a></td>
|
||||
<td class="coverFnHi">282</td>
|
||||
<td class="coverFnHi">285</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="util.c.gcov.html#429">crc32c_x86</a></td>
|
||||
<td class="coverFnHi">646398</td>
|
||||
<td class="coverFnHi">646614</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="util.c.gcov.html#107">fast_mtest_vector</a></td>
|
||||
|
|
@ -101,7 +101,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="util.c.gcov.html#58">malloc_nofail_vector_align</a></td>
|
||||
<td class="coverFnHi">12490</td>
|
||||
<td class="coverFnHi">12366</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="util.c.gcov.html#74">malloc_nofail_vector_direct</a></td>
|
||||
|
|
@ -109,11 +109,11 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="util.c.gcov.html#540">memdiff</a></td>
|
||||
<td class="coverFnHi">93443</td>
|
||||
<td class="coverFnHi">93184</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="util.c.gcov.html#509">memhash</a></td>
|
||||
<td class="coverFnHi">5938819</td>
|
||||
<td class="coverFnHi">5937808</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="util.c.gcov.html#131">mtest_vector</a></td>
|
||||
|
|
@ -121,11 +121,11 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="util.c.gcov.html#461">util_rotl32</a></td>
|
||||
<td class="coverFnHi">845729469</td>
|
||||
<td class="coverFnHi">854114224</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="util.c.gcov.html#466">util_rotl64</a></td>
|
||||
<td class="coverFnHi">507650352</td>
|
||||
<td class="coverFnHi">512217108</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
|
|
|
|||
|
|
@ -119,20 +119,20 @@
|
|||
<span class="lineNum"> 57 </span><span class="lineCov"> 7 : return ptr;</span>
|
||||
<a name="58"><span class="lineNum"> 58 </span> : }</a>
|
||||
<span class="lineNum"> 59 </span> :
|
||||
<span class="lineNum"> 60 </span><span class="lineCov"> 12490 : void** malloc_nofail_vector_align(int nd, int n, size_t size, void** freeptr)</span>
|
||||
<span class="lineNum"> 60 </span><span class="lineCov"> 12366 : void** malloc_nofail_vector_align(int nd, int n, size_t size, void** freeptr)</span>
|
||||
<span class="lineNum"> 61 </span> : {
|
||||
<span class="lineNum"> 62 </span> : void* ptr;
|
||||
<span class="lineNum"> 63 </span> :
|
||||
<span class="lineNum"> 64 </span><span class="lineCov"> 12490 : ptr = raid_malloc_vector(nd, n, size, freeptr);</span>
|
||||
<span class="lineNum"> 64 </span><span class="lineCov"> 12366 : ptr = raid_malloc_vector(nd, n, size, freeptr);</span>
|
||||
<span class="lineNum"> 65 </span> :
|
||||
<span class="lineNum"> 66 </span><span class="lineCov"> 12490 : if (!ptr) {</span>
|
||||
<span class="lineNum"> 66 </span><span class="lineCov"> 12366 : if (!ptr) {</span>
|
||||
<span class="lineNum"> 67 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 68 </span> : malloc_fail(n * size);
|
||||
<span class="lineNum"> 69 </span> : exit(EXIT_FAILURE);
|
||||
<span class="lineNum"> 70 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 71 </span> : }
|
||||
<span class="lineNum"> 72 </span> :
|
||||
<span class="lineNum"> 73 </span><span class="lineCov"> 12490 : return ptr;</span>
|
||||
<span class="lineNum"> 73 </span><span class="lineCov"> 12366 : return ptr;</span>
|
||||
<a name="74"><span class="lineNum"> 74 </span> : }</a>
|
||||
<span class="lineNum"> 75 </span> :
|
||||
<span class="lineNum"> 76 </span><span class="lineNoCov"> 0 : void** malloc_nofail_vector_direct(int nd, int n, size_t size, void** freeptr)</span>
|
||||
|
|
@ -478,42 +478,42 @@
|
|||
<span class="lineNum"> 416 </span> : int crc_x86;
|
||||
<a name="417"><span class="lineNum"> 417 </span> : #endif</a>
|
||||
<span class="lineNum"> 418 </span> :
|
||||
<span class="lineNum"> 419 </span><span class="lineCov"> 105 : uint32_t crc32c_gen(uint32_t crc, const unsigned char* ptr, unsigned size)</span>
|
||||
<span class="lineNum"> 419 </span><span class="lineCov"> 361 : uint32_t crc32c_gen(uint32_t crc, const unsigned char* ptr, unsigned size)</span>
|
||||
<span class="lineNum"> 420 </span> : {
|
||||
<span class="lineNum"> 421 </span><span class="lineCov"> 105 : crc ^= CRC_IV;</span>
|
||||
<span class="lineNum"> 421 </span><span class="lineCov"> 361 : crc ^= CRC_IV;</span>
|
||||
<span class="lineNum"> 422 </span> :
|
||||
<span class="lineNum"> 423 </span><span class="lineCov"> 105 : crc = crc32c_gen_plain(crc, ptr, size);</span>
|
||||
<span class="lineNum"> 423 </span><span class="lineCov"> 361 : crc = crc32c_gen_plain(crc, ptr, size);</span>
|
||||
<span class="lineNum"> 424 </span> :
|
||||
<span class="lineNum"> 425 </span><span class="lineCov"> 105 : crc ^= CRC_IV;</span>
|
||||
<span class="lineNum"> 425 </span><span class="lineCov"> 361 : crc ^= CRC_IV;</span>
|
||||
<span class="lineNum"> 426 </span> :
|
||||
<span class="lineNum"> 427 </span><span class="lineCov"> 105 : return crc;</span>
|
||||
<span class="lineNum"> 427 </span><span class="lineCov"> 361 : return crc;</span>
|
||||
<span class="lineNum"> 428 </span> : }
|
||||
<a name="429"><span class="lineNum"> 429 </span> : </a>
|
||||
<span class="lineNum"> 430 </span> : #if HAVE_SSE42
|
||||
<span class="lineNum"> 431 </span><span class="lineCov"> 646398 : uint32_t crc32c_x86(uint32_t crc, const unsigned char* ptr, unsigned size)</span>
|
||||
<span class="lineNum"> 431 </span><span class="lineCov"> 646614 : uint32_t crc32c_x86(uint32_t crc, const unsigned char* ptr, unsigned size)</span>
|
||||
<span class="lineNum"> 432 </span> : {
|
||||
<span class="lineNum"> 433 </span><span class="lineCov"> 646398 : crc ^= CRC_IV;</span>
|
||||
<span class="lineNum"> 433 </span><span class="lineCov"> 646614 : crc ^= CRC_IV;</span>
|
||||
<span class="lineNum"> 434 </span> :
|
||||
<span class="lineNum"> 435 </span><span class="lineCov"> 646398 : crc = crc32c_x86_plain(crc, ptr, size);</span>
|
||||
<span class="lineNum"> 435 </span><span class="lineCov"> 646614 : crc = crc32c_x86_plain(crc, ptr, size);</span>
|
||||
<span class="lineNum"> 436 </span> :
|
||||
<span class="lineNum"> 437 </span><span class="lineCov"> 646395 : crc ^= CRC_IV;</span>
|
||||
<span class="lineNum"> 437 </span><span class="lineCov"> 646610 : crc ^= CRC_IV;</span>
|
||||
<span class="lineNum"> 438 </span> :
|
||||
<span class="lineNum"> 439 </span><span class="lineCov"> 646395 : return crc;</span>
|
||||
<span class="lineNum"> 439 </span><span class="lineCov"> 646610 : return crc;</span>
|
||||
<span class="lineNum"> 440 </span> : }
|
||||
<span class="lineNum"> 441 </span> : #endif
|
||||
<span class="lineNum"> 442 </span> :
|
||||
<a name="443"><span class="lineNum"> 443 </span> : uint32_t (*crc32c)(uint32_t crc, const unsigned char* ptr, unsigned size);</a>
|
||||
<span class="lineNum"> 444 </span> :
|
||||
<span class="lineNum"> 445 </span><span class="lineCov"> 282 : void crc32c_init(void)</span>
|
||||
<span class="lineNum"> 445 </span><span class="lineCov"> 285 : void crc32c_init(void)</span>
|
||||
<span class="lineNum"> 446 </span> : {
|
||||
<span class="lineNum"> 447 </span><span class="lineCov"> 282 : crc32c = crc32c_gen;</span>
|
||||
<span class="lineNum"> 447 </span><span class="lineCov"> 285 : crc32c = crc32c_gen;</span>
|
||||
<span class="lineNum"> 448 </span> : #if HAVE_SSE42
|
||||
<span class="lineNum"> 449 </span><span class="lineCov"> 282 : if (raid_cpu_has_crc32()) {</span>
|
||||
<span class="lineNum"> 450 </span><span class="lineCov"> 282 : crc_x86 = 1;</span>
|
||||
<span class="lineNum"> 451 </span><span class="lineCov"> 282 : crc32c = crc32c_x86;</span>
|
||||
<span class="lineNum"> 449 </span><span class="lineCov"> 285 : if (raid_cpu_has_crc32()) {</span>
|
||||
<span class="lineNum"> 450 </span><span class="lineCov"> 283 : crc_x86 = 1;</span>
|
||||
<span class="lineNum"> 451 </span><span class="lineCov"> 283 : crc32c = crc32c_x86;</span>
|
||||
<span class="lineNum"> 452 </span> : }
|
||||
<span class="lineNum"> 453 </span> : #endif
|
||||
<span class="lineNum"> 454 </span><span class="lineCov"> 282 : }</span>
|
||||
<span class="lineNum"> 454 </span><span class="lineCov"> 285 : }</span>
|
||||
<span class="lineNum"> 455 </span> :
|
||||
<span class="lineNum"> 456 </span> : /****************************************************************************/
|
||||
<span class="lineNum"> 457 </span> : /* byte operations */
|
||||
|
|
@ -522,14 +522,14 @@
|
|||
<span class="lineNum"> 460 </span> : * Rotate left.
|
||||
<a name="461"><span class="lineNum"> 461 </span> : * In x86/x64 they are optimized with a single assembler instruction.</a>
|
||||
<span class="lineNum"> 462 </span> : */
|
||||
<span class="lineNum"> 463 </span><span class="lineCov"> 845729469 : static inline uint32_t util_rotl32(uint32_t x, int8_t r)</span>
|
||||
<span class="lineNum"> 463 </span><span class="lineCov"> 854114224 : static inline uint32_t util_rotl32(uint32_t x, int8_t r)</span>
|
||||
<span class="lineNum"> 464 </span> : {
|
||||
<span class="lineNum"> 465 </span><span class="lineCov"> 845729469 : return (x << r) | (x >> (32 - r));</span>
|
||||
<span class="lineNum"> 465 </span><span class="lineCov"> 854114224 : return (x << r) | (x >> (32 - r));</span>
|
||||
<a name="466"><span class="lineNum"> 466 </span> : }</a>
|
||||
<span class="lineNum"> 467 </span> :
|
||||
<span class="lineNum"> 468 </span><span class="lineCov"> 507650352 : static inline uint64_t util_rotl64(uint64_t x, int8_t r)</span>
|
||||
<span class="lineNum"> 468 </span><span class="lineCov"> 512217108 : static inline uint64_t util_rotl64(uint64_t x, int8_t r)</span>
|
||||
<span class="lineNum"> 469 </span> : {
|
||||
<span class="lineNum"> 470 </span><span class="lineCov"> 507650352 : return (x << r) | (x >> (64 - r));</span>
|
||||
<span class="lineNum"> 470 </span><span class="lineCov"> 512217108 : return (x << r) | (x >> (64 - r));</span>
|
||||
<span class="lineNum"> 471 </span> : }
|
||||
<span class="lineNum"> 472 </span> :
|
||||
<span class="lineNum"> 473 </span> : /**
|
||||
|
|
@ -570,15 +570,15 @@
|
|||
<span class="lineNum"> 508 </span> : #include "murmur3.c"
|
||||
<a name="509"><span class="lineNum"> 509 </span> : #include "spooky2.c"</a>
|
||||
<span class="lineNum"> 510 </span> :
|
||||
<span class="lineNum"> 511 </span><span class="lineCov"> 5938819 : void memhash(unsigned kind, const unsigned char* seed, void* digest, const void* src, size_t size)</span>
|
||||
<span class="lineNum"> 511 </span><span class="lineCov"> 5937808 : void memhash(unsigned kind, const unsigned char* seed, void* digest, const void* src, size_t size)</span>
|
||||
<span class="lineNum"> 512 </span> : {
|
||||
<span class="lineNum"> 513 </span><span class="lineCov"> 5938819 : switch (kind) {</span>
|
||||
<span class="lineNum"> 513 </span><span class="lineCov"> 5937808 : switch (kind) {</span>
|
||||
<span class="lineNum"> 514 </span> : case HASH_MURMUR3 :
|
||||
<span class="lineNum"> 515 </span><span class="lineCov"> 2076783 : MurmurHash3_x86_128(src, size, seed, digest);</span>
|
||||
<span class="lineNum"> 516 </span><span class="lineCov"> 2076783 : break;</span>
|
||||
<span class="lineNum"> 515 </span><span class="lineCov"> 2076827 : MurmurHash3_x86_128(src, size, seed, digest);</span>
|
||||
<span class="lineNum"> 516 </span><span class="lineCov"> 2076827 : break;</span>
|
||||
<span class="lineNum"> 517 </span> : case HASH_SPOOKY2 :
|
||||
<span class="lineNum"> 518 </span><span class="lineCov"> 3862036 : SpookyHash128(src, size, seed, digest);</span>
|
||||
<span class="lineNum"> 519 </span><span class="lineCov"> 3862036 : break;</span>
|
||||
<span class="lineNum"> 518 </span><span class="lineCov"> 3860981 : SpookyHash128(src, size, seed, digest);</span>
|
||||
<span class="lineNum"> 519 </span><span class="lineCov"> 3860981 : break;</span>
|
||||
<span class="lineNum"> 520 </span> : default :
|
||||
<span class="lineNum"> 521 </span> : /* LCOV_EXCL_START */
|
||||
<span class="lineNum"> 522 </span> : log_fatal("Internal inconsistency in hash function %u\n", kind);
|
||||
|
|
@ -586,7 +586,7 @@
|
|||
<span class="lineNum"> 524 </span> : break;
|
||||
<span class="lineNum"> 525 </span> : /* LCOV_EXCL_STOP */
|
||||
<span class="lineNum"> 526 </span> : }
|
||||
<a name="527"><span class="lineNum"> 527 </span><span class="lineCov"> 5938819 : }</span></a>
|
||||
<a name="527"><span class="lineNum"> 527 </span><span class="lineCov"> 5937808 : }</span></a>
|
||||
<span class="lineNum"> 528 </span> :
|
||||
<span class="lineNum"> 529 </span><span class="lineCov"> 42 : const char* hash_config_name(unsigned kind)</span>
|
||||
<span class="lineNum"> 530 </span> : {
|
||||
|
|
@ -601,23 +601,23 @@
|
|||
<span class="lineNum"> 539 </span> : }
|
||||
<a name="540"><span class="lineNum"> 540 </span> : }</a>
|
||||
<span class="lineNum"> 541 </span> :
|
||||
<span class="lineNum"> 542 </span><span class="lineCov"> 93443 : unsigned memdiff(const unsigned char* data1, const unsigned char* data2, size_t size)</span>
|
||||
<span class="lineNum"> 542 </span><span class="lineCov"> 93184 : unsigned memdiff(const unsigned char* data1, const unsigned char* data2, size_t size)</span>
|
||||
<span class="lineNum"> 543 </span> : {
|
||||
<span class="lineNum"> 544 </span> : size_t i;
|
||||
<span class="lineNum"> 545 </span> : unsigned count;
|
||||
<span class="lineNum"> 546 </span> :
|
||||
<span class="lineNum"> 547 </span><span class="lineCov"> 93443 : count = 0;</span>
|
||||
<span class="lineNum"> 548 </span><span class="lineCov"> 80900995 : for (i = 0; i < size; ++i) {</span>
|
||||
<span class="lineNum"> 547 </span><span class="lineCov"> 93184 : count = 0;</span>
|
||||
<span class="lineNum"> 548 </span><span class="lineCov"> 80903648 : for (i = 0; i < size; ++i) {</span>
|
||||
<span class="lineNum"> 549 </span> : unsigned j;
|
||||
<span class="lineNum"> 550 </span><span class="lineCov"> 80807552 : unsigned char diff = data1[i] ^ data2[i];</span>
|
||||
<span class="lineNum"> 551 </span><span class="lineCov"> 727267968 : for (j = 0; j < 8; ++j) {</span>
|
||||
<span class="lineNum"> 552 </span><span class="lineCov"> 646460416 : if ((diff & 1) != 0)</span>
|
||||
<span class="lineNum"> 553 </span><span class="lineCov"> 311440935 : ++count;</span>
|
||||
<span class="lineNum"> 554 </span><span class="lineCov"> 646460416 : diff >>= 1;</span>
|
||||
<span class="lineNum"> 550 </span><span class="lineCov"> 80810464 : unsigned char diff = data1[i] ^ data2[i];</span>
|
||||
<span class="lineNum"> 551 </span><span class="lineCov"> 727294176 : for (j = 0; j < 8; ++j) {</span>
|
||||
<span class="lineNum"> 552 </span><span class="lineCov"> 646483712 : if ((diff & 1) != 0)</span>
|
||||
<span class="lineNum"> 553 </span><span class="lineCov"> 311410983 : ++count;</span>
|
||||
<span class="lineNum"> 554 </span><span class="lineCov"> 646483712 : diff >>= 1;</span>
|
||||
<span class="lineNum"> 555 </span> : }
|
||||
<span class="lineNum"> 556 </span> : }
|
||||
<span class="lineNum"> 557 </span> :
|
||||
<span class="lineNum"> 558 </span><span class="lineCov"> 93443 : return count;</span>
|
||||
<span class="lineNum"> 558 </span><span class="lineCov"> 93184 : return count;</span>
|
||||
<span class="lineNum"> 559 </span> : }
|
||||
<span class="lineNum"> 560 </span> :
|
||||
<span class="lineNum"> 561 </span> : /****************************************************************************/
|
||||
|
|
|
|||
|
|
@ -61,19 +61,19 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="util.h.gcov.html#119">crc32c_x86_plain</a></td>
|
||||
<td class="coverFnHi">21351829</td>
|
||||
<td class="coverFnHi">21365714</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="util.h.gcov.html#149">crc32c_plain</a></td>
|
||||
<td class="coverFnHi">20705435</td>
|
||||
<td class="coverFnHi">20719102</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="util.h.gcov.html#83">crc32c_plain_char</a></td>
|
||||
<td class="coverFnHi">3807708</td>
|
||||
<td class="coverFnHi">3808841</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="util.h.gcov.html#97">crc32c_gen_plain</a></td>
|
||||
<td class="coverFnHi">105</td>
|
||||
<td class="coverFnHi">361</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
|
|
|
|||
|
|
@ -61,19 +61,19 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="util.h.gcov.html#97">crc32c_gen_plain</a></td>
|
||||
<td class="coverFnHi">105</td>
|
||||
<td class="coverFnHi">361</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="util.h.gcov.html#149">crc32c_plain</a></td>
|
||||
<td class="coverFnHi">20705435</td>
|
||||
<td class="coverFnHi">20719102</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="util.h.gcov.html#83">crc32c_plain_char</a></td>
|
||||
<td class="coverFnHi">3807708</td>
|
||||
<td class="coverFnHi">3808841</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="util.h.gcov.html#119">crc32c_x86_plain</a></td>
|
||||
<td class="coverFnHi">21351829</td>
|
||||
<td class="coverFnHi">21365714</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
|
|
|
|||
|
|
@ -144,12 +144,12 @@
|
|||
<span class="lineNum"> 82 </span> : /**
|
||||
<a name="83"><span class="lineNum"> 83 </span> : * Compute CRC-32 (Castagnoli) for a single byte without the IV.</a>
|
||||
<span class="lineNum"> 84 </span> : */
|
||||
<span class="lineNum"> 85 </span><span class="lineCov"> 3807708 : static inline uint32_t crc32c_plain_char(uint32_t crc, unsigned char c)</span>
|
||||
<span class="lineNum"> 85 </span><span class="lineCov"> 3808841 : static inline uint32_t crc32c_plain_char(uint32_t crc, unsigned char c)</span>
|
||||
<span class="lineNum"> 86 </span> : {
|
||||
<span class="lineNum"> 87 </span> : #if HAVE_SSE42
|
||||
<span class="lineNum"> 88 </span><span class="lineCov"> 3807708 : if (tommy_likely(crc_x86)) {</span>
|
||||
<span class="lineNum"> 89 </span><span class="lineCov"> 3807708 : asm("crc32b %1, %0\n" : "+r" (crc) : "m" (c));</span>
|
||||
<span class="lineNum"> 90 </span><span class="lineCov"> 3807708 : return crc;</span>
|
||||
<span class="lineNum"> 88 </span><span class="lineCov"> 3808841 : if (tommy_likely(crc_x86)) {</span>
|
||||
<span class="lineNum"> 89 </span><span class="lineCov"> 3808841 : asm("crc32b %1, %0\n" : "+r" (crc) : "m" (c));</span>
|
||||
<span class="lineNum"> 90 </span><span class="lineCov"> 3808841 : return crc;</span>
|
||||
<span class="lineNum"> 91 </span> : }
|
||||
<span class="lineNum"> 92 </span> : #endif
|
||||
<span class="lineNum"> 93 </span><span class="lineNoCov"> 0 : return CRC32C_0[(crc ^ c) & 0xff] ^ (crc >> 8);</span>
|
||||
|
|
@ -158,29 +158,29 @@
|
|||
<span class="lineNum"> 96 </span> : /**
|
||||
<a name="97"><span class="lineNum"> 97 </span> : * Compute the CRC-32 (Castagnoli) without the IV.</a>
|
||||
<span class="lineNum"> 98 </span> : */
|
||||
<span class="lineNum"> 99 </span><span class="lineCov"> 105 : static inline uint32_t crc32c_gen_plain(uint32_t crc, const unsigned char* ptr, unsigned size)</span>
|
||||
<span class="lineNum"> 99 </span><span class="lineCov"> 361 : static inline uint32_t crc32c_gen_plain(uint32_t crc, const unsigned char* ptr, unsigned size)</span>
|
||||
<span class="lineNum"> 100 </span> : {
|
||||
<span class="lineNum"> 101 </span><span class="lineCov"> 5767545 : while (size >= 4) {</span>
|
||||
<span class="lineNum"> 102 </span><span class="lineCov"> 5767335 : crc ^= ptr[0] | (uint32_t)ptr[1] << 8 | (uint32_t)ptr[2] << 16 | (uint32_t)ptr[3] << 24;</span>
|
||||
<span class="lineNum"> 103 </span><span class="lineCov"> 5767335 : crc = CRC32C_3[crc & 0xff] ^ CRC32C_2[(crc >> 8) & 0xff] ^ CRC32C_1[(crc >> 16) & 0xff] ^ CRC32C_0[crc >> 24];</span>
|
||||
<span class="lineNum"> 104 </span><span class="lineCov"> 5767335 : ptr += 4;</span>
|
||||
<span class="lineNum"> 105 </span><span class="lineCov"> 5767335 : size -= 4;</span>
|
||||
<span class="lineNum"> 101 </span><span class="lineCov"> 22545273 : while (size >= 4) {</span>
|
||||
<span class="lineNum"> 102 </span><span class="lineCov"> 22544551 : crc ^= ptr[0] | (uint32_t)ptr[1] << 8 | (uint32_t)ptr[2] << 16 | (uint32_t)ptr[3] << 24;</span>
|
||||
<span class="lineNum"> 103 </span><span class="lineCov"> 22544551 : crc = CRC32C_3[crc & 0xff] ^ CRC32C_2[(crc >> 8) & 0xff] ^ CRC32C_1[(crc >> 16) & 0xff] ^ CRC32C_0[crc >> 24];</span>
|
||||
<span class="lineNum"> 104 </span><span class="lineCov"> 22544551 : ptr += 4;</span>
|
||||
<span class="lineNum"> 105 </span><span class="lineCov"> 22544551 : size -= 4;</span>
|
||||
<span class="lineNum"> 106 </span> : }
|
||||
<span class="lineNum"> 107 </span> :
|
||||
<span class="lineNum"> 108 </span><span class="lineCov"> 219 : while (size) {</span>
|
||||
<span class="lineNum"> 108 </span><span class="lineCov"> 731 : while (size) {</span>
|
||||
<span class="lineNum"> 109 </span><span class="lineCov"> 9 : crc = CRC32C_0[(crc ^ *ptr) & 0xff] ^ (crc >> 8);</span>
|
||||
<span class="lineNum"> 110 </span><span class="lineCov"> 9 : ++ptr;</span>
|
||||
<span class="lineNum"> 111 </span><span class="lineCov"> 9 : --size;</span>
|
||||
<span class="lineNum"> 112 </span> : }
|
||||
<span class="lineNum"> 113 </span> :
|
||||
<span class="lineNum"> 114 </span><span class="lineCov"> 105 : return crc;</span>
|
||||
<span class="lineNum"> 114 </span><span class="lineCov"> 361 : return crc;</span>
|
||||
<span class="lineNum"> 115 </span> : }
|
||||
<span class="lineNum"> 116 </span> :
|
||||
<span class="lineNum"> 117 </span> : /**
|
||||
<span class="lineNum"> 118 </span> : * Compute the CRC-32 (Castagnoli) without the IV.
|
||||
<a name="119"><span class="lineNum"> 119 </span> : */</a>
|
||||
<span class="lineNum"> 120 </span> : #if HAVE_SSE42
|
||||
<span class="lineNum"> 121 </span><span class="lineCov"> 21351829 : static inline uint32_t crc32c_x86_plain(uint32_t crc, const unsigned char* ptr, unsigned size)</span>
|
||||
<span class="lineNum"> 121 </span><span class="lineCov"> 21365714 : static inline uint32_t crc32c_x86_plain(uint32_t crc, const unsigned char* ptr, unsigned size)</span>
|
||||
<span class="lineNum"> 122 </span> : {
|
||||
<span class="lineNum"> 123 </span> : #ifdef CONFIG_X86_64
|
||||
<span class="lineNum"> 124 </span> : uint64_t crc64 = crc;
|
||||
|
|
@ -191,30 +191,30 @@
|
|||
<span class="lineNum"> 129 </span> : }
|
||||
<span class="lineNum"> 130 </span> : crc = crc64;
|
||||
<span class="lineNum"> 131 </span> : #else
|
||||
<span class="lineNum"> 132 </span><span class="lineCov"> 368064476 : while (size >= 4) {</span>
|
||||
<span class="lineNum"> 133 </span><span class="lineCov"> 325360818 : asm("crc32l %1, %0\n" : "+r" (crc) : "m" (*(const uint32_t*)ptr));</span>
|
||||
<span class="lineNum"> 134 </span><span class="lineCov"> 325360818 : ptr += 4;</span>
|
||||
<span class="lineNum"> 135 </span><span class="lineCov"> 325360818 : size -= 4;</span>
|
||||
<span class="lineNum"> 132 </span><span class="lineCov"> 387175791 : while (size >= 4) {</span>
|
||||
<span class="lineNum"> 133 </span><span class="lineCov"> 344444363 : asm("crc32l %1, %0\n" : "+r" (crc) : "m" (*(const uint32_t*)ptr));</span>
|
||||
<span class="lineNum"> 134 </span><span class="lineCov"> 344444363 : ptr += 4;</span>
|
||||
<span class="lineNum"> 135 </span><span class="lineCov"> 344444363 : size -= 4;</span>
|
||||
<span class="lineNum"> 136 </span> : }
|
||||
<span class="lineNum"> 137 </span> : #endif
|
||||
<span class="lineNum"> 138 </span><span class="lineCov"> 62023542 : while (size) {</span>
|
||||
<span class="lineNum"> 139 </span><span class="lineCov"> 19319884 : asm("crc32b %1, %0\n" : "+r" (crc) : "m" (*ptr));</span>
|
||||
<span class="lineNum"> 140 </span><span class="lineCov"> 19319884 : ++ptr;</span>
|
||||
<span class="lineNum"> 141 </span><span class="lineCov"> 19319884 : --size;</span>
|
||||
<span class="lineNum"> 138 </span><span class="lineCov"> 62479703 : while (size) {</span>
|
||||
<span class="lineNum"> 139 </span><span class="lineCov"> 19748275 : asm("crc32b %1, %0\n" : "+r" (crc) : "m" (*ptr));</span>
|
||||
<span class="lineNum"> 140 </span><span class="lineCov"> 19748275 : ++ptr;</span>
|
||||
<span class="lineNum"> 141 </span><span class="lineCov"> 19748275 : --size;</span>
|
||||
<span class="lineNum"> 142 </span> : }
|
||||
<span class="lineNum"> 143 </span> :
|
||||
<span class="lineNum"> 144 </span><span class="lineCov"> 21351829 : return crc;</span>
|
||||
<span class="lineNum"> 144 </span><span class="lineCov"> 21365714 : return crc;</span>
|
||||
<span class="lineNum"> 145 </span> : }
|
||||
<span class="lineNum"> 146 </span> : #endif
|
||||
<span class="lineNum"> 147 </span> :
|
||||
<span class="lineNum"> 148 </span> : /**
|
||||
<a name="149"><span class="lineNum"> 149 </span> : * Compute CRC-32 (Castagnoli) without the IV.</a>
|
||||
<span class="lineNum"> 150 </span> : */
|
||||
<span class="lineNum"> 151 </span><span class="lineCov"> 20705435 : static inline uint32_t crc32c_plain(uint32_t crc, const unsigned char* ptr, unsigned size)</span>
|
||||
<span class="lineNum"> 151 </span><span class="lineCov"> 20719102 : static inline uint32_t crc32c_plain(uint32_t crc, const unsigned char* ptr, unsigned size)</span>
|
||||
<span class="lineNum"> 152 </span> : {
|
||||
<span class="lineNum"> 153 </span> : #if HAVE_SSE42
|
||||
<span class="lineNum"> 154 </span><span class="lineCov"> 20705435 : if (tommy_likely(crc_x86)) {</span>
|
||||
<span class="lineNum"> 155 </span><span class="lineCov"> 20705435 : return crc32c_x86_plain(crc, ptr, size);</span>
|
||||
<span class="lineNum"> 154 </span><span class="lineCov"> 20719102 : if (tommy_likely(crc_x86)) {</span>
|
||||
<span class="lineNum"> 155 </span><span class="lineCov"> 20719102 : return crc32c_x86_plain(crc, ptr, size);</span>
|
||||
<span class="lineNum"> 156 </span> : }
|
||||
<span class="lineNum"> 157 </span> : #endif
|
||||
<span class="lineNum"> 158 </span><span class="lineNoCov"> 0 : return crc32c_gen_plain(crc, ptr, size);</span>
|
||||
|
|
|
|||
|
|
@ -31,18 +31,18 @@
|
|||
<td class="headerValue">lcov.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntry">10626</td>
|
||||
<td class="headerCovTableEntry">11930</td>
|
||||
<td class="headerCovTableEntryMed">89.1 %</td>
|
||||
<td class="headerCovTableEntry">10929</td>
|
||||
<td class="headerCovTableEntry">11932</td>
|
||||
<td class="headerCovTableEntryHi">91.6 %</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Date:</td>
|
||||
<td class="headerValue">2016-11-06</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntry">629</td>
|
||||
<td class="headerCovTableEntry">643</td>
|
||||
<td class="headerCovTableEntry">660</td>
|
||||
<td class="headerCovTableEntryHi">95.3 %</td>
|
||||
<td class="headerCovTableEntryHi">97.4 %</td>
|
||||
</tr>
|
||||
<tr><td><img src="glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
|
|
@ -69,36 +69,36 @@
|
|||
<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="raid/index.html">raid</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="amber.png" width=88 height=10 alt="88.3%"><img src="snow.png" width=12 height=10 alt="88.3%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerMed">88.3 %</td>
|
||||
<td class="coverNumMed">1555 / 1762</td>
|
||||
<td class="coverPerHi">92.9 %</td>
|
||||
<td class="coverNumHi">79 / 85</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="cmdline/index.html">cmdline</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="amber.png" width=89 height=10 alt="88.6%"><img src="snow.png" width=11 height=10 alt="88.6%"></td></tr></table>
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="amber.png" width=90 height=10 alt="89.7%"><img src="snow.png" width=10 height=10 alt="89.7%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerMed">88.6 %</td>
|
||||
<td class="coverNumMed">8491 / 9587</td>
|
||||
<td class="coverPerHi">95.0 %</td>
|
||||
<td class="coverNumHi">474 / 499</td>
|
||||
<td class="coverPerMed">89.7 %</td>
|
||||
<td class="coverNumMed">8598 / 9589</td>
|
||||
<td class="coverPerHi">96.6 %</td>
|
||||
<td class="coverNumHi">482 / 499</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="tommyds/index.html">tommyds</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="emerald.png" width=99 height=10 alt="99.8%"><img src="snow.png" width=1 height=10 alt="99.8%"></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="coverPerHi">99.8 %</td>
|
||||
<td class="coverNumHi">580 / 581</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumHi">581 / 581</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumHi">76 / 76</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="raid/index.html">raid</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="emerald.png" width=99 height=10 alt="99.3%"><img src="snow.png" width=1 height=10 alt="99.3%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">99.3 %</td>
|
||||
<td class="coverNumHi">1750 / 1762</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumHi">85 / 85</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">10626</td>
|
||||
<td class="headerCovTableEntry">11930</td>
|
||||
<td class="headerCovTableEntryMed">89.1 %</td>
|
||||
<td class="headerCovTableEntry">10929</td>
|
||||
<td class="headerCovTableEntry">11932</td>
|
||||
<td class="headerCovTableEntryHi">91.6 %</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Date:</td>
|
||||
<td class="headerValue">2016-11-06</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntry">629</td>
|
||||
<td class="headerCovTableEntry">643</td>
|
||||
<td class="headerCovTableEntry">660</td>
|
||||
<td class="headerCovTableEntryHi">95.3 %</td>
|
||||
<td class="headerCovTableEntryHi">97.4 %</td>
|
||||
</tr>
|
||||
<tr><td><img src="glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
|
|
@ -69,33 +69,33 @@
|
|||
<td class="tableHead" colspan=3>Line Coverage <span class="tableHeadSort"><img src="glass.png" width=10 height=14 alt="Sort by line coverage" title="Sort by line coverage" border=0></span></td>
|
||||
<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="raid/index.html">raid</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="amber.png" width=88 height=10 alt="88.3%"><img src="snow.png" width=12 height=10 alt="88.3%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerMed">88.3 %</td>
|
||||
<td class="coverNumMed">1555 / 1762</td>
|
||||
<td class="coverPerHi">92.9 %</td>
|
||||
<td class="coverNumHi">79 / 85</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="cmdline/index.html">cmdline</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="amber.png" width=89 height=10 alt="88.6%"><img src="snow.png" width=11 height=10 alt="88.6%"></td></tr></table>
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="amber.png" width=90 height=10 alt="89.7%"><img src="snow.png" width=10 height=10 alt="89.7%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerMed">88.6 %</td>
|
||||
<td class="coverNumMed">8491 / 9587</td>
|
||||
<td class="coverPerHi">95.0 %</td>
|
||||
<td class="coverNumHi">474 / 499</td>
|
||||
<td class="coverPerMed">89.7 %</td>
|
||||
<td class="coverNumMed">8598 / 9589</td>
|
||||
<td class="coverPerHi">96.6 %</td>
|
||||
<td class="coverNumHi">482 / 499</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="raid/index.html">raid</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="emerald.png" width=99 height=10 alt="99.3%"><img src="snow.png" width=1 height=10 alt="99.3%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">99.3 %</td>
|
||||
<td class="coverNumHi">1750 / 1762</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumHi">85 / 85</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="tommyds/index.html">tommyds</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="emerald.png" width=99 height=10 alt="99.8%"><img src="snow.png" width=1 height=10 alt="99.8%"></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="coverPerHi">99.8 %</td>
|
||||
<td class="coverNumHi">580 / 581</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumHi">581 / 581</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumHi">76 / 76</td>
|
||||
</tr>
|
||||
|
|
|
|||
|
|
@ -31,18 +31,18 @@
|
|||
<td class="headerValue">lcov.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntry">10626</td>
|
||||
<td class="headerCovTableEntry">11930</td>
|
||||
<td class="headerCovTableEntryMed">89.1 %</td>
|
||||
<td class="headerCovTableEntry">10929</td>
|
||||
<td class="headerCovTableEntry">11932</td>
|
||||
<td class="headerCovTableEntryHi">91.6 %</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Date:</td>
|
||||
<td class="headerValue">2016-11-06</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntry">629</td>
|
||||
<td class="headerCovTableEntry">643</td>
|
||||
<td class="headerCovTableEntry">660</td>
|
||||
<td class="headerCovTableEntryHi">95.3 %</td>
|
||||
<td class="headerCovTableEntryHi">97.4 %</td>
|
||||
</tr>
|
||||
<tr><td><img src="glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
|
|
@ -72,30 +72,30 @@
|
|||
<tr>
|
||||
<td class="coverFile"><a href="cmdline/index.html">cmdline</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="amber.png" width=89 height=10 alt="88.6%"><img src="snow.png" width=11 height=10 alt="88.6%"></td></tr></table>
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="amber.png" width=90 height=10 alt="89.7%"><img src="snow.png" width=10 height=10 alt="89.7%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerMed">88.6 %</td>
|
||||
<td class="coverNumMed">8491 / 9587</td>
|
||||
<td class="coverPerHi">95.0 %</td>
|
||||
<td class="coverNumHi">474 / 499</td>
|
||||
<td class="coverPerMed">89.7 %</td>
|
||||
<td class="coverNumMed">8598 / 9589</td>
|
||||
<td class="coverPerHi">96.6 %</td>
|
||||
<td class="coverNumHi">482 / 499</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="raid/index.html">raid</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="amber.png" width=88 height=10 alt="88.3%"><img src="snow.png" width=12 height=10 alt="88.3%"></td></tr></table>
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="emerald.png" width=99 height=10 alt="99.3%"><img src="snow.png" width=1 height=10 alt="99.3%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerMed">88.3 %</td>
|
||||
<td class="coverNumMed">1555 / 1762</td>
|
||||
<td class="coverPerHi">92.9 %</td>
|
||||
<td class="coverNumHi">79 / 85</td>
|
||||
<td class="coverPerHi">99.3 %</td>
|
||||
<td class="coverNumHi">1750 / 1762</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumHi">85 / 85</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="tommyds/index.html">tommyds</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="emerald.png" width=99 height=10 alt="99.8%"><img src="snow.png" width=1 height=10 alt="99.8%"></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="coverPerHi">99.8 %</td>
|
||||
<td class="coverNumHi">580 / 581</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumHi">581 / 581</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumHi">76 / 76</td>
|
||||
</tr>
|
||||
|
|
|
|||
|
|
@ -170,10 +170,10 @@
|
|||
<span class="lineNum"> 108 </span> : int i;
|
||||
<span class="lineNum"> 109 </span> :
|
||||
<span class="lineNum"> 110 </span> : (void)n; /* unused, but kept for clarity */
|
||||
<span class="lineNum"> 111 </span><span class="lineCov"> 207339 : assert(0 < r && r <= n);</span>
|
||||
<span class="lineNum"> 111 </span><span class="lineCov"> 207805 : assert(0 < r && r <= n);</span>
|
||||
<span class="lineNum"> 112 </span> :
|
||||
<span class="lineNum"> 113 </span><span class="lineCov"> 688129 : for (i = 0; i < r; ++i)</span>
|
||||
<span class="lineNum"> 114 </span><span class="lineCov"> 480790 : c[i] = i;</span>
|
||||
<span class="lineNum"> 113 </span><span class="lineCov"> 689192 : for (i = 0; i < r; ++i)</span>
|
||||
<span class="lineNum"> 114 </span><span class="lineCov"> 481387 : c[i] = i;</span>
|
||||
<span class="lineNum"> 115 </span> : }
|
||||
<span class="lineNum"> 116 </span> :
|
||||
<span class="lineNum"> 117 </span> : /**
|
||||
|
|
@ -182,19 +182,19 @@
|
|||
<span class="lineNum"> 120 </span> : */
|
||||
<span class="lineNum"> 121 </span> : static __always_inline int combination_next(int r, int n, int *c)
|
||||
<span class="lineNum"> 122 </span> : {
|
||||
<span class="lineNum"> 123 </span><span class="lineCov"> 52204 : int i = r - 1; /* present position */</span>
|
||||
<span class="lineNum"> 124 </span><span class="lineCov"> 52204 : int h = n; /* high limit for this position */</span>
|
||||
<span class="lineNum"> 123 </span><span class="lineCov"> 52183 : int i = r - 1; /* present position */</span>
|
||||
<span class="lineNum"> 124 </span><span class="lineCov"> 52183 : int h = n; /* high limit for this position */</span>
|
||||
<span class="lineNum"> 125 </span> :
|
||||
<span class="lineNum"> 126 </span> : recurse:
|
||||
<span class="lineNum"> 127 </span> : /* next element at position i */
|
||||
<span class="lineNum"> 128 </span><span class="lineCov"> 85077 : ++c[i];</span>
|
||||
<span class="lineNum"> 128 </span><span class="lineCov"> 85056 : ++c[i];</span>
|
||||
<span class="lineNum"> 129 </span> :
|
||||
<span class="lineNum"> 130 </span> : /* if the position has reached the max */
|
||||
<span class="lineNum"> 131 </span><span class="lineCov"> 85077 : if (c[i] >= h) {</span>
|
||||
<span class="lineNum"> 131 </span><span class="lineCov"> 85056 : if (c[i] >= h) {</span>
|
||||
<span class="lineNum"> 132 </span> :
|
||||
<span class="lineNum"> 133 </span> : /* if we are at the first level, we have finished */
|
||||
<span class="lineNum"> 134 </span><span class="lineCov"> 45035 : if (i == 0)</span>
|
||||
<span class="lineNum"> 135 </span><span class="lineCov"> 12162 : return 0;</span>
|
||||
<span class="lineNum"> 134 </span><span class="lineCov"> 45028 : if (i == 0)</span>
|
||||
<span class="lineNum"> 135 </span><span class="lineCov"> 12155 : return 0;</span>
|
||||
<span class="lineNum"> 136 </span> :
|
||||
<span class="lineNum"> 137 </span> : /* increase the previous position */
|
||||
<span class="lineNum"> 138 </span><span class="lineCov"> 32873 : --i;</span>
|
||||
|
|
@ -202,16 +202,16 @@
|
|||
<span class="lineNum"> 140 </span> : goto recurse;
|
||||
<span class="lineNum"> 141 </span> : }
|
||||
<span class="lineNum"> 142 </span> :
|
||||
<span class="lineNum"> 143 </span><span class="lineCov"> 40042 : ++i;</span>
|
||||
<span class="lineNum"> 143 </span><span class="lineCov"> 40028 : ++i;</span>
|
||||
<span class="lineNum"> 144 </span> :
|
||||
<span class="lineNum"> 145 </span> : /* initialize all the next positions, if any */
|
||||
<span class="lineNum"> 146 </span><span class="lineCov"> 62587 : while (i < r) {</span>
|
||||
<span class="lineNum"> 146 </span><span class="lineCov"> 62573 : while (i < r) {</span>
|
||||
<span class="lineNum"> 147 </span> : /* each position start at the next value of the previous one */
|
||||
<span class="lineNum"> 148 </span><span class="lineCov"> 22545 : c[i] = c[i - 1] + 1;</span>
|
||||
<span class="lineNum"> 149 </span><span class="lineCov"> 22545 : ++i;</span>
|
||||
<span class="lineNum"> 150 </span> : }
|
||||
<span class="lineNum"> 151 </span> :
|
||||
<span class="lineNum"> 152 </span><span class="lineCov"> 40042 : return 1;</span>
|
||||
<span class="lineNum"> 152 </span><span class="lineCov"> 40028 : return 1;</span>
|
||||
<span class="lineNum"> 153 </span> : }
|
||||
<span class="lineNum"> 154 </span> : #endif
|
||||
<span class="lineNum"> 155 </span> :
|
||||
|
|
|
|||
|
|
@ -31,18 +31,18 @@
|
|||
<td class="headerValue">lcov.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntry">53</td>
|
||||
<td class="headerCovTableEntry">64</td>
|
||||
<td class="headerCovTableEntry">76</td>
|
||||
<td class="headerCovTableEntryLo">69.7 %</td>
|
||||
<td class="headerCovTableEntryMed">84.2 %</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Date:</td>
|
||||
<td class="headerValue">2016-11-06</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntry">11</td>
|
||||
<td class="headerCovTableEntry">12</td>
|
||||
<td class="headerCovTableEntryHi">91.7 %</td>
|
||||
<td class="headerCovTableEntry">12</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
</tr>
|
||||
<tr><td><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
|
|
@ -61,51 +61,51 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="cpu.h.gcov.html#18">raid_cpuid</a></td>
|
||||
<td class="coverFnHi">1930</td>
|
||||
<td class="coverFnHi">2079</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="cpu.h.gcov.html#84">raid_cpu_match_sse</a></td>
|
||||
<td class="coverFnHi">1113</td>
|
||||
<td class="coverFnHi">1185</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="cpu.h.gcov.html#135">raid_cpu_has_ssse3</a></td>
|
||||
<td class="coverFnHi">551</td>
|
||||
<td class="coverFnHi">587</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="cpu.h.gcov.html#97">raid_cpu_match_avx</a></td>
|
||||
<td class="coverFnHi">287</td>
|
||||
<td class="coverFnHi">317</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="cpu.h.gcov.html#168">raid_cpu_has_avx2</a></td>
|
||||
<td class="coverFnHi">287</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="cpu.h.gcov.html#152">raid_cpu_has_crc32</a></td>
|
||||
<td class="coverFnHi">284</td>
|
||||
<td class="coverFnHi">317</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="cpu.h.gcov.html#116">raid_cpu_has_sse2</a></td>
|
||||
<td class="coverFnHi">278</td>
|
||||
<td class="coverFnHi">305</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="cpu.h.gcov.html#152">raid_cpu_has_crc32</a></td>
|
||||
<td class="coverFnHi">293</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="cpu.h.gcov.html#51">raid_cpu_info</a></td>
|
||||
<td class="coverFnHi">265</td>
|
||||
<td class="coverFnHi">277</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="cpu.h.gcov.html#216">raid_cpu_is_atom</a></td>
|
||||
<td class="coverFnHi">264</td>
|
||||
<td class="coverFnHi">273</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="cpu.h.gcov.html#249">raid_cpu_has_slowmult</a></td>
|
||||
<td class="coverFnHi">263</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="cpu.h.gcov.html#280">raid_cpu_has_slowextendedreg</a></td>
|
||||
<td class="coverFnHi">1</td>
|
||||
<td class="coverFnHi">269</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="cpu.h.gcov.html#36">raid_xgetbv</a></td>
|
||||
<td class="coverFnLo">0</td>
|
||||
<td class="coverFnHi">23</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="cpu.h.gcov.html#280">raid_cpu_has_slowextendedreg</a></td>
|
||||
<td class="coverFnHi">4</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
|
|
|
|||
|
|
@ -31,18 +31,18 @@
|
|||
<td class="headerValue">lcov.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntry">53</td>
|
||||
<td class="headerCovTableEntry">64</td>
|
||||
<td class="headerCovTableEntry">76</td>
|
||||
<td class="headerCovTableEntryLo">69.7 %</td>
|
||||
<td class="headerCovTableEntryMed">84.2 %</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Date:</td>
|
||||
<td class="headerValue">2016-11-06</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntry">11</td>
|
||||
<td class="headerCovTableEntry">12</td>
|
||||
<td class="headerCovTableEntryHi">91.7 %</td>
|
||||
<td class="headerCovTableEntry">12</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
</tr>
|
||||
<tr><td><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
|
|
@ -61,51 +61,51 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="cpu.h.gcov.html#168">raid_cpu_has_avx2</a></td>
|
||||
<td class="coverFnHi">287</td>
|
||||
<td class="coverFnHi">317</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="cpu.h.gcov.html#152">raid_cpu_has_crc32</a></td>
|
||||
<td class="coverFnHi">284</td>
|
||||
<td class="coverFnHi">293</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="cpu.h.gcov.html#280">raid_cpu_has_slowextendedreg</a></td>
|
||||
<td class="coverFnHi">1</td>
|
||||
<td class="coverFnHi">4</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="cpu.h.gcov.html#249">raid_cpu_has_slowmult</a></td>
|
||||
<td class="coverFnHi">263</td>
|
||||
<td class="coverFnHi">269</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="cpu.h.gcov.html#116">raid_cpu_has_sse2</a></td>
|
||||
<td class="coverFnHi">278</td>
|
||||
<td class="coverFnHi">305</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="cpu.h.gcov.html#135">raid_cpu_has_ssse3</a></td>
|
||||
<td class="coverFnHi">551</td>
|
||||
<td class="coverFnHi">587</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="cpu.h.gcov.html#51">raid_cpu_info</a></td>
|
||||
<td class="coverFnHi">265</td>
|
||||
<td class="coverFnHi">277</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="cpu.h.gcov.html#216">raid_cpu_is_atom</a></td>
|
||||
<td class="coverFnHi">264</td>
|
||||
<td class="coverFnHi">273</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="cpu.h.gcov.html#97">raid_cpu_match_avx</a></td>
|
||||
<td class="coverFnHi">287</td>
|
||||
<td class="coverFnHi">317</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="cpu.h.gcov.html#84">raid_cpu_match_sse</a></td>
|
||||
<td class="coverFnHi">1113</td>
|
||||
<td class="coverFnHi">1185</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="cpu.h.gcov.html#18">raid_cpuid</a></td>
|
||||
<td class="coverFnHi">1930</td>
|
||||
<td class="coverFnHi">2079</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="cpu.h.gcov.html#36">raid_xgetbv</a></td>
|
||||
<td class="coverFnLo">0</td>
|
||||
<td class="coverFnHi">23</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
|
|
|
|||
|
|
@ -31,18 +31,18 @@
|
|||
<td class="headerValue">lcov.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntry">53</td>
|
||||
<td class="headerCovTableEntry">64</td>
|
||||
<td class="headerCovTableEntry">76</td>
|
||||
<td class="headerCovTableEntryLo">69.7 %</td>
|
||||
<td class="headerCovTableEntryMed">84.2 %</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Date:</td>
|
||||
<td class="headerValue">2016-11-06</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntry">11</td>
|
||||
<td class="headerCovTableEntry">12</td>
|
||||
<td class="headerCovTableEntryHi">91.7 %</td>
|
||||
<td class="headerCovTableEntry">12</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
</tr>
|
||||
<tr><td><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
|
|
@ -79,9 +79,9 @@
|
|||
<span class="lineNum"> 17 </span> :
|
||||
<a name="18"><span class="lineNum"> 18 </span> : #ifdef CONFIG_X86</a>
|
||||
<span class="lineNum"> 19 </span> :
|
||||
<span class="lineNum"> 20 </span><span class="lineCov"> 1930 : static inline void raid_cpuid(uint32_t func_eax, uint32_t sub_ecx, uint32_t *reg)</span>
|
||||
<span class="lineNum"> 20 </span><span class="lineCov"> 2079 : static inline void raid_cpuid(uint32_t func_eax, uint32_t sub_ecx, uint32_t *reg)</span>
|
||||
<span class="lineNum"> 21 </span> : {
|
||||
<span class="lineNum"> 22 </span><span class="lineCov"> 1930 : asm volatile (</span>
|
||||
<span class="lineNum"> 22 </span><span class="lineCov"> 2079 : asm volatile (</span>
|
||||
<span class="lineNum"> 23 </span> : #if defined(__i386__) && defined(__PIC__)
|
||||
<span class="lineNum"> 24 </span> : /* allow compilation in PIC mode saving ebx */
|
||||
<span class="lineNum"> 25 </span> : "xchgl %%ebx, %1\n"
|
||||
|
|
@ -91,47 +91,47 @@
|
|||
<span class="lineNum"> 29 </span> : : "0" (func_eax), "2" (sub_ecx)
|
||||
<span class="lineNum"> 30 </span> : #else
|
||||
<span class="lineNum"> 31 </span> : "cpuid\n"
|
||||
<span class="lineNum"> 32 </span><span class="lineCov"> 1930 : : "=a" (reg[0]), "=b" (reg[1]), "=c" (reg[2]), "=d" (reg[3])</span>
|
||||
<span class="lineNum"> 32 </span><span class="lineCov"> 2079 : : "=a" (reg[0]), "=b" (reg[1]), "=c" (reg[2]), "=d" (reg[3])</span>
|
||||
<span class="lineNum"> 33 </span> : : "0" (func_eax), "2" (sub_ecx)
|
||||
<span class="lineNum"> 34 </span> : #endif
|
||||
<span class="lineNum"> 35 </span> : );
|
||||
<a name="36"><span class="lineNum"> 36 </span><span class="lineCov"> 1930 : }</span></a>
|
||||
<a name="36"><span class="lineNum"> 36 </span><span class="lineCov"> 2079 : }</span></a>
|
||||
<span class="lineNum"> 37 </span> :
|
||||
<span class="lineNum"> 38 </span><span class="lineNoCov"> 0 : static inline void raid_xgetbv(uint32_t* reg)</span>
|
||||
<span class="lineNum"> 38 </span><span class="lineCov"> 23 : static inline void raid_xgetbv(uint32_t* reg)</span>
|
||||
<span class="lineNum"> 39 </span> : {
|
||||
<span class="lineNum"> 40 </span> : /* get the value of the Extended Control Register ecx=0 */
|
||||
<span class="lineNum"> 41 </span><span class="lineNoCov"> 0 : asm volatile (</span>
|
||||
<span class="lineNum"> 41 </span><span class="lineCov"> 23 : asm volatile (</span>
|
||||
<span class="lineNum"> 42 </span> : /* uses a direct encoding of the XGETBV instruction as only recent */
|
||||
<span class="lineNum"> 43 </span> : /* assemblers support it. */
|
||||
<span class="lineNum"> 44 </span> : /* the next line is equivalent at: "xgetbv\n" */
|
||||
<span class="lineNum"> 45 </span> : ".byte 0x0f, 0x01, 0xd0\n"
|
||||
<span class="lineNum"> 46 </span><span class="lineNoCov"> 0 : : "=a" (reg[0]), "=d" (reg[3])</span>
|
||||
<span class="lineNum"> 46 </span><span class="lineCov"> 23 : : "=a" (reg[0]), "=d" (reg[3])</span>
|
||||
<span class="lineNum"> 47 </span> : : "c" (0)
|
||||
<span class="lineNum"> 48 </span> : );
|
||||
<span class="lineNum"> 49 </span><span class="lineNoCov"> 0 : }</span>
|
||||
<span class="lineNum"> 49 </span><span class="lineCov"> 23 : }</span>
|
||||
<span class="lineNum"> 50 </span> :
|
||||
<a name="51"><span class="lineNum"> 51 </span> : #define CPU_VENDOR_MAX 13</a>
|
||||
<span class="lineNum"> 52 </span> :
|
||||
<span class="lineNum"> 53 </span><span class="lineCov"> 265 : static inline void raid_cpu_info(char *vendor, unsigned *family, unsigned *model)</span>
|
||||
<span class="lineNum"> 53 </span><span class="lineCov"> 277 : static inline void raid_cpu_info(char *vendor, unsigned *family, unsigned *model)</span>
|
||||
<span class="lineNum"> 54 </span> : {
|
||||
<span class="lineNum"> 55 </span> : uint32_t reg[4];
|
||||
<span class="lineNum"> 56 </span> : unsigned f, ef, m, em;
|
||||
<span class="lineNum"> 57 </span> :
|
||||
<span class="lineNum"> 58 </span><span class="lineCov"> 265 : raid_cpuid(0, 0, reg);</span>
|
||||
<span class="lineNum"> 58 </span><span class="lineCov"> 277 : raid_cpuid(0, 0, reg);</span>
|
||||
<span class="lineNum"> 59 </span> :
|
||||
<span class="lineNum"> 60 </span><span class="lineCov"> 265 : ((uint32_t*)vendor)[0] = reg[1];</span>
|
||||
<span class="lineNum"> 61 </span><span class="lineCov"> 265 : ((uint32_t*)vendor)[1] = reg[3];</span>
|
||||
<span class="lineNum"> 62 </span><span class="lineCov"> 265 : ((uint32_t*)vendor)[2] = reg[2];</span>
|
||||
<span class="lineNum"> 63 </span><span class="lineCov"> 265 : vendor[12] = 0;</span>
|
||||
<span class="lineNum"> 60 </span><span class="lineCov"> 277 : ((uint32_t*)vendor)[0] = reg[1];</span>
|
||||
<span class="lineNum"> 61 </span><span class="lineCov"> 277 : ((uint32_t*)vendor)[1] = reg[3];</span>
|
||||
<span class="lineNum"> 62 </span><span class="lineCov"> 277 : ((uint32_t*)vendor)[2] = reg[2];</span>
|
||||
<span class="lineNum"> 63 </span><span class="lineCov"> 277 : vendor[12] = 0;</span>
|
||||
<span class="lineNum"> 64 </span> :
|
||||
<span class="lineNum"> 65 </span><span class="lineCov"> 265 : raid_cpuid(1, 0, reg);</span>
|
||||
<span class="lineNum"> 65 </span><span class="lineCov"> 277 : raid_cpuid(1, 0, reg);</span>
|
||||
<span class="lineNum"> 66 </span> :
|
||||
<span class="lineNum"> 67 </span><span class="lineCov"> 265 : f = (reg[0] >> 8) & 0xF;</span>
|
||||
<span class="lineNum"> 68 </span><span class="lineCov"> 265 : ef = (reg[0] >> 20) & 0xFF;</span>
|
||||
<span class="lineNum"> 69 </span><span class="lineCov"> 265 : m = (reg[0] >> 4) & 0xF;</span>
|
||||
<span class="lineNum"> 70 </span><span class="lineCov"> 265 : em = (reg[0] >> 16) & 0xF;</span>
|
||||
<span class="lineNum"> 67 </span><span class="lineCov"> 277 : f = (reg[0] >> 8) & 0xF;</span>
|
||||
<span class="lineNum"> 68 </span><span class="lineCov"> 277 : ef = (reg[0] >> 20) & 0xFF;</span>
|
||||
<span class="lineNum"> 69 </span><span class="lineCov"> 277 : m = (reg[0] >> 4) & 0xF;</span>
|
||||
<span class="lineNum"> 70 </span><span class="lineCov"> 277 : em = (reg[0] >> 16) & 0xF;</span>
|
||||
<span class="lineNum"> 71 </span> :
|
||||
<span class="lineNum"> 72 </span><span class="lineCov"> 265 : if (strcmp(vendor, "AuthenticAMD") == 0) {</span>
|
||||
<span class="lineNum"> 72 </span><span class="lineCov"> 277 : if (strcmp(vendor, "AuthenticAMD") == 0) {</span>
|
||||
<span class="lineNum"> 73 </span><span class="lineNoCov"> 0 : if (f < 15) {</span>
|
||||
<span class="lineNum"> 74 </span><span class="lineNoCov"> 0 : *family = f;</span>
|
||||
<span class="lineNum"> 75 </span><span class="lineNoCov"> 0 : *model = m;</span>
|
||||
|
|
@ -140,44 +140,44 @@
|
|||
<span class="lineNum"> 78 </span><span class="lineNoCov"> 0 : *model = m + (em << 4);</span>
|
||||
<span class="lineNum"> 79 </span> : }
|
||||
<span class="lineNum"> 80 </span> : } else {
|
||||
<span class="lineNum"> 81 </span><span class="lineCov"> 265 : *family = f + ef;</span>
|
||||
<span class="lineNum"> 82 </span><span class="lineCov"> 265 : *model = m + (em << 4);</span>
|
||||
<span class="lineNum"> 81 </span><span class="lineCov"> 277 : *family = f + ef;</span>
|
||||
<span class="lineNum"> 82 </span><span class="lineCov"> 277 : *model = m + (em << 4);</span>
|
||||
<span class="lineNum"> 83 </span> : }
|
||||
<a name="84"><span class="lineNum"> 84 </span><span class="lineCov"> 265 : }</span></a>
|
||||
<a name="84"><span class="lineNum"> 84 </span><span class="lineCov"> 277 : }</span></a>
|
||||
<span class="lineNum"> 85 </span> :
|
||||
<span class="lineNum"> 86 </span><span class="lineCov"> 1113 : static inline int raid_cpu_match_sse(uint32_t cpuid_1_ecx, uint32_t cpuid_1_edx)</span>
|
||||
<span class="lineNum"> 86 </span><span class="lineCov"> 1185 : static inline int raid_cpu_match_sse(uint32_t cpuid_1_ecx, uint32_t cpuid_1_edx)</span>
|
||||
<span class="lineNum"> 87 </span> : {
|
||||
<span class="lineNum"> 88 </span> : uint32_t reg[4];
|
||||
<span class="lineNum"> 89 </span> :
|
||||
<span class="lineNum"> 90 </span><span class="lineCov"> 1113 : raid_cpuid(1, 0, reg);</span>
|
||||
<span class="lineNum"> 91 </span><span class="lineCov"> 1113 : if ((reg[2] & cpuid_1_ecx) != cpuid_1_ecx)</span>
|
||||
<span class="lineNum"> 92 </span><span class="lineNoCov"> 0 : return 0;</span>
|
||||
<span class="lineNum"> 93 </span><span class="lineCov"> 1113 : if ((reg[3] & cpuid_1_edx) != cpuid_1_edx)</span>
|
||||
<span class="lineNum"> 90 </span><span class="lineCov"> 1185 : raid_cpuid(1, 0, reg);</span>
|
||||
<span class="lineNum"> 91 </span><span class="lineCov"> 1185 : if ((reg[2] & cpuid_1_ecx) != cpuid_1_ecx)</span>
|
||||
<span class="lineNum"> 92 </span><span class="lineCov"> 18 : return 0;</span>
|
||||
<span class="lineNum"> 93 </span><span class="lineCov"> 1167 : if ((reg[3] & cpuid_1_edx) != cpuid_1_edx)</span>
|
||||
<span class="lineNum"> 94 </span><span class="lineNoCov"> 0 : return 0;</span>
|
||||
<span class="lineNum"> 95 </span> :
|
||||
<span class="lineNum"> 96 </span><span class="lineCov"> 1113 : return 1;</span>
|
||||
<span class="lineNum"> 96 </span><span class="lineCov"> 1167 : return 1;</span>
|
||||
<a name="97"><span class="lineNum"> 97 </span> : }</a>
|
||||
<span class="lineNum"> 98 </span> :
|
||||
<span class="lineNum"> 99 </span><span class="lineCov"> 287 : static inline int raid_cpu_match_avx(uint32_t cpuid_1_ecx, uint32_t cpuid_7_ebx, uint32_t xcr0)</span>
|
||||
<span class="lineNum"> 99 </span><span class="lineCov"> 317 : static inline int raid_cpu_match_avx(uint32_t cpuid_1_ecx, uint32_t cpuid_7_ebx, uint32_t xcr0)</span>
|
||||
<span class="lineNum"> 100 </span> : {
|
||||
<span class="lineNum"> 101 </span> : uint32_t reg[4];
|
||||
<span class="lineNum"> 102 </span> :
|
||||
<span class="lineNum"> 103 </span><span class="lineCov"> 287 : raid_cpuid(1, 0, reg);</span>
|
||||
<span class="lineNum"> 104 </span><span class="lineCov"> 287 : if ((reg[2] & cpuid_1_ecx) != cpuid_1_ecx)</span>
|
||||
<span class="lineNum"> 105 </span><span class="lineCov"> 287 : return 0;</span>
|
||||
<span class="lineNum"> 103 </span><span class="lineCov"> 317 : raid_cpuid(1, 0, reg);</span>
|
||||
<span class="lineNum"> 104 </span><span class="lineCov"> 317 : if ((reg[2] & cpuid_1_ecx) != cpuid_1_ecx)</span>
|
||||
<span class="lineNum"> 105 </span><span class="lineCov"> 294 : return 0;</span>
|
||||
<span class="lineNum"> 106 </span> :
|
||||
<span class="lineNum"> 107 </span><span class="lineNoCov"> 0 : raid_xgetbv(reg);</span>
|
||||
<span class="lineNum"> 108 </span><span class="lineNoCov"> 0 : if ((reg[0] & xcr0) != xcr0)</span>
|
||||
<span class="lineNum"> 107 </span><span class="lineCov"> 23 : raid_xgetbv(reg);</span>
|
||||
<span class="lineNum"> 108 </span><span class="lineCov"> 23 : if ((reg[0] & xcr0) != xcr0)</span>
|
||||
<span class="lineNum"> 109 </span><span class="lineNoCov"> 0 : return 0;</span>
|
||||
<span class="lineNum"> 110 </span> :
|
||||
<span class="lineNum"> 111 </span><span class="lineNoCov"> 0 : raid_cpuid(7, 0, reg);</span>
|
||||
<span class="lineNum"> 112 </span><span class="lineNoCov"> 0 : if ((reg[1] & cpuid_7_ebx) != cpuid_7_ebx)</span>
|
||||
<span class="lineNum"> 111 </span><span class="lineCov"> 23 : raid_cpuid(7, 0, reg);</span>
|
||||
<span class="lineNum"> 112 </span><span class="lineCov"> 23 : if ((reg[1] & cpuid_7_ebx) != cpuid_7_ebx)</span>
|
||||
<span class="lineNum"> 113 </span><span class="lineNoCov"> 0 : return 0;</span>
|
||||
<span class="lineNum"> 114 </span> :
|
||||
<span class="lineNum"> 115 </span><span class="lineNoCov"> 0 : return 1;</span>
|
||||
<span class="lineNum"> 115 </span><span class="lineCov"> 23 : return 1;</span>
|
||||
<a name="116"><span class="lineNum"> 116 </span> : }</a>
|
||||
<span class="lineNum"> 117 </span> :
|
||||
<span class="lineNum"> 118 </span><span class="lineCov"> 278 : static inline int raid_cpu_has_sse2(void)</span>
|
||||
<span class="lineNum"> 118 </span><span class="lineCov"> 305 : static inline int raid_cpu_has_sse2(void)</span>
|
||||
<span class="lineNum"> 119 </span> : {
|
||||
<span class="lineNum"> 120 </span> : /*
|
||||
<span class="lineNum"> 121 </span> : * Intel® 64 and IA-32 Architectures Software Developer's Manual
|
||||
|
|
@ -191,12 +191,12 @@
|
|||
<span class="lineNum"> 129 </span> : * 2. Check that the processor supports the SSE and/or SSE2 extensions (true if
|
||||
<span class="lineNum"> 130 </span> : * CPUID.01H:EDX.SSE[bit 25] = 1 and/or CPUID.01H:EDX.SSE2[bit 26] = 1).
|
||||
<span class="lineNum"> 131 </span> : */
|
||||
<span class="lineNum"> 132 </span><span class="lineCov"> 278 : return raid_cpu_match_sse(</span>
|
||||
<span class="lineNum"> 132 </span><span class="lineCov"> 305 : return raid_cpu_match_sse(</span>
|
||||
<span class="lineNum"> 133 </span> : 0,
|
||||
<span class="lineNum"> 134 </span> : 1 << 26); /* SSE2 */
|
||||
<a name="135"><span class="lineNum"> 135 </span> : }</a>
|
||||
<span class="lineNum"> 136 </span> :
|
||||
<span class="lineNum"> 137 </span><span class="lineCov"> 551 : static inline int raid_cpu_has_ssse3(void)</span>
|
||||
<span class="lineNum"> 137 </span><span class="lineCov"> 587 : static inline int raid_cpu_has_ssse3(void)</span>
|
||||
<span class="lineNum"> 138 </span> : {
|
||||
<span class="lineNum"> 139 </span> : /*
|
||||
<span class="lineNum"> 140 </span> : * Intel® 64 and IA-32 Architectures Software Developer's Manual
|
||||
|
|
@ -208,12 +208,12 @@
|
|||
<span class="lineNum"> 146 </span> : * Next, use the additional step provided below:
|
||||
<span class="lineNum"> 147 </span> : * Check that the processor supports SSSE3 (if CPUID.01H:ECX.SSSE3[bit 9] = 1).
|
||||
<span class="lineNum"> 148 </span> : */
|
||||
<span class="lineNum"> 149 </span><span class="lineCov"> 551 : return raid_cpu_match_sse(</span>
|
||||
<span class="lineNum"> 149 </span><span class="lineCov"> 587 : return raid_cpu_match_sse(</span>
|
||||
<span class="lineNum"> 150 </span> : 1 << 9, /* SSSE3 */
|
||||
<span class="lineNum"> 151 </span> : 1 << 26); /* SSE2 */
|
||||
<a name="152"><span class="lineNum"> 152 </span> : }</a>
|
||||
<span class="lineNum"> 153 </span> :
|
||||
<span class="lineNum"> 154 </span><span class="lineCov"> 284 : static inline int raid_cpu_has_crc32(void)</span>
|
||||
<span class="lineNum"> 154 </span><span class="lineCov"> 293 : static inline int raid_cpu_has_crc32(void)</span>
|
||||
<span class="lineNum"> 155 </span> : {
|
||||
<span class="lineNum"> 156 </span> : /*
|
||||
<span class="lineNum"> 157 </span> : * Intel® 64 and IA-32 Architectures Software Developer's Manual
|
||||
|
|
@ -224,12 +224,12 @@
|
|||
<span class="lineNum"> 162 </span> : * Before an application attempts to use the CRC32 instruction, it must check
|
||||
<span class="lineNum"> 163 </span> : * that the processor supports SSE4.2 (if CPUID.01H:ECX.SSE4_2[bit 20] = 1).
|
||||
<span class="lineNum"> 164 </span> : */
|
||||
<span class="lineNum"> 165 </span><span class="lineCov"> 284 : return raid_cpu_match_sse(</span>
|
||||
<span class="lineNum"> 165 </span><span class="lineCov"> 293 : return raid_cpu_match_sse(</span>
|
||||
<span class="lineNum"> 166 </span> : 1 << 20, /* CRC32 */
|
||||
<span class="lineNum"> 167 </span> : 0);
|
||||
<a name="168"><span class="lineNum"> 168 </span> : }</a>
|
||||
<span class="lineNum"> 169 </span> :
|
||||
<span class="lineNum"> 170 </span><span class="lineCov"> 287 : static inline int raid_cpu_has_avx2(void)</span>
|
||||
<span class="lineNum"> 170 </span><span class="lineCov"> 317 : static inline int raid_cpu_has_avx2(void)</span>
|
||||
<span class="lineNum"> 171 </span> : {
|
||||
<span class="lineNum"> 172 </span> : /*
|
||||
<span class="lineNum"> 173 </span> : * Intel Architecture Instruction Set Extensions Programming Reference
|
||||
|
|
@ -246,7 +246,7 @@
|
|||
<span class="lineNum"> 184 </span> : * Application Software must identify that hardware supports AVX, after that it must
|
||||
<span class="lineNum"> 185 </span> : * also detect support for AVX2 by checking CPUID.(EAX=07H, ECX=0H):EBX.AVX2[bit 5].
|
||||
<span class="lineNum"> 186 </span> : */
|
||||
<span class="lineNum"> 187 </span><span class="lineCov"> 287 : return raid_cpu_match_avx(</span>
|
||||
<span class="lineNum"> 187 </span><span class="lineCov"> 317 : return raid_cpu_match_avx(</span>
|
||||
<span class="lineNum"> 188 </span> : (1 << 27) | (1 << 28), /* OSXSAVE and AVX */
|
||||
<span class="lineNum"> 189 </span> : 1 << 5, /* AVX2 */
|
||||
<span class="lineNum"> 190 </span> : 3 << 1); /* OS saves XMM and YMM registers */
|
||||
|
|
@ -277,10 +277,10 @@
|
|||
<span class="lineNum"> 215 </span> : /**
|
||||
<a name="216"><span class="lineNum"> 216 </span> : * Check if it's an Intel Atom CPU.</a>
|
||||
<span class="lineNum"> 217 </span> : */
|
||||
<span class="lineNum"> 218 </span><span class="lineCov"> 264 : static inline int raid_cpu_is_atom(unsigned family, unsigned model)</span>
|
||||
<span class="lineNum"> 218 </span><span class="lineCov"> 273 : static inline int raid_cpu_is_atom(unsigned family, unsigned model)</span>
|
||||
<span class="lineNum"> 219 </span> : {
|
||||
<span class="lineNum"> 220 </span><span class="lineCov"> 264 : if (family != 6)</span>
|
||||
<span class="lineNum"> 221 </span><span class="lineNoCov"> 0 : return 0;</span>
|
||||
<span class="lineNum"> 220 </span><span class="lineCov"> 273 : if (family != 6)</span>
|
||||
<span class="lineNum"> 221 </span><span class="lineCov"> 3 : return 0;</span>
|
||||
<span class="lineNum"> 222 </span> :
|
||||
<span class="lineNum"> 223 </span> : /*
|
||||
<span class="lineNum"> 224 </span> : * x86 Architecture CPUID
|
||||
|
|
@ -300,17 +300,17 @@
|
|||
<span class="lineNum"> 238 </span> : * 4D (77) Atom 8C (22 nm) 4 MB L2 (AVN)
|
||||
<span class="lineNum"> 239 </span> : * ?? Atom ?C (14 nm) ? MB L2 (DVN)
|
||||
<span class="lineNum"> 240 </span> : */
|
||||
<span class="lineNum"> 241 </span><span class="lineCov"> 528 : return model == 28 || model == 38 || model == 54</span>
|
||||
<span class="lineNum"> 242 </span><span class="lineCov"> 264 : || model == 39 || model == 53 || model == 74</span>
|
||||
<span class="lineNum"> 243 </span><span class="lineCov"> 264 : || model == 90 || model == 55 || model == 76</span>
|
||||
<span class="lineNum"> 244 </span><span class="lineCov"> 528 : || model == 93 || model == 77;</span>
|
||||
<span class="lineNum"> 241 </span><span class="lineCov"> 540 : return model == 28 || model == 38 || model == 54</span>
|
||||
<span class="lineNum"> 242 </span><span class="lineCov"> 270 : || model == 39 || model == 53 || model == 74</span>
|
||||
<span class="lineNum"> 243 </span><span class="lineCov"> 270 : || model == 90 || model == 55 || model == 76</span>
|
||||
<span class="lineNum"> 244 </span><span class="lineCov"> 540 : || model == 93 || model == 77;</span>
|
||||
<span class="lineNum"> 245 </span> : }
|
||||
<span class="lineNum"> 246 </span> :
|
||||
<span class="lineNum"> 247 </span> : /**
|
||||
<span class="lineNum"> 248 </span> : * Check if the processor has a slow MULT implementation.
|
||||
<a name="249"><span class="lineNum"> 249 </span> : * If yes, it's better to use a hash not based on multiplication.</a>
|
||||
<span class="lineNum"> 250 </span> : */
|
||||
<span class="lineNum"> 251 </span><span class="lineCov"> 263 : static inline int raid_cpu_has_slowmult(void)</span>
|
||||
<span class="lineNum"> 251 </span><span class="lineCov"> 269 : static inline int raid_cpu_has_slowmult(void)</span>
|
||||
<span class="lineNum"> 252 </span> : {
|
||||
<span class="lineNum"> 253 </span> : char vendor[CPU_VENDOR_MAX];
|
||||
<span class="lineNum"> 254 </span> : unsigned family;
|
||||
|
|
@ -320,9 +320,9 @@
|
|||
<span class="lineNum"> 258 </span> : * In some cases Murmur3 based on MUL instruction,
|
||||
<span class="lineNum"> 259 </span> : * is a LOT slower than Spooky2 based on SHIFTs.
|
||||
<span class="lineNum"> 260 </span> : */
|
||||
<span class="lineNum"> 261 </span><span class="lineCov"> 263 : raid_cpu_info(vendor, &family, &model);</span>
|
||||
<span class="lineNum"> 261 </span><span class="lineCov"> 269 : raid_cpu_info(vendor, &family, &model);</span>
|
||||
<span class="lineNum"> 262 </span> :
|
||||
<span class="lineNum"> 263 </span><span class="lineCov"> 263 : if (strcmp(vendor, "GenuineIntel") == 0) {</span>
|
||||
<span class="lineNum"> 263 </span><span class="lineCov"> 269 : if (strcmp(vendor, "GenuineIntel") == 0) {</span>
|
||||
<span class="lineNum"> 264 </span> : /*
|
||||
<span class="lineNum"> 265 </span> : * Intel Atom (Model 28)
|
||||
<span class="lineNum"> 266 </span> : * murmur3:378 MB/s, spooky2:3413 MB/s (x86)
|
||||
|
|
@ -330,18 +330,18 @@
|
|||
<span class="lineNum"> 268 </span> : * Intel Atom (Model 77)
|
||||
<span class="lineNum"> 269 </span> : * murmur3:1311 MB/s, spooky2:4056 MB/s (x64)
|
||||
<span class="lineNum"> 270 </span> : */
|
||||
<span class="lineNum"> 271 </span><span class="lineCov"> 263 : if (raid_cpu_is_atom(family, model))</span>
|
||||
<span class="lineNum"> 271 </span><span class="lineCov"> 269 : if (raid_cpu_is_atom(family, model))</span>
|
||||
<span class="lineNum"> 272 </span><span class="lineNoCov"> 0 : return 1;</span>
|
||||
<span class="lineNum"> 273 </span> : }
|
||||
<span class="lineNum"> 274 </span> :
|
||||
<span class="lineNum"> 275 </span><span class="lineCov"> 263 : return 0;</span>
|
||||
<span class="lineNum"> 275 </span><span class="lineCov"> 269 : return 0;</span>
|
||||
<span class="lineNum"> 276 </span> : }
|
||||
<span class="lineNum"> 277 </span> :
|
||||
<span class="lineNum"> 278 </span> : /**
|
||||
<span class="lineNum"> 279 </span> : * Check if the processor has a slow extended set of SSE registers.
|
||||
<a name="280"><span class="lineNum"> 280 </span> : * If yes, it's better to limit the unroll to the firsrt 8 registers.</a>
|
||||
<span class="lineNum"> 281 </span> : */
|
||||
<span class="lineNum"> 282 </span><span class="lineCov"> 1 : static inline int raid_cpu_has_slowextendedreg(void)</span>
|
||||
<span class="lineNum"> 282 </span><span class="lineCov"> 4 : static inline int raid_cpu_has_slowextendedreg(void)</span>
|
||||
<span class="lineNum"> 283 </span> : {
|
||||
<span class="lineNum"> 284 </span> : char vendor[CPU_VENDOR_MAX];
|
||||
<span class="lineNum"> 285 </span> : unsigned family;
|
||||
|
|
@ -352,9 +352,9 @@
|
|||
<span class="lineNum"> 290 </span> : * is a LITTLE slower than the one using only the first 8 registers.
|
||||
<span class="lineNum"> 291 </span> : * This doesn't happen for PARZ.
|
||||
<span class="lineNum"> 292 </span> : */
|
||||
<span class="lineNum"> 293 </span><span class="lineCov"> 1 : raid_cpu_info(vendor, &family, &model);</span>
|
||||
<span class="lineNum"> 293 </span><span class="lineCov"> 4 : raid_cpu_info(vendor, &family, &model);</span>
|
||||
<span class="lineNum"> 294 </span> :
|
||||
<span class="lineNum"> 295 </span><span class="lineCov"> 1 : if (strcmp(vendor, "AuthenticAMD") == 0) {</span>
|
||||
<span class="lineNum"> 295 </span><span class="lineCov"> 4 : if (strcmp(vendor, "AuthenticAMD") == 0) {</span>
|
||||
<span class="lineNum"> 296 </span> : /*
|
||||
<span class="lineNum"> 297 </span> : * AMD Bulldozer
|
||||
<span class="lineNum"> 298 </span> : * par2_sse2:4922 MB/s, par2_sse2e:4465 MB/s
|
||||
|
|
@ -363,7 +363,7 @@
|
|||
<span class="lineNum"> 301 </span><span class="lineNoCov"> 0 : return 1;</span>
|
||||
<span class="lineNum"> 302 </span> : }
|
||||
<span class="lineNum"> 303 </span> :
|
||||
<span class="lineNum"> 304 </span><span class="lineCov"> 1 : if (strcmp(vendor, "GenuineIntel") == 0) {</span>
|
||||
<span class="lineNum"> 304 </span><span class="lineCov"> 4 : if (strcmp(vendor, "GenuineIntel") == 0) {</span>
|
||||
<span class="lineNum"> 305 </span> : /*
|
||||
<span class="lineNum"> 306 </span> : * Intel Atom (Model 77)
|
||||
<span class="lineNum"> 307 </span> : * par2_sse2:5686 MB/s, par2_sse2e:5250 MB/s
|
||||
|
|
@ -381,11 +381,11 @@
|
|||
<span class="lineNum"> 319 </span> : * par5_sse3:910 MB/s, par5_sse3e:675 MB/s
|
||||
<span class="lineNum"> 320 </span> : * par6_sse3:720 MB/s, par6_sse3e:534 MB/s
|
||||
<span class="lineNum"> 321 </span> : */
|
||||
<span class="lineNum"> 322 </span><span class="lineCov"> 1 : if (raid_cpu_is_atom(family, model))</span>
|
||||
<span class="lineNum"> 322 </span><span class="lineCov"> 4 : if (raid_cpu_is_atom(family, model))</span>
|
||||
<span class="lineNum"> 323 </span><span class="lineNoCov"> 0 : return 1;</span>
|
||||
<span class="lineNum"> 324 </span> : }
|
||||
<span class="lineNum"> 325 </span> :
|
||||
<span class="lineNum"> 326 </span><span class="lineCov"> 1 : return 0;</span>
|
||||
<span class="lineNum"> 326 </span><span class="lineCov"> 4 : return 0;</span>
|
||||
<span class="lineNum"> 327 </span> : }
|
||||
<span class="lineNum"> 328 </span> : #endif
|
||||
<span class="lineNum"> 329 </span> :
|
||||
|
|
|
|||
|
|
@ -88,7 +88,7 @@
|
|||
<span class="lineNum"> 26 </span> : */
|
||||
<span class="lineNum"> 27 </span> : static __always_inline uint8_t mul(uint8_t a, uint8_t b)
|
||||
<span class="lineNum"> 28 </span> : {
|
||||
<span class="lineNum"> 29 </span><span class="lineCov"> 20945506 : return gfmul[a][b];</span>
|
||||
<span class="lineNum"> 29 </span><span class="lineCov"> 23795594 : return gfmul[a][b];</span>
|
||||
<span class="lineNum"> 30 </span> : }
|
||||
<span class="lineNum"> 31 </span> :
|
||||
<span class="lineNum"> 32 </span> : /*
|
||||
|
|
@ -97,9 +97,9 @@
|
|||
<span class="lineNum"> 35 </span> : */
|
||||
<span class="lineNum"> 36 </span> : static __always_inline uint8_t inv(uint8_t v)
|
||||
<span class="lineNum"> 37 </span> : {
|
||||
<span class="lineNum"> 38 </span><span class="lineCov"> 559286 : BUG_ON(v == 0); /* division by zero */</span>
|
||||
<span class="lineNum"> 38 </span><span class="lineCov"> 635882 : BUG_ON(v == 0); /* division by zero */</span>
|
||||
<span class="lineNum"> 39 </span> :
|
||||
<span class="lineNum"> 40 </span><span class="lineCov"> 559286 : return gfinv[v];</span>
|
||||
<span class="lineNum"> 40 </span><span class="lineCov"> 635882 : return gfinv[v];</span>
|
||||
<span class="lineNum"> 41 </span> : }
|
||||
<span class="lineNum"> 42 </span> :
|
||||
<span class="lineNum"> 43 </span> : /*
|
||||
|
|
@ -117,7 +117,7 @@
|
|||
<span class="lineNum"> 55 </span> : */
|
||||
<span class="lineNum"> 56 </span> : static __always_inline const uint8_t *table(uint8_t v)
|
||||
<span class="lineNum"> 57 </span> : {
|
||||
<span class="lineNum"> 58 </span><span class="lineCov"> 407657 : return gfmul[v];</span>
|
||||
<span class="lineNum"> 58 </span><span class="lineCov"> 409825 : return gfmul[v];</span>
|
||||
<span class="lineNum"> 59 </span> : }
|
||||
<span class="lineNum"> 60 </span> :
|
||||
<span class="lineNum"> 61 </span> : /*
|
||||
|
|
@ -125,7 +125,7 @@
|
|||
<span class="lineNum"> 63 </span> : */
|
||||
<span class="lineNum"> 64 </span> : static __always_inline uint8_t A(int p, int d)
|
||||
<span class="lineNum"> 65 </span> : {
|
||||
<span class="lineNum"> 66 </span><span class="lineCov"> 2283216 : return gfgen[p][d];</span>
|
||||
<span class="lineNum"> 66 </span><span class="lineCov"> 2605358 : return gfgen[p][d];</span>
|
||||
<span class="lineNum"> 67 </span> : }
|
||||
<span class="lineNum"> 68 </span> :
|
||||
<span class="lineNum"> 69 </span> : /*
|
||||
|
|
@ -148,12 +148,12 @@
|
|||
<span class="lineNum"> 86 </span> : */
|
||||
<span class="lineNum"> 87 </span> : static __always_inline uint32_t x2_32(uint32_t v)
|
||||
<span class="lineNum"> 88 </span> : {
|
||||
<span class="lineNum"> 89 </span><span class="lineCov"> 9180992 : uint32_t mask = v & 0x80808080U;</span>
|
||||
<span class="lineNum"> 89 </span><span class="lineCov"> 33036096 : uint32_t mask = v & 0x80808080U;</span>
|
||||
<span class="lineNum"> 90 </span> :
|
||||
<span class="lineNum"> 91 </span><span class="lineCov"> 9180992 : mask = (mask << 1) - (mask >> 7);</span>
|
||||
<span class="lineNum"> 92 </span><span class="lineCov"> 9180992 : v = (v << 1) & 0xfefefefeU;</span>
|
||||
<span class="lineNum"> 93 </span><span class="lineCov"> 9180992 : v ^= mask & 0x1d1d1d1dU;</span>
|
||||
<span class="lineNum"> 94 </span><span class="lineCov"> 9180992 : return v;</span>
|
||||
<span class="lineNum"> 91 </span><span class="lineCov"> 33036096 : mask = (mask << 1) - (mask >> 7);</span>
|
||||
<span class="lineNum"> 92 </span><span class="lineCov"> 33036096 : v = (v << 1) & 0xfefefefeU;</span>
|
||||
<span class="lineNum"> 93 </span><span class="lineCov"> 33036096 : v ^= mask & 0x1d1d1d1dU;</span>
|
||||
<span class="lineNum"> 94 </span><span class="lineCov"> 33036096 : return v;</span>
|
||||
<span class="lineNum"> 95 </span> : }
|
||||
<span class="lineNum"> 96 </span> :
|
||||
<span class="lineNum"> 97 </span> : /*
|
||||
|
|
@ -161,12 +161,12 @@
|
|||
<span class="lineNum"> 99 </span> : */
|
||||
<span class="lineNum"> 100 </span> : static __always_inline uint64_t x2_64(uint64_t v)
|
||||
<span class="lineNum"> 101 </span> : {
|
||||
<span class="lineNum"> 102 </span><span class="lineCov"> 5278624 : uint64_t mask = v & 0x8080808080808080ULL;</span>
|
||||
<span class="lineNum"> 102 </span><span class="lineCov"> 16518048 : uint64_t mask = v & 0x8080808080808080ULL;</span>
|
||||
<span class="lineNum"> 103 </span> :
|
||||
<span class="lineNum"> 104 </span><span class="lineCov"> 5278624 : mask = (mask << 1) - (mask >> 7);</span>
|
||||
<span class="lineNum"> 105 </span><span class="lineCov"> 5278624 : v = (v << 1) & 0xfefefefefefefefeULL;</span>
|
||||
<span class="lineNum"> 106 </span><span class="lineCov"> 5278624 : v ^= mask & 0x1d1d1d1d1d1d1d1dULL;</span>
|
||||
<span class="lineNum"> 107 </span><span class="lineCov"> 5278624 : return v;</span>
|
||||
<span class="lineNum"> 104 </span><span class="lineCov"> 16518048 : mask = (mask << 1) - (mask >> 7);</span>
|
||||
<span class="lineNum"> 105 </span><span class="lineCov"> 16518048 : v = (v << 1) & 0xfefefefefefefefeULL;</span>
|
||||
<span class="lineNum"> 106 </span><span class="lineCov"> 16518048 : v ^= mask & 0x1d1d1d1d1d1d1d1dULL;</span>
|
||||
<span class="lineNum"> 107 </span><span class="lineCov"> 16518048 : return v;</span>
|
||||
<span class="lineNum"> 108 </span> : }
|
||||
<span class="lineNum"> 109 </span> :
|
||||
<span class="lineNum"> 110 </span> : /*
|
||||
|
|
@ -174,12 +174,12 @@
|
|||
<span class="lineNum"> 112 </span> : */
|
||||
<span class="lineNum"> 113 </span> : static __always_inline uint32_t d2_32(uint32_t v)
|
||||
<span class="lineNum"> 114 </span> : {
|
||||
<span class="lineNum"> 115 </span><span class="lineCov"> 3672000 : uint32_t mask = v & 0x01010101U;</span>
|
||||
<span class="lineNum"> 115 </span><span class="lineCov"> 12847040 : uint32_t mask = v & 0x01010101U;</span>
|
||||
<span class="lineNum"> 116 </span> :
|
||||
<span class="lineNum"> 117 </span><span class="lineCov"> 3672000 : mask = (mask << 8) - mask;</span>
|
||||
<span class="lineNum"> 118 </span><span class="lineCov"> 3672000 : v = (v >> 1) & 0x7f7f7f7fU;</span>
|
||||
<span class="lineNum"> 119 </span><span class="lineCov"> 3672000 : v ^= mask & 0x8e8e8e8eU;</span>
|
||||
<span class="lineNum"> 120 </span><span class="lineCov"> 3672000 : return v;</span>
|
||||
<span class="lineNum"> 117 </span><span class="lineCov"> 12847040 : mask = (mask << 8) - mask;</span>
|
||||
<span class="lineNum"> 118 </span><span class="lineCov"> 12847040 : v = (v >> 1) & 0x7f7f7f7fU;</span>
|
||||
<span class="lineNum"> 119 </span><span class="lineCov"> 12847040 : v ^= mask & 0x8e8e8e8eU;</span>
|
||||
<span class="lineNum"> 120 </span><span class="lineCov"> 12847040 : return v;</span>
|
||||
<span class="lineNum"> 121 </span> : }
|
||||
<span class="lineNum"> 122 </span> :
|
||||
<span class="lineNum"> 123 </span> : /*
|
||||
|
|
@ -187,12 +187,12 @@
|
|||
<span class="lineNum"> 125 </span> : */
|
||||
<span class="lineNum"> 126 </span> : static __always_inline uint64_t d2_64(uint64_t v)
|
||||
<span class="lineNum"> 127 </span> : {
|
||||
<span class="lineNum"> 128 </span><span class="lineCov"> 2065376 : uint64_t mask = v & 0x0101010101010101ULL;</span>
|
||||
<span class="lineNum"> 128 </span><span class="lineCov"> 6423520 : uint64_t mask = v & 0x0101010101010101ULL;</span>
|
||||
<span class="lineNum"> 129 </span> :
|
||||
<span class="lineNum"> 130 </span><span class="lineCov"> 2065376 : mask = (mask << 8) - mask;</span>
|
||||
<span class="lineNum"> 131 </span><span class="lineCov"> 2065376 : v = (v >> 1) & 0x7f7f7f7f7f7f7f7fULL;</span>
|
||||
<span class="lineNum"> 132 </span><span class="lineCov"> 2065376 : v ^= mask & 0x8e8e8e8e8e8e8e8eULL;</span>
|
||||
<span class="lineNum"> 133 </span><span class="lineCov"> 2065376 : return v;</span>
|
||||
<span class="lineNum"> 130 </span><span class="lineCov"> 6423520 : mask = (mask << 8) - mask;</span>
|
||||
<span class="lineNum"> 131 </span><span class="lineCov"> 6423520 : v = (v >> 1) & 0x7f7f7f7f7f7f7f7fULL;</span>
|
||||
<span class="lineNum"> 132 </span><span class="lineCov"> 6423520 : v ^= mask & 0x8e8e8e8e8e8e8e8eULL;</span>
|
||||
<span class="lineNum"> 133 </span><span class="lineCov"> 6423520 : return v;</span>
|
||||
<span class="lineNum"> 134 </span> : }
|
||||
<span class="lineNum"> 135 </span> :
|
||||
<span class="lineNum"> 136 </span> : #endif
|
||||
|
|
|
|||
|
|
@ -31,18 +31,18 @@
|
|||
<td class="headerValue">lcov.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntry">1555</td>
|
||||
<td class="headerCovTableEntry">1750</td>
|
||||
<td class="headerCovTableEntry">1762</td>
|
||||
<td class="headerCovTableEntryMed">88.3 %</td>
|
||||
<td class="headerCovTableEntryHi">99.3 %</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Date:</td>
|
||||
<td class="headerValue">2016-11-06</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntry">79</td>
|
||||
<td class="headerCovTableEntry">85</td>
|
||||
<td class="headerCovTableEntryHi">92.9 %</td>
|
||||
<td class="headerCovTableEntry">85</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
</tr>
|
||||
<tr><td><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
|
|
@ -69,33 +69,13 @@
|
|||
<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="x86.c.gcov.html">x86.c</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../amber.png" width=75 height=10 alt="75.1%"><img src="../snow.png" width=25 height=10 alt="75.1%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerMed">75.1 %</td>
|
||||
<td class="coverNumMed">514 / 684</td>
|
||||
<td class="coverPerLo">64.3 %</td>
|
||||
<td class="coverNumLo">9 / 14</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="cpu.h.gcov.html">cpu.h</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../ruby.png" width=70 height=10 alt="69.7%"><img src="../snow.png" width=30 height=10 alt="69.7%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerLo">69.7 %</td>
|
||||
<td class="coverNumLo">53 / 76</td>
|
||||
<td class="coverPerHi">91.7 %</td>
|
||||
<td class="coverNumHi">11 / 12</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="internal.h.gcov.html">internal.h</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../amber.png" width=80 height=10 alt="80.0%"><img src="../snow.png" width=20 height=10 alt="80.0%"></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">80.0 %</td>
|
||||
<td class="coverNumMed">4 / 5</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumHi">5 / 5</td>
|
||||
<td class="coverPerHi">-</td>
|
||||
<td class="coverNumHi">0 / 0</td>
|
||||
</tr>
|
||||
|
|
@ -172,20 +152,20 @@
|
|||
<tr>
|
||||
<td class="coverFile"><a href="module.c.gcov.html">module.c</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=95 height=10 alt="95.0%"><img src="../snow.png" width=5 height=10 alt="95.0%"></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="coverPerHi">95.0 %</td>
|
||||
<td class="coverNumHi">151 / 159</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumHi">159 / 159</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumHi">7 / 7</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="test.c.gcov.html">test.c</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=96 height=10 alt="96.4%"><img src="../snow.png" width=4 height=10 alt="96.4%"></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="coverPerHi">96.4 %</td>
|
||||
<td class="coverNumHi">135 / 140</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumHi">140 / 140</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumHi">7 / 7</td>
|
||||
</tr>
|
||||
|
|
@ -219,6 +199,26 @@
|
|||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumHi">11 / 11</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="cpu.h.gcov.html">cpu.h</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="84.2%"><img src="../snow.png" width=16 height=10 alt="84.2%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerMed">84.2 %</td>
|
||||
<td class="coverNumMed">64 / 76</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumHi">12 / 12</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="x86.c.gcov.html">x86.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">684 / 684</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumHi">14 / 14</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">1555</td>
|
||||
<td class="headerCovTableEntry">1750</td>
|
||||
<td class="headerCovTableEntry">1762</td>
|
||||
<td class="headerCovTableEntryMed">88.3 %</td>
|
||||
<td class="headerCovTableEntryHi">99.3 %</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Date:</td>
|
||||
<td class="headerValue">2016-11-06</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntry">79</td>
|
||||
<td class="headerCovTableEntry">85</td>
|
||||
<td class="headerCovTableEntryHi">92.9 %</td>
|
||||
<td class="headerCovTableEntry">85</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
</tr>
|
||||
<tr><td><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
|
|
@ -72,53 +72,23 @@
|
|||
<tr>
|
||||
<td class="coverFile"><a href="cpu.h.gcov.html">cpu.h</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../ruby.png" width=70 height=10 alt="69.7%"><img src="../snow.png" width=30 height=10 alt="69.7%"></td></tr></table>
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../amber.png" width=84 height=10 alt="84.2%"><img src="../snow.png" width=16 height=10 alt="84.2%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerLo">69.7 %</td>
|
||||
<td class="coverNumLo">53 / 76</td>
|
||||
<td class="coverPerHi">91.7 %</td>
|
||||
<td class="coverNumHi">11 / 12</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="x86.c.gcov.html">x86.c</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../amber.png" width=75 height=10 alt="75.1%"><img src="../snow.png" width=25 height=10 alt="75.1%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerMed">75.1 %</td>
|
||||
<td class="coverNumMed">514 / 684</td>
|
||||
<td class="coverPerLo">64.3 %</td>
|
||||
<td class="coverNumLo">9 / 14</td>
|
||||
<td class="coverPerMed">84.2 %</td>
|
||||
<td class="coverNumMed">64 / 76</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumHi">12 / 12</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="internal.h.gcov.html">internal.h</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../amber.png" width=80 height=10 alt="80.0%"><img src="../snow.png" width=20 height=10 alt="80.0%"></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">80.0 %</td>
|
||||
<td class="coverNumMed">4 / 5</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumHi">5 / 5</td>
|
||||
<td class="coverPerHi">-</td>
|
||||
<td class="coverNumHi">0 / 0</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="module.c.gcov.html">module.c</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=95 height=10 alt="95.0%"><img src="../snow.png" width=5 height=10 alt="95.0%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">95.0 %</td>
|
||||
<td class="coverNumHi">151 / 159</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumHi">7 / 7</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="test.c.gcov.html">test.c</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=96 height=10 alt="96.4%"><img src="../snow.png" width=4 height=10 alt="96.4%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerHi">96.4 %</td>
|
||||
<td class="coverNumHi">135 / 140</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumHi">7 / 7</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="tag.c.gcov.html">tag.c</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
|
|
@ -209,6 +179,26 @@
|
|||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumHi">9 / 9</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="test.c.gcov.html">test.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">140 / 140</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumHi">7 / 7</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="module.c.gcov.html">module.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">159 / 159</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumHi">7 / 7</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="int.c.gcov.html">int.c</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
|
|
@ -219,6 +209,16 @@
|
|||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumHi">11 / 11</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="x86.c.gcov.html">x86.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">684 / 684</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumHi">14 / 14</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">1555</td>
|
||||
<td class="headerCovTableEntry">1750</td>
|
||||
<td class="headerCovTableEntry">1762</td>
|
||||
<td class="headerCovTableEntryMed">88.3 %</td>
|
||||
<td class="headerCovTableEntryHi">99.3 %</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Date:</td>
|
||||
<td class="headerValue">2016-11-06</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Functions:</td>
|
||||
<td class="headerCovTableEntry">79</td>
|
||||
<td class="headerCovTableEntry">85</td>
|
||||
<td class="headerCovTableEntryHi">92.9 %</td>
|
||||
<td class="headerCovTableEntry">85</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
</tr>
|
||||
<tr><td><img src="../glass.png" width=3 height=3 alt=""></td></tr>
|
||||
</table>
|
||||
|
|
@ -92,12 +92,12 @@
|
|||
<tr>
|
||||
<td class="coverFile"><a href="cpu.h.gcov.html">cpu.h</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../ruby.png" width=70 height=10 alt="69.7%"><img src="../snow.png" width=30 height=10 alt="69.7%"></td></tr></table>
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../amber.png" width=84 height=10 alt="84.2%"><img src="../snow.png" width=16 height=10 alt="84.2%"></td></tr></table>
|
||||
</td>
|
||||
<td class="coverPerLo">69.7 %</td>
|
||||
<td class="coverNumLo">53 / 76</td>
|
||||
<td class="coverPerHi">91.7 %</td>
|
||||
<td class="coverNumHi">11 / 12</td>
|
||||
<td class="coverPerMed">84.2 %</td>
|
||||
<td class="coverNumMed">64 / 76</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumHi">12 / 12</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="gf.h.gcov.html">gf.h</a></td>
|
||||
|
|
@ -132,10 +132,10 @@
|
|||
<tr>
|
||||
<td class="coverFile"><a href="internal.h.gcov.html">internal.h</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../amber.png" width=80 height=10 alt="80.0%"><img src="../snow.png" width=20 height=10 alt="80.0%"></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">80.0 %</td>
|
||||
<td class="coverNumMed">4 / 5</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumHi">5 / 5</td>
|
||||
<td class="coverPerHi">-</td>
|
||||
<td class="coverNumHi">0 / 0</td>
|
||||
</tr>
|
||||
|
|
@ -162,10 +162,10 @@
|
|||
<tr>
|
||||
<td class="coverFile"><a href="module.c.gcov.html">module.c</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=95 height=10 alt="95.0%"><img src="../snow.png" width=5 height=10 alt="95.0%"></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="coverPerHi">95.0 %</td>
|
||||
<td class="coverNumHi">151 / 159</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumHi">159 / 159</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumHi">7 / 7</td>
|
||||
</tr>
|
||||
|
|
@ -192,22 +192,22 @@
|
|||
<tr>
|
||||
<td class="coverFile"><a href="test.c.gcov.html">test.c</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=96 height=10 alt="96.4%"><img src="../snow.png" width=4 height=10 alt="96.4%"></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="coverPerHi">96.4 %</td>
|
||||
<td class="coverNumHi">135 / 140</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumHi">140 / 140</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumHi">7 / 7</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="x86.c.gcov.html">x86.c</a></td>
|
||||
<td class="coverBar" align="center">
|
||||
<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../amber.png" width=75 height=10 alt="75.1%"><img src="../snow.png" width=25 height=10 alt="75.1%"></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">75.1 %</td>
|
||||
<td class="coverNumMed">514 / 684</td>
|
||||
<td class="coverPerLo">64.3 %</td>
|
||||
<td class="coverNumLo">9 / 14</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumHi">684 / 684</td>
|
||||
<td class="coverPerHi">100.0 %</td>
|
||||
<td class="coverNumHi">14 / 14</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFile"><a href="x86z.c.gcov.html">x86z.c</a></td>
|
||||
|
|
|
|||
|
|
@ -61,47 +61,47 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="int.c.gcov.html#505">raid_recX_int8</a></td>
|
||||
<td class="coverFnHi">17753</td>
|
||||
<td class="coverFnHi">17849</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="int.c.gcov.html#437">raid_rec2_int8</a></td>
|
||||
<td class="coverFnHi">1204</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="int.c.gcov.html#384">raid_rec1_int8</a></td>
|
||||
<td class="coverFnHi">124</td>
|
||||
<td class="coverFnHi">1220</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="int.c.gcov.html#47">raid_gen1_int64</a></td>
|
||||
<td class="coverFnHi">54</td>
|
||||
<td class="coverFnHi">184</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="int.c.gcov.html#384">raid_rec1_int8</a></td>
|
||||
<td class="coverFnHi">164</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="int.c.gcov.html#19">raid_gen1_int32</a></td>
|
||||
<td class="coverFnHi">34</td>
|
||||
<td class="coverFnHi">112</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="int.c.gcov.html#116">raid_gen2_int64</a></td>
|
||||
<td class="coverFnHi">17</td>
|
||||
<td class="coverFnHi">47</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="int.c.gcov.html#75">raid_gen2_int32</a></td>
|
||||
<td class="coverFnHi">15</td>
|
||||
<td class="coverFnHi">47</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="int.c.gcov.html#162">raid_gen3_int8</a></td>
|
||||
<td class="coverFnHi">5</td>
|
||||
<td class="coverFnHi">26</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="int.c.gcov.html#209">raid_gen4_int8</a></td>
|
||||
<td class="coverFnHi">5</td>
|
||||
<td class="coverFnHi">18</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="int.c.gcov.html#261">raid_gen5_int8</a></td>
|
||||
<td class="coverFnHi">4</td>
|
||||
<td class="coverFnHi">18</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="int.c.gcov.html#318">raid_gen6_int8</a></td>
|
||||
<td class="coverFnHi">4</td>
|
||||
<td class="coverFnHi">17</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
|
|
|
|||
|
|
@ -61,47 +61,47 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="int.c.gcov.html#19">raid_gen1_int32</a></td>
|
||||
<td class="coverFnHi">34</td>
|
||||
<td class="coverFnHi">112</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="int.c.gcov.html#47">raid_gen1_int64</a></td>
|
||||
<td class="coverFnHi">54</td>
|
||||
<td class="coverFnHi">184</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="int.c.gcov.html#75">raid_gen2_int32</a></td>
|
||||
<td class="coverFnHi">15</td>
|
||||
<td class="coverFnHi">47</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="int.c.gcov.html#116">raid_gen2_int64</a></td>
|
||||
<td class="coverFnHi">17</td>
|
||||
<td class="coverFnHi">47</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="int.c.gcov.html#162">raid_gen3_int8</a></td>
|
||||
<td class="coverFnHi">5</td>
|
||||
<td class="coverFnHi">26</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="int.c.gcov.html#209">raid_gen4_int8</a></td>
|
||||
<td class="coverFnHi">5</td>
|
||||
<td class="coverFnHi">18</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="int.c.gcov.html#261">raid_gen5_int8</a></td>
|
||||
<td class="coverFnHi">4</td>
|
||||
<td class="coverFnHi">18</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="int.c.gcov.html#318">raid_gen6_int8</a></td>
|
||||
<td class="coverFnHi">4</td>
|
||||
<td class="coverFnHi">17</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="int.c.gcov.html#384">raid_rec1_int8</a></td>
|
||||
<td class="coverFnHi">124</td>
|
||||
<td class="coverFnHi">164</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="int.c.gcov.html#437">raid_rec2_int8</a></td>
|
||||
<td class="coverFnHi">1204</td>
|
||||
<td class="coverFnHi">1220</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="int.c.gcov.html#505">raid_recX_int8</a></td>
|
||||
<td class="coverFnHi">17753</td>
|
||||
<td class="coverFnHi">17849</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
|
|
|
|||
|
|
@ -80,9 +80,9 @@
|
|||
<span class="lineNum"> 18 </span> : /*
|
||||
<a name="19"><span class="lineNum"> 19 </span> : * GEN1 (RAID5 with xor) 32bit C implementation</a>
|
||||
<span class="lineNum"> 20 </span> : */
|
||||
<span class="lineNum"> 21 </span><span class="lineCov"> 34 : void raid_gen1_int32(int nd, size_t size, void **vv)</span>
|
||||
<span class="lineNum"> 21 </span><span class="lineCov"> 112 : void raid_gen1_int32(int nd, size_t size, void **vv)</span>
|
||||
<span class="lineNum"> 22 </span> : {
|
||||
<span class="lineNum"> 23 </span><span class="lineCov"> 34 : uint8_t **v = (uint8_t **)vv;</span>
|
||||
<span class="lineNum"> 23 </span><span class="lineCov"> 112 : uint8_t **v = (uint8_t **)vv;</span>
|
||||
<span class="lineNum"> 24 </span> : uint8_t *p;
|
||||
<span class="lineNum"> 25 </span> : int d, l;
|
||||
<span class="lineNum"> 26 </span> : size_t i;
|
||||
|
|
@ -90,27 +90,27 @@
|
|||
<span class="lineNum"> 28 </span> : uint32_t p0;
|
||||
<span class="lineNum"> 29 </span> : uint32_t p1;
|
||||
<span class="lineNum"> 30 </span> :
|
||||
<span class="lineNum"> 31 </span><span class="lineCov"> 34 : l = nd - 1;</span>
|
||||
<span class="lineNum"> 32 </span><span class="lineCov"> 34 : p = v[nd];</span>
|
||||
<span class="lineNum"> 31 </span><span class="lineCov"> 112 : l = nd - 1;</span>
|
||||
<span class="lineNum"> 32 </span><span class="lineCov"> 112 : p = v[nd];</span>
|
||||
<span class="lineNum"> 33 </span> :
|
||||
<span class="lineNum"> 34 </span><span class="lineCov"> 1015938 : for (i = 0; i < size; i += 8) {</span>
|
||||
<span class="lineNum"> 35 </span><span class="lineCov"> 1015904 : p0 = v_32(v[l][i]);</span>
|
||||
<span class="lineNum"> 36 </span><span class="lineCov"> 1015904 : p1 = v_32(v[l][i + 4]);</span>
|
||||
<span class="lineNum"> 37 </span><span class="lineCov"> 8128544 : for (d = l - 1; d >= 0; --d) {</span>
|
||||
<span class="lineNum"> 38 </span><span class="lineCov"> 7112640 : p0 ^= v_32(v[d][i]);</span>
|
||||
<span class="lineNum"> 39 </span><span class="lineCov"> 7112640 : p1 ^= v_32(v[d][i + 4]);</span>
|
||||
<span class="lineNum"> 34 </span><span class="lineCov"> 3571920 : for (i = 0; i < size; i += 8) {</span>
|
||||
<span class="lineNum"> 35 </span><span class="lineCov"> 3571808 : p0 = v_32(v[l][i]);</span>
|
||||
<span class="lineNum"> 36 </span><span class="lineCov"> 3571808 : p1 = v_32(v[l][i + 4]);</span>
|
||||
<span class="lineNum"> 37 </span><span class="lineCov"> 28575776 : for (d = l - 1; d >= 0; --d) {</span>
|
||||
<span class="lineNum"> 38 </span><span class="lineCov"> 25003968 : p0 ^= v_32(v[d][i]);</span>
|
||||
<span class="lineNum"> 39 </span><span class="lineCov"> 25003968 : p1 ^= v_32(v[d][i + 4]);</span>
|
||||
<span class="lineNum"> 40 </span> : }
|
||||
<span class="lineNum"> 41 </span><span class="lineCov"> 1015904 : v_32(p[i]) = p0;</span>
|
||||
<span class="lineNum"> 42 </span><span class="lineCov"> 1015904 : v_32(p[i + 4]) = p1;</span>
|
||||
<span class="lineNum"> 41 </span><span class="lineCov"> 3571808 : v_32(p[i]) = p0;</span>
|
||||
<span class="lineNum"> 42 </span><span class="lineCov"> 3571808 : v_32(p[i + 4]) = p1;</span>
|
||||
<span class="lineNum"> 43 </span> : }
|
||||
<span class="lineNum"> 44 </span><span class="lineCov"> 34 : }</span>
|
||||
<span class="lineNum"> 44 </span><span class="lineCov"> 112 : }</span>
|
||||
<span class="lineNum"> 45 </span> :
|
||||
<span class="lineNum"> 46 </span> : /*
|
||||
<a name="47"><span class="lineNum"> 47 </span> : * GEN1 (RAID5 with xor) 64bit C implementation</a>
|
||||
<span class="lineNum"> 48 </span> : */
|
||||
<span class="lineNum"> 49 </span><span class="lineCov"> 54 : void raid_gen1_int64(int nd, size_t size, void **vv)</span>
|
||||
<span class="lineNum"> 49 </span><span class="lineCov"> 184 : void raid_gen1_int64(int nd, size_t size, void **vv)</span>
|
||||
<span class="lineNum"> 50 </span> : {
|
||||
<span class="lineNum"> 51 </span><span class="lineCov"> 54 : uint8_t **v = (uint8_t **)vv;</span>
|
||||
<span class="lineNum"> 51 </span><span class="lineCov"> 184 : uint8_t **v = (uint8_t **)vv;</span>
|
||||
<span class="lineNum"> 52 </span> : uint8_t *p;
|
||||
<span class="lineNum"> 53 </span> : int d, l;
|
||||
<span class="lineNum"> 54 </span> : size_t i;
|
||||
|
|
@ -118,27 +118,27 @@
|
|||
<span class="lineNum"> 56 </span> : uint64_t p0;
|
||||
<span class="lineNum"> 57 </span> : uint64_t p1;
|
||||
<span class="lineNum"> 58 </span> :
|
||||
<span class="lineNum"> 59 </span><span class="lineCov"> 54 : l = nd - 1;</span>
|
||||
<span class="lineNum"> 60 </span><span class="lineCov"> 54 : p = v[nd];</span>
|
||||
<span class="lineNum"> 59 </span><span class="lineCov"> 184 : l = nd - 1;</span>
|
||||
<span class="lineNum"> 60 </span><span class="lineCov"> 184 : p = v[nd];</span>
|
||||
<span class="lineNum"> 61 </span> :
|
||||
<span class="lineNum"> 62 </span><span class="lineCov"> 835686 : for (i = 0; i < size; i += 16) {</span>
|
||||
<span class="lineNum"> 63 </span><span class="lineCov"> 835632 : p0 = v_64(v[l][i]);</span>
|
||||
<span class="lineNum"> 64 </span><span class="lineCov"> 835632 : p1 = v_64(v[l][i + 8]);</span>
|
||||
<span class="lineNum"> 65 </span><span class="lineCov"> 6685712 : for (d = l - 1; d >= 0; --d) {</span>
|
||||
<span class="lineNum"> 66 </span><span class="lineCov"> 5850080 : p0 ^= v_64(v[d][i]);</span>
|
||||
<span class="lineNum"> 67 </span><span class="lineCov"> 5850080 : p1 ^= v_64(v[d][i + 8]);</span>
|
||||
<span class="lineNum"> 62 </span><span class="lineCov"> 2965736 : for (i = 0; i < size; i += 16) {</span>
|
||||
<span class="lineNum"> 63 </span><span class="lineCov"> 2965552 : p0 = v_64(v[l][i]);</span>
|
||||
<span class="lineNum"> 64 </span><span class="lineCov"> 2965552 : p1 = v_64(v[l][i + 8]);</span>
|
||||
<span class="lineNum"> 65 </span><span class="lineCov"> 23725072 : for (d = l - 1; d >= 0; --d) {</span>
|
||||
<span class="lineNum"> 66 </span><span class="lineCov"> 20759520 : p0 ^= v_64(v[d][i]);</span>
|
||||
<span class="lineNum"> 67 </span><span class="lineCov"> 20759520 : p1 ^= v_64(v[d][i + 8]);</span>
|
||||
<span class="lineNum"> 68 </span> : }
|
||||
<span class="lineNum"> 69 </span><span class="lineCov"> 835632 : v_64(p[i]) = p0;</span>
|
||||
<span class="lineNum"> 70 </span><span class="lineCov"> 835632 : v_64(p[i + 8]) = p1;</span>
|
||||
<span class="lineNum"> 69 </span><span class="lineCov"> 2965552 : v_64(p[i]) = p0;</span>
|
||||
<span class="lineNum"> 70 </span><span class="lineCov"> 2965552 : v_64(p[i + 8]) = p1;</span>
|
||||
<span class="lineNum"> 71 </span> : }
|
||||
<span class="lineNum"> 72 </span><span class="lineCov"> 54 : }</span>
|
||||
<span class="lineNum"> 72 </span><span class="lineCov"> 184 : }</span>
|
||||
<span class="lineNum"> 73 </span> :
|
||||
<span class="lineNum"> 74 </span> : /*
|
||||
<a name="75"><span class="lineNum"> 75 </span> : * GEN2 (RAID6 with powers of 2) 32bit C implementation</a>
|
||||
<span class="lineNum"> 76 </span> : */
|
||||
<span class="lineNum"> 77 </span><span class="lineCov"> 15 : void raid_gen2_int32(int nd, size_t size, void **vv)</span>
|
||||
<span class="lineNum"> 77 </span><span class="lineCov"> 47 : void raid_gen2_int32(int nd, size_t size, void **vv)</span>
|
||||
<span class="lineNum"> 78 </span> : {
|
||||
<span class="lineNum"> 79 </span><span class="lineCov"> 15 : uint8_t **v = (uint8_t **)vv;</span>
|
||||
<span class="lineNum"> 79 </span><span class="lineCov"> 47 : uint8_t **v = (uint8_t **)vv;</span>
|
||||
<span class="lineNum"> 80 </span> : uint8_t *p;
|
||||
<span class="lineNum"> 81 </span> : uint8_t *q;
|
||||
<span class="lineNum"> 82 </span> : int d, l;
|
||||
|
|
@ -147,39 +147,39 @@
|
|||
<span class="lineNum"> 85 </span> : uint32_t d0, q0, p0;
|
||||
<span class="lineNum"> 86 </span> : uint32_t d1, q1, p1;
|
||||
<span class="lineNum"> 87 </span> :
|
||||
<span class="lineNum"> 88 </span><span class="lineCov"> 15 : l = nd - 1;</span>
|
||||
<span class="lineNum"> 89 </span><span class="lineCov"> 15 : p = v[nd];</span>
|
||||
<span class="lineNum"> 90 </span><span class="lineCov"> 15 : q = v[nd + 1];</span>
|
||||
<span class="lineNum"> 88 </span><span class="lineCov"> 47 : l = nd - 1;</span>
|
||||
<span class="lineNum"> 89 </span><span class="lineCov"> 47 : p = v[nd];</span>
|
||||
<span class="lineNum"> 90 </span><span class="lineCov"> 47 : q = v[nd + 1];</span>
|
||||
<span class="lineNum"> 91 </span> :
|
||||
<span class="lineNum"> 92 </span><span class="lineCov"> 393327 : for (i = 0; i < size; i += 8) {</span>
|
||||
<span class="lineNum"> 93 </span><span class="lineCov"> 393312 : q0 = p0 = v_32(v[l][i]);</span>
|
||||
<span class="lineNum"> 94 </span><span class="lineCov"> 393312 : q1 = p1 = v_32(v[l][i + 4]);</span>
|
||||
<span class="lineNum"> 95 </span><span class="lineCov"> 3147808 : for (d = l - 1; d >= 0; --d) {</span>
|
||||
<span class="lineNum"> 96 </span><span class="lineCov"> 2754496 : d0 = v_32(v[d][i]);</span>
|
||||
<span class="lineNum"> 97 </span><span class="lineCov"> 2754496 : d1 = v_32(v[d][i + 4]);</span>
|
||||
<span class="lineNum"> 92 </span><span class="lineCov"> 1441935 : for (i = 0; i < size; i += 8) {</span>
|
||||
<span class="lineNum"> 93 </span><span class="lineCov"> 1441888 : q0 = p0 = v_32(v[l][i]);</span>
|
||||
<span class="lineNum"> 94 </span><span class="lineCov"> 1441888 : q1 = p1 = v_32(v[l][i + 4]);</span>
|
||||
<span class="lineNum"> 95 </span><span class="lineCov"> 11536416 : for (d = l - 1; d >= 0; --d) {</span>
|
||||
<span class="lineNum"> 96 </span><span class="lineCov"> 10094528 : d0 = v_32(v[d][i]);</span>
|
||||
<span class="lineNum"> 97 </span><span class="lineCov"> 10094528 : d1 = v_32(v[d][i + 4]);</span>
|
||||
<span class="lineNum"> 98 </span> :
|
||||
<span class="lineNum"> 99 </span><span class="lineCov"> 2754496 : p0 ^= d0;</span>
|
||||
<span class="lineNum"> 100 </span><span class="lineCov"> 2754496 : p1 ^= d1;</span>
|
||||
<span class="lineNum"> 99 </span><span class="lineCov"> 10094528 : p0 ^= d0;</span>
|
||||
<span class="lineNum"> 100 </span><span class="lineCov"> 10094528 : p1 ^= d1;</span>
|
||||
<span class="lineNum"> 101 </span> :
|
||||
<span class="lineNum"> 102 </span><span class="lineCov"> 2754496 : q0 = x2_32(q0);</span>
|
||||
<span class="lineNum"> 103 </span><span class="lineCov"> 2754496 : q1 = x2_32(q1);</span>
|
||||
<span class="lineNum"> 102 </span><span class="lineCov"> 10094528 : q0 = x2_32(q0);</span>
|
||||
<span class="lineNum"> 103 </span><span class="lineCov"> 10094528 : q1 = x2_32(q1);</span>
|
||||
<span class="lineNum"> 104 </span> :
|
||||
<span class="lineNum"> 105 </span><span class="lineCov"> 2754496 : q0 ^= d0;</span>
|
||||
<span class="lineNum"> 106 </span><span class="lineCov"> 2754496 : q1 ^= d1;</span>
|
||||
<span class="lineNum"> 105 </span><span class="lineCov"> 10094528 : q0 ^= d0;</span>
|
||||
<span class="lineNum"> 106 </span><span class="lineCov"> 10094528 : q1 ^= d1;</span>
|
||||
<span class="lineNum"> 107 </span> : }
|
||||
<span class="lineNum"> 108 </span><span class="lineCov"> 393312 : v_32(p[i]) = p0;</span>
|
||||
<span class="lineNum"> 109 </span><span class="lineCov"> 393312 : v_32(p[i + 4]) = p1;</span>
|
||||
<span class="lineNum"> 110 </span><span class="lineCov"> 393312 : v_32(q[i]) = q0;</span>
|
||||
<span class="lineNum"> 111 </span><span class="lineCov"> 393312 : v_32(q[i + 4]) = q1;</span>
|
||||
<span class="lineNum"> 108 </span><span class="lineCov"> 1441888 : v_32(p[i]) = p0;</span>
|
||||
<span class="lineNum"> 109 </span><span class="lineCov"> 1441888 : v_32(p[i + 4]) = p1;</span>
|
||||
<span class="lineNum"> 110 </span><span class="lineCov"> 1441888 : v_32(q[i]) = q0;</span>
|
||||
<span class="lineNum"> 111 </span><span class="lineCov"> 1441888 : v_32(q[i + 4]) = q1;</span>
|
||||
<span class="lineNum"> 112 </span> : }
|
||||
<span class="lineNum"> 113 </span><span class="lineCov"> 15 : }</span>
|
||||
<span class="lineNum"> 113 </span><span class="lineCov"> 47 : }</span>
|
||||
<span class="lineNum"> 114 </span> :
|
||||
<span class="lineNum"> 115 </span> : /*
|
||||
<a name="116"><span class="lineNum"> 116 </span> : * GEN2 (RAID6 with powers of 2) 64bit C implementation</a>
|
||||
<span class="lineNum"> 117 </span> : */
|
||||
<span class="lineNum"> 118 </span><span class="lineCov"> 17 : void raid_gen2_int64(int nd, size_t size, void **vv)</span>
|
||||
<span class="lineNum"> 118 </span><span class="lineCov"> 47 : void raid_gen2_int64(int nd, size_t size, void **vv)</span>
|
||||
<span class="lineNum"> 119 </span> : {
|
||||
<span class="lineNum"> 120 </span><span class="lineCov"> 17 : uint8_t **v = (uint8_t **)vv;</span>
|
||||
<span class="lineNum"> 120 </span><span class="lineCov"> 47 : uint8_t **v = (uint8_t **)vv;</span>
|
||||
<span class="lineNum"> 121 </span> : uint8_t *p;
|
||||
<span class="lineNum"> 122 </span> : uint8_t *q;
|
||||
<span class="lineNum"> 123 </span> : int d, l;
|
||||
|
|
@ -188,32 +188,32 @@
|
|||
<span class="lineNum"> 126 </span> : uint64_t d0, q0, p0;
|
||||
<span class="lineNum"> 127 </span> : uint64_t d1, q1, p1;
|
||||
<span class="lineNum"> 128 </span> :
|
||||
<span class="lineNum"> 129 </span><span class="lineCov"> 17 : l = nd - 1;</span>
|
||||
<span class="lineNum"> 130 </span><span class="lineCov"> 17 : p = v[nd];</span>
|
||||
<span class="lineNum"> 131 </span><span class="lineCov"> 17 : q = v[nd + 1];</span>
|
||||
<span class="lineNum"> 129 </span><span class="lineCov"> 47 : l = nd - 1;</span>
|
||||
<span class="lineNum"> 130 </span><span class="lineCov"> 47 : p = v[nd];</span>
|
||||
<span class="lineNum"> 131 </span><span class="lineCov"> 47 : q = v[nd + 1];</span>
|
||||
<span class="lineNum"> 132 </span> :
|
||||
<span class="lineNum"> 133 </span><span class="lineCov"> 229441 : for (i = 0; i < size; i += 16) {</span>
|
||||
<span class="lineNum"> 134 </span><span class="lineCov"> 229424 : q0 = p0 = v_64(v[l][i]);</span>
|
||||
<span class="lineNum"> 135 </span><span class="lineCov"> 229424 : q1 = p1 = v_64(v[l][i + 8]);</span>
|
||||
<span class="lineNum"> 136 </span><span class="lineCov"> 1836048 : for (d = l - 1; d >= 0; --d) {</span>
|
||||
<span class="lineNum"> 137 </span><span class="lineCov"> 1606624 : d0 = v_64(v[d][i]);</span>
|
||||
<span class="lineNum"> 138 </span><span class="lineCov"> 1606624 : d1 = v_64(v[d][i + 8]);</span>
|
||||
<span class="lineNum"> 133 </span><span class="lineCov"> 720991 : for (i = 0; i < size; i += 16) {</span>
|
||||
<span class="lineNum"> 134 </span><span class="lineCov"> 720944 : q0 = p0 = v_64(v[l][i]);</span>
|
||||
<span class="lineNum"> 135 </span><span class="lineCov"> 720944 : q1 = p1 = v_64(v[l][i + 8]);</span>
|
||||
<span class="lineNum"> 136 </span><span class="lineCov"> 5768208 : for (d = l - 1; d >= 0; --d) {</span>
|
||||
<span class="lineNum"> 137 </span><span class="lineCov"> 5047264 : d0 = v_64(v[d][i]);</span>
|
||||
<span class="lineNum"> 138 </span><span class="lineCov"> 5047264 : d1 = v_64(v[d][i + 8]);</span>
|
||||
<span class="lineNum"> 139 </span> :
|
||||
<span class="lineNum"> 140 </span><span class="lineCov"> 1606624 : p0 ^= d0;</span>
|
||||
<span class="lineNum"> 141 </span><span class="lineCov"> 1606624 : p1 ^= d1;</span>
|
||||
<span class="lineNum"> 140 </span><span class="lineCov"> 5047264 : p0 ^= d0;</span>
|
||||
<span class="lineNum"> 141 </span><span class="lineCov"> 5047264 : p1 ^= d1;</span>
|
||||
<span class="lineNum"> 142 </span> :
|
||||
<span class="lineNum"> 143 </span><span class="lineCov"> 1606624 : q0 = x2_64(q0);</span>
|
||||
<span class="lineNum"> 144 </span><span class="lineCov"> 1606624 : q1 = x2_64(q1);</span>
|
||||
<span class="lineNum"> 143 </span><span class="lineCov"> 5047264 : q0 = x2_64(q0);</span>
|
||||
<span class="lineNum"> 144 </span><span class="lineCov"> 5047264 : q1 = x2_64(q1);</span>
|
||||
<span class="lineNum"> 145 </span> :
|
||||
<span class="lineNum"> 146 </span><span class="lineCov"> 1606624 : q0 ^= d0;</span>
|
||||
<span class="lineNum"> 147 </span><span class="lineCov"> 1606624 : q1 ^= d1;</span>
|
||||
<span class="lineNum"> 146 </span><span class="lineCov"> 5047264 : q0 ^= d0;</span>
|
||||
<span class="lineNum"> 147 </span><span class="lineCov"> 5047264 : q1 ^= d1;</span>
|
||||
<span class="lineNum"> 148 </span> : }
|
||||
<span class="lineNum"> 149 </span><span class="lineCov"> 229424 : v_64(p[i]) = p0;</span>
|
||||
<span class="lineNum"> 150 </span><span class="lineCov"> 229424 : v_64(p[i + 8]) = p1;</span>
|
||||
<span class="lineNum"> 151 </span><span class="lineCov"> 229424 : v_64(q[i]) = q0;</span>
|
||||
<span class="lineNum"> 152 </span><span class="lineCov"> 229424 : v_64(q[i + 8]) = q1;</span>
|
||||
<span class="lineNum"> 149 </span><span class="lineCov"> 720944 : v_64(p[i]) = p0;</span>
|
||||
<span class="lineNum"> 150 </span><span class="lineCov"> 720944 : v_64(p[i + 8]) = p1;</span>
|
||||
<span class="lineNum"> 151 </span><span class="lineCov"> 720944 : v_64(q[i]) = q0;</span>
|
||||
<span class="lineNum"> 152 </span><span class="lineCov"> 720944 : v_64(q[i + 8]) = q1;</span>
|
||||
<span class="lineNum"> 153 </span> : }
|
||||
<span class="lineNum"> 154 </span><span class="lineCov"> 17 : }</span>
|
||||
<span class="lineNum"> 154 </span><span class="lineCov"> 47 : }</span>
|
||||
<span class="lineNum"> 155 </span> :
|
||||
<span class="lineNum"> 156 </span> : /*
|
||||
<span class="lineNum"> 157 </span> : * GEN3 (triple parity with Cauchy matrix) 8bit C implementation
|
||||
|
|
@ -223,9 +223,9 @@
|
|||
<span class="lineNum"> 161 </span> : * But this is only a kind of reference function, and we are not really
|
||||
<a name="162"><span class="lineNum"> 162 </span> : * interested in speed.</a>
|
||||
<span class="lineNum"> 163 </span> : */
|
||||
<span class="lineNum"> 164 </span><span class="lineCov"> 5 : void raid_gen3_int8(int nd, size_t size, void **vv)</span>
|
||||
<span class="lineNum"> 164 </span><span class="lineCov"> 26 : void raid_gen3_int8(int nd, size_t size, void **vv)</span>
|
||||
<span class="lineNum"> 165 </span> : {
|
||||
<span class="lineNum"> 166 </span><span class="lineCov"> 5 : uint8_t **v = (uint8_t **)vv;</span>
|
||||
<span class="lineNum"> 166 </span><span class="lineCov"> 26 : uint8_t **v = (uint8_t **)vv;</span>
|
||||
<span class="lineNum"> 167 </span> : uint8_t *p;
|
||||
<span class="lineNum"> 168 </span> : uint8_t *q;
|
||||
<span class="lineNum"> 169 </span> : uint8_t *r;
|
||||
|
|
@ -234,33 +234,33 @@
|
|||
<span class="lineNum"> 172 </span> :
|
||||
<span class="lineNum"> 173 </span> : uint8_t d0, r0, q0, p0;
|
||||
<span class="lineNum"> 174 </span> :
|
||||
<span class="lineNum"> 175 </span><span class="lineCov"> 5 : l = nd - 1;</span>
|
||||
<span class="lineNum"> 176 </span><span class="lineCov"> 5 : p = v[nd];</span>
|
||||
<span class="lineNum"> 177 </span><span class="lineCov"> 5 : q = v[nd + 1];</span>
|
||||
<span class="lineNum"> 178 </span><span class="lineCov"> 5 : r = v[nd + 2];</span>
|
||||
<span class="lineNum"> 175 </span><span class="lineCov"> 26 : l = nd - 1;</span>
|
||||
<span class="lineNum"> 176 </span><span class="lineCov"> 26 : p = v[nd];</span>
|
||||
<span class="lineNum"> 177 </span><span class="lineCov"> 26 : q = v[nd + 1];</span>
|
||||
<span class="lineNum"> 178 </span><span class="lineCov"> 26 : r = v[nd + 2];</span>
|
||||
<span class="lineNum"> 179 </span> :
|
||||
<span class="lineNum"> 180 </span><span class="lineCov"> 786949 : for (i = 0; i < size; i += 1) {</span>
|
||||
<span class="lineNum"> 181 </span><span class="lineCov"> 786944 : p0 = q0 = r0 = 0;</span>
|
||||
<span class="lineNum"> 182 </span><span class="lineCov"> 6299904 : for (d = l; d > 0; --d) {</span>
|
||||
<span class="lineNum"> 183 </span><span class="lineCov"> 5512960 : d0 = v_8(v[d][i]);</span>
|
||||
<span class="lineNum"> 180 </span><span class="lineCov"> 6291994 : for (i = 0; i < size; i += 1) {</span>
|
||||
<span class="lineNum"> 181 </span><span class="lineCov"> 6291968 : p0 = q0 = r0 = 0;</span>
|
||||
<span class="lineNum"> 182 </span><span class="lineCov"> 50340096 : for (d = l; d > 0; --d) {</span>
|
||||
<span class="lineNum"> 183 </span><span class="lineCov"> 44048128 : d0 = v_8(v[d][i]);</span>
|
||||
<span class="lineNum"> 184 </span> :
|
||||
<span class="lineNum"> 185 </span><span class="lineCov"> 5512960 : p0 ^= d0;</span>
|
||||
<span class="lineNum"> 186 </span><span class="lineCov"> 5512960 : q0 ^= gfmul[d0][gfgen[1][d]];</span>
|
||||
<span class="lineNum"> 187 </span><span class="lineCov"> 5512960 : r0 ^= gfmul[d0][gfgen[2][d]];</span>
|
||||
<span class="lineNum"> 185 </span><span class="lineCov"> 44048128 : p0 ^= d0;</span>
|
||||
<span class="lineNum"> 186 </span><span class="lineCov"> 44048128 : q0 ^= gfmul[d0][gfgen[1][d]];</span>
|
||||
<span class="lineNum"> 187 </span><span class="lineCov"> 44048128 : r0 ^= gfmul[d0][gfgen[2][d]];</span>
|
||||
<span class="lineNum"> 188 </span> : }
|
||||
<span class="lineNum"> 189 </span> :
|
||||
<span class="lineNum"> 190 </span> : /* first disk with all coefficients at 1 */
|
||||
<span class="lineNum"> 191 </span><span class="lineCov"> 786944 : d0 = v_8(v[0][i]);</span>
|
||||
<span class="lineNum"> 191 </span><span class="lineCov"> 6291968 : d0 = v_8(v[0][i]);</span>
|
||||
<span class="lineNum"> 192 </span> :
|
||||
<span class="lineNum"> 193 </span><span class="lineCov"> 786944 : p0 ^= d0;</span>
|
||||
<span class="lineNum"> 194 </span><span class="lineCov"> 786944 : q0 ^= d0;</span>
|
||||
<span class="lineNum"> 195 </span><span class="lineCov"> 786944 : r0 ^= d0;</span>
|
||||
<span class="lineNum"> 193 </span><span class="lineCov"> 6291968 : p0 ^= d0;</span>
|
||||
<span class="lineNum"> 194 </span><span class="lineCov"> 6291968 : q0 ^= d0;</span>
|
||||
<span class="lineNum"> 195 </span><span class="lineCov"> 6291968 : r0 ^= d0;</span>
|
||||
<span class="lineNum"> 196 </span> :
|
||||
<span class="lineNum"> 197 </span><span class="lineCov"> 786944 : v_8(p[i]) = p0;</span>
|
||||
<span class="lineNum"> 198 </span><span class="lineCov"> 786944 : v_8(q[i]) = q0;</span>
|
||||
<span class="lineNum"> 199 </span><span class="lineCov"> 786944 : v_8(r[i]) = r0;</span>
|
||||
<span class="lineNum"> 197 </span><span class="lineCov"> 6291968 : v_8(p[i]) = p0;</span>
|
||||
<span class="lineNum"> 198 </span><span class="lineCov"> 6291968 : v_8(q[i]) = q0;</span>
|
||||
<span class="lineNum"> 199 </span><span class="lineCov"> 6291968 : v_8(r[i]) = r0;</span>
|
||||
<span class="lineNum"> 200 </span> : }
|
||||
<span class="lineNum"> 201 </span><span class="lineCov"> 5 : }</span>
|
||||
<span class="lineNum"> 201 </span><span class="lineCov"> 26 : }</span>
|
||||
<span class="lineNum"> 202 </span> :
|
||||
<span class="lineNum"> 203 </span> : /*
|
||||
<span class="lineNum"> 204 </span> : * GEN4 (quad parity with Cauchy matrix) 8bit C implementation
|
||||
|
|
@ -270,9 +270,9 @@
|
|||
<span class="lineNum"> 208 </span> : * But this is only a kind of reference function, and we are not really
|
||||
<a name="209"><span class="lineNum"> 209 </span> : * interested in speed.</a>
|
||||
<span class="lineNum"> 210 </span> : */
|
||||
<span class="lineNum"> 211 </span><span class="lineCov"> 5 : void raid_gen4_int8(int nd, size_t size, void **vv)</span>
|
||||
<span class="lineNum"> 211 </span><span class="lineCov"> 18 : void raid_gen4_int8(int nd, size_t size, void **vv)</span>
|
||||
<span class="lineNum"> 212 </span> : {
|
||||
<span class="lineNum"> 213 </span><span class="lineCov"> 5 : uint8_t **v = (uint8_t **)vv;</span>
|
||||
<span class="lineNum"> 213 </span><span class="lineCov"> 18 : uint8_t **v = (uint8_t **)vv;</span>
|
||||
<span class="lineNum"> 214 </span> : uint8_t *p;
|
||||
<span class="lineNum"> 215 </span> : uint8_t *q;
|
||||
<span class="lineNum"> 216 </span> : uint8_t *r;
|
||||
|
|
@ -282,37 +282,37 @@
|
|||
<span class="lineNum"> 220 </span> :
|
||||
<span class="lineNum"> 221 </span> : uint8_t d0, s0, r0, q0, p0;
|
||||
<span class="lineNum"> 222 </span> :
|
||||
<span class="lineNum"> 223 </span><span class="lineCov"> 5 : l = nd - 1;</span>
|
||||
<span class="lineNum"> 224 </span><span class="lineCov"> 5 : p = v[nd];</span>
|
||||
<span class="lineNum"> 225 </span><span class="lineCov"> 5 : q = v[nd + 1];</span>
|
||||
<span class="lineNum"> 226 </span><span class="lineCov"> 5 : r = v[nd + 2];</span>
|
||||
<span class="lineNum"> 227 </span><span class="lineCov"> 5 : s = v[nd + 3];</span>
|
||||
<span class="lineNum"> 223 </span><span class="lineCov"> 18 : l = nd - 1;</span>
|
||||
<span class="lineNum"> 224 </span><span class="lineCov"> 18 : p = v[nd];</span>
|
||||
<span class="lineNum"> 225 </span><span class="lineCov"> 18 : q = v[nd + 1];</span>
|
||||
<span class="lineNum"> 226 </span><span class="lineCov"> 18 : r = v[nd + 2];</span>
|
||||
<span class="lineNum"> 227 </span><span class="lineCov"> 18 : s = v[nd + 3];</span>
|
||||
<span class="lineNum"> 228 </span> :
|
||||
<span class="lineNum"> 229 </span><span class="lineCov"> 786949 : for (i = 0; i < size; i += 1) {</span>
|
||||
<span class="lineNum"> 230 </span><span class="lineCov"> 786944 : p0 = q0 = r0 = s0 = 0;</span>
|
||||
<span class="lineNum"> 231 </span><span class="lineCov"> 6299904 : for (d = l; d > 0; --d) {</span>
|
||||
<span class="lineNum"> 232 </span><span class="lineCov"> 5512960 : d0 = v_8(v[d][i]);</span>
|
||||
<span class="lineNum"> 229 </span><span class="lineCov"> 4194834 : for (i = 0; i < size; i += 1) {</span>
|
||||
<span class="lineNum"> 230 </span><span class="lineCov"> 4194816 : p0 = q0 = r0 = s0 = 0;</span>
|
||||
<span class="lineNum"> 231 </span><span class="lineCov"> 33562880 : for (d = l; d > 0; --d) {</span>
|
||||
<span class="lineNum"> 232 </span><span class="lineCov"> 29368064 : d0 = v_8(v[d][i]);</span>
|
||||
<span class="lineNum"> 233 </span> :
|
||||
<span class="lineNum"> 234 </span><span class="lineCov"> 5512960 : p0 ^= d0;</span>
|
||||
<span class="lineNum"> 235 </span><span class="lineCov"> 5512960 : q0 ^= gfmul[d0][gfgen[1][d]];</span>
|
||||
<span class="lineNum"> 236 </span><span class="lineCov"> 5512960 : r0 ^= gfmul[d0][gfgen[2][d]];</span>
|
||||
<span class="lineNum"> 237 </span><span class="lineCov"> 5512960 : s0 ^= gfmul[d0][gfgen[3][d]];</span>
|
||||
<span class="lineNum"> 234 </span><span class="lineCov"> 29368064 : p0 ^= d0;</span>
|
||||
<span class="lineNum"> 235 </span><span class="lineCov"> 29368064 : q0 ^= gfmul[d0][gfgen[1][d]];</span>
|
||||
<span class="lineNum"> 236 </span><span class="lineCov"> 29368064 : r0 ^= gfmul[d0][gfgen[2][d]];</span>
|
||||
<span class="lineNum"> 237 </span><span class="lineCov"> 29368064 : s0 ^= gfmul[d0][gfgen[3][d]];</span>
|
||||
<span class="lineNum"> 238 </span> : }
|
||||
<span class="lineNum"> 239 </span> :
|
||||
<span class="lineNum"> 240 </span> : /* first disk with all coefficients at 1 */
|
||||
<span class="lineNum"> 241 </span><span class="lineCov"> 786944 : d0 = v_8(v[0][i]);</span>
|
||||
<span class="lineNum"> 241 </span><span class="lineCov"> 4194816 : d0 = v_8(v[0][i]);</span>
|
||||
<span class="lineNum"> 242 </span> :
|
||||
<span class="lineNum"> 243 </span><span class="lineCov"> 786944 : p0 ^= d0;</span>
|
||||
<span class="lineNum"> 244 </span><span class="lineCov"> 786944 : q0 ^= d0;</span>
|
||||
<span class="lineNum"> 245 </span><span class="lineCov"> 786944 : r0 ^= d0;</span>
|
||||
<span class="lineNum"> 246 </span><span class="lineCov"> 786944 : s0 ^= d0;</span>
|
||||
<span class="lineNum"> 243 </span><span class="lineCov"> 4194816 : p0 ^= d0;</span>
|
||||
<span class="lineNum"> 244 </span><span class="lineCov"> 4194816 : q0 ^= d0;</span>
|
||||
<span class="lineNum"> 245 </span><span class="lineCov"> 4194816 : r0 ^= d0;</span>
|
||||
<span class="lineNum"> 246 </span><span class="lineCov"> 4194816 : s0 ^= d0;</span>
|
||||
<span class="lineNum"> 247 </span> :
|
||||
<span class="lineNum"> 248 </span><span class="lineCov"> 786944 : v_8(p[i]) = p0;</span>
|
||||
<span class="lineNum"> 249 </span><span class="lineCov"> 786944 : v_8(q[i]) = q0;</span>
|
||||
<span class="lineNum"> 250 </span><span class="lineCov"> 786944 : v_8(r[i]) = r0;</span>
|
||||
<span class="lineNum"> 251 </span><span class="lineCov"> 786944 : v_8(s[i]) = s0;</span>
|
||||
<span class="lineNum"> 248 </span><span class="lineCov"> 4194816 : v_8(p[i]) = p0;</span>
|
||||
<span class="lineNum"> 249 </span><span class="lineCov"> 4194816 : v_8(q[i]) = q0;</span>
|
||||
<span class="lineNum"> 250 </span><span class="lineCov"> 4194816 : v_8(r[i]) = r0;</span>
|
||||
<span class="lineNum"> 251 </span><span class="lineCov"> 4194816 : v_8(s[i]) = s0;</span>
|
||||
<span class="lineNum"> 252 </span> : }
|
||||
<span class="lineNum"> 253 </span><span class="lineCov"> 5 : }</span>
|
||||
<span class="lineNum"> 253 </span><span class="lineCov"> 18 : }</span>
|
||||
<span class="lineNum"> 254 </span> :
|
||||
<span class="lineNum"> 255 </span> : /*
|
||||
<span class="lineNum"> 256 </span> : * GEN5 (penta parity with Cauchy matrix) 8bit C implementation
|
||||
|
|
@ -322,9 +322,9 @@
|
|||
<span class="lineNum"> 260 </span> : * But this is only a kind of reference function, and we are not really
|
||||
<a name="261"><span class="lineNum"> 261 </span> : * interested in speed.</a>
|
||||
<span class="lineNum"> 262 </span> : */
|
||||
<span class="lineNum"> 263 </span><span class="lineCov"> 4 : void raid_gen5_int8(int nd, size_t size, void **vv)</span>
|
||||
<span class="lineNum"> 263 </span><span class="lineCov"> 18 : void raid_gen5_int8(int nd, size_t size, void **vv)</span>
|
||||
<span class="lineNum"> 264 </span> : {
|
||||
<span class="lineNum"> 265 </span><span class="lineCov"> 4 : uint8_t **v = (uint8_t **)vv;</span>
|
||||
<span class="lineNum"> 265 </span><span class="lineCov"> 18 : uint8_t **v = (uint8_t **)vv;</span>
|
||||
<span class="lineNum"> 266 </span> : uint8_t *p;
|
||||
<span class="lineNum"> 267 </span> : uint8_t *q;
|
||||
<span class="lineNum"> 268 </span> : uint8_t *r;
|
||||
|
|
@ -335,41 +335,41 @@
|
|||
<span class="lineNum"> 273 </span> :
|
||||
<span class="lineNum"> 274 </span> : uint8_t d0, t0, s0, r0, q0, p0;
|
||||
<span class="lineNum"> 275 </span> :
|
||||
<span class="lineNum"> 276 </span><span class="lineCov"> 4 : l = nd - 1;</span>
|
||||
<span class="lineNum"> 277 </span><span class="lineCov"> 4 : p = v[nd];</span>
|
||||
<span class="lineNum"> 278 </span><span class="lineCov"> 4 : q = v[nd + 1];</span>
|
||||
<span class="lineNum"> 279 </span><span class="lineCov"> 4 : r = v[nd + 2];</span>
|
||||
<span class="lineNum"> 280 </span><span class="lineCov"> 4 : s = v[nd + 3];</span>
|
||||
<span class="lineNum"> 281 </span><span class="lineCov"> 4 : t = v[nd + 4];</span>
|
||||
<span class="lineNum"> 276 </span><span class="lineCov"> 18 : l = nd - 1;</span>
|
||||
<span class="lineNum"> 277 </span><span class="lineCov"> 18 : p = v[nd];</span>
|
||||
<span class="lineNum"> 278 </span><span class="lineCov"> 18 : q = v[nd + 1];</span>
|
||||
<span class="lineNum"> 279 </span><span class="lineCov"> 18 : r = v[nd + 2];</span>
|
||||
<span class="lineNum"> 280 </span><span class="lineCov"> 18 : s = v[nd + 3];</span>
|
||||
<span class="lineNum"> 281 </span><span class="lineCov"> 18 : t = v[nd + 4];</span>
|
||||
<span class="lineNum"> 282 </span> :
|
||||
<span class="lineNum"> 283 </span><span class="lineCov"> 524804 : for (i = 0; i < size; i += 1) {</span>
|
||||
<span class="lineNum"> 284 </span><span class="lineCov"> 524800 : p0 = q0 = r0 = s0 = t0 = 0;</span>
|
||||
<span class="lineNum"> 285 </span><span class="lineCov"> 4202752 : for (d = l; d > 0; --d) {</span>
|
||||
<span class="lineNum"> 286 </span><span class="lineCov"> 3677952 : d0 = v_8(v[d][i]);</span>
|
||||
<span class="lineNum"> 283 </span><span class="lineCov"> 4194834 : for (i = 0; i < size; i += 1) {</span>
|
||||
<span class="lineNum"> 284 </span><span class="lineCov"> 4194816 : p0 = q0 = r0 = s0 = t0 = 0;</span>
|
||||
<span class="lineNum"> 285 </span><span class="lineCov"> 33562880 : for (d = l; d > 0; --d) {</span>
|
||||
<span class="lineNum"> 286 </span><span class="lineCov"> 29368064 : d0 = v_8(v[d][i]);</span>
|
||||
<span class="lineNum"> 287 </span> :
|
||||
<span class="lineNum"> 288 </span><span class="lineCov"> 3677952 : p0 ^= d0;</span>
|
||||
<span class="lineNum"> 289 </span><span class="lineCov"> 3677952 : q0 ^= gfmul[d0][gfgen[1][d]];</span>
|
||||
<span class="lineNum"> 290 </span><span class="lineCov"> 3677952 : r0 ^= gfmul[d0][gfgen[2][d]];</span>
|
||||
<span class="lineNum"> 291 </span><span class="lineCov"> 3677952 : s0 ^= gfmul[d0][gfgen[3][d]];</span>
|
||||
<span class="lineNum"> 292 </span><span class="lineCov"> 3677952 : t0 ^= gfmul[d0][gfgen[4][d]];</span>
|
||||
<span class="lineNum"> 288 </span><span class="lineCov"> 29368064 : p0 ^= d0;</span>
|
||||
<span class="lineNum"> 289 </span><span class="lineCov"> 29368064 : q0 ^= gfmul[d0][gfgen[1][d]];</span>
|
||||
<span class="lineNum"> 290 </span><span class="lineCov"> 29368064 : r0 ^= gfmul[d0][gfgen[2][d]];</span>
|
||||
<span class="lineNum"> 291 </span><span class="lineCov"> 29368064 : s0 ^= gfmul[d0][gfgen[3][d]];</span>
|
||||
<span class="lineNum"> 292 </span><span class="lineCov"> 29368064 : t0 ^= gfmul[d0][gfgen[4][d]];</span>
|
||||
<span class="lineNum"> 293 </span> : }
|
||||
<span class="lineNum"> 294 </span> :
|
||||
<span class="lineNum"> 295 </span> : /* first disk with all coefficients at 1 */
|
||||
<span class="lineNum"> 296 </span><span class="lineCov"> 524800 : d0 = v_8(v[0][i]);</span>
|
||||
<span class="lineNum"> 296 </span><span class="lineCov"> 4194816 : d0 = v_8(v[0][i]);</span>
|
||||
<span class="lineNum"> 297 </span> :
|
||||
<span class="lineNum"> 298 </span><span class="lineCov"> 524800 : p0 ^= d0;</span>
|
||||
<span class="lineNum"> 299 </span><span class="lineCov"> 524800 : q0 ^= d0;</span>
|
||||
<span class="lineNum"> 300 </span><span class="lineCov"> 524800 : r0 ^= d0;</span>
|
||||
<span class="lineNum"> 301 </span><span class="lineCov"> 524800 : s0 ^= d0;</span>
|
||||
<span class="lineNum"> 302 </span><span class="lineCov"> 524800 : t0 ^= d0;</span>
|
||||
<span class="lineNum"> 298 </span><span class="lineCov"> 4194816 : p0 ^= d0;</span>
|
||||
<span class="lineNum"> 299 </span><span class="lineCov"> 4194816 : q0 ^= d0;</span>
|
||||
<span class="lineNum"> 300 </span><span class="lineCov"> 4194816 : r0 ^= d0;</span>
|
||||
<span class="lineNum"> 301 </span><span class="lineCov"> 4194816 : s0 ^= d0;</span>
|
||||
<span class="lineNum"> 302 </span><span class="lineCov"> 4194816 : t0 ^= d0;</span>
|
||||
<span class="lineNum"> 303 </span> :
|
||||
<span class="lineNum"> 304 </span><span class="lineCov"> 524800 : v_8(p[i]) = p0;</span>
|
||||
<span class="lineNum"> 305 </span><span class="lineCov"> 524800 : v_8(q[i]) = q0;</span>
|
||||
<span class="lineNum"> 306 </span><span class="lineCov"> 524800 : v_8(r[i]) = r0;</span>
|
||||
<span class="lineNum"> 307 </span><span class="lineCov"> 524800 : v_8(s[i]) = s0;</span>
|
||||
<span class="lineNum"> 308 </span><span class="lineCov"> 524800 : v_8(t[i]) = t0;</span>
|
||||
<span class="lineNum"> 304 </span><span class="lineCov"> 4194816 : v_8(p[i]) = p0;</span>
|
||||
<span class="lineNum"> 305 </span><span class="lineCov"> 4194816 : v_8(q[i]) = q0;</span>
|
||||
<span class="lineNum"> 306 </span><span class="lineCov"> 4194816 : v_8(r[i]) = r0;</span>
|
||||
<span class="lineNum"> 307 </span><span class="lineCov"> 4194816 : v_8(s[i]) = s0;</span>
|
||||
<span class="lineNum"> 308 </span><span class="lineCov"> 4194816 : v_8(t[i]) = t0;</span>
|
||||
<span class="lineNum"> 309 </span> : }
|
||||
<span class="lineNum"> 310 </span><span class="lineCov"> 4 : }</span>
|
||||
<span class="lineNum"> 310 </span><span class="lineCov"> 18 : }</span>
|
||||
<span class="lineNum"> 311 </span> :
|
||||
<span class="lineNum"> 312 </span> : /*
|
||||
<span class="lineNum"> 313 </span> : * GEN6 (hexa parity with Cauchy matrix) 8bit C implementation
|
||||
|
|
@ -379,9 +379,9 @@
|
|||
<span class="lineNum"> 317 </span> : * But this is only a kind of reference function, and we are not really
|
||||
<a name="318"><span class="lineNum"> 318 </span> : * interested in speed.</a>
|
||||
<span class="lineNum"> 319 </span> : */
|
||||
<span class="lineNum"> 320 </span><span class="lineCov"> 4 : void raid_gen6_int8(int nd, size_t size, void **vv)</span>
|
||||
<span class="lineNum"> 320 </span><span class="lineCov"> 17 : void raid_gen6_int8(int nd, size_t size, void **vv)</span>
|
||||
<span class="lineNum"> 321 </span> : {
|
||||
<span class="lineNum"> 322 </span><span class="lineCov"> 4 : uint8_t **v = (uint8_t **)vv;</span>
|
||||
<span class="lineNum"> 322 </span><span class="lineCov"> 17 : uint8_t **v = (uint8_t **)vv;</span>
|
||||
<span class="lineNum"> 323 </span> : uint8_t *p;
|
||||
<span class="lineNum"> 324 </span> : uint8_t *q;
|
||||
<span class="lineNum"> 325 </span> : uint8_t *r;
|
||||
|
|
@ -393,45 +393,45 @@
|
|||
<span class="lineNum"> 331 </span> :
|
||||
<span class="lineNum"> 332 </span> : uint8_t d0, u0, t0, s0, r0, q0, p0;
|
||||
<span class="lineNum"> 333 </span> :
|
||||
<span class="lineNum"> 334 </span><span class="lineCov"> 4 : l = nd - 1;</span>
|
||||
<span class="lineNum"> 335 </span><span class="lineCov"> 4 : p = v[nd];</span>
|
||||
<span class="lineNum"> 336 </span><span class="lineCov"> 4 : q = v[nd + 1];</span>
|
||||
<span class="lineNum"> 337 </span><span class="lineCov"> 4 : r = v[nd + 2];</span>
|
||||
<span class="lineNum"> 338 </span><span class="lineCov"> 4 : s = v[nd + 3];</span>
|
||||
<span class="lineNum"> 339 </span><span class="lineCov"> 4 : t = v[nd + 4];</span>
|
||||
<span class="lineNum"> 340 </span><span class="lineCov"> 4 : u = v[nd + 5];</span>
|
||||
<span class="lineNum"> 334 </span><span class="lineCov"> 17 : l = nd - 1;</span>
|
||||
<span class="lineNum"> 335 </span><span class="lineCov"> 17 : p = v[nd];</span>
|
||||
<span class="lineNum"> 336 </span><span class="lineCov"> 17 : q = v[nd + 1];</span>
|
||||
<span class="lineNum"> 337 </span><span class="lineCov"> 17 : r = v[nd + 2];</span>
|
||||
<span class="lineNum"> 338 </span><span class="lineCov"> 17 : s = v[nd + 3];</span>
|
||||
<span class="lineNum"> 339 </span><span class="lineCov"> 17 : t = v[nd + 4];</span>
|
||||
<span class="lineNum"> 340 </span><span class="lineCov"> 17 : u = v[nd + 5];</span>
|
||||
<span class="lineNum"> 341 </span> :
|
||||
<span class="lineNum"> 342 </span><span class="lineCov"> 524804 : for (i = 0; i < size; i += 1) {</span>
|
||||
<span class="lineNum"> 343 </span><span class="lineCov"> 524800 : p0 = q0 = r0 = s0 = t0 = u0 = 0;</span>
|
||||
<span class="lineNum"> 344 </span><span class="lineCov"> 4202752 : for (d = l; d > 0; --d) {</span>
|
||||
<span class="lineNum"> 345 </span><span class="lineCov"> 3677952 : d0 = v_8(v[d][i]);</span>
|
||||
<span class="lineNum"> 342 </span><span class="lineCov"> 3932689 : for (i = 0; i < size; i += 1) {</span>
|
||||
<span class="lineNum"> 343 </span><span class="lineCov"> 3932672 : p0 = q0 = r0 = s0 = t0 = u0 = 0;</span>
|
||||
<span class="lineNum"> 344 </span><span class="lineCov"> 31465728 : for (d = l; d > 0; --d) {</span>
|
||||
<span class="lineNum"> 345 </span><span class="lineCov"> 27533056 : d0 = v_8(v[d][i]);</span>
|
||||
<span class="lineNum"> 346 </span> :
|
||||
<span class="lineNum"> 347 </span><span class="lineCov"> 3677952 : p0 ^= d0;</span>
|
||||
<span class="lineNum"> 348 </span><span class="lineCov"> 3677952 : q0 ^= gfmul[d0][gfgen[1][d]];</span>
|
||||
<span class="lineNum"> 349 </span><span class="lineCov"> 3677952 : r0 ^= gfmul[d0][gfgen[2][d]];</span>
|
||||
<span class="lineNum"> 350 </span><span class="lineCov"> 3677952 : s0 ^= gfmul[d0][gfgen[3][d]];</span>
|
||||
<span class="lineNum"> 351 </span><span class="lineCov"> 3677952 : t0 ^= gfmul[d0][gfgen[4][d]];</span>
|
||||
<span class="lineNum"> 352 </span><span class="lineCov"> 3677952 : u0 ^= gfmul[d0][gfgen[5][d]];</span>
|
||||
<span class="lineNum"> 347 </span><span class="lineCov"> 27533056 : p0 ^= d0;</span>
|
||||
<span class="lineNum"> 348 </span><span class="lineCov"> 27533056 : q0 ^= gfmul[d0][gfgen[1][d]];</span>
|
||||
<span class="lineNum"> 349 </span><span class="lineCov"> 27533056 : r0 ^= gfmul[d0][gfgen[2][d]];</span>
|
||||
<span class="lineNum"> 350 </span><span class="lineCov"> 27533056 : s0 ^= gfmul[d0][gfgen[3][d]];</span>
|
||||
<span class="lineNum"> 351 </span><span class="lineCov"> 27533056 : t0 ^= gfmul[d0][gfgen[4][d]];</span>
|
||||
<span class="lineNum"> 352 </span><span class="lineCov"> 27533056 : u0 ^= gfmul[d0][gfgen[5][d]];</span>
|
||||
<span class="lineNum"> 353 </span> : }
|
||||
<span class="lineNum"> 354 </span> :
|
||||
<span class="lineNum"> 355 </span> : /* first disk with all coefficients at 1 */
|
||||
<span class="lineNum"> 356 </span><span class="lineCov"> 524800 : d0 = v_8(v[0][i]);</span>
|
||||
<span class="lineNum"> 356 </span><span class="lineCov"> 3932672 : d0 = v_8(v[0][i]);</span>
|
||||
<span class="lineNum"> 357 </span> :
|
||||
<span class="lineNum"> 358 </span><span class="lineCov"> 524800 : p0 ^= d0;</span>
|
||||
<span class="lineNum"> 359 </span><span class="lineCov"> 524800 : q0 ^= d0;</span>
|
||||
<span class="lineNum"> 360 </span><span class="lineCov"> 524800 : r0 ^= d0;</span>
|
||||
<span class="lineNum"> 361 </span><span class="lineCov"> 524800 : s0 ^= d0;</span>
|
||||
<span class="lineNum"> 362 </span><span class="lineCov"> 524800 : t0 ^= d0;</span>
|
||||
<span class="lineNum"> 363 </span><span class="lineCov"> 524800 : u0 ^= d0;</span>
|
||||
<span class="lineNum"> 358 </span><span class="lineCov"> 3932672 : p0 ^= d0;</span>
|
||||
<span class="lineNum"> 359 </span><span class="lineCov"> 3932672 : q0 ^= d0;</span>
|
||||
<span class="lineNum"> 360 </span><span class="lineCov"> 3932672 : r0 ^= d0;</span>
|
||||
<span class="lineNum"> 361 </span><span class="lineCov"> 3932672 : s0 ^= d0;</span>
|
||||
<span class="lineNum"> 362 </span><span class="lineCov"> 3932672 : t0 ^= d0;</span>
|
||||
<span class="lineNum"> 363 </span><span class="lineCov"> 3932672 : u0 ^= d0;</span>
|
||||
<span class="lineNum"> 364 </span> :
|
||||
<span class="lineNum"> 365 </span><span class="lineCov"> 524800 : v_8(p[i]) = p0;</span>
|
||||
<span class="lineNum"> 366 </span><span class="lineCov"> 524800 : v_8(q[i]) = q0;</span>
|
||||
<span class="lineNum"> 367 </span><span class="lineCov"> 524800 : v_8(r[i]) = r0;</span>
|
||||
<span class="lineNum"> 368 </span><span class="lineCov"> 524800 : v_8(s[i]) = s0;</span>
|
||||
<span class="lineNum"> 369 </span><span class="lineCov"> 524800 : v_8(t[i]) = t0;</span>
|
||||
<span class="lineNum"> 370 </span><span class="lineCov"> 524800 : v_8(u[i]) = u0;</span>
|
||||
<span class="lineNum"> 365 </span><span class="lineCov"> 3932672 : v_8(p[i]) = p0;</span>
|
||||
<span class="lineNum"> 366 </span><span class="lineCov"> 3932672 : v_8(q[i]) = q0;</span>
|
||||
<span class="lineNum"> 367 </span><span class="lineCov"> 3932672 : v_8(r[i]) = r0;</span>
|
||||
<span class="lineNum"> 368 </span><span class="lineCov"> 3932672 : v_8(s[i]) = s0;</span>
|
||||
<span class="lineNum"> 369 </span><span class="lineCov"> 3932672 : v_8(t[i]) = t0;</span>
|
||||
<span class="lineNum"> 370 </span><span class="lineCov"> 3932672 : v_8(u[i]) = u0;</span>
|
||||
<span class="lineNum"> 371 </span> : }
|
||||
<span class="lineNum"> 372 </span><span class="lineCov"> 4 : }</span>
|
||||
<span class="lineNum"> 372 </span><span class="lineCov"> 17 : }</span>
|
||||
<span class="lineNum"> 373 </span> :
|
||||
<span class="lineNum"> 374 </span> : /*
|
||||
<span class="lineNum"> 375 </span> : * Recover failure of one data block at index id[0] using parity at index
|
||||
|
|
@ -445,9 +445,9 @@
|
|||
<span class="lineNum"> 383 </span> : *
|
||||
<a name="384"><span class="lineNum"> 384 </span> : * Dx = A[ip[0],id[0]]^-1 * Pd</a>
|
||||
<span class="lineNum"> 385 </span> : */
|
||||
<span class="lineNum"> 386 </span><span class="lineCov"> 124 : void raid_rec1_int8(int nr, int *id, int *ip, int nd, size_t size, void **vv)</span>
|
||||
<span class="lineNum"> 386 </span><span class="lineCov"> 164 : void raid_rec1_int8(int nr, int *id, int *ip, int nd, size_t size, void **vv)</span>
|
||||
<span class="lineNum"> 387 </span> : {
|
||||
<span class="lineNum"> 388 </span><span class="lineCov"> 124 : uint8_t **v = (uint8_t **)vv;</span>
|
||||
<span class="lineNum"> 388 </span><span class="lineCov"> 164 : uint8_t **v = (uint8_t **)vv;</span>
|
||||
<span class="lineNum"> 389 </span> : uint8_t *p;
|
||||
<span class="lineNum"> 390 </span> : uint8_t *pa;
|
||||
<span class="lineNum"> 391 </span> : const uint8_t *T;
|
||||
|
|
@ -458,32 +458,32 @@
|
|||
<span class="lineNum"> 396 </span> : (void)nr; /* unused, it's always 1 */
|
||||
<span class="lineNum"> 397 </span> :
|
||||
<span class="lineNum"> 398 </span> : /* if it's RAID5 uses the faster function */
|
||||
<span class="lineNum"> 399 </span><span class="lineCov"> 124 : if (ip[0] == 0) {</span>
|
||||
<span class="lineNum"> 399 </span><span class="lineCov"> 164 : if (ip[0] == 0) {</span>
|
||||
<span class="lineNum"> 400 </span><span class="lineCov"> 24 : raid_rec1of1(id, nd, size, vv);</span>
|
||||
<span class="lineNum"> 401 </span><span class="lineCov"> 148 : return;</span>
|
||||
<span class="lineNum"> 401 </span><span class="lineCov"> 188 : return;</span>
|
||||
<span class="lineNum"> 402 </span> : }
|
||||
<span class="lineNum"> 403 </span> :
|
||||
<span class="lineNum"> 404 </span> : /* setup the coefficients matrix */
|
||||
<span class="lineNum"> 405 </span><span class="lineCov"> 200 : G = A(ip[0], id[0]);</span>
|
||||
<span class="lineNum"> 405 </span><span class="lineCov"> 280 : G = A(ip[0], id[0]);</span>
|
||||
<span class="lineNum"> 406 </span> :
|
||||
<span class="lineNum"> 407 </span> : /* invert it to solve the system of linear equations */
|
||||
<span class="lineNum"> 408 </span><span class="lineCov"> 200 : V = inv(G);</span>
|
||||
<span class="lineNum"> 408 </span><span class="lineCov"> 280 : V = inv(G);</span>
|
||||
<span class="lineNum"> 409 </span> :
|
||||
<span class="lineNum"> 410 </span> : /* get multiplication tables */
|
||||
<span class="lineNum"> 411 </span><span class="lineCov"> 200 : T = table(V);</span>
|
||||
<span class="lineNum"> 411 </span><span class="lineCov"> 280 : T = table(V);</span>
|
||||
<span class="lineNum"> 412 </span> :
|
||||
<span class="lineNum"> 413 </span> : /* compute delta parity */
|
||||
<span class="lineNum"> 414 </span><span class="lineCov"> 100 : raid_delta_gen(1, id, ip, nd, size, vv);</span>
|
||||
<span class="lineNum"> 414 </span><span class="lineCov"> 140 : raid_delta_gen(1, id, ip, nd, size, vv);</span>
|
||||
<span class="lineNum"> 415 </span> :
|
||||
<span class="lineNum"> 416 </span><span class="lineCov"> 100 : p = v[nd + ip[0]];</span>
|
||||
<span class="lineNum"> 417 </span><span class="lineCov"> 100 : pa = v[id[0]];</span>
|
||||
<span class="lineNum"> 416 </span><span class="lineCov"> 140 : p = v[nd + ip[0]];</span>
|
||||
<span class="lineNum"> 417 </span><span class="lineCov"> 140 : pa = v[id[0]];</span>
|
||||
<span class="lineNum"> 418 </span> :
|
||||
<span class="lineNum"> 419 </span><span class="lineCov"> 4215908 : for (i = 0; i < size; ++i) {</span>
|
||||
<span class="lineNum"> 419 </span><span class="lineCov"> 14701708 : for (i = 0; i < size; ++i) {</span>
|
||||
<span class="lineNum"> 420 </span> : /* delta */
|
||||
<span class="lineNum"> 421 </span><span class="lineCov"> 4215808 : uint8_t Pd = p[i] ^ pa[i];</span>
|
||||
<span class="lineNum"> 421 </span><span class="lineCov"> 14701568 : uint8_t Pd = p[i] ^ pa[i];</span>
|
||||
<span class="lineNum"> 422 </span> :
|
||||
<span class="lineNum"> 423 </span> : /* reconstruct */
|
||||
<span class="lineNum"> 424 </span><span class="lineCov"> 4215808 : pa[i] = T[Pd];</span>
|
||||
<span class="lineNum"> 424 </span><span class="lineCov"> 14701568 : pa[i] = T[Pd];</span>
|
||||
<span class="lineNum"> 425 </span> : }
|
||||
<span class="lineNum"> 426 </span> : }
|
||||
<span class="lineNum"> 427 </span> :
|
||||
|
|
@ -498,57 +498,57 @@
|
|||
<span class="lineNum"> 436 </span> : *
|
||||
<a name="437"><span class="lineNum"> 437 </span> : * we solve inverting the coefficients matrix.</a>
|
||||
<span class="lineNum"> 438 </span> : */
|
||||
<span class="lineNum"> 439 </span><span class="lineCov"> 1204 : void raid_rec2_int8(int nr, int *id, int *ip, int nd, size_t size, void **vv)</span>
|
||||
<span class="lineNum"> 439 </span><span class="lineCov"> 1220 : void raid_rec2_int8(int nr, int *id, int *ip, int nd, size_t size, void **vv)</span>
|
||||
<span class="lineNum"> 440 </span> : {
|
||||
<span class="lineNum"> 441 </span><span class="lineCov"> 1204 : uint8_t **v = (uint8_t **)vv;</span>
|
||||
<span class="lineNum"> 441 </span><span class="lineCov"> 1220 : uint8_t **v = (uint8_t **)vv;</span>
|
||||
<span class="lineNum"> 442 </span> : uint8_t *p;
|
||||
<span class="lineNum"> 443 </span> : uint8_t *pa;
|
||||
<span class="lineNum"> 444 </span> : uint8_t *q;
|
||||
<span class="lineNum"> 445 </span> : uint8_t *qa;
|
||||
<span class="lineNum"> 446 </span><span class="lineCov"> 1204 : const int N = 2;</span>
|
||||
<span class="lineNum"> 447 </span><span class="lineCov"> 1204 : const uint8_t *T[N][N];</span>
|
||||
<span class="lineNum"> 448 </span><span class="lineCov"> 1204 : uint8_t G[N * N];</span>
|
||||
<span class="lineNum"> 449 </span><span class="lineCov"> 1204 : uint8_t V[N * N];</span>
|
||||
<span class="lineNum"> 446 </span><span class="lineCov"> 1220 : const int N = 2;</span>
|
||||
<span class="lineNum"> 447 </span><span class="lineCov"> 1220 : const uint8_t *T[N][N];</span>
|
||||
<span class="lineNum"> 448 </span><span class="lineCov"> 1220 : uint8_t G[N * N];</span>
|
||||
<span class="lineNum"> 449 </span><span class="lineCov"> 1220 : uint8_t V[N * N];</span>
|
||||
<span class="lineNum"> 450 </span> : size_t i;
|
||||
<span class="lineNum"> 451 </span> : int j, k;
|
||||
<span class="lineNum"> 452 </span> :
|
||||
<span class="lineNum"> 453 </span> : (void)nr; /* unused, it's always 2 */
|
||||
<span class="lineNum"> 454 </span> :
|
||||
<span class="lineNum"> 455 </span> : /* if it's RAID6 recovering with P and Q uses the faster function */
|
||||
<span class="lineNum"> 456 </span><span class="lineCov"> 1204 : if (ip[0] == 0 && ip[1] == 1) {</span>
|
||||
<span class="lineNum"> 456 </span><span class="lineCov"> 1220 : if (ip[0] == 0 && ip[1] == 1) {</span>
|
||||
<span class="lineNum"> 457 </span><span class="lineCov"> 132 : raid_rec2of2_int8(id, ip, nd, size, vv);</span>
|
||||
<span class="lineNum"> 458 </span><span class="lineCov"> 1336 : return;</span>
|
||||
<span class="lineNum"> 458 </span><span class="lineCov"> 1352 : return;</span>
|
||||
<span class="lineNum"> 459 </span> : }
|
||||
<span class="lineNum"> 460 </span> :
|
||||
<span class="lineNum"> 461 </span> : /* setup the coefficients matrix */
|
||||
<span class="lineNum"> 462 </span><span class="lineCov"> 3216 : for (j = 0; j < N; ++j)</span>
|
||||
<span class="lineNum"> 463 </span><span class="lineCov"> 6432 : for (k = 0; k < N; ++k)</span>
|
||||
<span class="lineNum"> 464 </span><span class="lineCov"> 8576 : G[j * N + k] = A(ip[j], id[k]);</span>
|
||||
<span class="lineNum"> 462 </span><span class="lineCov"> 3264 : for (j = 0; j < N; ++j)</span>
|
||||
<span class="lineNum"> 463 </span><span class="lineCov"> 6528 : for (k = 0; k < N; ++k)</span>
|
||||
<span class="lineNum"> 464 </span><span class="lineCov"> 8704 : G[j * N + k] = A(ip[j], id[k]);</span>
|
||||
<span class="lineNum"> 465 </span> :
|
||||
<span class="lineNum"> 466 </span> : /* invert it to solve the system of linear equations */
|
||||
<span class="lineNum"> 467 </span><span class="lineCov"> 1072 : raid_invert(G, V, N);</span>
|
||||
<span class="lineNum"> 467 </span><span class="lineCov"> 1088 : raid_invert(G, V, N);</span>
|
||||
<span class="lineNum"> 468 </span> :
|
||||
<span class="lineNum"> 469 </span> : /* get multiplication tables */
|
||||
<span class="lineNum"> 470 </span><span class="lineCov"> 3216 : for (j = 0; j < N; ++j)</span>
|
||||
<span class="lineNum"> 471 </span><span class="lineCov"> 6432 : for (k = 0; k < N; ++k)</span>
|
||||
<span class="lineNum"> 472 </span><span class="lineCov"> 8576 : T[j][k] = table(V[j * N + k]);</span>
|
||||
<span class="lineNum"> 470 </span><span class="lineCov"> 3264 : for (j = 0; j < N; ++j)</span>
|
||||
<span class="lineNum"> 471 </span><span class="lineCov"> 6528 : for (k = 0; k < N; ++k)</span>
|
||||
<span class="lineNum"> 472 </span><span class="lineCov"> 8704 : T[j][k] = table(V[j * N + k]);</span>
|
||||
<span class="lineNum"> 473 </span> :
|
||||
<span class="lineNum"> 474 </span> : /* compute delta parity */
|
||||
<span class="lineNum"> 475 </span><span class="lineCov"> 1072 : raid_delta_gen(2, id, ip, nd, size, vv);</span>
|
||||
<span class="lineNum"> 475 </span><span class="lineCov"> 1088 : raid_delta_gen(2, id, ip, nd, size, vv);</span>
|
||||
<span class="lineNum"> 476 </span> :
|
||||
<span class="lineNum"> 477 </span><span class="lineCov"> 1072 : p = v[nd + ip[0]];</span>
|
||||
<span class="lineNum"> 478 </span><span class="lineCov"> 1072 : q = v[nd + ip[1]];</span>
|
||||
<span class="lineNum"> 479 </span><span class="lineCov"> 1072 : pa = v[id[0]];</span>
|
||||
<span class="lineNum"> 480 </span><span class="lineCov"> 1072 : qa = v[id[1]];</span>
|
||||
<span class="lineNum"> 477 </span><span class="lineCov"> 1088 : p = v[nd + ip[0]];</span>
|
||||
<span class="lineNum"> 478 </span><span class="lineCov"> 1088 : q = v[nd + ip[1]];</span>
|
||||
<span class="lineNum"> 479 </span><span class="lineCov"> 1088 : pa = v[id[0]];</span>
|
||||
<span class="lineNum"> 480 </span><span class="lineCov"> 1088 : qa = v[id[1]];</span>
|
||||
<span class="lineNum"> 481 </span> :
|
||||
<span class="lineNum"> 482 </span><span class="lineCov"> 4465712 : for (i = 0; i < size; ++i) {</span>
|
||||
<span class="lineNum"> 482 </span><span class="lineCov"> 8660032 : for (i = 0; i < size; ++i) {</span>
|
||||
<span class="lineNum"> 483 </span> : /* delta */
|
||||
<span class="lineNum"> 484 </span><span class="lineCov"> 4464640 : uint8_t Pd = p[i] ^ pa[i];</span>
|
||||
<span class="lineNum"> 485 </span><span class="lineCov"> 4464640 : uint8_t Qd = q[i] ^ qa[i];</span>
|
||||
<span class="lineNum"> 484 </span><span class="lineCov"> 8658944 : uint8_t Pd = p[i] ^ pa[i];</span>
|
||||
<span class="lineNum"> 485 </span><span class="lineCov"> 8658944 : uint8_t Qd = q[i] ^ qa[i];</span>
|
||||
<span class="lineNum"> 486 </span> :
|
||||
<span class="lineNum"> 487 </span> : /* reconstruct */
|
||||
<span class="lineNum"> 488 </span><span class="lineCov"> 4464640 : pa[i] = T[0][0][Pd] ^ T[0][1][Qd];</span>
|
||||
<span class="lineNum"> 489 </span><span class="lineCov"> 4464640 : qa[i] = T[1][0][Pd] ^ T[1][1][Qd];</span>
|
||||
<span class="lineNum"> 488 </span><span class="lineCov"> 8658944 : pa[i] = T[0][0][Pd] ^ T[0][1][Qd];</span>
|
||||
<span class="lineNum"> 489 </span><span class="lineCov"> 8658944 : qa[i] = T[1][0][Pd] ^ T[1][1][Qd];</span>
|
||||
<span class="lineNum"> 490 </span> : }
|
||||
<span class="lineNum"> 491 </span> : }
|
||||
<span class="lineNum"> 492 </span> :
|
||||
|
|
@ -566,9 +566,9 @@
|
|||
<span class="lineNum"> 504 </span> : * PD[0] = Pd, PD[1] = Qd, PD[2] = Rd, ...
|
||||
<a name="505"><span class="lineNum"> 505 </span> : * D[0] = Dx, D[1] = Dy, D[2] = Dz, ...</a>
|
||||
<span class="lineNum"> 506 </span> : */
|
||||
<span class="lineNum"> 507 </span><span class="lineCov"> 17753 : void raid_recX_int8(int nr, int *id, int *ip, int nd, size_t size, void **vv)</span>
|
||||
<span class="lineNum"> 507 </span><span class="lineCov"> 17849 : void raid_recX_int8(int nr, int *id, int *ip, int nd, size_t size, void **vv)</span>
|
||||
<span class="lineNum"> 508 </span> : {
|
||||
<span class="lineNum"> 509 </span><span class="lineCov"> 17753 : uint8_t **v = (uint8_t **)vv;</span>
|
||||
<span class="lineNum"> 509 </span><span class="lineCov"> 17849 : uint8_t **v = (uint8_t **)vv;</span>
|
||||
<span class="lineNum"> 510 </span> : uint8_t *p[RAID_PARITY_MAX];
|
||||
<span class="lineNum"> 511 </span> : uint8_t *pa[RAID_PARITY_MAX];
|
||||
<span class="lineNum"> 512 </span> : const uint8_t *T[RAID_PARITY_MAX][RAID_PARITY_MAX];
|
||||
|
|
@ -578,43 +578,43 @@
|
|||
<span class="lineNum"> 516 </span> : int j, k;
|
||||
<span class="lineNum"> 517 </span> :
|
||||
<span class="lineNum"> 518 </span> : /* setup the coefficients matrix */
|
||||
<span class="lineNum"> 519 </span><span class="lineCov"> 90761 : for (j = 0; j < nr; ++j)</span>
|
||||
<span class="lineNum"> 520 </span><span class="lineCov"> 386140 : for (k = 0; k < nr; ++k)</span>
|
||||
<span class="lineNum"> 521 </span><span class="lineCov"> 626264 : G[j * nr + k] = A(ip[j], id[k]);</span>
|
||||
<span class="lineNum"> 519 </span><span class="lineCov"> 91289 : for (j = 0; j < nr; ++j)</span>
|
||||
<span class="lineNum"> 520 </span><span class="lineCov"> 388636 : for (k = 0; k < nr; ++k)</span>
|
||||
<span class="lineNum"> 521 </span><span class="lineCov"> 630392 : G[j * nr + k] = A(ip[j], id[k]);</span>
|
||||
<span class="lineNum"> 522 </span> :
|
||||
<span class="lineNum"> 523 </span> : /* invert it to solve the system of linear equations */
|
||||
<span class="lineNum"> 524 </span><span class="lineCov"> 17753 : raid_invert(G, V, nr);</span>
|
||||
<span class="lineNum"> 524 </span><span class="lineCov"> 17849 : raid_invert(G, V, nr);</span>
|
||||
<span class="lineNum"> 525 </span> :
|
||||
<span class="lineNum"> 526 </span> : /* get multiplication tables */
|
||||
<span class="lineNum"> 527 </span><span class="lineCov"> 90761 : for (j = 0; j < nr; ++j)</span>
|
||||
<span class="lineNum"> 528 </span><span class="lineCov"> 386140 : for (k = 0; k < nr; ++k)</span>
|
||||
<span class="lineNum"> 529 </span><span class="lineCov"> 626264 : T[j][k] = table(V[j * nr + k]);</span>
|
||||
<span class="lineNum"> 527 </span><span class="lineCov"> 91289 : for (j = 0; j < nr; ++j)</span>
|
||||
<span class="lineNum"> 528 </span><span class="lineCov"> 388636 : for (k = 0; k < nr; ++k)</span>
|
||||
<span class="lineNum"> 529 </span><span class="lineCov"> 630392 : T[j][k] = table(V[j * nr + k]);</span>
|
||||
<span class="lineNum"> 530 </span> :
|
||||
<span class="lineNum"> 531 </span> : /* compute delta parity */
|
||||
<span class="lineNum"> 532 </span><span class="lineCov"> 17753 : raid_delta_gen(nr, id, ip, nd, size, vv);</span>
|
||||
<span class="lineNum"> 532 </span><span class="lineCov"> 17849 : raid_delta_gen(nr, id, ip, nd, size, vv);</span>
|
||||
<span class="lineNum"> 533 </span> :
|
||||
<span class="lineNum"> 534 </span><span class="lineCov"> 90761 : for (j = 0; j < nr; ++j) {</span>
|
||||
<span class="lineNum"> 535 </span><span class="lineCov"> 73008 : p[j] = v[nd + ip[j]];</span>
|
||||
<span class="lineNum"> 536 </span><span class="lineCov"> 73008 : pa[j] = v[id[j]];</span>
|
||||
<span class="lineNum"> 534 </span><span class="lineCov"> 91289 : for (j = 0; j < nr; ++j) {</span>
|
||||
<span class="lineNum"> 535 </span><span class="lineCov"> 73440 : p[j] = v[nd + ip[j]];</span>
|
||||
<span class="lineNum"> 536 </span><span class="lineCov"> 73440 : pa[j] = v[id[j]];</span>
|
||||
<span class="lineNum"> 537 </span> : }
|
||||
<span class="lineNum"> 538 </span> :
|
||||
<span class="lineNum"> 539 </span><span class="lineCov"> 12942937 : for (i = 0; i < size; ++i) {</span>
|
||||
<span class="lineNum"> 539 </span><span class="lineCov"> 38108857 : for (i = 0; i < size; ++i) {</span>
|
||||
<span class="lineNum"> 540 </span> : uint8_t PD[RAID_PARITY_MAX];
|
||||
<span class="lineNum"> 541 </span> :
|
||||
<span class="lineNum"> 542 </span> : /* delta */
|
||||
<span class="lineNum"> 543 </span><span class="lineCov"> 69327104 : for (j = 0; j < nr; ++j)</span>
|
||||
<span class="lineNum"> 544 </span><span class="lineCov"> 56401920 : PD[j] = p[j][i] ^ pa[j][i];</span>
|
||||
<span class="lineNum"> 543 </span><span class="lineCov"> 207739136 : for (j = 0; j < nr; ++j)</span>
|
||||
<span class="lineNum"> 544 </span><span class="lineCov"> 169648128 : PD[j] = p[j][i] ^ pa[j][i];</span>
|
||||
<span class="lineNum"> 545 </span> :
|
||||
<span class="lineNum"> 546 </span> : /* reconstruct */
|
||||
<span class="lineNum"> 547 </span><span class="lineCov"> 69327104 : for (j = 0; j < nr; ++j) {</span>
|
||||
<span class="lineNum"> 548 </span><span class="lineCov"> 56401920 : uint8_t b = 0;</span>
|
||||
<span class="lineNum"> 547 </span><span class="lineCov"> 207739136 : for (j = 0; j < nr; ++j) {</span>
|
||||
<span class="lineNum"> 548 </span><span class="lineCov"> 169648128 : uint8_t b = 0;</span>
|
||||
<span class="lineNum"> 549 </span> :
|
||||
<span class="lineNum"> 550 </span><span class="lineCov"> 316742656 : for (k = 0; k < nr; ++k)</span>
|
||||
<span class="lineNum"> 551 </span><span class="lineCov"> 260340736 : b ^= T[j][k][PD[k]];</span>
|
||||
<span class="lineNum"> 552 </span><span class="lineCov"> 56401920 : pa[j][i] = b;</span>
|
||||
<span class="lineNum"> 550 </span><span class="lineCov"> 971054080 : for (k = 0; k < nr; ++k)</span>
|
||||
<span class="lineNum"> 551 </span><span class="lineCov"> 801405952 : b ^= T[j][k][PD[k]];</span>
|
||||
<span class="lineNum"> 552 </span><span class="lineCov"> 169648128 : pa[j][i] = b;</span>
|
||||
<span class="lineNum"> 553 </span> : }
|
||||
<span class="lineNum"> 554 </span> : }
|
||||
<span class="lineNum"> 555 </span><span class="lineCov"> 17753 : }</span>
|
||||
<span class="lineNum"> 555 </span><span class="lineCov"> 17849 : }</span>
|
||||
<span class="lineNum"> 556 </span> :
|
||||
</pre>
|
||||
</td>
|
||||
|
|
|
|||
|
|
@ -31,9 +31,9 @@
|
|||
<td class="headerValue">lcov.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntry">4</td>
|
||||
<td class="headerCovTableEntry">5</td>
|
||||
<td class="headerCovTableEntryMed">80.0 %</td>
|
||||
<td class="headerCovTableEntry">5</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Date:</td>
|
||||
|
|
|
|||
|
|
@ -31,9 +31,9 @@
|
|||
<td class="headerValue">lcov.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntry">4</td>
|
||||
<td class="headerCovTableEntry">5</td>
|
||||
<td class="headerCovTableEntryMed">80.0 %</td>
|
||||
<td class="headerCovTableEntry">5</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Date:</td>
|
||||
|
|
|
|||
|
|
@ -31,9 +31,9 @@
|
|||
<td class="headerValue">lcov.info</td>
|
||||
<td></td>
|
||||
<td class="headerItem">Lines:</td>
|
||||
<td class="headerCovTableEntry">4</td>
|
||||
<td class="headerCovTableEntry">5</td>
|
||||
<td class="headerCovTableEntryMed">80.0 %</td>
|
||||
<td class="headerCovTableEntry">5</td>
|
||||
<td class="headerCovTableEntryHi">100.0 %</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headerItem">Date:</td>
|
||||
|
|
@ -169,11 +169,11 @@
|
|||
<span class="lineNum"> 107 </span> : */
|
||||
<span class="lineNum"> 108 </span> : static __always_inline void *__align_ptr(void *ptr, uintptr_t size)
|
||||
<span class="lineNum"> 109 </span> : {
|
||||
<span class="lineNum"> 110 </span><span class="lineCov"> 677265 : uintptr_t offset = (uintptr_t)ptr;</span>
|
||||
<span class="lineNum"> 110 </span><span class="lineCov"> 711847 : uintptr_t offset = (uintptr_t)ptr;</span>
|
||||
<span class="lineNum"> 111 </span> :
|
||||
<span class="lineNum"> 112 </span><span class="lineCov"> 677265 : offset = (offset + size - 1U) & ~(size - 1U);</span>
|
||||
<span class="lineNum"> 112 </span><span class="lineCov"> 711847 : offset = (offset + size - 1U) & ~(size - 1U);</span>
|
||||
<span class="lineNum"> 113 </span> :
|
||||
<span class="lineNum"> 114 </span><span class="lineCov"> 677265 : return (void *)offset;</span>
|
||||
<span class="lineNum"> 114 </span><span class="lineCov"> 711847 : return (void *)offset;</span>
|
||||
<span class="lineNum"> 115 </span> : }
|
||||
<span class="lineNum"> 116 </span> :
|
||||
<span class="lineNum"> 117 </span> : /*
|
||||
|
|
@ -294,7 +294,7 @@
|
|||
<span class="lineNum"> 232 </span> : /* that use a weak memory model. To ensure that other processors */
|
||||
<span class="lineNum"> 233 </span> : /* see correctly the data written, we use a store-store memory */
|
||||
<span class="lineNum"> 234 </span> : /* barrier at the end of the asm code */
|
||||
<span class="lineNum"> 235 </span><span class="lineCov"> 1349449 : asm volatile ("sfence" : : : "memory");</span>
|
||||
<span class="lineNum"> 235 </span><span class="lineCov"> 1388678 : asm volatile ("sfence" : : : "memory");</span>
|
||||
<span class="lineNum"> 236 </span> :
|
||||
<span class="lineNum"> 237 </span> : /* clobbers registers used in the asm code */
|
||||
<span class="lineNum"> 238 </span> : /* this is required because in the Windows ABI, */
|
||||
|
|
@ -327,7 +327,7 @@
|
|||
<span class="lineNum"> 265 </span> : /* reset the upper part of the ymm registers */
|
||||
<span class="lineNum"> 266 </span> : /* to avoid the 70 clocks penality on the next */
|
||||
<span class="lineNum"> 267 </span> : /* xmm register use */
|
||||
<span class="lineNum"> 268 </span><span class="lineNoCov"> 0 : asm volatile ("vzeroupper" : : : "memory");</span>
|
||||
<span class="lineNum"> 268 </span><span class="lineCov"> 19675 : asm volatile ("vzeroupper" : : : "memory");</span>
|
||||
<span class="lineNum"> 269 </span> : }
|
||||
<span class="lineNum"> 270 </span> : #endif
|
||||
<span class="lineNum"> 271 </span> : #endif /* CONFIG_X86 */
|
||||
|
|
|
|||
|
|
@ -61,11 +61,11 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="intz.c.gcov.html#70">raid_genz_int64</a></td>
|
||||
<td class="coverFnHi">10</td>
|
||||
<td class="coverFnHi">29</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="coverFn"><a href="intz.c.gcov.html#19">raid_genz_int32</a></td>
|
||||
<td class="coverFnHi">9</td>
|
||||
<td class="coverFnHi">29</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
|
|
|
|||
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