summaryrefslogtreecommitdiffstats
path: root/src/server/image.c
diff options
context:
space:
mode:
authorSimon Rettberg2024-07-05 10:48:29 +0200
committerSimon Rettberg2024-07-05 10:48:29 +0200
commitae91f373cf5ce045fe65df022fae151fe915c6c3 (patch)
treec6b069316052f507a52786841054b1afb6d51e4f /src/server/image.c
parent[SERVER] integrity: Add comments, line wraps, add check for full scan (diff)
downloaddnbd3-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.c35
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();
+}