root/fs/dlm/util.c

/* [<][>][^][v][top][bottom][index][help] */

DEFINITIONS

This source file includes following definitions.
  1. header_out
  2. header_in
  3. to_dlm_errno
  4. from_dlm_errno
  5. dlm_message_out
  6. dlm_message_in
  7. dlm_rcom_out
  8. dlm_rcom_in

   1 // SPDX-License-Identifier: GPL-2.0-only
   2 /******************************************************************************
   3 *******************************************************************************
   4 **
   5 **  Copyright (C) 2005-2008 Red Hat, Inc.  All rights reserved.
   6 **
   7 **
   8 *******************************************************************************
   9 ******************************************************************************/
  10 
  11 #include "dlm_internal.h"
  12 #include "rcom.h"
  13 #include "util.h"
  14 
  15 #define DLM_ERRNO_EDEADLK               35
  16 #define DLM_ERRNO_EBADR                 53
  17 #define DLM_ERRNO_EBADSLT               57
  18 #define DLM_ERRNO_EPROTO                71
  19 #define DLM_ERRNO_EOPNOTSUPP            95
  20 #define DLM_ERRNO_ETIMEDOUT            110
  21 #define DLM_ERRNO_EINPROGRESS          115
  22 
  23 static void header_out(struct dlm_header *hd)
  24 {
  25         hd->h_version           = cpu_to_le32(hd->h_version);
  26         hd->h_lockspace         = cpu_to_le32(hd->h_lockspace);
  27         hd->h_nodeid            = cpu_to_le32(hd->h_nodeid);
  28         hd->h_length            = cpu_to_le16(hd->h_length);
  29 }
  30 
  31 static void header_in(struct dlm_header *hd)
  32 {
  33         hd->h_version           = le32_to_cpu(hd->h_version);
  34         hd->h_lockspace         = le32_to_cpu(hd->h_lockspace);
  35         hd->h_nodeid            = le32_to_cpu(hd->h_nodeid);
  36         hd->h_length            = le16_to_cpu(hd->h_length);
  37 }
  38 
  39 /* higher errno values are inconsistent across architectures, so select
  40    one set of values for on the wire */
  41 
  42 static int to_dlm_errno(int err)
  43 {
  44         switch (err) {
  45         case -EDEADLK:
  46                 return -DLM_ERRNO_EDEADLK;
  47         case -EBADR:
  48                 return -DLM_ERRNO_EBADR;
  49         case -EBADSLT:
  50                 return -DLM_ERRNO_EBADSLT;
  51         case -EPROTO:
  52                 return -DLM_ERRNO_EPROTO;
  53         case -EOPNOTSUPP:
  54                 return -DLM_ERRNO_EOPNOTSUPP;
  55         case -ETIMEDOUT:
  56                 return -DLM_ERRNO_ETIMEDOUT;
  57         case -EINPROGRESS:
  58                 return -DLM_ERRNO_EINPROGRESS;
  59         }
  60         return err;
  61 }
  62 
  63 static int from_dlm_errno(int err)
  64 {
  65         switch (err) {
  66         case -DLM_ERRNO_EDEADLK:
  67                 return -EDEADLK;
  68         case -DLM_ERRNO_EBADR:
  69                 return -EBADR;
  70         case -DLM_ERRNO_EBADSLT:
  71                 return -EBADSLT;
  72         case -DLM_ERRNO_EPROTO:
  73                 return -EPROTO;
  74         case -DLM_ERRNO_EOPNOTSUPP:
  75                 return -EOPNOTSUPP;
  76         case -DLM_ERRNO_ETIMEDOUT:
  77                 return -ETIMEDOUT;
  78         case -DLM_ERRNO_EINPROGRESS:
  79                 return -EINPROGRESS;
  80         }
  81         return err;
  82 }
  83 
  84 void dlm_message_out(struct dlm_message *ms)
  85 {
  86         header_out(&ms->m_header);
  87 
  88         ms->m_type              = cpu_to_le32(ms->m_type);
  89         ms->m_nodeid            = cpu_to_le32(ms->m_nodeid);
  90         ms->m_pid               = cpu_to_le32(ms->m_pid);
  91         ms->m_lkid              = cpu_to_le32(ms->m_lkid);
  92         ms->m_remid             = cpu_to_le32(ms->m_remid);
  93         ms->m_parent_lkid       = cpu_to_le32(ms->m_parent_lkid);
  94         ms->m_parent_remid      = cpu_to_le32(ms->m_parent_remid);
  95         ms->m_exflags           = cpu_to_le32(ms->m_exflags);
  96         ms->m_sbflags           = cpu_to_le32(ms->m_sbflags);
  97         ms->m_flags             = cpu_to_le32(ms->m_flags);
  98         ms->m_lvbseq            = cpu_to_le32(ms->m_lvbseq);
  99         ms->m_hash              = cpu_to_le32(ms->m_hash);
 100         ms->m_status            = cpu_to_le32(ms->m_status);
 101         ms->m_grmode            = cpu_to_le32(ms->m_grmode);
 102         ms->m_rqmode            = cpu_to_le32(ms->m_rqmode);
 103         ms->m_bastmode          = cpu_to_le32(ms->m_bastmode);
 104         ms->m_asts              = cpu_to_le32(ms->m_asts);
 105         ms->m_result            = cpu_to_le32(to_dlm_errno(ms->m_result));
 106 }
 107 
 108 void dlm_message_in(struct dlm_message *ms)
 109 {
 110         header_in(&ms->m_header);
 111 
 112         ms->m_type              = le32_to_cpu(ms->m_type);
 113         ms->m_nodeid            = le32_to_cpu(ms->m_nodeid);
 114         ms->m_pid               = le32_to_cpu(ms->m_pid);
 115         ms->m_lkid              = le32_to_cpu(ms->m_lkid);
 116         ms->m_remid             = le32_to_cpu(ms->m_remid);
 117         ms->m_parent_lkid       = le32_to_cpu(ms->m_parent_lkid);
 118         ms->m_parent_remid      = le32_to_cpu(ms->m_parent_remid);
 119         ms->m_exflags           = le32_to_cpu(ms->m_exflags);
 120         ms->m_sbflags           = le32_to_cpu(ms->m_sbflags);
 121         ms->m_flags             = le32_to_cpu(ms->m_flags);
 122         ms->m_lvbseq            = le32_to_cpu(ms->m_lvbseq);
 123         ms->m_hash              = le32_to_cpu(ms->m_hash);
 124         ms->m_status            = le32_to_cpu(ms->m_status);
 125         ms->m_grmode            = le32_to_cpu(ms->m_grmode);
 126         ms->m_rqmode            = le32_to_cpu(ms->m_rqmode);
 127         ms->m_bastmode          = le32_to_cpu(ms->m_bastmode);
 128         ms->m_asts              = le32_to_cpu(ms->m_asts);
 129         ms->m_result            = from_dlm_errno(le32_to_cpu(ms->m_result));
 130 }
 131 
 132 void dlm_rcom_out(struct dlm_rcom *rc)
 133 {
 134         header_out(&rc->rc_header);
 135 
 136         rc->rc_type             = cpu_to_le32(rc->rc_type);
 137         rc->rc_result           = cpu_to_le32(rc->rc_result);
 138         rc->rc_id               = cpu_to_le64(rc->rc_id);
 139         rc->rc_seq              = cpu_to_le64(rc->rc_seq);
 140         rc->rc_seq_reply        = cpu_to_le64(rc->rc_seq_reply);
 141 }
 142 
 143 void dlm_rcom_in(struct dlm_rcom *rc)
 144 {
 145         header_in(&rc->rc_header);
 146 
 147         rc->rc_type             = le32_to_cpu(rc->rc_type);
 148         rc->rc_result           = le32_to_cpu(rc->rc_result);
 149         rc->rc_id               = le64_to_cpu(rc->rc_id);
 150         rc->rc_seq              = le64_to_cpu(rc->rc_seq);
 151         rc->rc_seq_reply        = le64_to_cpu(rc->rc_seq_reply);
 152 }

/* [<][>][^][v][top][bottom][index][help] */