···205205206206#define OCFS2_IOC_INFO _IOR('o', 5, struct ocfs2_info)207207208208+struct ocfs2_move_extents {209209+/* All values are in bytes */210210+ /* in */211211+ __u64 me_start; /* Virtual start in the file to move */212212+ __u64 me_len; /* Length of the extents to be moved */213213+ __u64 me_goal; /* Physical offset of the goal,214214+ it's in block unit */215215+ __u64 me_threshold; /* Maximum distance from goal or threshold216216+ for auto defragmentation */217217+ __u64 me_flags; /* Flags for the operation:218218+ * - auto defragmentation.219219+ * - refcount,xattr cases.220220+ */221221+ /* out */222222+ __u64 me_moved_len; /* Moved/defraged length */223223+ __u64 me_new_offset; /* Resulting physical location */224224+ __u32 me_reserved[2]; /* Reserved for futhure */225225+};226226+227227+#define OCFS2_MOVE_EXT_FL_AUTO_DEFRAG (0x00000001) /* Kernel manages to228228+ claim new clusters229229+ as the goal place230230+ for extents moving */231231+#define OCFS2_MOVE_EXT_FL_PART_DEFRAG (0x00000002) /* Allow partial extent232232+ moving, is to make233233+ movement less likely234234+ to fail, may make fs235235+ even more fragmented */236236+#define OCFS2_MOVE_EXT_FL_COMPLETE (0x00000004) /* Move or defragmenation237237+ completely gets done.238238+ */239239+240240+#define OCFS2_IOC_MOVE_EXT _IOW('o', 6, struct ocfs2_move_extents)241241+208242#endif /* OCFS2_IOCTL_H */