brintos

brintos / linux-shallow public Read only

0
0
Text · 1.8 KiB · 312b7c9 Raw
65 lines · c
1/* SPDX-License-Identifier: GPL-2.0 */2#ifndef _UDF_I_H3#define _UDF_I_H4 5struct extent_position {6	struct buffer_head *bh;7	uint32_t offset;8	struct kernel_lb_addr block;9};10 11struct 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 protection of allocation information20 * of a regular files and symlinks. This includes all extents belonging to21 * the file/symlink, a fact whether data are in-inode or in external data22 * blocks, preallocation, goal block information... When extents are read,23 * i_mutex or i_data_sem must be held (for reading is enough in case of24 * i_data_sem). When extents are changed, i_data_sem must be held for writing25 * and also i_mutex must be held.26 *27 * For directories i_mutex is used for all the necessary protection.28 */29 30struct udf_inode_info {31	struct timespec64	i_crtime;32	/* Physical address of inode */33	struct kernel_lb_addr		i_location;34	__u64			i_unique;35	__u32			i_lenEAttr;36	__u32			i_lenAlloc;37	__u64			i_lenExtents;38	__u32			i_next_alloc_block;39	__u32			i_next_alloc_goal;40	__u32			i_checkpoint;41	__u32			i_extraPerms;42	unsigned		i_alloc_type : 3;43	unsigned		i_efe : 1;	/* extendedFileEntry */44	unsigned		i_use : 1;	/* unallocSpaceEntry */45	unsigned		i_strat4096 : 1;46	unsigned		i_streamdir : 1;47	unsigned		i_hidden : 1;	/* hidden system inode */48	unsigned		reserved : 24;49	__u8			*i_data;50	struct kernel_lb_addr	i_locStreamdir;51	__u64			i_lenStreams;52	struct rw_semaphore	i_data_sem;53	struct udf_ext_cache cached_extent;54	/* Spinlock for protecting extent cache */55	spinlock_t i_extent_cache_lock;56	struct inode vfs_inode;57};58 59static inline struct udf_inode_info *UDF_I(struct inode *inode)60{61	return container_of(inode, struct udf_inode_info, vfs_inode);62}63 64#endif /* _UDF_I_H) */65