^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) // SPDX-License-Identifier: GPL-2.0+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3) * Copyright (C) 2017 Oracle. All Rights Reserved.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4) * Author: Darrick J. Wong <darrick.wong@oracle.com>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6) #ifndef __XFS_FSMAP_H__
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7) #define __XFS_FSMAP_H__
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9) struct fsmap;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) /* internal fsmap representation */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) struct xfs_fsmap {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) dev_t fmr_device; /* device id */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) uint32_t fmr_flags; /* mapping flags */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) uint64_t fmr_physical; /* device offset of segment */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) uint64_t fmr_owner; /* owner id */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) xfs_fileoff_t fmr_offset; /* file offset of segment */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) xfs_filblks_t fmr_length; /* length of segment, blocks */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) struct xfs_fsmap_head {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) uint32_t fmh_iflags; /* control flags */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) uint32_t fmh_oflags; /* output flags */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) unsigned int fmh_count; /* # of entries in array incl. input */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) unsigned int fmh_entries; /* # of entries filled in (output). */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) struct xfs_fsmap fmh_keys[2]; /* low and high keys */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) void xfs_fsmap_to_internal(struct xfs_fsmap *dest, struct fsmap *src);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) int xfs_getfsmap(struct xfs_mount *mp, struct xfs_fsmap_head *head,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) struct fsmap *out_recs);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) #endif /* __XFS_FSMAP_H__ */