diff options
author | Sascha Hauer <s.hauer@pengutronix.de> | 2018-05-31 16:31:53 +0200 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2018-07-13 08:56:52 +0200 |
commit | 551219844e92e33c0f41757d225474ebd3bc569c (patch) | |
tree | b86c6c89e0b97ae8a10c51fc99e5a30db0af23d0 /fs/squashfs/inode.c | |
parent | 0a5e0f40f958b07462a19ac796adfcf4955a6b1a (diff) | |
download | barebox-551219844e92e33c0f41757d225474ebd3bc569c.tar.gz barebox-551219844e92e33c0f41757d225474ebd3bc569c.tar.xz |
fs: squashfs: Switch to dentry cache implementation
While at it implement symlink support.
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'fs/squashfs/inode.c')
-rw-r--r-- | fs/squashfs/inode.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/fs/squashfs/inode.c b/fs/squashfs/inode.c index 923c397fa8..470536e589 100644 --- a/fs/squashfs/inode.c +++ b/fs/squashfs/inode.c @@ -172,6 +172,7 @@ int squashfs_read_inode(struct inode *inode, long long ino) } inode->i_size = le32_to_cpu(sqsh_ino->file_size); + inode->i_op = &squashfs_inode_ops; inode->i_mode |= S_IFREG; inode->i_blocks = ((inode->i_size - 1) >> 9) + 1; squashfs_i(inode)->fragment_block = frag_blk; @@ -214,6 +215,7 @@ int squashfs_read_inode(struct inode *inode, long long ino) xattr_id = le32_to_cpu(sqsh_ino->xattr); inode->i_size = le64_to_cpu(sqsh_ino->file_size); + inode->i_op = &squashfs_inode_ops; inode->i_mode |= S_IFREG; inode->i_blocks = (inode->i_size - le64_to_cpu(sqsh_ino->sparse) + 511) >> 9; @@ -240,6 +242,8 @@ int squashfs_read_inode(struct inode *inode, long long ino) goto failed_read; inode->i_size = le16_to_cpu(sqsh_ino->file_size); + inode->i_op = &squashfs_dir_inode_ops; + inode->i_fop = &squashfs_dir_ops; inode->i_mode |= S_IFDIR; squashfs_i(inode)->start = le32_to_cpu(sqsh_ino->start_block); squashfs_i(inode)->offset = le16_to_cpu(sqsh_ino->offset); @@ -263,6 +267,8 @@ int squashfs_read_inode(struct inode *inode, long long ino) xattr_id = le32_to_cpu(sqsh_ino->xattr); inode->i_size = le32_to_cpu(sqsh_ino->file_size); + inode->i_op = &squashfs_dir_inode_ops; + inode->i_fop = &squashfs_dir_ops; inode->i_mode |= S_IFDIR; squashfs_i(inode)->start = le32_to_cpu(sqsh_ino->start_block); squashfs_i(inode)->offset = le16_to_cpu(sqsh_ino->offset); @@ -288,6 +294,7 @@ int squashfs_read_inode(struct inode *inode, long long ino) goto failed_read; inode->i_size = le32_to_cpu(sqsh_ino->symlink_size); + inode->i_op = &squashfs_symlink_inode_ops; inode->i_mode |= S_IFLNK; squashfs_i(inode)->start = block; squashfs_i(inode)->offset = offset; @@ -400,3 +407,5 @@ failed_read: ERROR("Unable to read inode 0x%llx\n", ino); return err; } + +const struct inode_operations squashfs_inode_ops; |