Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 680908e5 authored by Martin Brandenburg's avatar Martin Brandenburg
Browse files

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: default avatarMartin Brandenburg <martin@omnibond.com>
parent a6dff80a
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -83,7 +83,10 @@ struct orangefs_listxattr_response {
};

struct orangefs_param_response {
	__s64 value;
	union {
		__s64 value64;
		__s32 value32[2];
	} u;
};

#define PERF_COUNT_BUF_SIZE 4096
+3 −5
Original line number Diff line number Diff line
@@ -949,10 +949,8 @@ static int sysfs_service_op_show(char *kobj_id, char *buf, void *attr)
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 @@ 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.value = val;
	new_op->upcall.req.param.u.value64 = val;

	/*
	 * The service_operation will return a errno return code on
+4 −1
Original line number Diff line number Diff line
@@ -187,7 +187,10 @@ enum orangefs_param_request_op {
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];
};