root/tools/testing/selftests/ublk/metadata_size.c
// SPDX-License-Identifier: GPL-2.0
#include <fcntl.h>
#include <linux/fs.h>
#include <stdio.h>
#include <sys/ioctl.h>

int main(int argc, char **argv)
{
        struct logical_block_metadata_cap cap = {};
        const char *filename;
        int fd;
        int result;

        if (argc != 2) {
                fprintf(stderr, "Usage: %s BLOCK_DEVICE\n", argv[0]);
                return 1;
        }

        filename = argv[1];
        fd = open(filename, O_RDONLY);
        if (fd < 0) {
                perror(filename);
                return 1;
        }

        result = ioctl(fd, FS_IOC_GETLBMD_CAP, &cap);
        if (result < 0) {
                perror("ioctl");
                return 1;
        }

        printf("metadata_size: %u\n", cap.lbmd_size);
        printf("pi_offset: %u\n", cap.lbmd_pi_offset);
        printf("pi_tuple_size: %u\n", cap.lbmd_pi_size);
        return 0;
}