diff options
author | Simon Rettberg | 2019-01-31 11:39:42 +0100 |
---|---|---|
committer | Simon Rettberg | 2019-01-31 11:39:42 +0100 |
commit | 311e76534cbe8069c1ac9189e8912d0d58bdb498 (patch) | |
tree | 0b2a2b4e9ae4558ab87c95c1ca18b346d4afbe03 /src/server | |
parent | [SERVER] altservers.c: Improve log output (diff) | |
download | dnbd3-311e76534cbe8069c1ac9189e8912d0d58bdb498.tar.gz dnbd3-311e76534cbe8069c1ac9189e8912d0d58bdb498.tar.xz dnbd3-311e76534cbe8069c1ac9189e8912d0d58bdb498.zip |
[SERVER] Export image idle time in json rpc
Counter in seconds for how long this image hasn't been used.
Diffstat (limited to 'src/server')
-rw-r--r-- | src/server/image.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/src/server/image.c b/src/server/image.c index 9d36317..061f9a3 100644 --- a/src/server/image.c +++ b/src/server/image.c @@ -1504,7 +1504,8 @@ json_t* image_getListAsJson() int i; char uplinkName[100] = { 0 }; uint64_t bytesReceived; - int users, completeness; + int users, completeness, idleTime; + declare_now; spin_lock( &imageListLock ); for ( i = 0; i < _num_images; ++i ) { @@ -1513,25 +1514,27 @@ json_t* image_getListAsJson() spin_lock( &image->lock ); spin_unlock( &imageListLock ); users = image->users; + idleTime = (int)timing_diff( &image->atime, &now ); completeness = image_getCompletenessEstimate( image ); if ( image->uplink == NULL ) { bytesReceived = 0; uplinkName[0] = '\0'; } else { bytesReceived = image->uplink->bytesReceived; - if ( !host_to_string( &image->uplink->currentServer, uplinkName, sizeof(uplinkName) ) ) { + if ( image->uplink->fd == -1 || !host_to_string( &image->uplink->currentServer, uplinkName, sizeof(uplinkName) ) ) { uplinkName[0] = '\0'; } } image->users++; // Prevent freeing after we unlock spin_unlock( &image->lock ); - jsonImage = json_pack( "{sisssisisisI}", + jsonImage = json_pack( "{sisssisisisisI}", "id", image->id, // id, name, rid never change, so access them without locking "name", image->name, "rid", (int) image->rid, "users", users, "complete", completeness, + "idle", idleTime, "size", (json_int_t)image->virtualFilesize ); if ( bytesReceived != 0 ) { json_object_set_new( jsonImage, "bytesReceived", json_integer( (json_int_t) bytesReceived ) ); |