Commit 8e2e4086 authored by Alexander Aring's avatar Alexander Aring Committed by David Teigland

fs: dlm: add union in dlm header for lockspace id

This patch adds union inside the lockspace id to handle it also for
another use case for a different dlm command.
Signed-off-by: default avatarAlexander Aring <aahringo@redhat.com>
Signed-off-by: default avatarDavid Teigland <teigland@redhat.com>
parent 37a247da
...@@ -380,7 +380,10 @@ static inline int rsb_flag(struct dlm_rsb *r, enum rsb_flags flag) ...@@ -380,7 +380,10 @@ static inline int rsb_flag(struct dlm_rsb *r, enum rsb_flags flag)
struct dlm_header { struct dlm_header {
uint32_t h_version; uint32_t h_version;
uint32_t h_lockspace; union {
/* for DLM_MSG and DLM_RCOM */
uint32_t h_lockspace;
} u;
uint32_t h_nodeid; /* nodeid of sender */ uint32_t h_nodeid; /* nodeid of sender */
uint16_t h_length; uint16_t h_length;
uint8_t h_cmd; /* DLM_MSG, DLM_RCOM */ uint8_t h_cmd; /* DLM_MSG, DLM_RCOM */
......
...@@ -3544,7 +3544,7 @@ static int _create_message(struct dlm_ls *ls, int mb_len, ...@@ -3544,7 +3544,7 @@ static int _create_message(struct dlm_ls *ls, int mb_len,
ms = (struct dlm_message *) mb; ms = (struct dlm_message *) mb;
ms->m_header.h_version = (DLM_HEADER_MAJOR | DLM_HEADER_MINOR); ms->m_header.h_version = (DLM_HEADER_MAJOR | DLM_HEADER_MINOR);
ms->m_header.h_lockspace = ls->ls_global_id; ms->m_header.u.h_lockspace = ls->ls_global_id;
ms->m_header.h_nodeid = dlm_our_nodeid(); ms->m_header.h_nodeid = dlm_our_nodeid();
ms->m_header.h_length = mb_len; ms->m_header.h_length = mb_len;
ms->m_header.h_cmd = DLM_MSG; ms->m_header.h_cmd = DLM_MSG;
...@@ -5038,16 +5038,16 @@ void dlm_receive_buffer(union dlm_packet *p, int nodeid) ...@@ -5038,16 +5038,16 @@ void dlm_receive_buffer(union dlm_packet *p, int nodeid)
if (hd->h_nodeid != nodeid) { if (hd->h_nodeid != nodeid) {
log_print("invalid h_nodeid %d from %d lockspace %x", log_print("invalid h_nodeid %d from %d lockspace %x",
hd->h_nodeid, nodeid, hd->h_lockspace); hd->h_nodeid, nodeid, hd->u.h_lockspace);
return; return;
} }
ls = dlm_find_lockspace_global(hd->h_lockspace); ls = dlm_find_lockspace_global(hd->u.h_lockspace);
if (!ls) { if (!ls) {
if (dlm_config.ci_log_debug) { if (dlm_config.ci_log_debug) {
printk_ratelimited(KERN_DEBUG "dlm: invalid lockspace " printk_ratelimited(KERN_DEBUG "dlm: invalid lockspace "
"%u from %d cmd %d type %d\n", "%u from %d cmd %d type %d\n",
hd->h_lockspace, nodeid, hd->h_cmd, type); hd->u.h_lockspace, nodeid, hd->h_cmd, type);
} }
if (hd->h_cmd == DLM_RCOM && type == DLM_RCOM_STATUS) if (hd->h_cmd == DLM_RCOM && type == DLM_RCOM_STATUS)
......
...@@ -35,7 +35,7 @@ static void _create_rcom(struct dlm_ls *ls, int to_nodeid, int type, int len, ...@@ -35,7 +35,7 @@ static void _create_rcom(struct dlm_ls *ls, int to_nodeid, int type, int len,
rc = (struct dlm_rcom *) mb; rc = (struct dlm_rcom *) mb;
rc->rc_header.h_version = (DLM_HEADER_MAJOR | DLM_HEADER_MINOR); rc->rc_header.h_version = (DLM_HEADER_MAJOR | DLM_HEADER_MINOR);
rc->rc_header.h_lockspace = ls->ls_global_id; rc->rc_header.u.h_lockspace = ls->ls_global_id;
rc->rc_header.h_nodeid = dlm_our_nodeid(); rc->rc_header.h_nodeid = dlm_our_nodeid();
rc->rc_header.h_length = mb_len; rc->rc_header.h_length = mb_len;
rc->rc_header.h_cmd = DLM_RCOM; rc->rc_header.h_cmd = DLM_RCOM;
...@@ -508,7 +508,7 @@ int dlm_send_ls_not_ready(int nodeid, struct dlm_rcom *rc_in) ...@@ -508,7 +508,7 @@ int dlm_send_ls_not_ready(int nodeid, struct dlm_rcom *rc_in)
rc = (struct dlm_rcom *) mb; rc = (struct dlm_rcom *) mb;
rc->rc_header.h_version = (DLM_HEADER_MAJOR | DLM_HEADER_MINOR); rc->rc_header.h_version = (DLM_HEADER_MAJOR | DLM_HEADER_MINOR);
rc->rc_header.h_lockspace = rc_in->rc_header.h_lockspace; rc->rc_header.u.h_lockspace = rc_in->rc_header.u.h_lockspace;
rc->rc_header.h_nodeid = dlm_our_nodeid(); rc->rc_header.h_nodeid = dlm_our_nodeid();
rc->rc_header.h_length = mb_len; rc->rc_header.h_length = mb_len;
rc->rc_header.h_cmd = DLM_RCOM; rc->rc_header.h_cmd = DLM_RCOM;
......
...@@ -23,7 +23,8 @@ ...@@ -23,7 +23,8 @@
void header_out(struct dlm_header *hd) void header_out(struct dlm_header *hd)
{ {
hd->h_version = cpu_to_le32(hd->h_version); hd->h_version = cpu_to_le32(hd->h_version);
hd->h_lockspace = cpu_to_le32(hd->h_lockspace); /* does it for others u32 in union as well */
hd->u.h_lockspace = cpu_to_le32(hd->u.h_lockspace);
hd->h_nodeid = cpu_to_le32(hd->h_nodeid); hd->h_nodeid = cpu_to_le32(hd->h_nodeid);
hd->h_length = cpu_to_le16(hd->h_length); hd->h_length = cpu_to_le16(hd->h_length);
} }
...@@ -31,7 +32,8 @@ void header_out(struct dlm_header *hd) ...@@ -31,7 +32,8 @@ void header_out(struct dlm_header *hd)
void header_in(struct dlm_header *hd) void header_in(struct dlm_header *hd)
{ {
hd->h_version = le32_to_cpu(hd->h_version); hd->h_version = le32_to_cpu(hd->h_version);
hd->h_lockspace = le32_to_cpu(hd->h_lockspace); /* does it for others u32 in union as well */
hd->u.h_lockspace = le32_to_cpu(hd->u.h_lockspace);
hd->h_nodeid = le32_to_cpu(hd->h_nodeid); hd->h_nodeid = le32_to_cpu(hd->h_nodeid);
hd->h_length = le16_to_cpu(hd->h_length); hd->h_length = le16_to_cpu(hd->h_length);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment