root/fs/dlm/util.c
// SPDX-License-Identifier: GPL-2.0-only
/******************************************************************************
*******************************************************************************
**
**  Copyright (C) 2005-2008 Red Hat, Inc.  All rights reserved.
**
**
*******************************************************************************
******************************************************************************/

#include "dlm_internal.h"
#include "rcom.h"
#include "util.h"

#define DLM_ERRNO_EDEADLK               35
#define DLM_ERRNO_EBADR                 53
#define DLM_ERRNO_EBADSLT               57
#define DLM_ERRNO_EPROTO                71
#define DLM_ERRNO_EOPNOTSUPP            95
#define DLM_ERRNO_ETIMEDOUT            110
#define DLM_ERRNO_EINPROGRESS          115

/* higher errno values are inconsistent across architectures, so select
   one set of values for on the wire */

int to_dlm_errno(int err)
{
        switch (err) {
        case -EDEADLK:
                return -DLM_ERRNO_EDEADLK;
        case -EBADR:
                return -DLM_ERRNO_EBADR;
        case -EBADSLT:
                return -DLM_ERRNO_EBADSLT;
        case -EPROTO:
                return -DLM_ERRNO_EPROTO;
        case -EOPNOTSUPP:
                return -DLM_ERRNO_EOPNOTSUPP;
        case -ETIMEDOUT:
                return -DLM_ERRNO_ETIMEDOUT;
        case -EINPROGRESS:
                return -DLM_ERRNO_EINPROGRESS;
        }
        return err;
}

int from_dlm_errno(int err)
{
        switch (err) {
        case -DLM_ERRNO_EDEADLK:
                return -EDEADLK;
        case -DLM_ERRNO_EBADR:
                return -EBADR;
        case -DLM_ERRNO_EBADSLT:
                return -EBADSLT;
        case -DLM_ERRNO_EPROTO:
                return -EPROTO;
        case -DLM_ERRNO_EOPNOTSUPP:
                return -EOPNOTSUPP;
        case -DLM_ERRNO_ETIMEDOUT:
                return -ETIMEDOUT;
        case -DLM_ERRNO_EINPROGRESS:
                return -EINPROGRESS;
        }
        return err;
}