diff options
| author | Simon Rettberg | 2024-07-05 10:48:29 +0200 |
|---|---|---|
| committer | Simon Rettberg | 2024-07-05 10:48:29 +0200 |
| commit | ae91f373cf5ce045fe65df022fae151fe915c6c3 (patch) | |
| tree | c6b069316052f507a52786841054b1afb6d51e4f /src/server/image.c | |
| parent | [SERVER] integrity: Add comments, line wraps, add check for full scan (diff) | |
| download | dnbd3-ae91f373cf5ce045fe65df022fae151fe915c6c3.tar.gz dnbd3-ae91f373cf5ce045fe65df022fae151fe915c6c3.tar.xz dnbd3-ae91f373cf5ce045fe65df022fae151fe915c6c3.zip | |
[SERVER] Verify checksums of all images on SIGUSR1
Diffstat (limited to 'src/server/image.c')
| -rw-r--r-- | src/server/image.c | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/src/server/image.c b/src/server/image.c index 51fd5b6..f438c18 100644 --- a/src/server/image.c +++ b/src/server/image.c @@ -2125,3 +2125,38 @@ static void loadImageMeta(dnbd3_image_t *image) timing_gets( &image->atime, offset ); } +void image_checkForNextFullCheck(void) +{ + int i; + dnbd3_image_t *check = NULL; + + mutex_lock( &imageListLock ); + for (i = 0; i < _num_images; ++i) { + dnbd3_image_t * const image = _images[i]; + if ( image != NULL && image->wantCheck ) { + image->wantCheck = false; + check = image; + break; + } + } + mutex_unlock( &imageListLock ); + if ( check != NULL ) { + logadd( LOG_DEBUG1, "Queueing next full image check" ); + integrity_check( check, -1, false ); + } +} + +void image_hashAllImages(void) +{ + int i; + + mutex_lock( &imageListLock ); + for (i = 0; i < _num_images; ++i) { + dnbd3_image_t * const image = _images[i]; + if ( image != NULL ) { + image->wantCheck = true; + } + } + mutex_unlock( &imageListLock ); + integrity_trigger(); +} |
