The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/fs/udf/udfdecl.h

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 #ifndef __UDF_DECL_H
    2 #define __UDF_DECL_H
    3 
    4 #define pr_fmt(fmt) "UDF-fs: " fmt
    5 
    6 #include "ecma_167.h"
    7 #include "osta_udf.h"
    8 
    9 #include <linux/fs.h>
   10 #include <linux/types.h>
   11 #include <linux/buffer_head.h>
   12 #include <linux/udf_fs_i.h>
   13 
   14 #include "udf_sb.h"
   15 #include "udfend.h"
   16 #include "udf_i.h"
   17 
   18 #define UDF_PREALLOCATE
   19 #define UDF_DEFAULT_PREALLOC_BLOCKS     8
   20 
   21 extern __printf(3, 4) void _udf_err(struct super_block *sb,
   22                 const char *function, const char *fmt, ...);
   23 #define udf_err(sb, fmt, ...)                                   \
   24         _udf_err(sb, __func__, fmt, ##__VA_ARGS__)
   25 
   26 extern __printf(3, 4) void _udf_warn(struct super_block *sb,
   27                 const char *function, const char *fmt, ...);
   28 #define udf_warn(sb, fmt, ...)                                  \
   29         _udf_warn(sb, __func__, fmt, ##__VA_ARGS__)
   30 
   31 #define udf_info(fmt, ...)                                      \
   32         pr_info("INFO " fmt, ##__VA_ARGS__)
   33 
   34 #undef UDFFS_DEBUG
   35 
   36 #ifdef UDFFS_DEBUG
   37 #define udf_debug(fmt, ...)                                     \
   38         printk(KERN_DEBUG pr_fmt("%s:%d:%s: " fmt),             \
   39                __FILE__, __LINE__, __func__, ##__VA_ARGS__)
   40 #else
   41 #define udf_debug(fmt, ...)                                     \
   42         no_printk(fmt, ##__VA_ARGS__)
   43 #endif
   44 
   45 #define udf_fixed_to_variable(x) ( ( ( (x) >> 5 ) * 39 ) + ( (x) & 0x0000001F ) )
   46 #define udf_variable_to_fixed(x) ( ( ( (x) / 39 ) << 5 ) + ( (x) % 39 ) )
   47 
   48 #define UDF_EXTENT_LENGTH_MASK  0x3FFFFFFF
   49 #define UDF_EXTENT_FLAG_MASK    0xC0000000
   50 
   51 #define UDF_NAME_PAD            4
   52 #define UDF_NAME_LEN            256
   53 #define UDF_PATH_LEN            1023
   54 
   55 static inline size_t udf_file_entry_alloc_offset(struct inode *inode)
   56 {
   57         struct udf_inode_info *iinfo = UDF_I(inode);
   58         if (iinfo->i_use)
   59                 return sizeof(struct unallocSpaceEntry);
   60         else if (iinfo->i_efe)
   61                 return sizeof(struct extendedFileEntry) + iinfo->i_lenEAttr;
   62         else
   63                 return sizeof(struct fileEntry) + iinfo->i_lenEAttr;
   64 }
   65 
   66 static inline size_t udf_ext0_offset(struct inode *inode)
   67 {
   68         if (UDF_I(inode)->i_alloc_type == ICBTAG_FLAG_AD_IN_ICB)
   69                 return udf_file_entry_alloc_offset(inode);
   70         else
   71                 return 0;
   72 }
   73 
   74 /* computes tag checksum */
   75 u8 udf_tag_checksum(const struct tag *t);
   76 
   77 struct dentry;
   78 struct inode;
   79 struct task_struct;
   80 struct buffer_head;
   81 struct super_block;
   82 
   83 extern const struct export_operations udf_export_ops;
   84 extern const struct inode_operations udf_dir_inode_operations;
   85 extern const struct file_operations udf_dir_operations;
   86 extern const struct inode_operations udf_file_inode_operations;
   87 extern const struct file_operations udf_file_operations;
   88 extern const struct inode_operations udf_symlink_inode_operations;
   89 extern const struct address_space_operations udf_aops;
   90 extern const struct address_space_operations udf_adinicb_aops;
   91 extern const struct address_space_operations udf_symlink_aops;
   92 
   93 struct udf_fileident_bh {
   94         struct buffer_head *sbh;
   95         struct buffer_head *ebh;
   96         int soffset;
   97         int eoffset;
   98 };
   99 
  100 struct udf_vds_record {
  101         uint32_t block;
  102         uint32_t volDescSeqNum;
  103 };
  104 
  105 struct generic_desc {
  106         struct tag      descTag;
  107         __le32          volDescSeqNum;
  108 };
  109 
  110 struct ustr {
  111         uint8_t u_cmpID;
  112         uint8_t u_name[UDF_NAME_LEN - 2];
  113         uint8_t u_len;
  114 };
  115 
  116 struct extent_position {
  117         struct buffer_head *bh;
  118         uint32_t offset;
  119         struct kernel_lb_addr block;
  120 };
  121 
  122 /* super.c */
  123 
  124 static inline void udf_updated_lvid(struct super_block *sb)
  125 {
  126         struct buffer_head *bh = UDF_SB(sb)->s_lvid_bh;
  127 
  128         BUG_ON(!bh);
  129         WARN_ON_ONCE(((struct logicalVolIntegrityDesc *)
  130                      bh->b_data)->integrityType !=
  131                      cpu_to_le32(LVID_INTEGRITY_TYPE_OPEN));
  132         UDF_SB(sb)->s_lvid_dirty = 1;
  133 }
  134 extern u64 lvid_get_unique_id(struct super_block *sb);
  135 struct inode *udf_find_metadata_inode_efe(struct super_block *sb,
  136                                         u32 meta_file_loc, u32 partition_num);
  137 
  138 /* namei.c */
  139 extern int udf_write_fi(struct inode *inode, struct fileIdentDesc *,
  140                         struct fileIdentDesc *, struct udf_fileident_bh *,
  141                         uint8_t *, uint8_t *);
  142 
  143 /* file.c */
  144 extern long udf_ioctl(struct file *, unsigned int, unsigned long);
  145 /* inode.c */
  146 extern struct inode *udf_iget(struct super_block *, struct kernel_lb_addr *);
  147 extern int udf_expand_file_adinicb(struct inode *);
  148 extern struct buffer_head *udf_expand_dir_adinicb(struct inode *, int *, int *);
  149 extern struct buffer_head *udf_bread(struct inode *, int, int, int *);
  150 extern int udf_setsize(struct inode *, loff_t);
  151 extern void udf_read_inode(struct inode *);
  152 extern void udf_evict_inode(struct inode *);
  153 extern int udf_write_inode(struct inode *, struct writeback_control *wbc);
  154 extern long udf_block_map(struct inode *, sector_t);
  155 extern int8_t inode_bmap(struct inode *, sector_t, struct extent_position *,
  156                          struct kernel_lb_addr *, uint32_t *, sector_t *);
  157 extern int udf_add_aext(struct inode *, struct extent_position *,
  158                         struct kernel_lb_addr *, uint32_t, int);
  159 extern void udf_write_aext(struct inode *, struct extent_position *,
  160                            struct kernel_lb_addr *, uint32_t, int);
  161 extern int8_t udf_delete_aext(struct inode *, struct extent_position,
  162                               struct kernel_lb_addr, uint32_t);
  163 extern int8_t udf_next_aext(struct inode *, struct extent_position *,
  164                             struct kernel_lb_addr *, uint32_t *, int);
  165 extern int8_t udf_current_aext(struct inode *, struct extent_position *,
  166                                struct kernel_lb_addr *, uint32_t *, int);
  167 
  168 /* misc.c */
  169 extern struct buffer_head *udf_tgetblk(struct super_block *, int);
  170 extern struct buffer_head *udf_tread(struct super_block *, int);
  171 extern struct genericFormat *udf_add_extendedattr(struct inode *, uint32_t,
  172                                                   uint32_t, uint8_t);
  173 extern struct genericFormat *udf_get_extendedattr(struct inode *, uint32_t,
  174                                                   uint8_t);
  175 extern struct buffer_head *udf_read_tagged(struct super_block *, uint32_t,
  176                                            uint32_t, uint16_t *);
  177 extern struct buffer_head *udf_read_ptagged(struct super_block *,
  178                                             struct kernel_lb_addr *, uint32_t,
  179                                             uint16_t *);
  180 extern void udf_update_tag(char *, int);
  181 extern void udf_new_tag(char *, uint16_t, uint16_t, uint16_t, uint32_t, int);
  182 
  183 /* lowlevel.c */
  184 extern unsigned int udf_get_last_session(struct super_block *);
  185 extern unsigned long udf_get_last_block(struct super_block *);
  186 
  187 /* partition.c */
  188 extern uint32_t udf_get_pblock(struct super_block *, uint32_t, uint16_t,
  189                                uint32_t);
  190 extern uint32_t udf_get_pblock_virt15(struct super_block *, uint32_t, uint16_t,
  191                                       uint32_t);
  192 extern uint32_t udf_get_pblock_virt20(struct super_block *, uint32_t, uint16_t,
  193                                       uint32_t);
  194 extern uint32_t udf_get_pblock_spar15(struct super_block *, uint32_t, uint16_t,
  195                                       uint32_t);
  196 extern uint32_t udf_get_pblock_meta25(struct super_block *, uint32_t, uint16_t,
  197                                           uint32_t);
  198 extern int udf_relocate_blocks(struct super_block *, long, long *);
  199 
  200 static inline uint32_t
  201 udf_get_lb_pblock(struct super_block *sb, struct kernel_lb_addr *loc,
  202                   uint32_t offset)
  203 {
  204         return udf_get_pblock(sb, loc->logicalBlockNum,
  205                         loc->partitionReferenceNum, offset);
  206 }
  207 
  208 /* unicode.c */
  209 extern int udf_get_filename(struct super_block *, uint8_t *, uint8_t *, int);
  210 extern int udf_put_filename(struct super_block *, const uint8_t *, uint8_t *,
  211                             int);
  212 extern int udf_build_ustr(struct ustr *, dstring *, int);
  213 extern int udf_CS0toUTF8(struct ustr *, const struct ustr *);
  214 
  215 /* ialloc.c */
  216 extern void udf_free_inode(struct inode *);
  217 extern struct inode *udf_new_inode(struct inode *, umode_t, int *);
  218 
  219 /* truncate.c */
  220 extern void udf_truncate_tail_extent(struct inode *);
  221 extern void udf_discard_prealloc(struct inode *);
  222 extern void udf_truncate_extents(struct inode *);
  223 
  224 /* balloc.c */
  225 extern void udf_free_blocks(struct super_block *, struct inode *,
  226                             struct kernel_lb_addr *, uint32_t, uint32_t);
  227 extern int udf_prealloc_blocks(struct super_block *, struct inode *, uint16_t,
  228                                uint32_t, uint32_t);
  229 extern int udf_new_block(struct super_block *, struct inode *, uint16_t,
  230                          uint32_t, int *);
  231 
  232 /* directory.c */
  233 extern struct fileIdentDesc *udf_fileident_read(struct inode *, loff_t *,
  234                                                 struct udf_fileident_bh *,
  235                                                 struct fileIdentDesc *,
  236                                                 struct extent_position *,
  237                                                 struct kernel_lb_addr *, uint32_t *,
  238                                                 sector_t *);
  239 extern struct fileIdentDesc *udf_get_fileident(void *buffer, int bufsize,
  240                                                int *offset);
  241 extern struct long_ad *udf_get_filelongad(uint8_t *, int, uint32_t *, int);
  242 extern struct short_ad *udf_get_fileshortad(uint8_t *, int, uint32_t *, int);
  243 
  244 /* udftime.c */
  245 extern struct timespec *udf_disk_stamp_to_time(struct timespec *dest,
  246                                                 struct timestamp src);
  247 extern struct timestamp *udf_time_to_disk_stamp(struct timestamp *dest, struct timespec src);
  248 
  249 #endif                          /* __UDF_DECL_H */

Cache object: 38049a0d190fe86e4d0214284f173126


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.