0001
0002
0003
0004
0005
0006
0007 #ifndef __EXT4_FSMAP_H__
0008 #define __EXT4_FSMAP_H__
0009
0010 struct fsmap;
0011
0012
0013 struct ext4_fsmap {
0014 struct list_head fmr_list;
0015 dev_t fmr_device;
0016 uint32_t fmr_flags;
0017 uint64_t fmr_physical;
0018 uint64_t fmr_owner;
0019 uint64_t fmr_length;
0020 };
0021
0022 struct ext4_fsmap_head {
0023 uint32_t fmh_iflags;
0024 uint32_t fmh_oflags;
0025 unsigned int fmh_count;
0026 unsigned int fmh_entries;
0027
0028 struct ext4_fsmap fmh_keys[2];
0029 };
0030
0031 void ext4_fsmap_from_internal(struct super_block *sb, struct fsmap *dest,
0032 struct ext4_fsmap *src);
0033 void ext4_fsmap_to_internal(struct super_block *sb, struct ext4_fsmap *dest,
0034 struct fsmap *src);
0035
0036
0037 typedef int (*ext4_fsmap_format_t)(struct ext4_fsmap *, void *);
0038
0039 int ext4_getfsmap(struct super_block *sb, struct ext4_fsmap_head *head,
0040 ext4_fsmap_format_t formatter, void *arg);
0041
0042 #define EXT4_QUERY_RANGE_ABORT 1
0043 #define EXT4_QUERY_RANGE_CONTINUE 0
0044
0045
0046 #define EXT4_FMR_OWN_FREE FMR_OWN_FREE
0047 #define EXT4_FMR_OWN_UNKNOWN FMR_OWN_UNKNOWN
0048 #define EXT4_FMR_OWN_FS FMR_OWNER('X', 1)
0049 #define EXT4_FMR_OWN_LOG FMR_OWNER('X', 2)
0050 #define EXT4_FMR_OWN_INODES FMR_OWNER('X', 5)
0051 #define EXT4_FMR_OWN_GDT FMR_OWNER('f', 1)
0052 #define EXT4_FMR_OWN_RESV_GDT FMR_OWNER('f', 2)
0053 #define EXT4_FMR_OWN_BLKBM FMR_OWNER('f', 3)
0054 #define EXT4_FMR_OWN_INOBM FMR_OWNER('f', 4)
0055
0056 #endif