freebsd-dev/sys/gnu/fs/reiserfs/reiserfs_fs_i.h
Pedro F. Giffuni fd29269606 reiserfs: Use signed i_nlink
Unlike Linux, FreeBSD's kernel doesn't like unsigned file link
count. This is consistent with our ext2fs implementation.

MFC after:	1 month
2014-09-25 19:10:32 +00:00

91 lines
2.8 KiB
C

/*-
* 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. */
int16_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 */