[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: Christoph Hellwig <hch@lst.de> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
Родитель
dc487002a2
Коммит
a463ddd343
|
@ -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_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 = {
|
||||
.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 = {
|
||||
.readpage = afs_file_readpage,
|
||||
.sync_page = block_sync_page,
|
||||
|
@ -57,22 +43,6 @@ struct address_space_operations afs_fs_aops = {
|
|||
.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
|
||||
|
|
|
@ -49,7 +49,7 @@ static int afs_inode_map_status(struct afs_vnode *vnode)
|
|||
case AFS_FTYPE_FILE:
|
||||
inode->i_mode = S_IFREG | vnode->status.mode;
|
||||
inode->i_op = &afs_file_inode_operations;
|
||||
inode->i_fop = &afs_file_file_operations;
|
||||
inode->i_fop = &generic_ro_fops;
|
||||
break;
|
||||
case AFS_FTYPE_DIR:
|
||||
inode->i_mode = S_IFDIR | vnode->status.mode;
|
||||
|
|
|
@ -71,7 +71,6 @@ extern struct file_operations afs_dir_file_operations;
|
|||
*/
|
||||
extern struct address_space_operations afs_fs_aops;
|
||||
extern struct inode_operations afs_file_inode_operations;
|
||||
extern struct file_operations afs_file_file_operations;
|
||||
|
||||
#ifdef AFS_CACHING_SUPPORT
|
||||
extern int afs_cache_get_page_cookie(struct page *page,
|
||||
|
|
Загрузка…
Ссылка в новой задаче