1 /* SPDX-License-Identifier: GPL-2.0 */ << 2 #ifndef _UDF_I_H 1 #ifndef _UDF_I_H 3 #define _UDF_I_H 2 #define _UDF_I_H 4 3 5 struct extent_position { << 6 struct buffer_head *bh; << 7 uint32_t offset; << 8 struct kernel_lb_addr block; << 9 }; << 10 << 11 struct udf_ext_cache { << 12 /* Extent position */ << 13 struct extent_position epos; << 14 /* Start logical offset in bytes */ << 15 loff_t lstart; << 16 }; << 17 << 18 /* << 19 * The i_data_sem and i_mutex serve for protec << 20 * of a regular files and symlinks. This inclu << 21 * the file/symlink, a fact whether data are i << 22 * blocks, preallocation, goal block informati << 23 * i_mutex or i_data_sem must be held (for rea << 24 * i_data_sem). When extents are changed, i_da << 25 * and also i_mutex must be held. << 26 * << 27 * For directories i_mutex is used for all the << 28 */ << 29 << 30 struct udf_inode_info { 4 struct udf_inode_info { 31 struct timespec64 i_crtime; !! 5 struct timespec i_crtime; 32 /* Physical address of inode */ 6 /* Physical address of inode */ 33 struct kernel_lb_addr i_loca 7 struct kernel_lb_addr i_location; 34 __u64 i_unique; 8 __u64 i_unique; 35 __u32 i_lenEAttr; 9 __u32 i_lenEAttr; 36 __u32 i_lenAlloc; 10 __u32 i_lenAlloc; 37 __u64 i_lenExtents; 11 __u64 i_lenExtents; 38 __u32 i_next_alloc_b 12 __u32 i_next_alloc_block; 39 __u32 i_next_alloc_g 13 __u32 i_next_alloc_goal; 40 __u32 i_checkpoint; << 41 __u32 i_extraPerms; << 42 unsigned i_alloc_type : 14 unsigned i_alloc_type : 3; 43 unsigned i_efe : 1; 15 unsigned i_efe : 1; /* extendedFileEntry */ 44 unsigned i_use : 1; 16 unsigned i_use : 1; /* unallocSpaceEntry */ 45 unsigned i_strat4096 : 17 unsigned i_strat4096 : 1; 46 unsigned i_streamdir : !! 18 unsigned reserved : 26; 47 unsigned i_hidden : 1; !! 19 union { 48 unsigned reserved : 24; !! 20 struct short_ad *i_sad; 49 __u8 *i_data; !! 21 struct long_ad *i_lad; 50 struct kernel_lb_addr i_locStreamdir !! 22 __u8 *i_data; 51 __u64 i_lenStreams; !! 23 } i_ext; 52 struct rw_semaphore i_data_sem; << 53 struct udf_ext_cache cached_extent; << 54 /* Spinlock for protecting extent cach << 55 spinlock_t i_extent_cache_lock; << 56 struct inode vfs_inode; 24 struct inode vfs_inode; 57 }; 25 }; 58 26 59 static inline struct udf_inode_info *UDF_I(str 27 static inline struct udf_inode_info *UDF_I(struct inode *inode) 60 { 28 { 61 return container_of(inode, struct udf_ !! 29 return list_entry(inode, struct udf_inode_info, vfs_inode); 62 } 30 } 63 31 64 #endif /* _UDF_I_H) */ 32 #endif /* _UDF_I_H) */ 65 33
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.