#include "udfdecl.h"
#include <linux/blkdev.h>
#include <linux/slab.h>
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/stat.h>
#include <linux/cdrom.h>
#include <linux/nls.h>
#include <linux/vfs.h>
#include <linux/vmalloc.h>
#include <linux/errno.h>
#include <linux/seq_file.h>
#include <linux/bitmap.h>
#include <linux/crc-itu-t.h>
#include <linux/log2.h>
#include <asm/byteorder.h>
#include <linux/iversion.h>
#include <linux/fs_context.h>
#include <linux/fs_parser.h>
#include "udf_sb.h"
#include "udf_i.h"
#include <linux/init.h>
#include <linux/uaccess.h>
enum { … };
#define VSD_FIRST_SECTOR_OFFSET …
#define VSD_MAX_SECTOR_OFFSET …
#define UDF_MAX_TD_NESTING …
#define UDF_MAX_LVID_NESTING …
enum { … };
#define UDF_MAX_FILESIZE …
static int udf_fill_super(struct super_block *sb, struct fs_context *fc);
static void udf_put_super(struct super_block *);
static int udf_sync_fs(struct super_block *, int);
static void udf_load_logicalvolint(struct super_block *, struct kernel_extent_ad);
static void udf_open_lvid(struct super_block *);
static void udf_close_lvid(struct super_block *);
static unsigned int udf_count_free(struct super_block *);
static int udf_statfs(struct dentry *, struct kstatfs *);
static int udf_show_options(struct seq_file *, struct dentry *);
static int udf_init_fs_context(struct fs_context *fc);
static int udf_parse_param(struct fs_context *fc, struct fs_parameter *param);
static int udf_reconfigure(struct fs_context *fc);
static void udf_free_fc(struct fs_context *fc);
static const struct fs_parameter_spec udf_param_spec[];
struct logicalVolIntegrityDescImpUse *udf_sb_lvidiu(struct super_block *sb)
{ … }
static int udf_get_tree(struct fs_context *fc)
{ … }
static const struct fs_context_operations udf_context_ops = …;
static struct file_system_type udf_fstype = …;
MODULE_ALIAS_FS(…) …;
static struct kmem_cache *udf_inode_cachep;
static struct inode *udf_alloc_inode(struct super_block *sb)
{ … }
static void udf_free_in_core_inode(struct inode *inode)
{ … }
static void init_once(void *foo)
{ … }
static int __init init_inodecache(void)
{ … }
static void destroy_inodecache(void)
{ … }
static const struct super_operations udf_sb_ops = …;
struct udf_options { … };
static void udf_init_options(struct fs_context *fc, struct udf_options *uopt)
{ … }
static int udf_init_fs_context(struct fs_context *fc)
{ … }
static void udf_free_fc(struct fs_context *fc)
{ … }
static int __init init_udf_fs(void)
{ … }
static void __exit exit_udf_fs(void)
{ … }
static int udf_sb_alloc_partition_maps(struct super_block *sb, u32 count)
{ … }
static void udf_sb_free_bitmap(struct udf_bitmap *bitmap)
{ … }
static void udf_free_partition(struct udf_part_map *map)
{ … }
static void udf_sb_free_partitions(struct super_block *sb)
{ … }
static int udf_show_options(struct seq_file *seq, struct dentry *root)
{ … }
enum { … };
static const struct fs_parameter_spec udf_param_spec[] = …;
static int udf_parse_param(struct fs_context *fc, struct fs_parameter *param)
{ … }
static int udf_reconfigure(struct fs_context *fc)
{ … }
static int identify_vsd(const struct volStructDesc *vsd)
{ … }
static int udf_check_vsd(struct super_block *sb)
{ … }
static int udf_verify_domain_identifier(struct super_block *sb,
struct regid *ident, char *dname)
{ … }
static int udf_load_fileset(struct super_block *sb, struct fileSetDesc *fset,
struct kernel_lb_addr *root)
{ … }
static int udf_find_fileset(struct super_block *sb,
struct kernel_lb_addr *fileset,
struct kernel_lb_addr *root)
{ … }
static int udf_load_pvoldesc(struct super_block *sb, sector_t block)
{ … }
struct inode *udf_find_metadata_inode_efe(struct super_block *sb,
u32 meta_file_loc, u32 partition_ref)
{ … }
static int udf_load_metadata_files(struct super_block *sb, int partition,
int type1_index)
{ … }
int udf_compute_nr_groups(struct super_block *sb, u32 partition)
{ … }
static struct udf_bitmap *udf_sb_alloc_bitmap(struct super_block *sb, u32 index)
{ … }
static int check_partition_desc(struct super_block *sb,
struct partitionDesc *p,
struct udf_part_map *map)
{ … }
static int udf_fill_partdesc_info(struct super_block *sb,
struct partitionDesc *p, int p_index)
{ … }
static void udf_find_vat_block(struct super_block *sb, int p_index,
int type1_index, sector_t start_block)
{ … }
static int udf_load_vat(struct super_block *sb, int p_index, int type1_index)
{ … }
static int udf_load_partdesc(struct super_block *sb, sector_t block)
{ … }
static int udf_load_sparable_map(struct super_block *sb,
struct udf_part_map *map,
struct sparablePartitionMap *spm)
{ … }
static int udf_load_logicalvol(struct super_block *sb, sector_t block,
struct kernel_lb_addr *fileset)
{ … }
static bool udf_lvid_valid(struct super_block *sb,
struct logicalVolIntegrityDesc *lvid)
{ … }
static void udf_load_logicalvolint(struct super_block *sb, struct kernel_extent_ad loc)
{ … }
#define PART_DESC_ALLOC_STEP …
struct part_desc_seq_scan_data { … };
struct desc_seq_scan_data { … };
static struct udf_vds_record *handle_partition_descriptor(
struct buffer_head *bh,
struct desc_seq_scan_data *data)
{ … }
static struct udf_vds_record *get_volume_descriptor_record(uint16_t ident,
struct buffer_head *bh, struct desc_seq_scan_data *data)
{ … }
static noinline int udf_process_sequence(
struct super_block *sb,
sector_t block, sector_t lastblock,
struct kernel_lb_addr *fileset)
{ … }
static int udf_load_sequence(struct super_block *sb, struct buffer_head *bh,
struct kernel_lb_addr *fileset)
{ … }
static int udf_check_anchor_block(struct super_block *sb, sector_t block,
struct kernel_lb_addr *fileset)
{ … }
static int udf_scan_anchors(struct super_block *sb, udf_pblk_t *lastblock,
struct kernel_lb_addr *fileset)
{ … }
static int udf_load_vrs(struct super_block *sb, struct udf_options *uopt,
int silent, struct kernel_lb_addr *fileset)
{ … }
static void udf_finalize_lvid(struct logicalVolIntegrityDesc *lvid)
{ … }
static void udf_open_lvid(struct super_block *sb)
{ … }
static void udf_close_lvid(struct super_block *sb)
{ … }
u64 lvid_get_unique_id(struct super_block *sb)
{ … }
static int udf_fill_super(struct super_block *sb, struct fs_context *fc)
{ … }
void _udf_err(struct super_block *sb, const char *function,
const char *fmt, ...)
{ … }
void _udf_warn(struct super_block *sb, const char *function,
const char *fmt, ...)
{ … }
static void udf_put_super(struct super_block *sb)
{ … }
static int udf_sync_fs(struct super_block *sb, int wait)
{ … }
static int udf_statfs(struct dentry *dentry, struct kstatfs *buf)
{ … }
static unsigned int udf_count_free_bitmap(struct super_block *sb,
struct udf_bitmap *bitmap)
{ … }
static unsigned int udf_count_free_table(struct super_block *sb,
struct inode *table)
{ … }
static unsigned int udf_count_free(struct super_block *sb)
{ … }
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;
module_init(…) …
module_exit(…)