diff options
Diffstat (limited to 'include/linux/exportfs.h')
| -rw-r--r-- | include/linux/exportfs.h | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/include/linux/exportfs.h b/include/linux/exportfs.h index 41b223a59a63..fa05e04c5531 100644 --- a/include/linux/exportfs.h +++ b/include/linux/exportfs.h | |||
| @@ -4,6 +4,7 @@ | |||
| 4 | #include <linux/types.h> | 4 | #include <linux/types.h> |
| 5 | 5 | ||
| 6 | struct dentry; | 6 | struct dentry; |
| 7 | struct iattr; | ||
| 7 | struct inode; | 8 | struct inode; |
| 8 | struct super_block; | 9 | struct super_block; |
| 9 | struct vfsmount; | 10 | struct vfsmount; |
| @@ -180,6 +181,21 @@ struct fid { | |||
| 180 | * get_name is not (which is possibly inconsistent) | 181 | * get_name is not (which is possibly inconsistent) |
| 181 | */ | 182 | */ |
| 182 | 183 | ||
| 184 | /* types of block ranges for multipage write mappings. */ | ||
| 185 | #define IOMAP_HOLE 0x01 /* no blocks allocated, need allocation */ | ||
| 186 | #define IOMAP_DELALLOC 0x02 /* delayed allocation blocks */ | ||
| 187 | #define IOMAP_MAPPED 0x03 /* blocks allocated @blkno */ | ||
| 188 | #define IOMAP_UNWRITTEN 0x04 /* blocks allocated @blkno in unwritten state */ | ||
| 189 | |||
| 190 | #define IOMAP_NULL_BLOCK -1LL /* blkno is not valid */ | ||
| 191 | |||
| 192 | struct iomap { | ||
| 193 | sector_t blkno; /* first sector of mapping */ | ||
| 194 | loff_t offset; /* file offset of mapping, bytes */ | ||
| 195 | u64 length; /* length of mapping, bytes */ | ||
| 196 | int type; /* type of mapping */ | ||
| 197 | }; | ||
| 198 | |||
| 183 | struct export_operations { | 199 | struct export_operations { |
| 184 | int (*encode_fh)(struct inode *inode, __u32 *fh, int *max_len, | 200 | int (*encode_fh)(struct inode *inode, __u32 *fh, int *max_len, |
| 185 | struct inode *parent); | 201 | struct inode *parent); |
| @@ -191,6 +207,13 @@ struct export_operations { | |||
| 191 | struct dentry *child); | 207 | struct dentry *child); |
| 192 | struct dentry * (*get_parent)(struct dentry *child); | 208 | struct dentry * (*get_parent)(struct dentry *child); |
| 193 | int (*commit_metadata)(struct inode *inode); | 209 | int (*commit_metadata)(struct inode *inode); |
| 210 | |||
| 211 | int (*get_uuid)(struct super_block *sb, u8 *buf, u32 *len, u64 *offset); | ||
| 212 | int (*map_blocks)(struct inode *inode, loff_t offset, | ||
| 213 | u64 len, struct iomap *iomap, | ||
| 214 | bool write, u32 *device_generation); | ||
| 215 | int (*commit_blocks)(struct inode *inode, struct iomap *iomaps, | ||
| 216 | int nr_iomaps, struct iattr *iattr); | ||
| 194 | }; | 217 | }; |
| 195 | 218 | ||
| 196 | extern int exportfs_encode_inode_fh(struct inode *inode, struct fid *fid, | 219 | extern int exportfs_encode_inode_fh(struct inode *inode, struct fid *fid, |
