diff options
author | Simon Rettberg | 2018-06-13 16:14:39 +0200 |
---|---|---|
committer | Simon Rettberg | 2018-06-13 16:14:39 +0200 |
commit | 6c87083685744b6aa899de50128ab74ef8f89982 (patch) | |
tree | 36c569b0daec966d8a505ccd79f57b6c76888861 /src/server/integrity.c | |
parent | [FUSE] Return 0 instead of EIO if trying to read past end (diff) | |
download | dnbd3-6c87083685744b6aa899de50128ab74ef8f89982.tar.gz dnbd3-6c87083685744b6aa899de50128ab74ef8f89982.tar.xz dnbd3-6c87083685744b6aa899de50128ab74ef8f89982.zip |
[SERVER] Make sure image has read fd before reading
Diffstat (limited to 'src/server/integrity.c')
-rw-r--r-- | src/server/integrity.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/src/server/integrity.c b/src/server/integrity.c index e07a076..e8124f4 100644 --- a/src/server/integrity.c +++ b/src/server/integrity.c @@ -117,6 +117,12 @@ static void* integrity_main(void * data UNUSED) if ( i + 1 == queueLen ) queueLen--; if ( image == NULL ) continue; // We have the image. Call image_release() some time + // Make sure the image is open for reading (closeUnusedFd) + if ( !image_ensureOpen( image ) ) { + logadd( LOG_MINOR, "Cannot hash check block %d of %s -- no readFd", checkQueue[i].block, image->path ); + image_release( image ); + continue; + } spin_lock( &image->lock ); if ( image->crc32 != NULL && image->realFilesize != 0 ) { int const blocks[2] = { checkQueue[i].block, -1 }; |