| 
									
										
										
										
											2008-02-22 12:39:12 +01:00
										 |  |  | #ifndef _UDF_I_H
 | 
					
						
							|  |  |  | #define _UDF_I_H
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-11-16 18:40:47 +01:00
										 |  |  | /*
 | 
					
						
							|  |  |  |  * The i_data_sem and i_mutex serve for protection of allocation information | 
					
						
							|  |  |  |  * of a regular files and symlinks. This includes all extents belonging to | 
					
						
							|  |  |  |  * the file/symlink, a fact whether data are in-inode or in external data | 
					
						
							|  |  |  |  * blocks, preallocation, goal block information... When extents are read, | 
					
						
							|  |  |  |  * i_mutex or i_data_sem must be held (for reading is enough in case of | 
					
						
							|  |  |  |  * i_data_sem). When extents are changed, i_data_sem must be held for writing | 
					
						
							|  |  |  |  * and also i_mutex must be held. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * For directories i_mutex is used for all the necessary protection. | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-02-22 12:39:12 +01:00
										 |  |  | struct udf_inode_info { | 
					
						
							|  |  |  | 	struct timespec		i_crtime; | 
					
						
							|  |  |  | 	/* Physical address of inode */ | 
					
						
							| 
									
										
										
										
											2008-10-15 12:28:03 +02:00
										 |  |  | 	struct kernel_lb_addr		i_location; | 
					
						
							| 
									
										
										
										
											2008-02-22 12:39:12 +01:00
										 |  |  | 	__u64			i_unique; | 
					
						
							|  |  |  | 	__u32			i_lenEAttr; | 
					
						
							|  |  |  | 	__u32			i_lenAlloc; | 
					
						
							|  |  |  | 	__u64			i_lenExtents; | 
					
						
							|  |  |  | 	__u32			i_next_alloc_block; | 
					
						
							|  |  |  | 	__u32			i_next_alloc_goal; | 
					
						
							|  |  |  | 	unsigned		i_alloc_type : 3; | 
					
						
							| 
									
										
										
										
											2008-01-30 22:03:59 +01:00
										 |  |  | 	unsigned		i_efe : 1;	/* extendedFileEntry */ | 
					
						
							|  |  |  | 	unsigned		i_use : 1;	/* unallocSpaceEntry */ | 
					
						
							| 
									
										
										
										
											2008-02-22 12:39:12 +01:00
										 |  |  | 	unsigned		i_strat4096 : 1; | 
					
						
							|  |  |  | 	unsigned		reserved : 26; | 
					
						
							|  |  |  | 	union { | 
					
						
							| 
									
										
										
										
											2008-10-15 12:28:03 +02:00
										 |  |  | 		struct short_ad	*i_sad; | 
					
						
							|  |  |  | 		struct long_ad		*i_lad; | 
					
						
							| 
									
										
										
										
											2008-02-22 12:39:12 +01:00
										 |  |  | 		__u8		*i_data; | 
					
						
							|  |  |  | 	} i_ext; | 
					
						
							| 
									
										
										
										
											2010-11-16 18:40:47 +01:00
										 |  |  | 	struct rw_semaphore	i_data_sem; | 
					
						
							| 
									
										
										
										
											2008-02-22 12:39:12 +01:00
										 |  |  | 	struct inode vfs_inode; | 
					
						
							|  |  |  | }; | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  | static inline struct udf_inode_info *UDF_I(struct inode *inode) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | 	return list_entry(inode, struct udf_inode_info, vfs_inode); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-02-22 12:39:12 +01:00
										 |  |  | #endif /* _UDF_I_H) */
 |