Add the option --test-skip-multi-scan to skip multithreads scan

This commit is contained in:
Andrea Mazzoleni 2022-01-07 21:03:51 +01:00
parent 7948d3d3de
commit 1d4fbd3f9a
3 changed files with 14 additions and 2 deletions

View file

@ -1626,7 +1626,10 @@ static int state_diffscan(struct snapraid_state* state, int is_diff)
for (i = scanlist; i != 0; i = i->next) {
struct snapraid_scan* scan = i->data;
#if HAVE_THREAD
thread_create(&scan->thread, scan_disk, scan);
if (state->opt.skip_multi_scan)
scan_disk(scan);
else
thread_create(&scan->thread, scan_disk, scan);
#else
scan_disk(scan);
#endif
@ -1639,7 +1642,8 @@ static int state_diffscan(struct snapraid_state* state, int is_diff)
void* retval;
/* wait for thread termination */
thread_join(scan->thread, &retval);
if (!state->opt.skip_multi_scan)
thread_join(scan->thread, &retval);
}
#endif

View file

@ -307,6 +307,7 @@ void config(char* conf, size_t conf_size, const char* argv0)
#define OPT_TEST_SKIP_CONTENT_WRITE 302
#define OPT_TEST_SKIP_SPACE_HOLDER 303
#define OPT_TEST_FORMAT 304
#define OPT_TEST_SKIP_MULTI_SCAN 305
#if HAVE_GETOPT_LONG
struct option long_options[] = {
@ -475,6 +476,9 @@ struct option long_options[] = {
/* Set the output format */
{ "test-fmt", 1, 0, OPT_TEST_FORMAT },
/* Skip thread in disk scan */
{ "test-skip-multi-scan", 0, 0, OPT_TEST_SKIP_MULTI_SCAN },
{ 0, 0, 0, 0 }
};
#endif
@ -929,6 +933,9 @@ int main(int argc, char* argv[])
/* LCOV_EXCL_STOP */
}
break;
case OPT_TEST_SKIP_MULTI_SCAN :
opt.skip_multi_scan = 1;
break;
default :
/* LCOV_EXCL_START */
log_fatal("Unknown option '%c'\n", (char)c);

View file

@ -119,6 +119,7 @@ struct snapraid_option {
int auto_conf; /**< Allow to run without configuration file. */
int force_stats; /**< Force stats print during process. */
uint64_t parity_limit_size; /**< Test limit for parity files. */
int skip_multi_scan; /**< Don't use threads in scan. */
};
struct snapraid_state {