blob: 8c3634c40de1c802146a17d50456609b268f853e [file] [log] [blame]
// SPDX-License-Identifier: GPL-2.0
/*
* Copyright (C) 2025 Oracle. All Rights Reserved.
* Author: Darrick J. Wong <djwong@kernel.org>
*/
#ifndef __LIBFROG_HANDLE_PRIV_H__
#define __LIBFROG_HANDLE_PRIV_H__
/*
* Private helpers to construct an xfs_handle without publishing those details
* in the public libhandle header files.
*/
/*
* Fills out the fsid part of a handle. This does not initialize the fid part
* of the handle; use either of the two functions below.
*/
static inline void
handle_from_fshandle(
struct xfs_handle *handle,
const void *fshandle,
size_t fshandle_len)
{
ASSERT(fshandle_len == sizeof(xfs_fsid_t));
memcpy(&handle->ha_fsid, fshandle, sizeof(handle->ha_fsid));
handle->ha_fid.fid_len = sizeof(xfs_fid_t) -
sizeof(handle->ha_fid.fid_len);
handle->ha_fid.fid_pad = 0;
handle->ha_fid.fid_ino = 0;
handle->ha_fid.fid_gen = 0;
}
/* Fill out the fid part of a handle from raw components. */
static inline void
handle_from_inogen(
struct xfs_handle *handle,
uint64_t ino,
uint32_t gen)
{
handle->ha_fid.fid_ino = ino;
handle->ha_fid.fid_gen = gen;
}
/* Fill out the fid part of a handle. */
static inline void
handle_from_bulkstat(
struct xfs_handle *handle,
const struct xfs_bulkstat *bstat)
{
handle->ha_fid.fid_ino = bstat->bs_ino;
handle->ha_fid.fid_gen = bstat->bs_gen;
}
#endif /* __LIBFROG_HANDLE_PRIV_H__ */