1 .\" SPDX-License-Identifier: BSD-2-Clause
3 .\" Copyright (c) 2019 Rick Macklem
5 .\" Redistribution and use in source and binary forms, with or without
6 .\" modification, are permitted provided that the following conditions
8 .\" 1. Redistributions of source code must retain the above copyright
9 .\" notice, this list of conditions and the following disclaimer.
10 .\" 2. Redistributions in binary form must reproduce the above copyright
11 .\" notice, this list of conditions and the following disclaimer in the
12 .\" documentation and/or other materials provided with the distribution.
14 .\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
15 .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
16 .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
17 .\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
18 .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
19 .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
20 .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
21 .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
22 .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
23 .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
29 .Dt VOP_COPY_FILE_RANGE 9
32 .Nm VOP_COPY_FILE_RANGE
33 .Nd copy a byte range from one file to another or within one file
34 in a single file system
39 .Fo VOP_COPY_FILE_RANGE
40 .Fa "struct vnode *invp"
42 .Fa "struct vnode *outvp"
45 .Fa "unsigned int flags"
46 .Fa "struct ucred *incred"
47 .Fa "struct ucred *outcred"
48 .Fa "struct thread *fsize_td"
50 This entry point copies a byte range from one regular file to another
51 or within one file in a single file system.
55 can refer to the same file.
56 For this case, the byte ranges defined by
63 .Bl -tag -width ioflag
65 The vnode of the input file.
67 A pointer to the file offset for the input file.
69 The vnode of the output file.
71 A pointer to the file offset for the output file.
73 A pointer to the byte count for the copy.
75 Flags, should be set to 0 for now.
77 The credentials used to read
80 The credentials used to write
83 The thread pointer to be passed to vn_rlimit_fsize().
86 for a server thread without limits, such as for the NFS
92 On entry and on return, the
96 arguments point to the locations of the file offsets.
97 These file offsets should be updated by the number of bytes copied.
100 argument points to the location that stores the number of bytes
102 Upon a successful return
104 will be updated to the number of bytes actually copied.
105 Normally, this will be the number of bytes requested to be copied,
106 however a copy of fewer bytes than requested is permitted.
107 This does not necessarily indicate that the copy reached EOF on the input file.
108 However, if the value pointed to by the
110 argument is zero upon a successful return,
111 it indicates that the offset pointed to by
113 is at or beyond EOF on the input file.
115 The vnode are unlocked on entry and must be unlocked on return.
116 The byte ranges for both
120 should be range locked when this call is done.
122 Zero is returned on success, otherwise an error code is returned.
126 If the copy exceeds the process's file size limit or the maximum file size
133 A signal interrupted the VOP call before it could be completed.
135 An I/O error occurred while reading/writing the files.
137 The file system is full.