Add FIOBMAP2 ioctl

This ioctl exposes VOP_BMAP information to userland. It can be used by
programs like fragmentation analyzers and optimized cp implementations. But
I'm using it to test fusefs's VOP_BMAP implementation. The "2" in the name
distinguishes it from the similar but incompatible FIBMAP ioctls in NetBSD
and Linux.  FIOBMAP2 differs from FIBMAP in that it uses a 64-bit block
number instead of 32-bit, and it also returns runp and runb.

Reviewed by:	mckusick
MFC after:	2 weeks
Sponsored by:	The FreeBSD Foundation
Differential Revision:	https://reviews.freebsd.org/D20705
This commit is contained in:
Alan Somers 2019-06-20 14:13:10 +00:00 committed by Sebastian Huber
parent c42aaaea4f
commit 8fe49db783
1 changed files with 7 additions and 0 deletions

View File

@ -62,6 +62,13 @@ struct fiodgname_arg {
/* Handle lseek SEEK_DATA and SEEK_HOLE for holey file knowledge. */
#define FIOSEEKDATA _IOWR('f', 97, off_t) /* SEEK_DATA */
#define FIOSEEKHOLE _IOWR('f', 98, off_t) /* SEEK_HOLE */
struct fiobmap2_arg {
int64_t bn;
int runp;
int runb;
};
/* Get the file's bmap info for the logical block bn */
#define FIOBMAP2 _IOWR('f', 99, struct fiobmap2_arg)
#ifdef _KERNEL
#ifdef COMPAT_FREEBSD32