udf_fs_i.h 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. /*
  2. * udf_fs_i.h
  3. *
  4. * This file is intended for the Linux kernel/module.
  5. *
  6. * COPYRIGHT
  7. * This file is distributed under the terms of the GNU General Public
  8. * License (GPL). Copies of the GPL can be obtained from:
  9. * ftp://prep.ai.mit.edu/pub/gnu/GPL
  10. * Each contributing author retains all rights to their own work.
  11. */
  12. #ifndef _UDF_FS_I_H
  13. #define _UDF_FS_I_H 1
  14. #ifdef __KERNEL__
  15. #ifndef _ECMA_167_H
  16. typedef struct
  17. {
  18. __u32 logicalBlockNum;
  19. __u16 partitionReferenceNum;
  20. } __attribute__ ((packed)) lb_addr;
  21. typedef struct
  22. {
  23. __u32 extLength;
  24. __u32 extPosition;
  25. } __attribute__ ((packed)) short_ad;
  26. typedef struct
  27. {
  28. __u32 extLength;
  29. lb_addr extLocation;
  30. __u8 impUse[6];
  31. } __attribute__ ((packed)) long_ad;
  32. #endif
  33. struct udf_inode_info
  34. {
  35. struct timespec i_crtime;
  36. /* Physical address of inode */
  37. kernel_lb_addr i_location;
  38. __u64 i_unique;
  39. __u32 i_lenEAttr;
  40. __u32 i_lenAlloc;
  41. __u64 i_lenExtents;
  42. __u32 i_next_alloc_block;
  43. __u32 i_next_alloc_goal;
  44. unsigned i_alloc_type : 3;
  45. unsigned i_efe : 1;
  46. unsigned i_use : 1;
  47. unsigned i_strat4096 : 1;
  48. unsigned reserved : 26;
  49. union
  50. {
  51. short_ad *i_sad;
  52. long_ad *i_lad;
  53. __u8 *i_data;
  54. } i_ext;
  55. struct inode vfs_inode;
  56. };
  57. #endif
  58. /* exported IOCTLs, we have 'l', 0x40-0x7f */
  59. #define UDF_GETEASIZE _IOR('l', 0x40, int)
  60. #define UDF_GETEABLOCK _IOR('l', 0x41, void *)
  61. #define UDF_GETVOLIDENT _IOR('l', 0x42, void *)
  62. #define UDF_RELOCATE_BLOCKS _IOWR('l', 0x43, long)
  63. #endif /* _UDF_FS_I_H */