mirror of
https://github.com/torvalds/linux.git
synced 2024-11-11 06:31:49 +00:00
[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:
parent
dc487002a2
commit
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_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 = {
|
|||||||
.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)
|
|||||||
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;
|
|||||||
*/
|
*/
|
||||||
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,
|
||||||
|
Loading…
Reference in New Issue
Block a user