Imported reiserfsprogs-3.6.20
This commit is contained in:
1 parent
0ed773997f
commit
dac518d099
189 files changed
+43353
-29787
No files matched your search
@@ -0,0 +1,192 @@
|
||||
/*
|
||||
* Copyright 2000-2004 by Hans Reiser, licensing governed by
|
||||
* reiserfsprogs/README
|
||||
*/
|
||||
|
||||
#ifndef REISERFS_STAT_H
|
||||
#define REISERFS_STAT_H
|
||||
|
||||
/* Stat Data on disk (reiserfs version of UFS disk inode minus the address blocks) */
|
||||
|
||||
/* The sense of adding union to stat data is to keep a value of real number of
|
||||
blocks used by file. The necessity of adding such information is caused by
|
||||
existing of files with holes. Reiserfs should keep number of used blocks
|
||||
for file, but not calculate it from file size (that is not correct for
|
||||
holed files). Thus we have to add additional information to stat data.
|
||||
When we have a device special file, there is no need to get number of used
|
||||
blocks for them, and, accordingly, we doesn't need to keep major and minor
|
||||
numbers for regular files, which might have holes. So this field is being
|
||||
overloaded. */
|
||||
|
||||
struct reiserfs_sd_v1 {
|
||||
__u16 sd_mode; /* file type, permissions */
|
||||
__u16 sd_nlink; /* number of hard links */
|
||||
__u16 sd_uid; /* owner */
|
||||
__u16 sd_gid; /* group */
|
||||
__u32 sd_size; /* file size */
|
||||
__u32 sd_atime; /* time of last access */
|
||||
__u32 sd_mtime; /* time file was last modified */
|
||||
__u32 sd_ctime; /* time inode (stat data) was last changed (except
|
||||
changes to sd_atime and sd_mtime) */
|
||||
union {
|
||||
__u32 sd_rdev;
|
||||
__u32 sd_blocks; /* number of blocks file uses */
|
||||
} __attribute__ ((__packed__)) u;
|
||||
__u32 sd_fdb; /* first byte of file which is stored
|
||||
in a direct item: except that if it
|
||||
equals 1 it is a symlink and if it
|
||||
equals MAX_KEY_OFFSET there is no
|
||||
direct item. The existence of this
|
||||
field really grates on me. Let's
|
||||
replace it with a macro based on
|
||||
sd_size and our tail suppression
|
||||
policy. Someday. -Hans */
|
||||
} __attribute__ ((__packed__));
|
||||
|
||||
typedef struct reiserfs_sd_v1 reiserfs_sd_v1_t;
|
||||
|
||||
#define REISERFS_SD_SIZE_V1 (sizeof(reiserfs_sd_v1_t))
|
||||
|
||||
/* this is used to check sd_size of stat data v1 */
|
||||
#define REISERFS_SD_SIZE_MAX_V1 0x7fffffff
|
||||
|
||||
// sd_fdb is set to this when there are no direct items in a file
|
||||
#define REISERFS_SD_NODIRECT 0xffffffff
|
||||
|
||||
/* Stat Data on disk (reiserfs version of UFS disk inode minus the
|
||||
address blocks) */
|
||||
struct reiserfs_sd {
|
||||
__u16 sd_mode; /* file type, permissions */
|
||||
__u16 sd_attrs;
|
||||
__u32 sd_nlink; /* 32 bit nlink! */
|
||||
__u64 sd_size; /* 64 bit size!*/
|
||||
__u32 sd_uid; /* 32 bit uid! */
|
||||
__u32 sd_gid; /* 32 bit gid! */
|
||||
__u32 sd_atime; /* time of last access */
|
||||
__u32 sd_mtime; /* time file was last modified */
|
||||
__u32 sd_ctime; /* time inode (stat data) was last changed (except
|
||||
changes to sd_atime and sd_mtime) */
|
||||
__u32 sd_blocks;
|
||||
union {
|
||||
__u32 sd_rdev;
|
||||
__u32 sd_generation;
|
||||
//__u32 sd_fdb;
|
||||
/* first byte of file which is stored in a direct item: except that if
|
||||
it equals 1 it is a symlink and if it equals ~(__u32)0 there is no
|
||||
direct item. The existence of this field really grates on me. Let's
|
||||
replace it with a macro based on sd_size and our tail suppression
|
||||
policy? */
|
||||
} __attribute__ ((__packed__)) u;
|
||||
} __attribute__ ((__packed__));
|
||||
//
|
||||
// this is 44 bytes long
|
||||
//
|
||||
|
||||
typedef struct reiserfs_sd reiserfs_sd_t;
|
||||
|
||||
#define REISERFS_SD_SIZE (sizeof(reiserfs_sd_t))
|
||||
|
||||
/* this is used to check sd_size of stat data v2: max offset which can
|
||||
be reached with a key of format 2 is 60 bits */
|
||||
#define REISERFS_SD_SIZE_MAX_V2 0xfffffffffffffffLL
|
||||
|
||||
/* reiserfs_sd_v1_t* access macros */
|
||||
#define reiserfs_sd_v1_mode(sd) (le16_to_cpu((sd)->sd_mode))
|
||||
#define reiserfs_set_sd_v1_mode(sd,n) ((sd)->sd_mode = cpu_to_le16((n)))
|
||||
#define reiserfs_sd_v1_nlink(sd) (le16_to_cpu((sd)->sd_nlink))
|
||||
#define reiserfs_set_sd_v1_nlink(sd,n) ((sd)->sd_nlink = cpu_to_le16((n)))
|
||||
#define reiserfs_sd_v1_uid(sd) (le16_to_cpu((sd)->sd_uid))
|
||||
#define reiserfs_set_sd_v1_uid(sd,n) ((sd)->sd_uid = cpu_to_le16((n)))
|
||||
#define reiserfs_sd_v1_gid(sd) (le16_to_cpu((sd)->sd_gid))
|
||||
#define reiserfs_set_sd_v1_gid(sd,n) ((sd)->sd_gid = cpu_to_le16((n)))
|
||||
#define reiserfs_sd_v1_size(sd) (le32_to_cpu((sd)->sd_size))
|
||||
#define reiserfs_set_sd_v1_size(sd,n) ((sd)->sd_size = cpu_to_le32((n)))
|
||||
#define reiserfs_sd_v1_atime(sd) (le32_to_cpu((sd)->sd_atime))
|
||||
#define reiserfs_set_sd_v1_atime(sd,n) ((sd)->sd_atime = cpu_to_le32((n)))
|
||||
#define reiserfs_sd_v1_mtime(sd) (le32_to_cpu((sd)->sd_mtime))
|
||||
#define reiserfs_set_sd_v1_mtime(sd,n) ((sd)->sd_mtime = cpu_to_le32((n)))
|
||||
#define reiserfs_sd_v1_ctime(sd) (le32_to_cpu((sd)->sd_ctime))
|
||||
#define reiserfs_set_sd_v1_ctime(sd,n) ((sd)->sd_ctime = cpu_to_le32((n)))
|
||||
#define reiserfs_sd_v1_blocks(sd) (le32_to_cpu((sd)->u.sd_blocks))
|
||||
#define reiserfs_set_sd_v1_blocks(sd,n) ((sd)->u.sd_blocks = cpu_to_le32((n)))
|
||||
#define reiserfs_sd_v1_rdev(sd) (le32_to_cpu((sd)->u.sd_rdev))
|
||||
#define reiserfs_set_sd_v1_rdev(sd,n) ((sd)->u.sd_rdev = cpu_to_le32((n)))
|
||||
#define reiserfs_sd_v1_fdb(sd) (le32_to_cpu((sd)->sd_fdb))
|
||||
#define reiserfs_set_sd_v1_fdb(sd,n) ((sd)->sd_fdb = cpu_to_le32((n)))
|
||||
|
||||
/* reiserfs_sd_t */
|
||||
#define reiserfs_sd_v2_mode(sd) (le16_to_cpu((sd)->sd_mode))
|
||||
#define reiserfs_set_sd_v2_mode(sd,n) ((sd)->sd_mode = cpu_to_le16((n)))
|
||||
#define reiserfs_sd_v2_attrs(sd) (le16_to_cpu((sd)->sd_attrs))
|
||||
#define reiserfs_set_sd_v2_attrs(sd,n) ((sd)->sd_attrs = cpu_to_le16((n)))
|
||||
#define reiserfs_sd_v2_nlink(sd) (le32_to_cpu((sd)->sd_nlink))
|
||||
#define reiserfs_set_sd_v2_nlink(sd,n) ((sd)->sd_nlink = cpu_to_le32((n)))
|
||||
#define reiserfs_sd_v2_size(sd) (le64_to_cpu((sd)->sd_size))
|
||||
#define reiserfs_set_sd_v2_size(sd,n) ((sd)->sd_size = cpu_to_le64((n)))
|
||||
#define reiserfs_sd_v2_uid(sd) (le32_to_cpu((sd)->sd_uid))
|
||||
#define reiserfs_set_sd_v2_uid(sd,n) ((sd)->sd_uid = cpu_to_le32((n)))
|
||||
#define reiserfs_sd_v2_gid(sd) (le32_to_cpu((sd)->sd_gid))
|
||||
#define reiserfs_set_sd_v2_gid(sd,n) ((sd)->sd_gid = cpu_to_le32((n)))
|
||||
#define reiserfs_sd_v2_atime(sd) (le32_to_cpu((sd)->sd_atime))
|
||||
#define reiserfs_set_sd_v2_atime(sd,n) ((sd)->sd_atime = cpu_to_le32((n)))
|
||||
#define reiserfs_sd_v2_mtime(sd) (le32_to_cpu((sd)->sd_mtime))
|
||||
#define reiserfs_set_sd_v2_mtime(sd,n) ((sd)->sd_mtime = cpu_to_le32((n)))
|
||||
#define reiserfs_sd_v2_ctime(sd) (le32_to_cpu((sd)->sd_ctime))
|
||||
#define reiserfs_set_sd_v2_ctime(sd,n) ((sd)->sd_ctime = cpu_to_le32((n)))
|
||||
#define reiserfs_sd_v2_blocks(sd) (le32_to_cpu((sd)->sd_blocks))
|
||||
#define reiserfs_set_sd_v2_blocks(sd,n) ((sd)->sd_blocks = cpu_to_le32((n)))
|
||||
#define reiserfs_sd_v2_rdev(sd) (le32_to_cpu((sd)->u.sd_rdev))
|
||||
#define reiserfs_set_sd_v2_rdev(sd,n) ((sd)->u.sd_rdev = cpu_to_le32((n)))
|
||||
|
||||
extern void reiserfs_stat_init (int blocksize, int key_format,
|
||||
__u32 dirid, __u32 objectid,
|
||||
reiserfs_ih_t * ih, void * sd);
|
||||
|
||||
extern void reiserfs_stat_set (int field, reiserfs_ih_t * ih,
|
||||
void * sd, void * value);
|
||||
|
||||
extern void reiserfs_stat_get (int field, reiserfs_ih_t * ih,
|
||||
void * sd, void * value);
|
||||
|
||||
/* access to stat data fields */
|
||||
#define STAT_MODE 0
|
||||
#define STAT_SIZE 1
|
||||
#define STAT_NLINK 2
|
||||
#define STAT_BLOCKS 3
|
||||
#define STAT_FDB 4
|
||||
|
||||
#define reiserfs_stat_get_mode(ih, sd, pmode) \
|
||||
reiserfs_stat_get(STAT_MODE, ih, sd, pmode)
|
||||
#define reiserfs_stat_set_mode(ih, sd, pmode) \
|
||||
reiserfs_stat_set(STAT_MODE, ih, sd, pmode)
|
||||
|
||||
#define reiserfs_stat_get_size(ih, sd, psize) \
|
||||
reiserfs_stat_get(STAT_SIZE, ih, sd, psize)
|
||||
#define reiserfs_stat_set_size(ih, sd, psize) \
|
||||
reiserfs_stat_set(STAT_SIZE, ih, sd, psize)
|
||||
|
||||
#define reiserfs_stat_get_blocks(ih, sd, pblocks) \
|
||||
reiserfs_stat_get(STAT_BLOCKS, ih, sd, pblocks)
|
||||
|
||||
#define reiserfs_stat_set_blocks(ih, sd, pblocks) \
|
||||
reiserfs_stat_set(STAT_BLOCKS, ih, sd, pblocks)
|
||||
|
||||
#define reiserfs_stat_get_nlink(ih, sd, pnlink) \
|
||||
reiserfs_stat_get(STAT_NLINK, ih, sd, pnlink)
|
||||
|
||||
#define reiserfs_stat_set_nlink(ih, sd, pnlink) \
|
||||
reiserfs_stat_set(STAT_NLINK, ih, sd, pnlink)
|
||||
|
||||
#define reiserfs_stat_get_fdb(ih, sd, pfdb) \
|
||||
reiserfs_stat_get(STAT_FDB, ih, sd, pfdb)
|
||||
|
||||
#define reiserfs_stat_set_fdb(ih, sd, pfdb) \
|
||||
reiserfs_stat_set(STAT_FDB, ih, sd, pfdb)
|
||||
|
||||
|
||||
extern int reiserfs_print_stat_data (FILE * fp,
|
||||
reiserfs_bh_t * bh,
|
||||
reiserfs_ih_t * ih,
|
||||
int alltimes);
|
||||
|
||||
#endif
|
||||
Reference in new issue
Block a user