affs_fs_i.h
上传用户:jlfgdled
上传日期:2013-04-10
资源大小:33168k
文件大小:2k
源码类别:

Linux/Unix编程

开发平台:

Unix_Linux

  1. #ifndef _AFFS_FS_I
  2. #define _AFFS_FS_I
  3. #include <linux/a.out.h>
  4. // move this to linux/coda.h!!!
  5. #include <linux/time.h>
  6. #define AFFS_CACHE_SIZE PAGE_SIZE
  7. //#define AFFS_CACHE_SIZE (4*4)
  8. #define AFFS_MAX_PREALLOC 32
  9. #define AFFS_LC_SIZE (AFFS_CACHE_SIZE/sizeof(u32)/2)
  10. #define AFFS_AC_SIZE (AFFS_CACHE_SIZE/sizeof(struct affs_ext_key)/2)
  11. #define AFFS_AC_MASK (AFFS_AC_SIZE-1)
  12. struct affs_ext_key {
  13. u32 ext; /* idx of the extended block */
  14. u32 key; /* block number */
  15. };
  16. /*
  17.  * affs fs inode data in memory
  18.  */
  19. struct affs_inode_info {
  20. u32  i_opencnt;
  21. struct semaphore i_link_lock; /* Protects internal inode access. */
  22. struct semaphore i_ext_lock; /* Protects internal inode access. */
  23. #define i_hash_lock i_ext_lock
  24. u32  i_blkcnt; /* block count */
  25. u32  i_extcnt; /* extended block count */
  26. u32 *i_lc; /* linear cache of extended blocks */
  27. u32  i_lc_size;
  28. u32  i_lc_shift;
  29. u32  i_lc_mask;
  30. struct affs_ext_key *i_ac; /* associative cache of extended blocks */
  31. u32  i_ext_last; /* last accessed extended block */
  32. struct buffer_head *i_ext_bh; /* bh of last extended block */
  33. unsigned long mmu_private;
  34. u32  i_protect; /* unused attribute bits */
  35. u32  i_lastalloc; /* last allocated block */
  36. int  i_pa_cnt; /* number of preallocated blocks */
  37. #if 0
  38. s32  i_original; /* if != 0, this is the key of the original */
  39. u32  i_data[AFFS_MAX_PREALLOC]; /* preallocated blocks */
  40. int  i_cache_users; /* Cache cannot be freed while > 0 */
  41. unsigned char i_hlink; /* This is a fake */
  42. unsigned char i_pad;
  43. s32  i_parent; /* parent ino */
  44. #endif
  45. };
  46. /* short cut to get to the affs specific inode data */
  47. #define AFFS_INODE (&inode->u.affs_i)
  48. #define AFFS_DIR (&dir->u.affs_i)
  49. #endif