blob: 50cec97f70563831bfc7a5a735597951b5d2ba4a [file] [log] [blame]
/*
* Copyright CEA/DAM/DIF (2008)
* contributeur : Philippe DENIEL philippe.deniel@cea.fr
* Thomas LEIBOVICI thomas.leibovici@cea.fr
*
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
* as published by the Free Software Foundation; either version 3 of
* the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
* 02110-1301 USA
*
* ---------------------------------------
*/
/**
* @defgroup FSAL File-System Abstraction Layer
* @{
*/
/**
* @file fsal_convert.h
* @brief FSAL conversion function.
*/
#ifndef FSAL_CONVERT_H
#define FSAL_CONVERT_H
#include <sys/types.h>
#include <sys/stat.h>
#include <time.h>
#include <unistd.h>
#include "fsal_types.h"
/* convert error codes */
int posix2fsal_error(int posix_errorcode);
static inline fsal_status_t posix2fsal_status(int posix_errorcode)
{
return fsalstat(posix2fsal_error(posix_errorcode), posix_errorcode);
}
/** converts an fsal open flag to a POSIX open flag. */
void fsal2posix_openflags(fsal_openflags_t fsal_flags, int *p_posix_flags);
/** converts an FSAL permission test to a Posix permission test. */
int fsal2posix_testperm(fsal_accessflags_t testperm);
/**
* Converts POSIX attributes (struct stat) to FSAL attributes
* (fsal_attrib_list_t)
*/
void posix2fsal_attributes(const struct stat *buffstat,
struct attrlist *fsalattr_out);
/** converts FSAL access mode to unix mode. */
mode_t fsal2unix_mode(uint32_t fsal_mode);
/** converts unix access mode to fsal mode. */
uint32_t unix2fsal_mode(mode_t unix_mode);
/** converts POSIX object type to fsal object type. */
object_file_type_t posix2fsal_type(mode_t posix_type_in);
/** converts posix fsid to fsal FSid. */
fsal_fsid_t posix2fsal_fsid(dev_t posix_devid);
/**
* posix2fsal_time:
* Convert POSIX time structure (time_t)
* to FSAL time type (now struct timespec).
*/
static inline struct timespec posix2fsal_time(time_t tsec, time_t nsec)
{
struct timespec ts = {.tv_sec = tsec, .tv_nsec = nsec};
return ts;
}
const char *object_file_type_to_str(object_file_type_t type);
#define my_high32m(a) ((unsigned int)(a >> 32))
#define my_low32m(a) ((unsigned int)a)
extern size_t open_fd_count;
fsal_dev_t posix2fsal_devt(dev_t posix_devid);
#endif /* !FSAL_CONVERT_H */
/** @} */