diff options
Diffstat (limited to 'man2/ioctl_fideduperange.2')
-rw-r--r-- | man2/ioctl_fideduperange.2 | 200 |
1 files changed, 0 insertions, 200 deletions
diff --git a/man2/ioctl_fideduperange.2 b/man2/ioctl_fideduperange.2 deleted file mode 100644 index 84fd2e8..0000000 --- a/man2/ioctl_fideduperange.2 +++ /dev/null @@ -1,200 +0,0 @@ -.\" Copyright (c) 2016, Oracle. All rights reserved. -.\" -.\" SPDX-License-Identifier: GPL-2.0-or-later -.TH ioctl_fideduperange 2 2024-03-03 "Linux man-pages 6.7" -.SH NAME -ioctl_fideduperange \- share some the data of one file with another file -.SH LIBRARY -Standard C library -.RI ( libc ", " \-lc ) -.SH SYNOPSIS -.nf -.BR "#include <linux/fs.h>" " /* Definition of " FIDEDUPERANGE " and" -.BR " FILE_DEDUPE_* " constants */ -.B #include <sys/ioctl.h> -.P -.BI "int ioctl(int " src_fd ", FIDEDUPERANGE, struct file_dedupe_range *" arg ); -.fi -.SH DESCRIPTION -If a filesystem supports files sharing physical storage between multiple -files, this -.BR ioctl (2) -operation can be used to make some of the data in the -.B src_fd -file appear in the -.B dest_fd -file by sharing the underlying storage if the file data is identical -("deduplication"). -Both files must reside within the same filesystem. -This reduces storage consumption by allowing the filesystem -to store one shared copy of the data. -If a file write should occur to a shared -region, the filesystem must ensure that the changes remain private to the file -being written. -This behavior is commonly referred to as "copy on write". -.P -This ioctl performs the "compare and share if identical" operation on up to -.I src_length -bytes from file descriptor -.I src_fd -at offset -.IR src_offset . -This information is conveyed in a structure of the following form: -.P -.in +4n -.EX -struct file_dedupe_range { - __u64 src_offset; - __u64 src_length; - __u16 dest_count; - __u16 reserved1; - __u32 reserved2; - struct file_dedupe_range_info info[0]; -}; -.EE -.in -.P -Deduplication is atomic with regards to concurrent writes, so no locks need to -be taken to obtain a consistent deduplicated copy. -.P -The fields -.IR reserved1 " and " reserved2 -must be zero. -.P -Destinations for the deduplication operation are conveyed in the array at the -end of the structure. -The number of destinations is given in -.IR dest_count , -and the destination information is conveyed in the following form: -.P -.in +4n -.EX -struct file_dedupe_range_info { - __s64 dest_fd; - __u64 dest_offset; - __u64 bytes_deduped; - __s32 status; - __u32 reserved; -}; -.EE -.in -.P -Each deduplication operation targets -.I src_length -bytes in file descriptor -.I dest_fd -at offset -.IR dest_offset . -The field -.I reserved -must be zero. -During the call, -.I src_fd -must be open for reading and -.I dest_fd -must be open for writing. -The combined size of the struct -.I file_dedupe_range -and the struct -.I file_dedupe_range_info -array must not exceed the system page size. -The maximum size of -.I src_length -is filesystem dependent and is typically 16\~MiB. -This limit will be enforced silently by the filesystem. -By convention, the storage used by -.I src_fd -is mapped into -.I dest_fd -and the previous contents in -.I dest_fd -are freed. -.P -Upon successful completion of this ioctl, the number of bytes successfully -deduplicated is returned in -.I bytes_deduped -and a status code for the deduplication operation is returned in -.IR status . -If even a single byte in the range does not match, the deduplication -operation request will be ignored and -.I status -set to -.BR FILE_DEDUPE_RANGE_DIFFERS . -The -.I status -code is set to -.B FILE_DEDUPE_RANGE_SAME -for success, a negative error code in case of error, or -.B FILE_DEDUPE_RANGE_DIFFERS -if the data did not match. -.SH RETURN VALUE -On error, \-1 is returned, and -.I errno -is set to indicate the error. -.SH ERRORS -Possible errors include (but are not limited to) the following: -.TP -.B EBADF -.I src_fd -is not open for reading; -.I dest_fd -is not open for writing or is open for append-only writes; or the filesystem -which -.I src_fd -resides on does not support deduplication. -.TP -.B EINVAL -The filesystem does not support deduplicating the ranges of the given files. -This error can also appear if either file descriptor represents -a device, FIFO, or socket. -Disk filesystems generally require the offset and length arguments -to be aligned to the fundamental block size. -Neither Btrfs nor XFS support -overlapping deduplication ranges in the same file. -.TP -.B EISDIR -One of the files is a directory and the filesystem does not support shared -regions in directories. -.TP -.B ENOMEM -The kernel was unable to allocate sufficient memory to perform the -operation or -.I dest_count -is so large that the input argument description spans more than a single -page of memory. -.TP -.B EOPNOTSUPP -This can appear if the filesystem does not support deduplicating either file -descriptor, or if either file descriptor refers to special inodes. -.TP -.B EPERM -.I dest_fd -is immutable. -.TP -.B ETXTBSY -One of the files is a swap file. -Swap files cannot share storage. -.TP -.B EXDEV -.I dest_fd -and -.I src_fd -are not on the same mounted filesystem. -.SH VERSIONS -Some filesystems may limit the amount of data that can be deduplicated in a -single call. -.SH STANDARDS -Linux. -.SH HISTORY -Linux 4.5. -.P -It was previously known as -.B BTRFS_IOC_FILE_EXTENT_SAME -and was private to Btrfs. -.SH NOTES -Because a copy-on-write operation requires the allocation of new storage, the -.BR fallocate (2) -operation may unshare shared blocks to guarantee that subsequent writes will -not fail because of lack of disk space. -.SH SEE ALSO -.BR ioctl (2) |