| #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 |