ioctl.h 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. #ifndef FS_CEPH_IOCTL_H
  2. #define FS_CEPH_IOCTL_H
  3. #include <linux/ioctl.h>
  4. #include <linux/types.h>
  5. #define CEPH_IOCTL_MAGIC 0x97
  6. /* just use u64 to align sanely on all archs */
  7. struct ceph_ioctl_layout {
  8. __u64 stripe_unit, stripe_count, object_size;
  9. __u64 data_pool;
  10. __s64 preferred_osd;
  11. };
  12. #define CEPH_IOC_GET_LAYOUT _IOR(CEPH_IOCTL_MAGIC, 1, \
  13. struct ceph_ioctl_layout)
  14. #define CEPH_IOC_SET_LAYOUT _IOW(CEPH_IOCTL_MAGIC, 2, \
  15. struct ceph_ioctl_layout)
  16. /*
  17. * Extract identity, address of the OSD and object storing a given
  18. * file offset.
  19. */
  20. struct ceph_ioctl_dataloc {
  21. __u64 file_offset; /* in+out: file offset */
  22. __u64 object_offset; /* out: offset in object */
  23. __u64 object_no; /* out: object # */
  24. __u64 object_size; /* out: object size */
  25. char object_name[64]; /* out: object name */
  26. __u64 block_offset; /* out: offset in block */
  27. __u64 block_size; /* out: block length */
  28. __s64 osd; /* out: osd # */
  29. struct sockaddr_storage osd_addr; /* out: osd address */
  30. };
  31. #define CEPH_IOC_GET_DATALOC _IOWR(CEPH_IOCTL_MAGIC, 3, \
  32. struct ceph_ioctl_dataloc)
  33. #define CEPH_IOC_LAZYIO _IO(CEPH_IOCTL_MAGIC, 4)
  34. #endif