OS Manuals

llapi_file_get_stripe(3)

llapi_file_get_stripe - get striping information for a file or a directory on a Lustre filesystem

LLAPI_FILE_GET_STRIPE(3) Lustre Library Functions LLAPI_FILE_GET_STRIPE(3)

llapi_file_get_stripe - get striping information for a file or a directory on a Lustre filesystem

#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <lustre/lustreapi.h>
int llapi_file_get_stripe(const char *path, void *lum);

llapi_file_get_stripe() returns striping information for a file or a directory path in lum (which should point to a large enough memory region) in one of the following formats:

struct lov_user_md_v1 {

__u32 lmm_magic;
__u32 lmm_pattern;
__u64 lmm_object_id;
__u64 lmm_object_seq;
__u32 lmm_stripe_size;
__u16 lmm_stripe_count;
__u16 lmm_stripe_offset;
struct lov_user_ost_data_v1 lmm_objects[]; } __attribute__((packed)); struct lov_user_md_v3 {
__u32 lmm_magic;
__u32 lmm_pattern;
__u64 lmm_object_id;
__u64 lmm_object_seq;
__u32 lmm_stripe_size;
__u16 lmm_stripe_count;
__u16 lmm_stripe_offset;
char lmm_pool_name[LOV_MAXPOOLNAME + 1];
struct lov_user_ost_data_v1 lmm_objects[]; } __attribute__((packed));
specifies the format of the returned striping information. LOV_MAGIC_V1 is used for lov_user_md_v1. LOV_MAGIC_V3 is used for lov_user_md_v3.
holds the striping pattern. Only LOV_PATTERN_RAID0 is possible in this Lustre version.
holds the MDS object id.
holds the MDS object group.
holds the stripe size in bytes.
holds the number of OSTs the file is striped across.
holds the OST index from which the file starts.
holds the OST pool name to which the file belongs.
is an array of lmm_stripe_count members containing per OST file information in the following format:

struct lov_user_ost_data_v1 {

__u64 l_object_id;
__u64 l_object_seq;
__u32 l_ost_gen;
__u32 l_ost_idx; } __attribute__((packed));
holds the OST object id.
holds the OST object group.
holds the generation of the OST index.
holds the OST index in LOV.

llapi_file_get_stripe() returns:

0
on success
!= 0
on failure, errno is set appropriately.

ENOMEM
failed to allocate memory.
ENAMETOOLONG
path was too long.
ENOENT
path does not point to a file or a directory.
ENOTTY
path does not point to a Lustre filesystem.
EFAULT
memory region pointed by lum is not properly mapped.

#include <sys/vfs.h>
#include <lustre/lustreapi.h>
static inline int maxint(int a, int b)
{

return a > b ? a : b; } static void *alloc_lum() {
int v1, v3, join;
v1 = sizeof(struct lov_user_md_v1) +
LOV_MAX_STRIPE_COUNT * sizeof(struct lov_user_ost_data_v1);
v3 = sizeof(struct lov_user_md_v3) +
LOV_MAX_STRIPE_COUNT * sizeof(struct lov_user_ost_data_v1);
return malloc(maxint(v1, v3)); } int main(int argc, char** argv) {
struct lov_user_md *lum_file = NULL;
int rc;
int lum_size;
if (argc != 2) {
fprintf(stderr, "Usage: %s <filename>\n", argv[0]);
return 1;
}
lum_file = alloc_lum();
if (lum_file == NULL) {
rc = ENOMEM;
goto cleanup;
}
rc = llapi_file_get_stripe(argv[1], lum_file);
if (rc) {
rc = errno;
goto cleanup;
}
/* stripe_size stripe_count */
printf("%d %d\n",
lum_file->lmm_stripe_size,
lum_file->lmm_stripe_count); cleanup:
if (lum_file != NULL)
free(lum_file);
return rc; }

llapi_file_get_stripe() is part of the lustre(7) user application interface library since release 2.4.0

lustre(7), lustreapi(7)

2024-08-23 Lustre User API

lustre 2.17.60-r0 · enterprise-packages · ingested 2026-10-22