ceph: provide seperate {inode,file}_operations for snapdir
remove all unsupported operations from {inode,file}_operations. Signed-off-by: Yan, Zheng <zyan@redhat.com>
This commit is contained in:
parent
1f041a89b4
commit
38c48b5f0a
3 changed files with 19 additions and 4 deletions
|
@ -26,8 +26,6 @@
|
|||
* point by name.
|
||||
*/
|
||||
|
||||
const struct inode_operations ceph_dir_iops;
|
||||
const struct file_operations ceph_dir_fops;
|
||||
const struct dentry_operations ceph_dentry_ops;
|
||||
|
||||
/*
|
||||
|
@ -1335,6 +1333,13 @@ const struct file_operations ceph_dir_fops = {
|
|||
.fsync = ceph_dir_fsync,
|
||||
};
|
||||
|
||||
const struct file_operations ceph_snapdir_fops = {
|
||||
.iterate = ceph_readdir,
|
||||
.llseek = ceph_dir_llseek,
|
||||
.open = ceph_open,
|
||||
.release = ceph_release,
|
||||
};
|
||||
|
||||
const struct inode_operations ceph_dir_iops = {
|
||||
.lookup = ceph_lookup,
|
||||
.permission = ceph_permission,
|
||||
|
@ -1357,6 +1362,14 @@ const struct inode_operations ceph_dir_iops = {
|
|||
.atomic_open = ceph_atomic_open,
|
||||
};
|
||||
|
||||
const struct inode_operations ceph_snapdir_iops = {
|
||||
.lookup = ceph_lookup,
|
||||
.permission = ceph_permission,
|
||||
.getattr = ceph_getattr,
|
||||
.mkdir = ceph_mkdir,
|
||||
.rmdir = ceph_unlink,
|
||||
};
|
||||
|
||||
const struct dentry_operations ceph_dentry_ops = {
|
||||
.d_revalidate = ceph_d_revalidate,
|
||||
.d_release = ceph_d_release,
|
||||
|
|
|
@ -82,8 +82,8 @@ struct inode *ceph_get_snapdir(struct inode *parent)
|
|||
inode->i_mode = parent->i_mode;
|
||||
inode->i_uid = parent->i_uid;
|
||||
inode->i_gid = parent->i_gid;
|
||||
inode->i_op = &ceph_dir_iops;
|
||||
inode->i_fop = &ceph_dir_fops;
|
||||
inode->i_op = &ceph_snapdir_iops;
|
||||
inode->i_fop = &ceph_snapdir_fops;
|
||||
ci->i_snap_caps = CEPH_CAP_PIN; /* so we can open */
|
||||
ci->i_rbytes = 0;
|
||||
return inode;
|
||||
|
|
|
@ -893,7 +893,9 @@ extern void ceph_fill_inline_data(struct inode *inode, struct page *locked_page,
|
|||
int ceph_uninline_data(struct file *filp, struct page *locked_page);
|
||||
/* dir.c */
|
||||
extern const struct file_operations ceph_dir_fops;
|
||||
extern const struct file_operations ceph_snapdir_fops;
|
||||
extern const struct inode_operations ceph_dir_iops;
|
||||
extern const struct inode_operations ceph_snapdir_iops;
|
||||
extern const struct dentry_operations ceph_dentry_ops, ceph_snap_dentry_ops,
|
||||
ceph_snapdir_dentry_ops;
|
||||
|
||||
|
|
Loading…
Reference in a new issue