#include <linux/seq_file.h>
#include <linux/mm.h>
#include <linux/buffer_head.h>
#include <linux/xattr.h>
#include <linux/fs.h>

/*
 * Wrappers around generic functions
 */
int 	aggregate_single_release(struct inode *inode, struct file *file);
ssize_t aggregate_simple_transaction_read(struct file *file, char __user *buf, size_t size, loff_t *pos);
int 	aggregate_simple_transaction_release(struct inode *inode, struct file *file);
int 	aggregate___set_page_dirty_nobuffers(struct page *page);
loff_t	aggregate_remote_llseek(struct file *file, loff_t offset, int origin);
loff_t	aggregate_file_llseek(struct file *file, loff_t offset, int origin);
ssize_t	aggregate_file_read(struct file *file, char* buf, size_t count, loff_t *ppos);
ssize_t	aggregate_file_write(struct file *file, const char* buf, size_t count, loff_t *ppos);
ssize_t	aggregate_read_dir(struct file *file, char* buf, size_t count, loff_t *ppos);
int	aggregate_file_mmap(struct file* file, struct vm_area_struct* vemas);
int	aggregate_file_open(struct inode* inode, struct file* filp);
int	aggregate_commit_write(struct file* filp, struct page* page, unsigned u, unsigned uu);
int	aggregate_block_sync_page(struct page* page);
int     aggregate_readlink(struct dentry* d, char __user* u, int i);
void    aggregate_page_put_link(struct dentry* d, struct nameidata* nd);
int     aggregate_page_follow_link_light(struct dentry* d, struct nameidata* nd);
ssize_t aggregate_getxattr(struct dentry *d, const char *name, void *buffer, size_t size);
int     aggregate_setxattr(struct dentry *d, const char *name, const void *value, size_t size, int flags);
int     aggregate_removexattr(struct dentry *d, const char *name);
ssize_t aggregate_listxattr(struct dentry *d, char *buffer, size_t buffer_size);
ssize_t aggregate_file_sendfile(struct file *in_file, loff_t *ppos, size_t count, read_actor_t actor, void *target);
ssize_t aggregate_file_aio_read(struct kiocb *iocb, char __user *buf, size_t count, loff_t pos);
ssize_t aggregate_file_aio_write(struct kiocb *iocb, const char __user *buf, size_t count, loff_t pos);
int     aggregate_nobh_commit_write(struct file *file, struct page *page, unsigned from, unsigned to);
ssize_t aggregate_do_sync_read(struct file *filp, char __user *buf, size_t len, loff_t *ppos);
ssize_t aggregate_do_sync_write(struct file *filp, const char __user *buf, size_t len, loff_t *ppos);
ssize_t aggregate_file_readv(struct file *filp, const struct iovec *iov, unsigned long nr_segs, loff_t *ppos);
ssize_t aggregate_file_writev(struct file *filp, const struct iovec *iov, unsigned long nr_segs, loff_t *ppos);
ssize_t aggregate_seq_read(struct file *file, char __user *buf, size_t size, loff_t *ppos);
loff_t  aggregate_seq_lseek(struct file *file, loff_t offset, int origin);
int     aggregate_seq_release(struct inode *inode, struct file *file);

