orangefs: turn param response value into union

This will support a upcoming request where two related values need to be
updated atomically.

This was done without a union in the OrangeFS server source already. Since
that will break the kernel protocol, it has been fixed there and done here
in a way that does not break the kernel protocol.

Signed-off-by: Martin Brandenburg <martin@omnibond.com>
diff --git a/fs/orangefs/downcall.h b/fs/orangefs/downcall.h
index 66b9921..db6e872 100644
--- a/fs/orangefs/downcall.h
+++ b/fs/orangefs/downcall.h
@@ -83,7 +83,10 @@
 };
 
 struct orangefs_param_response {
-	__s64 value;
+	union {
+		__s64 value64;
+		__s32 value32[2];
+	} u;
 };
 
 #define PERF_COUNT_BUF_SIZE 4096
diff --git a/fs/orangefs/orangefs-sysfs.c b/fs/orangefs/orangefs-sysfs.c
index 375708c..044ca65 100644
--- a/fs/orangefs/orangefs-sysfs.c
+++ b/fs/orangefs/orangefs-sysfs.c
@@ -949,10 +949,8 @@
 out:
 	if (!rc) {
 		if (strcmp(kobj_id, PC_KOBJ_ID)) {
-			rc = scnprintf(buf,
-				       PAGE_SIZE,
-				       "%d\n",
-				       (int)new_op->downcall.resp.param.value);
+			rc = scnprintf(buf, PAGE_SIZE, "%d\n",
+			    (int)new_op->downcall.resp.param.u.value64);
 		} else {
 			rc = scnprintf(
 				buf,
@@ -1277,7 +1275,7 @@
 
 	new_op->upcall.req.param.type = ORANGEFS_PARAM_REQUEST_SET;
 
-	new_op->upcall.req.param.value = val;
+	new_op->upcall.req.param.u.value64 = val;
 
 	/*
 	 * The service_operation will return a errno return code on
diff --git a/fs/orangefs/upcall.h b/fs/orangefs/upcall.h
index 03a4360..7c29fdf 100644
--- a/fs/orangefs/upcall.h
+++ b/fs/orangefs/upcall.h
@@ -187,7 +187,10 @@
 struct orangefs_param_request_s {
 	enum orangefs_param_request_type type;
 	enum orangefs_param_request_op op;
-	__s64 value;
+	union {
+		__s64 value64;
+		__s32 value32[2];
+	} u;
 	char s_value[ORANGEFS_MAX_DEBUG_STRING_LEN];
 };