summaryrefslogtreecommitdiffstats
path: root/src/server/image.c
diff options
context:
space:
mode:
authorSimon Rettberg2020-03-03 15:48:26 +0100
committerSimon Rettberg2020-03-03 15:48:26 +0100
commitf9468ef42cb5e2b1779c3309b2bbbe2495418787 (patch)
treef43a86d182f5994cfdbffb2ccdc636b5cb309fa9 /src/server/image.c
parent[SERVER] Also add a flag for uplink queue overload (diff)
downloaddnbd3-f9468ef42cb5e2b1779c3309b2bbbe2495418787.tar.gz
dnbd3-f9468ef42cb5e2b1779c3309b2bbbe2495418787.tar.xz
dnbd3-f9468ef42cb5e2b1779c3309b2bbbe2495418787.zip
[SERVER] Expose image->problem bools as bitmask in RPC json data
Diffstat (limited to 'src/server/image.c')
-rw-r--r--src/server/image.c13
1 files changed, 11 insertions, 2 deletions
diff --git a/src/server/image.c b/src/server/image.c
index 1ce1574..a6aec82 100644
--- a/src/server/image.c
+++ b/src/server/image.c
@@ -1576,14 +1576,23 @@ json_t* image_getListAsJson()
ref_put( &uplink->reference );
}
- jsonImage = json_pack( "{sisssisisisisI}",
+ int problems = 0;
+#define addproblem(name,val) if (image->problem.name) problems |= (1 << val)
+ addproblem(read, 0);
+ addproblem(write, 1);
+ addproblem(changed, 2);
+ addproblem(uplink, 3);
+ addproblem(queue, 4);
+
+ jsonImage = json_pack( "{sisssisisisisIsi}",
"id", image->id, // id, name, rid never change, so access them without locking
"name", image->name,
"rid", (int) image->rid,
"users", image->users,
"complete", completeness,
"idle", idleTime,
- "size", (json_int_t)image->virtualFilesize );
+ "size", (json_int_t)image->virtualFilesize,
+ "problems", problems );
if ( bytesReceived != 0 ) {
json_object_set_new( jsonImage, "bytesReceived", json_integer( (json_int_t) bytesReceived ) );
}