+ int (* fs_map_inode_pages)(struct inode *inode, struct page **page,
+ int pages, unsigned long *blocks,
+ int *created, int create,
+ struct semaphore *sem);
+ int (* fs_prep_san_write)(struct inode *inode, long *blocks,
+ int nblocks, loff_t newsize);
+ int (* fs_write_record)(struct file *, void *, int size, loff_t *,
+ int force_sync);
+ int (* fs_read_record)(struct file *, void *, int size, loff_t *);
+ int (* fs_setup)(struct obd_device *, struct super_block *);
+
+ int (* fs_post_setup)(struct obd_device *obd, struct vfsmount *mnt,
+ struct dentry *dentry);
+ int (* fs_post_cleanup)(struct obd_device *obd, struct vfsmount *mnt);
+ int (* fs_set_info)(struct super_block *, struct inode *,
+ __u32, void *, __u32, void *);
+ int (* fs_get_info)(struct super_block *, struct inode *,
+ __u32, void *, __u32 *, void *);
+ int (* fs_set_fs_flags)(struct inode *inode, int flags);
+ int (* fs_clear_fs_flags)(struct inode *inode, int flags);
+ int (* fs_set_ost_flags)(struct super_block *sb);
+ int (* fs_set_mds_flags)(struct super_block *sb);
+ int (* fs_precreate_rec)(struct dentry *dentry, int *num,
+ struct obdo *oa);
+ int (* fs_set_xattr)(struct inode *inode, void *handle, char *name,
+ void *buffer, int buffer_size);
+ int (* fs_get_xattr)(struct inode *inode, char *name,
+ void *buffer, int buffer_size);
+
+ int (* fs_init_extents_ea)(struct inode *inode);
+ int (* fs_insert_extents_ea)(struct inode *inode, unsigned long from,
+ unsigned long num);
+ int (* fs_do_write_cow)(struct dentry *dentry, void *extents, int nexts);
+ int (* fs_write_extents)(struct dentry *dentry,
+ unsigned long offset, unsigned long blks);
+ int (* fs_get_fs_flags)(struct dentry *dentry);
+ int (* fs_remove_extents_ea)(struct inode *inode, unsigned long from,
+ unsigned long num);
+ int (* fs_get_ino_write_extents)(struct super_block *sb, ino_t ino,
+ char **pbuf, int *size);
+ int (* fs_free_write_extents)(struct super_block *sb, ino_t ino,
+ char *pbuf, int size);
+ int (* fs_get_inode_write_extents)(struct inode *inode, char **pbuf,
+ int *size);
+ int (* fs_get_write_extents_num)(struct inode *inode, int* size);
+
+ int (* fs_get_op_len)(int, struct fsfilt_objinfo *, int);
+ int (* fs_add_dir_entry)(struct obd_device *, struct dentry *,
+ char *, int, unsigned long, unsigned long,
+ unsigned long, unsigned long);
+ int (* fs_del_dir_entry)(struct obd_device *, struct dentry *);
+ /*snap operations*/
+ int (* fs_is_redirector)(struct inode *inode);
+ int (* fs_is_indirect)(struct inode *inode);
+
+ struct inode * (* fs_create_indirect)(struct inode *pri, int index,
+ unsigned int gen,
+ struct inode *parent,
+ int del);
+ struct inode * (* fs_get_indirect)(struct inode *pri, int *table,
+ int slot);
+ ino_t (* fs_get_indirect_ino)(struct super_block *sb, ino_t pri,
+ int index);
+ int (* fs_destroy_indirect)(struct inode *pri, int index,
+ struct inode *next_ind);
+ int (* fs_restore_indirect)(struct inode *pri, int index);
+ int (* fs_iterate)(struct super_block *sb,
+ int (*repeat)(struct inode *inode, void *priv),
+ struct inode **start, void *priv, int flag);
+ int (* fs_copy_block)(struct inode *dst, struct inode *src,
+ int blk);
+ int (* fs_set_indirect)(struct inode *pri, int index,
+ ino_t ind_ino, ino_t parent_ino);
+ int (* fs_snap_feature)(struct super_block *sb, int feature,
+ int op);
+ int (* fs_set_snap_info)(struct inode *inode, void* key,
+ __u32 keylen, void *val, __u32 *vallen);
+ int (* fs_get_snap_info)(struct inode *inode, void* key,
+ __u32 keylen, void *val, __u32 *vallen);
+ int (* fs_set_snap_item)(struct super_block *sb, char *name);
+ int (* fs_read_dotsnap_dir_page)(struct file *file, char *buf,
+ size_t count, loff_t *ppos);
+ int (* fs_dir_ent_size)(char *name);
+ int (* fs_set_dir_ent)(struct super_block *sb, char *name,
+ char *buf, int buf_off, int nlen,
+ size_t count);