Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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

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
Loading
Loading
Loading
Loading
+15 −2
Original line number Original line Diff line number Diff line
@@ -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 = {
	.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 = {
	.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,
+2 −2
Original line number Original line Diff line number Diff line
@@ -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;
+2 −0
Original line number Original line Diff line number Diff line
@@ -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;