diff options
Diffstat (limited to 'sys/gnu/fs/reiserfs/reiserfs_fs_i.h')
-rw-r--r-- | sys/gnu/fs/reiserfs/reiserfs_fs_i.h | 90 |
1 files changed, 90 insertions, 0 deletions
diff --git a/sys/gnu/fs/reiserfs/reiserfs_fs_i.h b/sys/gnu/fs/reiserfs/reiserfs_fs_i.h new file mode 100644 index 0000000..d9e358e --- /dev/null +++ b/sys/gnu/fs/reiserfs/reiserfs_fs_i.h @@ -0,0 +1,90 @@ +/*- + * Copyright 2000 Hans Reiser + * See README for licensing and copyright details + * + * Ported to FreeBSD by Jean-Sébastien Pédron <jspedron@club-internet.fr> + * + * $FreeBSD$ + */ + +#ifndef _GNU_REISERFS_REISERFS_FS_I_H +#define _GNU_REISERFS_REISERFS_FS_I_H + +#include <sys/queue.h> + +/* 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_priv_object = 0x0080, + i_has_xattr_dir = 0x0100, +} reiserfs_inode_flags; + +struct reiserfs_node { + struct vnode *i_vnode; + struct vnode *i_devvp; + struct cdev *i_dev; + ino_t i_number; + + ino_t i_ino; + + struct reiserfs_sb_info *i_reiserfs; + + uint32_t i_flag; /* Flags, see below */ + uint32_t i_key[4]; /* Key is still 4 32 bit + integers */ + uint32_t i_flags; /* Transient inode flags that + are never stored on disk. + Bitmasks for this field + are defined above. */ + uint32_t i_first_direct_byte; /* Offset of first byte stored + in direct item. */ + uint32_t i_attrs; /* Copy of persistent inode + flags read from sd_attrs. */ + + uint16_t i_mode; /* IFMT, permissions. */ + uint16_t i_nlink; /* File link count. */ + uint64_t i_size; /* File byte count. */ + uint32_t i_bytes; + uid_t i_uid; /* File owner. */ + gid_t i_gid; /* File group. */ + struct timespec i_atime; /* Last access time. */ + struct timespec i_mtime; /* Last modified time. */ + struct timespec i_ctime; /* Last inode change time. */ + + uint32_t i_blocks; + uint32_t i_generation; +}; + +#define VTOI(vp) ((struct reiserfs_node *)(vp)->v_data) +#define ITOV(ip) ((ip)->i_vnode) + +/* These flags are kept in i_flag. */ +#define IN_HASHED 0x0020 /* Inode is on hash list */ + +/* This overlays the fid structure (see mount.h) */ +struct rfid { + uint16_t rfid_len; /* Length of structure */ + uint16_t rfid_pad; /* Force 32-bit alignment */ + ino_t rfid_dirid; /* File key */ + ino_t rfid_objectid; + uint32_t rfid_gen; /* Generation number */ +}; + +#endif /* !defined _GNU_REISERFS_REISERFS_FS_I_H */ |