0001
0002
0003
0004
0005
0006 #ifndef __XFS_IOCTL32_H__
0007 #define __XFS_IOCTL32_H__
0008
0009 #include <linux/compat.h>
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020 #define XFS_IOC_GETVERSION_32 FS_IOC32_GETVERSION
0021
0022
0023
0024
0025 #if defined(CONFIG_IA64) || defined(CONFIG_X86_64)
0026 #define BROKEN_X86_ALIGNMENT
0027 #define __compat_packed __attribute__((packed))
0028 #else
0029 #define __compat_packed
0030 #endif
0031
0032 typedef struct compat_xfs_bstime {
0033 old_time32_t tv_sec;
0034 __s32 tv_nsec;
0035 } compat_xfs_bstime_t;
0036
0037 struct compat_xfs_bstat {
0038 __u64 bs_ino;
0039 __u16 bs_mode;
0040 __u16 bs_nlink;
0041 __u32 bs_uid;
0042 __u32 bs_gid;
0043 __u32 bs_rdev;
0044 __s32 bs_blksize;
0045 __s64 bs_size;
0046 compat_xfs_bstime_t bs_atime;
0047 compat_xfs_bstime_t bs_mtime;
0048 compat_xfs_bstime_t bs_ctime;
0049 int64_t bs_blocks;
0050 __u32 bs_xflags;
0051 __s32 bs_extsize;
0052 __s32 bs_extents;
0053 __u32 bs_gen;
0054 __u16 bs_projid_lo;
0055 #define bs_projid bs_projid_lo
0056 __u16 bs_forkoff;
0057 __u16 bs_projid_hi;
0058 unsigned char bs_pad[10];
0059 __u32 bs_dmevmask;
0060 __u16 bs_dmstate;
0061 __u16 bs_aextents;
0062 } __compat_packed;
0063
0064 struct compat_xfs_fsop_bulkreq {
0065 compat_uptr_t lastip;
0066 __s32 icount;
0067 compat_uptr_t ubuffer;
0068 compat_uptr_t ocount;
0069 };
0070
0071 #define XFS_IOC_FSBULKSTAT_32 \
0072 _IOWR('X', 101, struct compat_xfs_fsop_bulkreq)
0073 #define XFS_IOC_FSBULKSTAT_SINGLE_32 \
0074 _IOWR('X', 102, struct compat_xfs_fsop_bulkreq)
0075 #define XFS_IOC_FSINUMBERS_32 \
0076 _IOWR('X', 103, struct compat_xfs_fsop_bulkreq)
0077
0078 typedef struct compat_xfs_fsop_handlereq {
0079 __u32 fd;
0080 compat_uptr_t path;
0081 __u32 oflags;
0082 compat_uptr_t ihandle;
0083 __u32 ihandlen;
0084 compat_uptr_t ohandle;
0085 compat_uptr_t ohandlen;
0086 } compat_xfs_fsop_handlereq_t;
0087
0088 #define XFS_IOC_PATH_TO_FSHANDLE_32 \
0089 _IOWR('X', 104, struct compat_xfs_fsop_handlereq)
0090 #define XFS_IOC_PATH_TO_HANDLE_32 \
0091 _IOWR('X', 105, struct compat_xfs_fsop_handlereq)
0092 #define XFS_IOC_FD_TO_HANDLE_32 \
0093 _IOWR('X', 106, struct compat_xfs_fsop_handlereq)
0094 #define XFS_IOC_OPEN_BY_HANDLE_32 \
0095 _IOWR('X', 107, struct compat_xfs_fsop_handlereq)
0096 #define XFS_IOC_READLINK_BY_HANDLE_32 \
0097 _IOWR('X', 108, struct compat_xfs_fsop_handlereq)
0098
0099
0100 struct compat_xfs_swapext {
0101 int64_t sx_version;
0102 int64_t sx_fdtarget;
0103 int64_t sx_fdtmp;
0104 xfs_off_t sx_offset;
0105 xfs_off_t sx_length;
0106 char sx_pad[16];
0107 struct compat_xfs_bstat sx_stat;
0108 } __compat_packed;
0109
0110 #define XFS_IOC_SWAPEXT_32 _IOWR('X', 109, struct compat_xfs_swapext)
0111
0112 typedef struct compat_xfs_fsop_attrlist_handlereq {
0113 struct compat_xfs_fsop_handlereq hreq;
0114 struct xfs_attrlist_cursor pos;
0115 __u32 flags;
0116 __u32 buflen;
0117 compat_uptr_t buffer;
0118 } __compat_packed compat_xfs_fsop_attrlist_handlereq_t;
0119
0120
0121 #define XFS_IOC_ATTRLIST_BY_HANDLE_32 \
0122 _IOW('X', 122, struct compat_xfs_fsop_attrlist_handlereq)
0123
0124
0125 typedef struct compat_xfs_attr_multiop {
0126 __u32 am_opcode;
0127 __s32 am_error;
0128 compat_uptr_t am_attrname;
0129 compat_uptr_t am_attrvalue;
0130 __u32 am_length;
0131 __u32 am_flags;
0132 } compat_xfs_attr_multiop_t;
0133
0134 typedef struct compat_xfs_fsop_attrmulti_handlereq {
0135 struct compat_xfs_fsop_handlereq hreq;
0136 __u32 opcount;
0137
0138 compat_uptr_t ops;
0139 } compat_xfs_fsop_attrmulti_handlereq_t;
0140
0141 #define XFS_IOC_ATTRMULTI_BY_HANDLE_32 \
0142 _IOW('X', 123, struct compat_xfs_fsop_attrmulti_handlereq)
0143
0144 #ifdef BROKEN_X86_ALIGNMENT
0145 typedef struct compat_xfs_fsop_geom_v1 {
0146 __u32 blocksize;
0147 __u32 rtextsize;
0148 __u32 agblocks;
0149 __u32 agcount;
0150 __u32 logblocks;
0151 __u32 sectsize;
0152 __u32 inodesize;
0153 __u32 imaxpct;
0154 __u64 datablocks;
0155 __u64 rtblocks;
0156 __u64 rtextents;
0157 __u64 logstart;
0158 unsigned char uuid[16];
0159 __u32 sunit;
0160 __u32 swidth;
0161 __s32 version;
0162 __u32 flags;
0163 __u32 logsectsize;
0164 __u32 rtsectsize;
0165 __u32 dirblocksize;
0166 } __attribute__((packed)) compat_xfs_fsop_geom_v1_t;
0167
0168 #define XFS_IOC_FSGEOMETRY_V1_32 \
0169 _IOR('X', 100, struct compat_xfs_fsop_geom_v1)
0170
0171 struct compat_xfs_inogrp {
0172 __u64 xi_startino;
0173 __s32 xi_alloccount;
0174 __u64 xi_allocmask;
0175 } __attribute__((packed));
0176
0177
0178 typedef struct compat_xfs_growfs_data {
0179 __u64 newblocks;
0180 __u32 imaxpct;
0181 } __attribute__((packed)) compat_xfs_growfs_data_t;
0182
0183 typedef struct compat_xfs_growfs_rt {
0184 __u64 newblocks;
0185 __u32 extsize;
0186 } __attribute__((packed)) compat_xfs_growfs_rt_t;
0187
0188 #define XFS_IOC_FSGROWFSDATA_32 _IOW('X', 110, struct compat_xfs_growfs_data)
0189 #define XFS_IOC_FSGROWFSRT_32 _IOW('X', 112, struct compat_xfs_growfs_rt)
0190
0191 #endif
0192
0193 #endif