5 #define DEBUG_SUBSYSTEM S_SM
7 #include <linux/module.h>
8 #include <linux/kernel.h>
9 #include <linux/string.h>
10 #include <linux/slab.h>
11 #include <linux/stat.h>
12 #include <linux/unistd.h>
13 #include <linux/pagemap.h>
14 #include "smfs_internal.h"
17 static int smfs_readpage(struct file *file,
20 struct inode *inode = page->mapping->host;
21 struct inode *cache_inode;
26 cache_inode = I2CI(inode);
31 if (cache_inode->i_mapping->a_ops->readpage)
32 rc = cache_inode->i_mapping->a_ops->readpage(file, page);
37 static int smfs_writepage(struct page *page)
40 struct inode *inode = page->mapping->host;
41 struct inode *cache_inode;
46 cache_inode = I2CI(inode);
51 if (cache_inode->i_mapping->a_ops->writepage)
52 rc = cache_inode->i_mapping->a_ops->writepage(page);
57 struct address_space_operations smfs_file_aops = {
58 readpage: smfs_readpage,
59 writepage: smfs_writepage,
63 static ssize_t smfs_write (struct file *filp, const char *buf,
64 size_t count, loff_t *ppos)
66 struct inode *cache_inode;
67 struct dentry *dentry = filp->f_dentry;
72 cache_inode = I2CI(dentry->d_inode);
77 if (cache_inode->i_fop->write)
78 cache_inode->i_fop->write(filp, buf, count, ppos);
83 static ssize_t smfs_read (struct file *filp, char *buf,
84 size_t count, loff_t *ppos)
86 struct inode *cache_inode;
87 struct dentry *dentry = filp->f_dentry;
92 cache_inode = I2CI(dentry->d_inode);
97 if (cache_inode->i_fop->read)
98 rc = cache_inode->i_fop->read(filp, buf, count, ppos);
103 struct file_operations smfs_file_fops = {
108 static void smfs_truncate(struct inode * inode)
110 struct inode *cache_inode;
112 cache_inode = I2CI(inode);
117 if (cache_inode->i_op->truncate)
118 cache_inode->i_op->truncate(cache_inode);
120 duplicate(inode, cache_inode);
125 static int smfs_setattr(struct dentry *dentry, struct iattr *attr)
127 struct inode *cache_inode;
130 cache_inode = I2CI(dentry->d_inode);
135 if (cache_inode->i_op->setattr)
136 rc = cache_inode->i_op->setattr(dentry, attr);
141 struct inode_operations smfs_file_iops = {
142 truncate: smfs_truncate, /* BKL held */
143 setattr: smfs_setattr, /* BKL held */