efs_fs_i.h 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. /*
  2. * efs_fs_i.h
  3. *
  4. * Copyright (c) 1999 Al Smith
  5. *
  6. * Portions derived from IRIX header files (c) 1988 Silicon Graphics
  7. */
  8. #ifndef __EFS_FS_I_H__
  9. #define __EFS_FS_I_H__
  10. typedef int32_t efs_block_t;
  11. typedef uint32_t efs_ino_t;
  12. #define EFS_DIRECTEXTENTS 12
  13. /*
  14. * layout of an extent, in memory and on disk. 8 bytes exactly.
  15. */
  16. typedef union extent_u {
  17. unsigned char raw[8];
  18. struct extent_s {
  19. unsigned int ex_magic:8; /* magic # (zero) */
  20. unsigned int ex_bn:24; /* basic block */
  21. unsigned int ex_length:8; /* numblocks in this extent */
  22. unsigned int ex_offset:24; /* logical offset into file */
  23. } cooked;
  24. } efs_extent;
  25. typedef struct edevs {
  26. __be16 odev;
  27. __be32 ndev;
  28. } efs_devs;
  29. /*
  30. * extent based filesystem inode as it appears on disk. The efs inode
  31. * is exactly 128 bytes long.
  32. */
  33. struct efs_dinode {
  34. __be16 di_mode; /* mode and type of file */
  35. __be16 di_nlink; /* number of links to file */
  36. __be16 di_uid; /* owner's user id */
  37. __be16 di_gid; /* owner's group id */
  38. __be32 di_size; /* number of bytes in file */
  39. __be32 di_atime; /* time last accessed */
  40. __be32 di_mtime; /* time last modified */
  41. __be32 di_ctime; /* time created */
  42. __be32 di_gen; /* generation number */
  43. __be16 di_numextents; /* # of extents */
  44. u_char di_version; /* version of inode */
  45. u_char di_spare; /* spare - used by AFS */
  46. union di_addr {
  47. efs_extent di_extents[EFS_DIRECTEXTENTS];
  48. efs_devs di_dev; /* device for IFCHR/IFBLK */
  49. } di_u;
  50. };
  51. /* efs inode storage in memory */
  52. struct efs_inode_info {
  53. int numextents;
  54. int lastextent;
  55. efs_extent extents[EFS_DIRECTEXTENTS];
  56. struct inode vfs_inode;
  57. };
  58. #endif /* __EFS_FS_I_H__ */