summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSimon Rettberg2019-01-31 11:39:42 +0100
committerSimon Rettberg2019-01-31 11:39:42 +0100
commit311e76534cbe8069c1ac9189e8912d0d58bdb498 (patch)
tree0b2a2b4e9ae4558ab87c95c1ca18b346d4afbe03
parent[SERVER] altservers.c: Improve log output (diff)
downloaddnbd3-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.
-rw-r--r--src/server/image.c9
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 ) );