aboutsummaryrefslogtreecommitdiffstats
path: root/fs/btrfs/inode.c
diff options
context:
space:
mode:
authorYehuda Sadeh <yehuda@hq.newdream.net>2009-01-21 14:39:14 -0500
committerChris Mason <chris.mason@oracle.com>2009-01-21 14:39:14 -0500
commit1506fcc8189cdd4b95e06df7845a09f18b4526a6 (patch)
treebf737082390c26c517d7449135045e3f6d4ba055 /fs/btrfs/inode.c
parent35054394c4b3cecd52577c2662c84da1f3e73525 (diff)
Btrfs: fiemap support
Now that bmap support is gone, this is the only way to get extent mappings for userland. These are still not valid for IO, but they can tell us if a file has holes or how much fragmentation there is. Signed-off-by: Yehuda Sadeh <yehuda@hq.newdream.net>
Diffstat (limited to 'fs/btrfs/inode.c')
-rw-r--r--fs/btrfs/inode.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c
index 2e25d698bab0..288c2cdc7543 100644
--- a/fs/btrfs/inode.c
+++ b/fs/btrfs/inode.c
@@ -4156,6 +4156,12 @@ static ssize_t btrfs_direct_IO(int rw, struct kiocb *iocb,
4156 return -EINVAL; 4156 return -EINVAL;
4157} 4157}
4158 4158
4159static int btrfs_fiemap(struct inode *inode, struct fiemap_extent_info *fieinfo,
4160 __u64 start, __u64 len)
4161{
4162 return extent_fiemap(inode, fieinfo, start, len, btrfs_get_extent);
4163}
4164
4159int btrfs_readpage(struct file *file, struct page *page) 4165int btrfs_readpage(struct file *file, struct page *page)
4160{ 4166{
4161 struct extent_io_tree *tree; 4167 struct extent_io_tree *tree;
@@ -5021,6 +5027,7 @@ static struct inode_operations btrfs_file_inode_operations = {
5021 .removexattr = btrfs_removexattr, 5027 .removexattr = btrfs_removexattr,
5022 .permission = btrfs_permission, 5028 .permission = btrfs_permission,
5023 .fallocate = btrfs_fallocate, 5029 .fallocate = btrfs_fallocate,
5030 .fiemap = btrfs_fiemap,
5024}; 5031};
5025static struct inode_operations btrfs_special_inode_operations = { 5032static struct inode_operations btrfs_special_inode_operations = {
5026 .getattr = btrfs_getattr, 5033 .getattr = btrfs_getattr,