Signed-off-by: Pavel Reichl <preichl@xxxxxxxxxx> --- fs/exfat/exfat_fs.h | 3 +++ fs/exfat/file.c | 1 + fs/exfat/inode.c | 8 ++++++++ 3 files changed, 12 insertions(+) diff --git a/fs/exfat/exfat_fs.h b/fs/exfat/exfat_fs.h index 1d6da61157c9..1c22aa7107d4 100644 --- a/fs/exfat/exfat_fs.h +++ b/fs/exfat/exfat_fs.h @@ -428,6 +428,9 @@ long exfat_ioctl(struct file *filp, unsigned int cmd, unsigned long arg); long exfat_compat_ioctl(struct file *filp, unsigned int cmd, unsigned long arg); +extern int exfat_fiemap(struct inode *inode, struct fiemap_extent_info *fieinfo, + u64 start, u64 len); + /* namei.c */ extern const struct dentry_operations exfat_dentry_ops; extern const struct dentry_operations exfat_utf8_dentry_ops; diff --git a/fs/exfat/file.c b/fs/exfat/file.c index 6af0191b648f..7823dcbca96e 100644 --- a/fs/exfat/file.c +++ b/fs/exfat/file.c @@ -432,4 +432,5 @@ const struct file_operations exfat_file_operations = { const struct inode_operations exfat_file_inode_operations = { .setattr = exfat_setattr, .getattr = exfat_getattr, + .fiemap = exfat_fiemap, }; diff --git a/fs/exfat/inode.c b/fs/exfat/inode.c index 1803ef3220fd..c6f95d68badc 100644 --- a/fs/exfat/inode.c +++ b/fs/exfat/inode.c @@ -13,6 +13,7 @@ #include <linux/uio.h> #include <linux/random.h> #include <linux/iversion.h> +#include <linux/fiemap.h> #include "exfat_raw.h" #include "exfat_fs.h" @@ -358,6 +359,13 @@ static int exfat_get_block(struct inode *inode, sector_t iblock, return err; } +int exfat_fiemap(struct inode *inode, struct fiemap_extent_info *fieinfo, + u64 start, u64 len) +{ + return generic_block_fiemap(inode, fieinfo, start, len, + exfat_get_block); +} + static int exfat_readpage(struct file *file, struct page *page) { return mpage_readpage(page, exfat_get_block); -- 2.31.1