From: Sage Weil Date: Fri, 9 May 2008 17:00:51 +0000 (-0700) Subject: kclient: export ops should use ceph_find_inode X-Git-Tag: v0.3~241 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=5b37daf6cb01ccbfb0bd5d9b1eb10425e309049d;p=ceph.git kclient: export ops should use ceph_find_inode --- diff --git a/src/kernel/export.c b/src/kernel/export.c index f4e7dffc8300..5ec67cee7f5a 100644 --- a/src/kernel/export.c +++ b/src/kernel/export.c @@ -47,13 +47,13 @@ struct dentry *ceph_fh_to_dentry(struct super_block *sb, struct fid *fid, struct inode *inode; struct dentry *dentry; - inode = ceph_get_inode(sb, ino); + inode = ceph_find_inode(sb, ino); if (!inode) { - dout(10, "fh_to_dentry %llx.%d -- no inode\n", ino, gen); + derr(10, "fh_to_dentry %llx.%d -- no inode\n", ino, gen); return ERR_PTR(-ESTALE); } if (inode->i_generation != fh[2]) { - dout(10, "fh_to_dentry %llx.%d -- %p bad gen %d\n", ino, gen, + derr(10, "fh_to_dentry %llx.%d -- %p gen is %d\n", ino, gen, inode, inode->i_generation); iput(inode); return ERR_PTR(-ESTALE); @@ -61,7 +61,7 @@ struct dentry *ceph_fh_to_dentry(struct super_block *sb, struct fid *fid, dentry = d_alloc_anon(inode); if (!dentry) { - dout(10, "fh_to_dentry %llx.%d -- inode %p but ENOMEM\n", + derr(10, "fh_to_dentry %llx.%d -- inode %p but ENOMEM\n", ino, gen, inode); iput(inode); return ERR_PTR(-ENOMEM); @@ -84,13 +84,13 @@ struct dentry *ceph_fh_to_parent(struct super_block *sb, struct fid *fid, return ERR_PTR(-ESTALE); gen = fh[5]; - inode = ceph_get_inode(sb, ino); + inode = ceph_find_inode(sb, ino); if (!inode) { - dout(10, "fh_to_parent %llx.%d -- no inode\n", ino, gen); + derr(10, "fh_to_parent %llx.%d -- no inode\n", ino, gen); return ERR_PTR(-ESTALE); } if (inode->i_generation != gen) { - dout(10, "fh_to_parent %llx.%d -- %p bad gen %d\n", ino, gen, + derr(10, "fh_to_parent %llx.%d -- %p gen is %d\n", ino, gen, inode, inode->i_generation); iput(inode); return ERR_PTR(-ESTALE); @@ -98,7 +98,7 @@ struct dentry *ceph_fh_to_parent(struct super_block *sb, struct fid *fid, dentry = d_alloc_anon(inode); if (!dentry) { - dout(10, "fh_to_parent %llx.%d -- inode %p but ENOMEM\n", + derr(10, "fh_to_parent %llx.%d -- inode %p but ENOMEM\n", ino, gen, inode); iput(inode); return ERR_PTR(-ENOMEM); diff --git a/src/kernel/super.h b/src/kernel/super.h index 53446f122f0c..ed07425d02b7 100644 --- a/src/kernel/super.h +++ b/src/kernel/super.h @@ -267,6 +267,13 @@ static inline int ceph_ino_compare(struct inode *inode, void *data) return (ci->i_ceph_ino == ino); } +static inline struct inode *ceph_find_inode(struct super_block *sb, __u64 ino) +{ + ino_t inot = ceph_ino_to_ino(ino); + return ilookup5(sb, inot, ceph_ino_compare, &ino); +} + + /* * caps helpers */ @@ -355,6 +362,7 @@ extern const char *ceph_msg_type_name(int type); /* inode.c */ extern const struct inode_operations ceph_file_iops; extern const struct inode_operations ceph_special_iops; +extern struct inode *ceph_get_inode(struct super_block *sb, __u64 ino); extern struct inode *ceph_get_inode(struct super_block *sb, u64 ino); extern int ceph_fill_inode(struct inode *inode, struct ceph_mds_reply_inode *info);