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>
This commit is contained in:
Martin Brandenburg 2016-08-02 16:33:34 -04:00
parent a6dff80a96
commit 680908e504
3 changed files with 11 additions and 7 deletions

View File

@ -83,7 +83,10 @@ struct orangefs_listxattr_response {
}; };
struct orangefs_param_response { struct orangefs_param_response {
__s64 value; union {
__s64 value64;
__s32 value32[2];
} u;
}; };
#define PERF_COUNT_BUF_SIZE 4096 #define PERF_COUNT_BUF_SIZE 4096

View File

@ -949,10 +949,8 @@ static int sysfs_service_op_show(char *kobj_id, char *buf, void *attr)
out: out:
if (!rc) { if (!rc) {
if (strcmp(kobj_id, PC_KOBJ_ID)) { if (strcmp(kobj_id, PC_KOBJ_ID)) {
rc = scnprintf(buf, rc = scnprintf(buf, PAGE_SIZE, "%d\n",
PAGE_SIZE, (int)new_op->downcall.resp.param.u.value64);
"%d\n",
(int)new_op->downcall.resp.param.value);
} else { } else {
rc = scnprintf( rc = scnprintf(
buf, buf,
@ -1277,7 +1275,7 @@ static int sysfs_service_op_store(char *kobj_id, const char *buf, void *attr)
new_op->upcall.req.param.type = ORANGEFS_PARAM_REQUEST_SET; 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 * The service_operation will return a errno return code on

View File

@ -187,7 +187,10 @@ enum orangefs_param_request_op {
struct orangefs_param_request_s { struct orangefs_param_request_s {
enum orangefs_param_request_type type; enum orangefs_param_request_type type;
enum orangefs_param_request_op op; enum orangefs_param_request_op op;
__s64 value; union {
__s64 value64;
__s32 value32[2];
} u;
char s_value[ORANGEFS_MAX_DEBUG_STRING_LEN]; char s_value[ORANGEFS_MAX_DEBUG_STRING_LEN];
}; };