64 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			64 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
#ifndef _REISER_FS_I
 | 
						|
#define _REISER_FS_I
 | 
						|
 | 
						|
#include <linux/list.h>
 | 
						|
 | 
						|
struct reiserfs_journal_list;
 | 
						|
 | 
						|
/** bitmasks for i_flags field in reiserfs-specific part of inode */
 | 
						|
typedef enum {
 | 
						|
    /** this says what format of key do all items (but stat data) of
 | 
						|
      an object have.  If this is set, that format is 3.6 otherwise
 | 
						|
      - 3.5 */
 | 
						|
	i_item_key_version_mask = 0x0001,
 | 
						|
    /** If this is unset, object has 3.5 stat data, otherwise, it has
 | 
						|
      3.6 stat data with 64bit size, 32bit nlink etc. */
 | 
						|
	i_stat_data_version_mask = 0x0002,
 | 
						|
    /** file might need tail packing on close */
 | 
						|
	i_pack_on_close_mask = 0x0004,
 | 
						|
    /** don't pack tail of file */
 | 
						|
	i_nopack_mask = 0x0008,
 | 
						|
    /** If those is set, "safe link" was created for this file during
 | 
						|
      truncate or unlink. Safe link is used to avoid leakage of disk
 | 
						|
      space on crash with some files open, but unlinked. */
 | 
						|
	i_link_saved_unlink_mask = 0x0010,
 | 
						|
	i_link_saved_truncate_mask = 0x0020,
 | 
						|
	i_has_xattr_dir = 0x0040,
 | 
						|
	i_data_log = 0x0080,
 | 
						|
	i_ever_mapped = 0x0100
 | 
						|
} reiserfs_inode_flags;
 | 
						|
 | 
						|
struct reiserfs_inode_info {
 | 
						|
	__u32 i_key[4];		/* key is still 4 32 bit integers */
 | 
						|
    /** transient inode flags that are never stored on disk. Bitmasks
 | 
						|
      for this field are defined above. */
 | 
						|
	__u32 i_flags;
 | 
						|
 | 
						|
	__u32 i_first_direct_byte;	// offset of first byte stored in direct item.
 | 
						|
 | 
						|
	/* copy of persistent inode flags read from sd_attrs. */
 | 
						|
	__u32 i_attrs;
 | 
						|
 | 
						|
	int i_prealloc_block;	/* first unused block of a sequence of unused blocks */
 | 
						|
	int i_prealloc_count;	/* length of that sequence */
 | 
						|
	struct list_head i_prealloc_list;	/* per-transaction list of inodes which
 | 
						|
						 * have preallocated blocks */
 | 
						|
 | 
						|
	unsigned new_packing_locality:1;	/* new_packig_locality is created; new blocks
 | 
						|
						 * for the contents of this directory should be
 | 
						|
						 * displaced */
 | 
						|
 | 
						|
	/* we use these for fsync or O_SYNC to decide which transaction
 | 
						|
	 ** needs to be committed in order for this inode to be properly
 | 
						|
	 ** flushed */
 | 
						|
	unsigned int i_trans_id;
 | 
						|
	struct reiserfs_journal_list *i_jl;
 | 
						|
	struct mutex i_mmap;
 | 
						|
#ifdef CONFIG_REISERFS_FS_XATTR
 | 
						|
	struct rw_semaphore i_xattr_sem;
 | 
						|
#endif
 | 
						|
	struct inode vfs_inode;
 | 
						|
};
 | 
						|
 | 
						|
#endif
 |