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 <aahri...@redhat.com>
---
 fs/dlm/dlm_internal.h | 5 ++++-
 fs/dlm/lock.c         | 8 ++++----
 fs/dlm/midcomms.c     | 1 -
 fs/dlm/rcom.c         | 4 ++--
 fs/dlm/util.c         | 6 ++++--
 5 files changed, 14 insertions(+), 10 deletions(-)

diff --git a/fs/dlm/dlm_internal.h b/fs/dlm/dlm_internal.h
index 04fe9f525ac7..917de7367a32 100644
--- a/fs/dlm/dlm_internal.h
+++ b/fs/dlm/dlm_internal.h
@@ -377,7 +377,10 @@ static inline int rsb_flag(struct dlm_rsb *r, enum 
rsb_flags flag)
 
 struct dlm_header {
        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 */
        uint16_t                h_length;
        uint8_t                 h_cmd;          /* DLM_MSG, DLM_RCOM */
diff --git a/fs/dlm/lock.c b/fs/dlm/lock.c
index b3fd823009f4..daa5747c8556 100644
--- a/fs/dlm/lock.c
+++ b/fs/dlm/lock.c
@@ -3544,7 +3544,7 @@ static int _create_message(struct dlm_ls *ls, int mb_len,
        ms = (struct dlm_message *) mb;
 
        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_length = mb_len;
        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) {
                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;
        }
 
-       ls = dlm_find_lockspace_global(hd->h_lockspace);
+       ls = dlm_find_lockspace_global(hd->u.h_lockspace);
        if (!ls) {
                if (dlm_config.ci_log_debug) {
                        printk_ratelimited(KERN_DEBUG "dlm: invalid lockspace "
                                "%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)
diff --git a/fs/dlm/midcomms.c b/fs/dlm/midcomms.c
index 45dd3d7d857f..71a1f0c910b3 100644
--- a/fs/dlm/midcomms.c
+++ b/fs/dlm/midcomms.c
@@ -149,4 +149,3 @@ int dlm_process_incoming_buffer(int nodeid, unsigned char 
*buf, int len)
 
        return ret;
 }
-
diff --git a/fs/dlm/rcom.c b/fs/dlm/rcom.c
index 7a7d4a8e4706..06f7a5f1d99d 100644
--- a/fs/dlm/rcom.c
+++ b/fs/dlm/rcom.c
@@ -49,7 +49,7 @@ static int create_rcom(struct dlm_ls *ls, int to_nodeid, int 
type, int len,
        rc = (struct dlm_rcom *) mb;
 
        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_length = mb_len;
        rc->rc_header.h_cmd = DLM_RCOM;
@@ -476,7 +476,7 @@ int dlm_send_ls_not_ready(int nodeid, struct dlm_rcom 
*rc_in)
        rc = (struct dlm_rcom *) mb;
 
        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_length = mb_len;
        rc->rc_header.h_cmd = DLM_RCOM;
diff --git a/fs/dlm/util.c b/fs/dlm/util.c
index 74a8c5bfe9b5..58acbcc2081a 100644
--- a/fs/dlm/util.c
+++ b/fs/dlm/util.c
@@ -23,7 +23,8 @@
 void header_out(struct dlm_header *hd)
 {
        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_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)
 {
        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_length            = le16_to_cpu(hd->h_length);
 }
-- 
2.26.2

Reply via email to