vfs: vfs-level fiemap interface
authorMark Fasheh <mfasheh@suse.com>
Wed, 8 Oct 2008 23:44:18 +0000 (19:44 -0400)
committerTheodore Ts'o <tytso@mit.edu>
Wed, 8 Oct 2008 23:44:18 +0000 (19:44 -0400)
commitc4b929b85bdb64afacbbf6453b1f2bf7e14c9e89
tree6f5a4b1378d7b609d0f1ceab93fb501cf91b218a
parent4d20c685fa365766a8f13584b4c8178a15ab7103
vfs: vfs-level fiemap interface

Basic vfs-level fiemap infrastructure, which sets up a new ->fiemap
inode operation.

Userspace can get extent information on a file via fiemap ioctl. As input,
the fiemap ioctl takes a struct fiemap which includes an array of struct
fiemap_extent (fm_extents). Size of the extent array is passed as
fm_extent_count and number of extents returned will be written into
fm_mapped_extents. Offset and length fields on the fiemap structure
(fm_start, fm_length) describe a logical range which will be searched for
extents. All extents returned will at least partially contain this range.
The actual extent offsets and ranges returned will be unmodified from their
offset and range on-disk.

The fiemap ioctl returns '0' on success. On error, -1 is returned and errno
is set. If errno is equal to EBADR, then fm_flags will contain those flags
which were passed in which the kernel did not understand. On all other
errors, the contents of fm_extents is undefined.

As fiemap evolved, there have been many authors of the vfs patch. As far as
I can tell, the list includes:
Kalpak Shah <kalpak.shah@sun.com>
Andreas Dilger <adilger@sun.com>
Eric Sandeen <sandeen@redhat.com>
Mark Fasheh <mfasheh@suse.com>

Signed-off-by: Mark Fasheh <mfasheh@suse.com>
Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
Cc: Michael Kerrisk <mtk.manpages@googlemail.com>
Cc: linux-api@vger.kernel.org
Cc: linux-fsdevel@vger.kernel.org
Documentation/filesystems/fiemap.txt [new file with mode: 0644]
fs/ioctl.c
include/linux/fiemap.h [new file with mode: 0644]
include/linux/fs.h