Commit 38c48b5f authored by Yan, Zheng's avatar Yan, Zheng Committed by Ilya Dryomov

ceph: provide seperate {inode,file}_operations for snapdir

remove all unsupported operations from {inode,file}_operations.
Signed-off-by: default avatarYan, Zheng <zyan@redhat.com>
parent 1f041a89
...@@ -26,8 +26,6 @@ ...@@ -26,8 +26,6 @@
* point by name. * point by name.
*/ */
const struct inode_operations ceph_dir_iops;
const struct file_operations ceph_dir_fops;
const struct dentry_operations ceph_dentry_ops; const struct dentry_operations ceph_dentry_ops;
/* /*
...@@ -1335,6 +1333,13 @@ const struct file_operations ceph_dir_fops = { ...@@ -1335,6 +1333,13 @@ const struct file_operations ceph_dir_fops = {
.fsync = ceph_dir_fsync, .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 = { const struct inode_operations ceph_dir_iops = {
.lookup = ceph_lookup, .lookup = ceph_lookup,
.permission = ceph_permission, .permission = ceph_permission,
...@@ -1357,6 +1362,14 @@ const struct inode_operations ceph_dir_iops = { ...@@ -1357,6 +1362,14 @@ const struct inode_operations ceph_dir_iops = {
.atomic_open = ceph_atomic_open, .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 = { const struct dentry_operations ceph_dentry_ops = {
.d_revalidate = ceph_d_revalidate, .d_revalidate = ceph_d_revalidate,
.d_release = ceph_d_release, .d_release = ceph_d_release,
......
...@@ -82,8 +82,8 @@ struct inode *ceph_get_snapdir(struct inode *parent) ...@@ -82,8 +82,8 @@ struct inode *ceph_get_snapdir(struct inode *parent)
inode->i_mode = parent->i_mode; inode->i_mode = parent->i_mode;
inode->i_uid = parent->i_uid; inode->i_uid = parent->i_uid;
inode->i_gid = parent->i_gid; inode->i_gid = parent->i_gid;
inode->i_op = &ceph_dir_iops; inode->i_op = &ceph_snapdir_iops;
inode->i_fop = &ceph_dir_fops; inode->i_fop = &ceph_snapdir_fops;
ci->i_snap_caps = CEPH_CAP_PIN; /* so we can open */ ci->i_snap_caps = CEPH_CAP_PIN; /* so we can open */
ci->i_rbytes = 0; ci->i_rbytes = 0;
return inode; return inode;
......
...@@ -893,7 +893,9 @@ extern void ceph_fill_inline_data(struct inode *inode, struct page *locked_page, ...@@ -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); int ceph_uninline_data(struct file *filp, struct page *locked_page);
/* dir.c */ /* dir.c */
extern const struct file_operations ceph_dir_fops; 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_dir_iops;
extern const struct inode_operations ceph_snapdir_iops;
extern const struct dentry_operations ceph_dentry_ops, ceph_snap_dentry_ops, extern const struct dentry_operations ceph_dentry_ops, ceph_snap_dentry_ops,
ceph_snapdir_dentry_ops; ceph_snapdir_dentry_ops;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment