]> git.proxmox.com Git - mirror_ubuntu-jammy-kernel.git/commitdiff
f2fs: support fiemap() for directory inode
authorChao Yu <yuchao0@huawei.com>
Mon, 22 Jul 2019 10:03:50 +0000 (18:03 +0800)
committerJaegeuk Kim <jaegeuk@kernel.org>
Fri, 23 Aug 2019 14:57:11 +0000 (07:57 -0700)
Adjust f2fs_fiemap() to support fiemap() on directory inode.

Signed-off-by: Chao Yu <yuchao0@huawei.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
fs/f2fs/data.c
fs/f2fs/inline.c
fs/f2fs/namei.c

index 5bce20005add9308e3a2862b83c7f3ec30cfe77e..73ed4ff9d01c2b7ae358da7bb096f3aff3537877 100644 (file)
@@ -1539,7 +1539,7 @@ int f2fs_fiemap(struct inode *inode, struct fiemap_extent_info *fieinfo,
                goto out;
        }
 
-       if (f2fs_has_inline_data(inode)) {
+       if (f2fs_has_inline_data(inode) || f2fs_has_inline_dentry(inode)) {
                ret = f2fs_inline_data_fiemap(inode, fieinfo, start, len);
                if (ret != -EAGAIN)
                        goto out;
index 3613efca8c00ca3d43a157aebea86152c1de3706..8c0712154fb105517c9d4aa96d11734916c85918 100644 (file)
@@ -704,7 +704,13 @@ int f2fs_inline_data_fiemap(struct inode *inode,
        if (IS_ERR(ipage))
                return PTR_ERR(ipage);
 
-       if (!f2fs_has_inline_data(inode)) {
+       if ((S_ISREG(inode->i_mode) || S_ISLNK(inode->i_mode)) &&
+                               !f2fs_has_inline_data(inode)) {
+               err = -EAGAIN;
+               goto out;
+       }
+
+       if (S_ISDIR(inode->i_mode) && !f2fs_has_inline_dentry(inode)) {
                err = -EAGAIN;
                goto out;
        }
index c5b99042e6f2b71c22052e62a6698f1c8d86596f..612561c4f7bddece5d0132dcc9971fc05a59fd67 100644 (file)
@@ -1250,6 +1250,7 @@ const struct inode_operations f2fs_dir_inode_operations = {
 #ifdef CONFIG_F2FS_FS_XATTR
        .listxattr      = f2fs_listxattr,
 #endif
+       .fiemap         = f2fs_fiemap,
 };
 
 const struct inode_operations f2fs_symlink_inode_operations = {