Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
VOP_COPY_FILE_RANGE(9)	    Kernel Developer's Manual	  VOP_COPY_FILE_RANGE(9)

NAME
     VOP_COPY_FILE_RANGE  -- copy a byte range within a file or from one file to
     another in a single file system or between multiple file systems

SYNOPSIS
     #include <sys/param.h>
     #include <sys/vnode.h>

     int
     VOP_COPY_FILE_RANGE(struct vnode *invp, off_t *inoff, struct vnode *outvp,
	 off_t *outoff, size_t *len, unsigned int flags, struct ucred *incred,
	 struct ucred *outcred, struct thread *fsize_td);

DESCRIPTION
     This entry point copies a byte range from one regular file  to  another  or
     within  one  file in a single file system.  invp and outvp can refer to the
     same file.  For this case, the byte ranges defined by *inoff,  *outoff  and
     *len will not overlap.

     The arguments are:

     invp    The vnode of the input file.

     inoff   A pointer to the file offset for the input file.

     outvp   The vnode of the output file.

     outoff  A pointer to the file offset for the output file.

     len     A pointer to the byte count for the copy.

     flags   Flags, should be set to 0 for now.

     incred  The credentials used to read invp.

     outcred
	     The credentials used to write outvp.

     fsize_td
	     The thread pointer to be passed to vn_rlimit_fsize().  This will be
	     NULL for a server thread without limits, such as for the NFS server
	     or curthread otherwise.

     On  entry	and on return, the inoff and outoff arguments point to the loca-
     tions of the file offsets.  These file offsets should  be	updated  by  the
     number  of  bytes	copied.   The  len  argument points to the location that
     stores the number of bytes to be copied.  Upon a successful return len will
     be updated to the number of bytes actually copied.  Normally, this will  be
     the  number  of bytes requested to be copied, however a copy of fewer bytes
     than requested is permitted.  This does not necessarily indicate  that  the
     copy  reached  EOF  on the input file.  However, if the value pointed to by
     the len argument is zero upon a successful return, it  indicates  that  the
     offset pointed to by inoff is at or beyond EOF on the input file.

LOCKS
     The  vnode  are unlocked on entry and must be unlocked on return.	The byte
     ranges for both invp and outvp should be range locked  when  this	call  is
     done.

RETURN VALUES
     Zero is returned on success, otherwise an error code is returned.

ERRORS
     [EFBIG]		If the copy exceeds the process's file size limit or the
			maximum file size for the file system invp and outvp re-
			side on.

     [EINTR]		A  signal  interrupted	the  VOP call before it could be
			completed.

     [EIO]		An I/O error occurred while reading/writing the files.

     [EINTEGRITY]	Corrupted data was detected  while  reading/writing  the
			files.

     [ENOSPC]		The file system is full.

SEE ALSO
     vn_rdwr(9), vnode(9)

FreeBSD ports 15.1		 March 30, 2020 	  VOP_COPY_FILE_RANGE(9)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=VOP_COPY_FILE_RANGE&sektion=9&manpath=FreeBSD+15.1-RELEASE+and+Ports>

home | help