|
@@ -52,6 +52,35 @@ struct fstrim_range {
|
|
__u64 minlen;
|
|
__u64 minlen;
|
|
};
|
|
};
|
|
|
|
|
|
|
|
+/* extent-same (dedupe) ioctls; these MUST match the btrfs ioctl definitions */
|
|
|
|
+#define FILE_DEDUPE_RANGE_SAME 0
|
|
|
|
+#define FILE_DEDUPE_RANGE_DIFFERS 1
|
|
|
|
+
|
|
|
|
+/* from struct btrfs_ioctl_file_extent_same_info */
|
|
|
|
+struct file_dedupe_range_info {
|
|
|
|
+ __s64 dest_fd; /* in - destination file */
|
|
|
|
+ __u64 dest_offset; /* in - start of extent in destination */
|
|
|
|
+ __u64 bytes_deduped; /* out - total # of bytes we were able
|
|
|
|
+ * to dedupe from this file. */
|
|
|
|
+ /* status of this dedupe operation:
|
|
|
|
+ * < 0 for error
|
|
|
|
+ * == FILE_DEDUPE_RANGE_SAME if dedupe succeeds
|
|
|
|
+ * == FILE_DEDUPE_RANGE_DIFFERS if data differs
|
|
|
|
+ */
|
|
|
|
+ __s32 status; /* out - see above description */
|
|
|
|
+ __u32 reserved; /* must be zero */
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+/* from struct btrfs_ioctl_file_extent_same_args */
|
|
|
|
+struct file_dedupe_range {
|
|
|
|
+ __u64 src_offset; /* in - start of extent in source */
|
|
|
|
+ __u64 src_length; /* in - length of extent */
|
|
|
|
+ __u16 dest_count; /* in - total elements in info array */
|
|
|
|
+ __u16 reserved1; /* must be zero */
|
|
|
|
+ __u32 reserved2; /* must be zero */
|
|
|
|
+ struct file_dedupe_range_info info[0];
|
|
|
|
+};
|
|
|
|
+
|
|
/* And dynamically-tunable limits and defaults: */
|
|
/* And dynamically-tunable limits and defaults: */
|
|
struct files_stat_struct {
|
|
struct files_stat_struct {
|
|
unsigned long nr_files; /* read only */
|
|
unsigned long nr_files; /* read only */
|
|
@@ -168,6 +197,7 @@ struct inodes_stat_t {
|
|
#define FITRIM _IOWR('X', 121, struct fstrim_range) /* Trim */
|
|
#define FITRIM _IOWR('X', 121, struct fstrim_range) /* Trim */
|
|
#define FICLONE _IOW(0x94, 9, int)
|
|
#define FICLONE _IOW(0x94, 9, int)
|
|
#define FICLONERANGE _IOW(0x94, 13, struct file_clone_range)
|
|
#define FICLONERANGE _IOW(0x94, 13, struct file_clone_range)
|
|
|
|
+#define FIDEDUPERANGE _IOWR(0x94, 54, struct file_dedupe_range)
|
|
|
|
|
|
#define FS_IOC_GETFLAGS _IOR('f', 1, long)
|
|
#define FS_IOC_GETFLAGS _IOR('f', 1, long)
|
|
#define FS_IOC_SETFLAGS _IOW('f', 2, long)
|
|
#define FS_IOC_SETFLAGS _IOW('f', 2, long)
|