提交 a463ddd3 编写于 作者: C Christoph Hellwig 提交者: Linus Torvalds

[PATCH] afs: use generic_ro_fops

afs actually had a write method that returned different errors depending on
whether some flag was set - better return the standard EINVAL errno.
Signed-off-by: NChristoph Hellwig <hch@lst.de>
Signed-off-by: NAndrew Morton <akpm@osdl.org>
Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
上级 dc487002
...@@ -31,24 +31,10 @@ static int afs_file_readpage(struct file *file, struct page *page); ...@@ -31,24 +31,10 @@ static int afs_file_readpage(struct file *file, struct page *page);
static int afs_file_invalidatepage(struct page *page, unsigned long offset); static int afs_file_invalidatepage(struct page *page, unsigned long offset);
static int afs_file_releasepage(struct page *page, gfp_t gfp_flags); static int afs_file_releasepage(struct page *page, gfp_t gfp_flags);
static ssize_t afs_file_write(struct file *file, const char __user *buf,
size_t size, loff_t *off);
struct inode_operations afs_file_inode_operations = { struct inode_operations afs_file_inode_operations = {
.getattr = afs_inode_getattr, .getattr = afs_inode_getattr,
}; };
struct file_operations afs_file_file_operations = {
.read = generic_file_read,
.write = afs_file_write,
.mmap = generic_file_mmap,
#if 0
.open = afs_file_open,
.release = afs_file_release,
.fsync = afs_file_fsync,
#endif
};
struct address_space_operations afs_fs_aops = { struct address_space_operations afs_fs_aops = {
.readpage = afs_file_readpage, .readpage = afs_file_readpage,
.sync_page = block_sync_page, .sync_page = block_sync_page,
...@@ -57,22 +43,6 @@ struct address_space_operations afs_fs_aops = { ...@@ -57,22 +43,6 @@ struct address_space_operations afs_fs_aops = {
.invalidatepage = afs_file_invalidatepage, .invalidatepage = afs_file_invalidatepage,
}; };
/*****************************************************************************/
/*
* AFS file write
*/
static ssize_t afs_file_write(struct file *file, const char __user *buf,
size_t size, loff_t *off)
{
struct afs_vnode *vnode;
vnode = AFS_FS_I(file->f_dentry->d_inode);
if (vnode->flags & AFS_VNODE_DELETED)
return -ESTALE;
return -EIO;
} /* end afs_file_write() */
/*****************************************************************************/ /*****************************************************************************/
/* /*
* deal with notification that a page was read from the cache * deal with notification that a page was read from the cache
......
...@@ -49,7 +49,7 @@ static int afs_inode_map_status(struct afs_vnode *vnode) ...@@ -49,7 +49,7 @@ static int afs_inode_map_status(struct afs_vnode *vnode)
case AFS_FTYPE_FILE: case AFS_FTYPE_FILE:
inode->i_mode = S_IFREG | vnode->status.mode; inode->i_mode = S_IFREG | vnode->status.mode;
inode->i_op = &afs_file_inode_operations; inode->i_op = &afs_file_inode_operations;
inode->i_fop = &afs_file_file_operations; inode->i_fop = &generic_ro_fops;
break; break;
case AFS_FTYPE_DIR: case AFS_FTYPE_DIR:
inode->i_mode = S_IFDIR | vnode->status.mode; inode->i_mode = S_IFDIR | vnode->status.mode;
......
...@@ -71,7 +71,6 @@ extern struct file_operations afs_dir_file_operations; ...@@ -71,7 +71,6 @@ extern struct file_operations afs_dir_file_operations;
*/ */
extern struct address_space_operations afs_fs_aops; extern struct address_space_operations afs_fs_aops;
extern struct inode_operations afs_file_inode_operations; extern struct inode_operations afs_file_inode_operations;
extern struct file_operations afs_file_file_operations;
#ifdef AFS_CACHING_SUPPORT #ifdef AFS_CACHING_SUPPORT
extern int afs_cache_get_page_cookie(struct page *page, extern int afs_cache_get_page_cookie(struct page *page,
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册