#include <linux/module.h>
#include <linux/init.h>
#include <linux/slab.h>
#include <linux/highuid.h>
#include <linux/pagemap.h>
#include <linux/buffer_head.h>
#include <linux/writeback.h>
#include <linux/statfs.h>
#include <linux/seq_file.h>
#include <linux/crc32.h>
#include <linux/mpage.h>
#include <linux/fs_parser.h>
#include <linux/fs_context.h>
#include "qnx6.h"
static const struct super_operations qnx6_sops;
static void qnx6_put_super(struct super_block *sb);
static struct inode *qnx6_alloc_inode(struct super_block *sb);
static void qnx6_free_inode(struct inode *inode);
static int qnx6_reconfigure(struct fs_context *fc);
static int qnx6_statfs(struct dentry *dentry, struct kstatfs *buf);
static int qnx6_show_options(struct seq_file *seq, struct dentry *root);
static const struct super_operations qnx6_sops = …;
static int qnx6_show_options(struct seq_file *seq, struct dentry *root)
{ … }
static int qnx6_reconfigure(struct fs_context *fc)
{ … }
static unsigned qnx6_get_devblock(struct super_block *sb, __fs32 block)
{ … }
static unsigned qnx6_block_map(struct inode *inode, unsigned iblock);
static int qnx6_get_block(struct inode *inode, sector_t iblock,
struct buffer_head *bh, int create)
{ … }
static int qnx6_check_blockptr(__fs32 ptr)
{ … }
static int qnx6_read_folio(struct file *file, struct folio *folio)
{ … }
static void qnx6_readahead(struct readahead_control *rac)
{ … }
static unsigned qnx6_block_map(struct inode *inode, unsigned no)
{ … }
static int qnx6_statfs(struct dentry *dentry, struct kstatfs *buf)
{ … }
static const char *qnx6_checkroot(struct super_block *s)
{ … }
#ifdef CONFIG_QNX6FS_DEBUG
void qnx6_superblock_debug(struct qnx6_super_block *sb, struct super_block *s)
{ … }
#endif
enum { … };
struct qnx6_context { … };
static const struct fs_parameter_spec qnx6_param_spec[] = …;
static int qnx6_parse_param(struct fs_context *fc, struct fs_parameter *param)
{ … }
static struct buffer_head *qnx6_check_first_superblock(struct super_block *s,
int offset, int silent)
{ … }
static struct inode *qnx6_private_inode(struct super_block *s,
struct qnx6_root_node *p);
static int qnx6_fill_super(struct super_block *s, struct fs_context *fc)
{ … }
static void qnx6_put_super(struct super_block *sb)
{ … }
static sector_t qnx6_bmap(struct address_space *mapping, sector_t block)
{ … }
static const struct address_space_operations qnx6_aops = …;
static struct inode *qnx6_private_inode(struct super_block *s,
struct qnx6_root_node *p)
{ … }
struct inode *qnx6_iget(struct super_block *sb, unsigned ino)
{ … }
static struct kmem_cache *qnx6_inode_cachep;
static struct inode *qnx6_alloc_inode(struct super_block *sb)
{ … }
static void qnx6_free_inode(struct inode *inode)
{ … }
static void init_once(void *foo)
{ … }
static int init_inodecache(void)
{ … }
static void destroy_inodecache(void)
{ … }
static int qnx6_get_tree(struct fs_context *fc)
{ … }
static void qnx6_free_fc(struct fs_context *fc)
{ … }
static const struct fs_context_operations qnx6_context_ops = …;
static int qnx6_init_fs_context(struct fs_context *fc)
{ … }
static struct file_system_type qnx6_fs_type = …;
MODULE_ALIAS_FS(…) …;
static int __init init_qnx6_fs(void)
{ … }
static void __exit exit_qnx6_fs(void)
{ … }
module_init(…) …
module_exit(…)
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;