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: Alexander Aring <aahringo@redhat.com> Signed-off-by: David Teigland <teigland@redhat.com>
This commit is contained in:
committed by
David Teigland
parent
37a247da51
commit
8e2e40860c
@@ -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,
|
|||||||
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)
|
|||||||
|
|
||||||
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,
|
|||||||
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)
|
|||||||
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 @@
|
|||||||
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)
|
|||||||
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);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user